mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v3 0/3] arm64: dts: qcom: Add Xiaomi Poco M3 (citrus)
@ 2026-11-07 14:14 Amir Hanip
  2026-11-07 14:14 ` [PATCH v3 1/3] dt-bindings: arm: qcom: Document Xiaomi Poco M3 Amir Hanip
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Amir Hanip @ 2026-11-07 14:14 UTC (permalink / raw)
  To: andersson, konradybcio, linux-arm-msm
  Cc: abelvesa, conor+dt, devicetree, killdeath104, krzk+dt,
	linux-kernel, robh, barnabas.czeman, a39skl, konrad.dybcio

This series adds initial support for the Xiaomi Poco M3 (codename
citrus), a smartphone based on the Qualcomm Snapdragon 662 (SM6115).
As suggested by Barnabas, the shared parts of lemon are moved into a
common dtsi, and citrus is added on top of it. The series is based on
v7.4-rc1.

Currently working on citrus:
- UFS and microSD
- USB host (OTG), limited to high-speed (SuperSpeed is untested)
- WiFi
- Bluetooth
- Remoteprocs (ADSP, CDSP and modem)

Not included yet: the display panel, touchscreen and the display
pipeline, which depend on drivers that are not upstream. The GPU and
its zap shader are enabled, but no DRM device is registered without
the display subsystem, so the GPU is not usable with this series
alone. Audio is not included either.

Firmware and userspace: WiFi, Bluetooth, the remoteprocs and the GPU
zap shader need device-specific firmware which is not part of this
series. WiFi additionally needs qrtr, tqftpserv and rmtfs running in
userspace, and the Bluetooth controller needs its BD address set from
userspace.

Testing: citrus was tested on a Poco M3 booted from microSD with a
v7.2-based kernel. I do not own a Redmi 9T, so lemon is untested on
hardware. Instead, I compared the lemon DTS before and after the
split, normalized with dtc (dtc -I dts -O dts -s). The only
difference is the numbering of auto-generated phandles.

Changes in v3:
- Split lemon into sm6115-xiaomi-lime-common.dtsi and add citrus on
  top of it (Barnabas). The IPA carve-outs are in the common dtsi.
- Fixed the unit addresses of the IPA and GPU reserved-memory nodes
  (Sashiko).
- Split the card detect pinctrl of the microSD slot into separate
  states, as lemon does. The pin configuration is unchanged.
- Kept the ADSP carve-out per variant. A larger range common to both
  works on citrus (tested), as Barnabas suggested, but wastes 4 MiB
  of RAM, as Konrad pointed out. I did not touch lemon's value
  because I cannot test it.
- Kept the deletion of cdsp_sec_mem and of the orientation-switch
  property of usb_qmpphy in citrus, as in v2, since that is the
  tested configuration. Barnabas suggested they may be leftovers from
  the reference design. I will test dropping them and follow up.
- Dropped Konrad's Reviewed-by on patch 3 because of the rework.
  Krzysztof's Acked-by on patch 1 is kept.
- Clarified in the commit message that the GPU is enabled but not
  usable without the display pipeline.

Open questions, mainly for Adam:
- lemon's GPU carve-out is 0xfa400000, citrus uses 0x55a15000 (right
  after pil_ipa_gsi_mem). Is the lemon value intentional?
- lemon's ADSP carve-out is 0x53400000/0x2600000. Barnabas reported
  that lemon's stock layout (from MIUI sysfs) starts at 0x53800000.
  If lemon also works with 0x53800000/0x2200000, the node could move
  to the common dtsi in a follow-up.
- lemon marks l5, l7 and l22 as always-on, citrus does not need it.
  Is it needed on lemon?

Link to v1:
https://lore.kernel.org/linux-arm-msm/20261027075116.41673-1-killdeath104@gmail.com/
Link to v2:
https://lore.kernel.org/linux-arm-msm/20261027205146.16384-1-killdeath104@gmail.com/

Amir Hanip (3):
  dt-bindings: arm: qcom: Document Xiaomi Poco M3
  arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi
  arm64: dts: qcom: Add Xiaomi Poco M3

 .../devicetree/bindings/arm/qcom.yaml         |   1 +
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../boot/dts/qcom/sm6115-xiaomi-citrus.dts    | 237 +++++++++++++
 .../boot/dts/qcom/sm6115-xiaomi-lemon.dts     | 317 +----------------
 .../dts/qcom/sm6115-xiaomi-lime-common.dtsi   | 335 ++++++++++++++++++
 5 files changed, 575 insertions(+), 316 deletions(-)
 create mode 100644 arch/arm64/boot/dts/qcom/sm6115-xiaomi-citrus.dts
 create mode 100644 arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi


base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
-- 
2.47.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 1/3] dt-bindings: arm: qcom: Document Xiaomi Poco M3
  2026-11-07 14:14 [PATCH v3 0/3] arm64: dts: qcom: Add Xiaomi Poco M3 (citrus) Amir Hanip
@ 2026-11-07 14:14 ` Amir Hanip
  2026-11-07 14:14 ` [PATCH v3 2/3] arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi Amir Hanip
  2026-11-07 14:14 ` [PATCH v3 3/3] arm64: dts: qcom: Add Xiaomi Poco M3 Amir Hanip
  2 siblings, 0 replies; 6+ messages in thread
From: Amir Hanip @ 2026-11-07 14:14 UTC (permalink / raw)
  To: andersson, konradybcio, linux-arm-msm
  Cc: abelvesa, conor+dt, devicetree, killdeath104, krzk+dt,
	linux-kernel, robh, barnabas.czeman, a39skl, konrad.dybcio,
	Krzysztof Kozlowski

Add compatible for Xiaomi Poco M3 codename citrus, which is
based on Snapdragon 662 (SM6115) SoC.

Signed-off-by: Amir Hanip <killdeath104@gmail.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
---
 Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index 121ca557ce..8d2e4f0e34 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -1068,6 +1068,7 @@ properties:
       - items:
           - enum:
               - fxtec,pro1x
+              - xiaomi,citrus
               - xiaomi,lemon
           - const: qcom,sm6115
 
-- 
2.47.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 2/3] arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi
  2026-11-07 14:14 [PATCH v3 0/3] arm64: dts: qcom: Add Xiaomi Poco M3 (citrus) Amir Hanip
  2026-11-07 14:14 ` [PATCH v3 1/3] dt-bindings: arm: qcom: Document Xiaomi Poco M3 Amir Hanip
@ 2026-11-07 14:14 ` Amir Hanip
  2026-11-07 17:49   ` Barnabás Czémán
  2026-11-07 18:26   ` Barnabás Czémán
  2026-11-07 14:14 ` [PATCH v3 3/3] arm64: dts: qcom: Add Xiaomi Poco M3 Amir Hanip
  2 siblings, 2 replies; 6+ messages in thread
From: Amir Hanip @ 2026-11-07 14:14 UTC (permalink / raw)
  To: andersson, konradybcio, linux-arm-msm
  Cc: abelvesa, conor+dt, devicetree, killdeath104, krzk+dt,
	linux-kernel, robh, barnabas.czeman, a39skl, konrad.dybcio

Move the nodes shared with the other Xiaomi SM6115 variants (Redmi 9T
and Poco M3) into sm6115-xiaomi-lime-common.dtsi, so that the other
variants can reuse them. No functional change intended: the
decompiled lemon DTS is identical before and after, except for the
numbering of auto-generated phandles.

Signed-off-by: Amir Hanip <killdeath104@gmail.com>
---
 .../boot/dts/qcom/sm6115-xiaomi-lemon.dts     | 317 +----------------
 .../dts/qcom/sm6115-xiaomi-lime-common.dtsi   | 335 ++++++++++++++++++
 2 files changed, 336 insertions(+), 316 deletions(-)
 create mode 100644 arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi

diff --git a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
index 881e05b701..2caaca3033 100644
--- a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
+++ b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
@@ -5,41 +5,17 @@
 
 /dts-v1/;
 
-#include "sm6115.dtsi"
-#include "pm6125.dtsi"
-#include "pmi632.dtsi"
 #include <dt-bindings/leds/common.h>
-
-/delete-node/ &pil_adsp_mem;
-/delete-node/ &pil_gpu_mem;
-/delete-node/ &pil_ipa_fw_mem;
-/delete-node/ &pil_ipa_gsi_mem;
+#include "sm6115-xiaomi-lime-common.dtsi"
 
 / {
 	model = "Xiaomi Redmi 9T";
 	compatible = "xiaomi,lemon", "qcom,sm6115";
-	chassis-type = "handset";
 
 	aliases {
 		mmc0 = &sdhc_2;
 	};
 
-	chosen {
-		#address-cells = <2>;
-		#size-cells = <2>;
-		ranges;
-
-		framebuffer0: framebuffer@5c000000 {
-			compatible = "simple-framebuffer";
-			reg = <0 0x5c000000 0 (2340 * 1080 * 4)>;
-			width = <1080>;
-			height = <2340>;
-			stride = <(1080 * 4)>;
-			format = "a8r8g8b8";
-			clocks = <&gcc GCC_DISP_HF_AXI_CLK>;
-		};
-	};
-
 	backlight_dsi: backlight-dsi {
 		compatible = "led-backlight";
 		leds = <&led_backlight>;
@@ -49,38 +25,12 @@ backlight_dsi: backlight-dsi {
 		status = "disabled";
 	};
 
-	gpio-keys {
-		compatible = "gpio-keys";
-
-		pinctrl-0 = <&vol_up_n>;
-		pinctrl-names = "default";
-
-		key-volume-up {
-			label = "Volume Up";
-			linux,code = <KEY_VOLUMEUP>;
-			gpios = <&pm6125_gpios 5 GPIO_ACTIVE_LOW>;
-			debounce-interval = <15>;
-			linux,can-disable;
-			wakeup-source;
-		};
-	};
-
 	reserved-memory {
 		pil_adsp_mem: memory@53400000 {
 			reg = <0x0 0x53400000 0x0 0x2600000>;
 			no-map;
 		};
 
-		pil_ipa_fw_mem: memory@55a00000 {
-			reg = <0x0 0x55a00000 0x0 0x10000>;
-			no-map;
-		};
-
-		pil_ipa_gsi_mem: memory@55a10000 {
-			reg = <0x0 0x55a10000 0x0 0x5000>;
-			no-map;
-		};
-
 		pil_gpu_mem: memory@fa400000 {
 			reg = <0x0 0xfa400000 0x0 0x2000>;
 			no-map;
@@ -108,19 +58,6 @@ vph_pwr: vph-pwr-regulator {
 	};
 };
 
-&dispcc {
-	/* Prevent simplefb from dying until we wire panel driver */
-	status = "disabled";
-};
-
-&gpi_dma0 {
-	status = "okay";
-};
-
-&gpu {
-	status = "okay";
-};
-
 &i2c1 {
 	status = "okay";
 
@@ -158,118 +95,13 @@ &mdss_dsi0_out {
 	data-lanes = <0 1 2 3>;
 };
 
-&pil_cdsp_mem {
-	reg = <0x0 0x51a00000 0x0 0xa00000>;
-};
-
-&pm6125_gpios {
-	vol_up_n: vol-up-n-state {
-		pins = "gpio5";
-		function = "normal";
-		power-source = <0>;
-		bias-pull-up;
-		input-enable;
-	};
-};
-
-&pmi632_typec {
-	status = "okay";
-
-	connector {
-		compatible = "usb-c-connector";
-
-		power-role = "dual";
-		data-role = "dual";
-		self-powered;
-
-		typec-power-opmode = "default";
-		pd-disable;
-
-		vbus-supply = <&pmi632_vbus>;
-
-		ports {
-			#address-cells = <1>;
-			#size-cells = <0>;
-
-			port@0 {
-				reg = <0>;
-				pmi632_hs_in: endpoint {
-					remote-endpoint = <&usb_dwc3_hs>;
-				};
-			};
-
-			port@1 {
-				reg = <1>;
-				pmi632_ss_in: endpoint {
-					remote-endpoint = <&usb_qmpphy_out>;
-				};
-			};
-		};
-	};
-};
-
-&pmi632_vbus {
-	regulator-min-microamp = <500000>;
-	regulator-max-microamp = <1000000>;
-
-	status = "okay";
-};
-
-&pon_pwrkey {
-	status = "okay";
-};
-
-&pon_resin {
-	linux,code = <KEY_VOLUMEDOWN>;
-
-	status = "okay";
-};
-
-&qupv3_id_0 {
-	status = "okay";
-};
-
-&remoteproc_adsp {
-	status = "okay";
-};
-
-&remoteproc_cdsp {
-	status = "okay";
-};
-
-&remoteproc_mpss {
-	status = "okay";
-};
-
 &rpm_requests {
 	regulators-0 {
-		compatible = "qcom,rpm-pm6125-regulators";
-
-		pm6125_s6: s6 {
-			regulator-min-microvolt = <304000>;
-			regulator-max-microvolt = <1456000>;
-		};
-
 		pm6125_s7: s7 {
 			regulator-min-microvolt = <1280000>;
 			regulator-max-microvolt = <2080000>;
 		};
 
-		pm6125_s8: s8 {
-			regulator-min-microvolt = <1064000>;
-			regulator-max-microvolt = <1304000>;
-		};
-
-		pm6125_l1: l1 {
-			regulator-min-microvolt = <952000>;
-			regulator-max-microvolt = <1152000>;
-		};
-
-		pm6125_l4: l4 {
-			regulator-min-microvolt = <488000>;
-			regulator-max-microvolt = <1000000>;
-		};
-
 		pm6125_l5: l5 {
 			regulator-min-microvolt = <1648000>;
 			regulator-max-microvolt = <2960000>;
@@ -278,11 +110,6 @@ pm6125_l5: l5 {
 			regulator-always-on;
 		};
 
-		pm6125_l6: l6 {
-			regulator-min-microvolt = <576000>;
-			regulator-max-microvolt = <656000>;
-		};
-
 		pm6125_l7: l7 {
 			/* sdhci2 vdd-io-bias supply */
 			regulator-min-microvolt = <1256000>;
@@ -291,51 +118,11 @@ pm6125_l7: l7 {
 			regulator-always-on;
 		};
 
-		pm6125_l8: l8 {
-			regulator-min-microvolt = <400000>;
-			regulator-max-microvolt = <728000>;
-		};
-
-		pm6125_l9: l9 {
-			regulator-min-microvolt = <1800000>;
-			regulator-max-microvolt = <2000000>;
-		};
-
-		pm6125_l10: l10 {
-			regulator-min-microvolt = <1704000>;
-			regulator-max-microvolt = <1904000>;
-		};
-
 		pm6125_l11: l11 {
 			regulator-min-microvolt = <1768000>;
 			regulator-max-microvolt = <1952000>;
 		};
 
-		pm6125_l12: l12 {
-			regulator-min-microvolt = <1624000>;
-			regulator-max-microvolt = <1984000>;
-		};
-
-		pm6125_l13: l13 {
-			regulator-min-microvolt = <1504000>;
-			regulator-max-microvolt = <1952000>;
-		};
-
-		pm6125_l14: l14 {
-			regulator-min-microvolt = <1704000>;
-			regulator-max-microvolt = <1904000>;
-		};
-
-		pm6125_l15: l15 {
-			regulator-min-microvolt = <2920000>;
-			regulator-max-microvolt = <3232000>;
-		};
-
-		pm6125_l16: l16 {
-			regulator-min-microvolt = <1704000>;
-			regulator-max-microvolt = <1904000>;
-		};
-
 		pm6125_l17: l17 {
 			regulator-min-microvolt = <1152000>;
 			regulator-max-microvolt = <1384000>;
@@ -346,21 +133,6 @@ pm6125_l18: l18 {
 			regulator-max-microvolt = <1232000>;
 		};
 
-		pm6125_l19: l19 {
-			regulator-min-microvolt = <1624000>;
-			regulator-max-microvolt = <3304000>;
-		};
-
-		pm6125_l20: l20 {
-			regulator-min-microvolt = <1624000>;
-			regulator-max-microvolt = <3304000>;
-		};
-
-		pm6125_l21: l21 {
-			regulator-min-microvolt = <2400000>;
-			regulator-max-microvolt = <3600000>;
-		};
-
 		pm6125_l22: l22 {
 			regulator-min-microvolt = <2952000>;
 			regulator-max-microvolt = <2960000>;
@@ -369,11 +141,6 @@ pm6125_l22: l22 {
 			regulator-always-on;
 		};
 
-		pm6125_l23: l23 {
-			regulator-min-microvolt = <3200000>;
-			regulator-max-microvolt = <3400000>;
-		};
-
 		pm6125_l24: l24 {
 			regulator-min-microvolt = <2704000>;
 			regulator-max-microvolt = <3600000>;
@@ -382,23 +149,9 @@ pm6125_l24: l24 {
 };
 
 &sdhc_2 {
-	cd-gpios = <&tlmm 88 GPIO_ACTIVE_HIGH>;
-
-	pinctrl-0 = <&sdc2_state_on>, <&sdc2_cd_on>;
-	pinctrl-1 = <&sdc2_state_off>, <&sdc2_cd_off>;
-	pinctrl-names = "default", "sleep";
-
-	vmmc-supply = <&pm6125_l22>;
-	vqmmc-supply = <&pm6125_l5>;
 	/* No binding for vdd-io-bias on L7*/
 	no-sdio;
 	no-mmc;
-
-	status = "okay";
-};
-
-&sleep_clk {
-	clock-frequency = <32764>;
 };
 
 &spi2 {
@@ -406,8 +159,6 @@ &spi2 {
 };
 
 &tlmm {
-	gpio-reserved-ranges = <14 4>; /* Fingerprint SPI */
-
 	lm3692x_bl_active: lm3692x-active-state {
 		pins = "gpio99";
 		function = "gpio";
@@ -422,20 +173,6 @@ mdss_dsi_active: mdss-dsi-active-state {
 		bias-disable;
 	};
 
-	sdc2_cd_on: sdc2-cd-on-state {
-		pins = "gpio88";
-		function = "gpio";
-		drive-strength = <2>;
-		bias-pull-up;
-	};
-
-	sdc2_cd_off: sdc2-cd-off-state {
-		pins = "gpio88";
-		function = "gpio";
-		drive-strength = <2>;
-		bias-disable;
-	};
-
 	te_active: te-active-state {
 		pins = "gpio81";
 		function = "mdp_vsync";
@@ -443,55 +180,3 @@ te_active: te-active-state {
 		bias-pull-down;
 	};
 };
-
-&ufs_mem_hc {
-	vcc-max-microamp = <600000>;
-	vcc-supply = <&pm6125_l24>;
-	vccq2-max-microamp = <600000>;
-	vccq2-supply = <&pm6125_l11>;
-	vdd-hba-supply = <&pm6125_l18>;
-
-	status = "okay";
-};
-
-&ufs_mem_phy {
-	vdda-phy-supply = <&pm6125_l4>;
-	vdda-pll-supply = <&pm6125_l12>;
-
-	status = "okay";
-};
-
-&usb {
-	status = "okay";
-};
-
-&usb_dwc3 {
-	maximum-speed = "high-speed";
-};
-
-&usb_dwc3_hs {
-	remote-endpoint = <&pmi632_hs_in>;
-};
-
-&usb_hsphy {
-	vdd-supply = <&pm6125_l4>;
-	vdda-pll-supply = <&pm6125_l12>;
-	vdda-phy-dpdm-supply = <&pm6125_l15>;
-
-	status = "okay";
-};
-
-&usb_qmpphy {
-	vdda-phy-supply = <&pm6125_l4>;
-	vdda-pll-supply = <&pm6125_l12>;
-
-	status = "okay";
-};
-
-&usb_qmpphy_out {
-	remote-endpoint = <&pmi632_ss_in>;
-};
-
-&xo_board {
-	clock-frequency = <19200000>;
-};
diff --git a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi
new file mode 100644
index 0000000000..16883e35b5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi
@@ -0,0 +1,335 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (c) 2026 Adam Skladowski <a39skl@gmail.com>
+ */
+
+#include "sm6115.dtsi"
+#include "pm6125.dtsi"
+#include "pmi632.dtsi"
+
+/delete-node/ &pil_adsp_mem;
+/delete-node/ &pil_gpu_mem;
+/delete-node/ &pil_ipa_fw_mem;
+/delete-node/ &pil_ipa_gsi_mem;
+
+/ {
+	chassis-type = "handset";
+
+	chosen {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		framebuffer0: framebuffer@5c000000 {
+			compatible = "simple-framebuffer";
+			reg = <0 0x5c000000 0 (2340 * 1080 * 4)>;
+			width = <1080>;
+			height = <2340>;
+			stride = <(1080 * 4)>;
+			format = "a8r8g8b8";
+			clocks = <&gcc GCC_DISP_HF_AXI_CLK>;
+		};
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+
+		pinctrl-0 = <&vol_up_n>;
+		pinctrl-names = "default";
+
+		key-volume-up {
+			label = "Volume Up";
+			linux,code = <KEY_VOLUMEUP>;
+			gpios = <&pm6125_gpios 5 GPIO_ACTIVE_LOW>;
+			debounce-interval = <15>;
+			linux,can-disable;
+			wakeup-source;
+		};
+	};
+
+	reserved-memory {
+		pil_ipa_fw_mem: memory@55a00000 {
+			reg = <0x0 0x55a00000 0x0 0x10000>;
+			no-map;
+		};
+
+		pil_ipa_gsi_mem: memory@55a10000 {
+			reg = <0x0 0x55a10000 0x0 0x5000>;
+			no-map;
+		};
+	};
+};
+
+&dispcc {
+	/* Prevent simplefb from dying until we wire panel driver */
+	status = "disabled";
+};
+
+&gpi_dma0 {
+	status = "okay";
+};
+
+&gpu {
+	status = "okay";
+};
+
+&pil_cdsp_mem {
+	reg = <0x0 0x51a00000 0x0 0xa00000>;
+};
+
+&pm6125_gpios {
+	vol_up_n: vol-up-n-state {
+		pins = "gpio5";
+		function = "normal";
+		power-source = <0>;
+		bias-pull-up;
+		input-enable;
+	};
+};
+
+&pmi632_typec {
+	status = "okay";
+
+	connector {
+		compatible = "usb-c-connector";
+
+		power-role = "dual";
+		data-role = "dual";
+		self-powered;
+
+		typec-power-opmode = "default";
+		pd-disable;
+
+		vbus-supply = <&pmi632_vbus>;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
+				pmi632_hs_in: endpoint {
+					remote-endpoint = <&usb_dwc3_hs>;
+				};
+			};
+
+			port@1 {
+				reg = <1>;
+				pmi632_ss_in: endpoint {
+					remote-endpoint = <&usb_qmpphy_out>;
+				};
+			};
+		};
+	};
+};
+
+&pmi632_vbus {
+	regulator-min-microamp = <500000>;
+	regulator-max-microamp = <1000000>;
+
+	status = "okay";
+};
+
+&pon_pwrkey {
+	status = "okay";
+};
+
+&pon_resin {
+	linux,code = <KEY_VOLUMEDOWN>;
+
+	status = "okay";
+};
+
+&qupv3_id_0 {
+	status = "okay";
+};
+
+&remoteproc_adsp {
+	status = "okay";
+};
+
+&remoteproc_cdsp {
+	status = "okay";
+};
+
+&remoteproc_mpss {
+	status = "okay";
+};
+
+&rpm_requests {
+	regulators-0 {
+		compatible = "qcom,rpm-pm6125-regulators";
+
+		pm6125_s6: s6 {
+			regulator-min-microvolt = <304000>;
+			regulator-max-microvolt = <1456000>;
+		};
+
+		pm6125_s8: s8 {
+			regulator-min-microvolt = <1064000>;
+			regulator-max-microvolt = <1304000>;
+		};
+
+		pm6125_l1: l1 {
+			regulator-min-microvolt = <952000>;
+			regulator-max-microvolt = <1152000>;
+		};
+
+		pm6125_l4: l4 {
+			regulator-min-microvolt = <488000>;
+			regulator-max-microvolt = <1000000>;
+		};
+
+		pm6125_l6: l6 {
+			regulator-min-microvolt = <576000>;
+			regulator-max-microvolt = <656000>;
+		};
+
+		pm6125_l8: l8 {
+			regulator-min-microvolt = <400000>;
+			regulator-max-microvolt = <728000>;
+		};
+
+		pm6125_l9: l9 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <2000000>;
+		};
+
+		pm6125_l10: l10 {
+			regulator-min-microvolt = <1704000>;
+			regulator-max-microvolt = <1904000>;
+		};
+
+		pm6125_l12: l12 {
+			regulator-min-microvolt = <1624000>;
+			regulator-max-microvolt = <1984000>;
+		};
+
+		pm6125_l13: l13 {
+			regulator-min-microvolt = <1504000>;
+			regulator-max-microvolt = <1952000>;
+		};
+
+		pm6125_l14: l14 {
+			regulator-min-microvolt = <1704000>;
+			regulator-max-microvolt = <1904000>;
+		};
+
+		pm6125_l15: l15 {
+			regulator-min-microvolt = <2920000>;
+			regulator-max-microvolt = <3232000>;
+		};
+
+		pm6125_l16: l16 {
+			regulator-min-microvolt = <1704000>;
+			regulator-max-microvolt = <1904000>;
+		};
+
+		pm6125_l19: l19 {
+			regulator-min-microvolt = <1624000>;
+			regulator-max-microvolt = <3304000>;
+		};
+
+		pm6125_l20: l20 {
+			regulator-min-microvolt = <1624000>;
+			regulator-max-microvolt = <3304000>;
+		};
+
+		pm6125_l21: l21 {
+			regulator-min-microvolt = <2400000>;
+			regulator-max-microvolt = <3600000>;
+		};
+
+		pm6125_l23: l23 {
+			regulator-min-microvolt = <3200000>;
+			regulator-max-microvolt = <3400000>;
+		};
+	};
+};
+
+&sdhc_2 {
+	cd-gpios = <&tlmm 88 GPIO_ACTIVE_HIGH>;
+
+	pinctrl-0 = <&sdc2_state_on>, <&sdc2_cd_on>;
+	pinctrl-1 = <&sdc2_state_off>, <&sdc2_cd_off>;
+	pinctrl-names = "default", "sleep";
+
+	vmmc-supply = <&pm6125_l22>;
+	vqmmc-supply = <&pm6125_l5>;
+
+	status = "okay";
+};
+
+&sleep_clk {
+	clock-frequency = <32764>;
+};
+
+&tlmm {
+	gpio-reserved-ranges = <14 4>; /* SE5 SPI (fingerprint), not usable from Linux */
+
+	sdc2_cd_on: sdc2-cd-on-state {
+		pins = "gpio88";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-up;
+	};
+
+	sdc2_cd_off: sdc2-cd-off-state {
+		pins = "gpio88";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
+};
+
+&ufs_mem_hc {
+	vcc-max-microamp = <600000>;
+	vcc-supply = <&pm6125_l24>;
+	vccq2-max-microamp = <600000>;
+	vccq2-supply = <&pm6125_l11>;
+	vdd-hba-supply = <&pm6125_l18>;
+
+	status = "okay";
+};
+
+&ufs_mem_phy {
+	vdda-phy-supply = <&pm6125_l4>;
+	vdda-pll-supply = <&pm6125_l12>;
+
+	status = "okay";
+};
+
+&usb {
+	status = "okay";
+};
+
+&usb_dwc3 {
+	maximum-speed = "high-speed";
+};
+
+&usb_dwc3_hs {
+	remote-endpoint = <&pmi632_hs_in>;
+};
+
+&usb_hsphy {
+	vdd-supply = <&pm6125_l4>;
+	vdda-pll-supply = <&pm6125_l12>;
+	vdda-phy-dpdm-supply = <&pm6125_l15>;
+
+	status = "okay";
+};
+
+&usb_qmpphy {
+	vdda-phy-supply = <&pm6125_l4>;
+	vdda-pll-supply = <&pm6125_l12>;
+
+	status = "okay";
+};
+
+&usb_qmpphy_out {
+	remote-endpoint = <&pmi632_ss_in>;
+};
+
+&xo_board {
+	clock-frequency = <19200000>;
+};
-- 
2.47.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 3/3] arm64: dts: qcom: Add Xiaomi Poco M3
  2026-11-07 14:14 [PATCH v3 0/3] arm64: dts: qcom: Add Xiaomi Poco M3 (citrus) Amir Hanip
  2026-11-07 14:14 ` [PATCH v3 1/3] dt-bindings: arm: qcom: Document Xiaomi Poco M3 Amir Hanip
  2026-11-07 14:14 ` [PATCH v3 2/3] arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi Amir Hanip
@ 2026-11-07 14:14 ` Amir Hanip
  2 siblings, 0 replies; 6+ messages in thread
From: Amir Hanip @ 2026-11-07 14:14 UTC (permalink / raw)
  To: andersson, konradybcio, linux-arm-msm
  Cc: abelvesa, conor+dt, devicetree, killdeath104, krzk+dt,
	linux-kernel, robh, barnabas.czeman, a39skl, konrad.dybcio

Add initial device tree for the Xiaomi Poco M3 (codename citrus),
based on the Qualcomm Snapdragon 662 (SM6115) SoC. It shares most of
its hardware with the Redmi 9T, so it includes the common dtsi.

Currently working:
- UFS and microSD
- USB host (OTG)
- WiFi
- Bluetooth
- Remoteprocs (ADSP, CDSP and modem)

WiFi, Bluetooth, the remoteprocs and the GPU zap shader need
device-specific firmware, which is not part of this series. WiFi
additionally needs qrtr, tqftpserv and rmtfs running in userspace,
and the Bluetooth controller needs its BD address set from userspace.

Display panel, touchscreen and the display pipeline will be added
later, so the display is currently only available through
simple-framebuffer. The GPU and its zap shader are enabled, but no
DRM device is registered until the display pipeline is added, so the
GPU is not usable with this series alone.

Signed-off-by: Amir Hanip <killdeath104@gmail.com>
---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../boot/dts/qcom/sm6115-xiaomi-citrus.dts    | 237 ++++++++++++++++++
 2 files changed, 238 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/sm6115-xiaomi-citrus.dts

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 88230c4e00..02e87dd787 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -386,6 +386,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= shikra-iqs-evk-imx577-camera.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sm4250-oneplus-billie2.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sm4450-qrd.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sm6115-fxtec-pro1x.dtb
+dtb-$(CONFIG_ARCH_QCOM)	+= sm6115-xiaomi-citrus.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sm6115-xiaomi-lemon.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sm6115p-lenovo-j606f.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sm6125-sony-xperia-seine-pdx201.dtb
diff --git a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-citrus.dts b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-citrus.dts
new file mode 100644
index 0000000000..03544f28f0
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-citrus.dts
@@ -0,0 +1,237 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (c) 2023 - 2024, Dang Huynh <danct12@riseup.net>
+ * Copyright (c) 2026, Amir Hanip <killdeath104@gmail.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/arm/qcom,ids.h>
+#include "sm6115-xiaomi-lime-common.dtsi"
+
+/delete-node/ &cdsp_sec_mem;
+
+/ {
+	model = "Xiaomi Poco M3";
+	compatible = "xiaomi,citrus", "qcom,sm6115";
+
+	qcom,msm-id = <QCOM_ID_SM4250 0x10000>, <QCOM_ID_SM6115 0x10000>;
+	qcom,board-id = <0x00 0x303>;
+
+	aliases {
+		serial1 = &uart3;
+	};
+
+	reserved-memory {
+		pil_adsp_mem: memory@53800000 {
+			reg = <0x0 0x53800000 0x0 0x2200000>;
+			no-map;
+		};
+
+		pil_gpu_mem: memory@55a15000 {
+			reg = <0x0 0x55a15000 0x0 0x2000>;
+			no-map;
+		};
+	};
+
+	wcn3950-pmu {
+		compatible = "qcom,wcn3950-pmu";
+
+		pinctrl-0 = <&sw_ctrl_default>;
+		pinctrl-names = "default";
+
+		vddio-supply = <&pm6125_l9>;
+		vddxo-supply = <&pm6125_l16>;
+		vddrf-supply = <&pm6125_l17>;
+		vddch0-supply = <&pm6125_l23>;
+
+		swctrl-gpios = <&tlmm 87 GPIO_ACTIVE_HIGH>;
+
+		regulators {
+			vreg_pmu_io: ldo0 {
+				regulator-name = "vreg_pmu_io";
+			};
+
+			vreg_pmu_xo: ldo1 {
+				regulator-name = "vreg_pmu_xo";
+			};
+
+			vreg_pmu_rf: ldo2 {
+				regulator-name = "vreg_pmu_rf";
+			};
+
+			vreg_pmu_ch0: ldo3 {
+				regulator-name = "vreg_pmu_ch0";
+			};
+
+			vreg_pmu_ch1: ldo4 {
+				regulator-name = "vreg_pmu_ch1";
+			};
+		};
+	};
+};
+
+&gpu_zap_shader {
+	firmware-name = "qcom/sm6115/xiaomi-citrus/a610_zap.mbn";
+};
+
+&remoteproc_adsp {
+	firmware-name = "qcom/sm6115/xiaomi-citrus/adsp.mdt";
+};
+
+&remoteproc_cdsp {
+	firmware-name = "qcom/sm6115/xiaomi-citrus/cdsp.mdt";
+};
+
+&remoteproc_mpss {
+	firmware-name = "qcom/sm6115/xiaomi-citrus/modem.mdt";
+};
+
+&rpm_requests {
+	regulators-0 {
+		pm6125_s7: s7 {
+			regulator-min-microvolt = <1280000>;
+			regulator-max-microvolt = <2040000>;
+		};
+
+		pm6125_l5: l5 {
+			regulator-min-microvolt = <1648000>;
+			regulator-max-microvolt = <3056000>;
+			regulator-allow-set-load;
+		};
+
+		pm6125_l7: l7 {
+			regulator-min-microvolt = <1200000>;
+			regulator-max-microvolt = <1304000>;
+		};
+
+		pm6125_l11: l11 {
+			regulator-min-microvolt = <1704000>;
+			regulator-max-microvolt = <1952000>;
+			regulator-allow-set-load;
+		};
+
+		pm6125_l17: l17 {
+			regulator-min-microvolt = <1304000>;
+			regulator-max-microvolt = <1304000>;
+		};
+
+		pm6125_l18: l18 {
+			regulator-min-microvolt = <1104000>;
+			regulator-max-microvolt = <1312000>;
+		};
+
+		pm6125_l22: l22 {
+			regulator-min-microvolt = <2952000>;
+			regulator-max-microvolt = <3304000>;
+		};
+
+		pm6125_l24: l24 {
+			regulator-min-microvolt = <2704000>;
+			regulator-max-microvolt = <3600000>;
+			regulator-allow-set-load;
+		};
+	};
+};
+
+&tlmm {
+	uart3_default: uart3-default-state {
+		cts-pins {
+			pins = "gpio8";
+			function = "qup3";
+			drive-strength = <2>;
+			bias-bus-hold;
+		};
+
+		rts-pins {
+			pins = "gpio9";
+			function = "qup3";
+			drive-strength = <2>;
+			bias-disable;
+		};
+
+		tx-pins {
+			pins = "gpio10";
+			function = "qup3";
+			drive-strength = <2>;
+			bias-disable;
+		};
+
+		rx-pins {
+			pins = "gpio11";
+			function = "qup3";
+			drive-strength = <2>;
+			bias-pull-up;
+		};
+	};
+
+	uart3_sleep: uart3-sleep-state {
+		cts-pins {
+			pins = "gpio8";
+			function = "gpio";
+			drive-strength = <2>;
+			bias-bus-hold;
+		};
+
+		rts-pins {
+			pins = "gpio9";
+			function = "gpio";
+			drive-strength = <2>;
+			bias-pull-down;
+		};
+
+		tx-pins {
+			pins = "gpio10";
+			function = "gpio";
+			drive-strength = <2>;
+			bias-pull-up;
+		};
+
+		rx-pins {
+			pins = "gpio11";
+			function = "gpio";
+			drive-strength = <2>;
+			bias-pull-up;
+		};
+	};
+
+	sw_ctrl_default: sw-ctrl-default-state {
+		pins = "gpio87";
+		function = "gpio";
+		bias-pull-down;
+	};
+};
+
+&uart3 {
+	pinctrl-0 = <&uart3_default>;
+	pinctrl-1 = <&uart3_sleep>;
+	pinctrl-names = "default", "sleep";
+
+	status = "okay";
+
+	bluetooth {
+		compatible = "qcom,wcn3950-bt";
+		vddio-supply = <&vreg_pmu_io>;
+		vddxo-supply = <&vreg_pmu_xo>;
+		vddrf-supply = <&vreg_pmu_rf>;
+		vddch0-supply = <&vreg_pmu_ch0>;
+	};
+};
+
+&usb_dwc3 {
+	status = "okay";
+};
+
+&usb_qmpphy {
+	/delete-property/ orientation-switch;
+};
+
+&wifi {
+	vdd-0.8-cx-mx-supply = <&pm6125_l4>;
+	vdd-1.8-xo-supply = <&pm6125_l16>;
+	vdd-1.3-rfa-supply = <&pm6125_l17>;
+	vdd-3.3-ch0-supply = <&pm6125_l23>;
+	vdd-3.3-ch1-supply = <&pm6125_l24>;
+
+	status = "okay";
+};
-- 
2.47.3


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 2/3] arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi
  2026-11-07 14:14 ` [PATCH v3 2/3] arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi Amir Hanip
@ 2026-11-07 17:49   ` Barnabás Czémán
  2026-11-07 18:26   ` Barnabás Czémán
  1 sibling, 0 replies; 6+ messages in thread
From: Barnabás Czémán @ 2026-11-07 17:49 UTC (permalink / raw)
  To: Amir Hanip
  Cc: andersson, konradybcio, linux-arm-msm, abelvesa, conor+dt,
	devicetree, krzk+dt, linux-kernel, robh, a39skl, konrad.dybcio

On 2026-11-07 15:14, Amir Hanip wrote:
> Move the nodes shared with the other Xiaomi SM6115 variants (Redmi 9T
> and Poco M3) into sm6115-xiaomi-lime-common.dtsi, so that the other
> variants can reuse them. No functional change intended: the
> decompiled lemon DTS is identical before and after, except for the
> numbering of auto-generated phandles.
> 
> Signed-off-by: Amir Hanip <killdeath104@gmail.com>
> ---
>  .../boot/dts/qcom/sm6115-xiaomi-lemon.dts     | 317 +----------------
>  .../dts/qcom/sm6115-xiaomi-lime-common.dtsi   | 335 ++++++++++++++++++
>  2 files changed, 336 insertions(+), 316 deletions(-)
>  create mode 100644 
> arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi
> 
> diff --git a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts 
> b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
> index 881e05b701..2caaca3033 100644
> --- a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
> +++ b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
> @@ -5,41 +5,17 @@
> 
>  /dts-v1/;
> 
> -#include "sm6115.dtsi"
> -#include "pm6125.dtsi"
> -#include "pmi632.dtsi"
>  #include <dt-bindings/leds/common.h>
> -
> -/delete-node/ &pil_adsp_mem;
> -/delete-node/ &pil_gpu_mem;
> -/delete-node/ &pil_ipa_fw_mem;
> -/delete-node/ &pil_ipa_gsi_mem;
> +#include "sm6115-xiaomi-lime-common.dtsi"
> 
>  / {
>  	model = "Xiaomi Redmi 9T";
>  	compatible = "xiaomi,lemon", "qcom,sm6115";
> -	chassis-type = "handset";
> 
>  	aliases {
>  		mmc0 = &sdhc_2;
>  	};
> 
> -	chosen {
> -		#address-cells = <2>;
> -		#size-cells = <2>;
> -		ranges;
> -
> -		framebuffer0: framebuffer@5c000000 {
> -			compatible = "simple-framebuffer";
> -			reg = <0 0x5c000000 0 (2340 * 1080 * 4)>;
> -			width = <1080>;
> -			height = <2340>;
> -			stride = <(1080 * 4)>;
> -			format = "a8r8g8b8";
> -			clocks = <&gcc GCC_DISP_HF_AXI_CLK>;
> -		};
> -	};
> -
>  	backlight_dsi: backlight-dsi {
>  		compatible = "led-backlight";
>  		leds = <&led_backlight>;
> @@ -49,38 +25,12 @@ backlight_dsi: backlight-dsi {
>  		status = "disabled";
>  	};
> 
> -	gpio-keys {
> -		compatible = "gpio-keys";
> -
> -		pinctrl-0 = <&vol_up_n>;
> -		pinctrl-names = "default";
> -
> -		key-volume-up {
> -			label = "Volume Up";
> -			linux,code = <KEY_VOLUMEUP>;
> -			gpios = <&pm6125_gpios 5 GPIO_ACTIVE_LOW>;
> -			debounce-interval = <15>;
> -			linux,can-disable;
> -			wakeup-source;
> -		};
> -	};
> -
>  	reserved-memory {
>  		pil_adsp_mem: memory@53400000 {
>  			reg = <0x0 0x53400000 0x0 0x2600000>;
>  			no-map;
>  		};
Hi,

As I have written in the previous revision lemon have the same adsp mem 
range
This is from MIUI dmesg:
[    0.000000] OF: reserved mem: initialized node 
pil_adsp_region@53800000, compatible id removed-dma-pool

And from MIUI /sys/frimware/fdt
pil_adsp_mem: pil_adsp_region@53800000 {
     compatible = "removed-dma-pool";
     no-map;
     reg = <0x00 0x53800000 0x00 0x2200000>;
     phandle = <0x1e>;
};


> 
> -		pil_ipa_fw_mem: memory@55a00000 {
> -			reg = <0x0 0x55a00000 0x0 0x10000>;
> -			no-map;
> -		};
> -
> -		pil_ipa_gsi_mem: memory@55a10000 {
> -			reg = <0x0 0x55a10000 0x0 0x5000>;
> -			no-map;
> -		};
> -

Same for GPU
[    0.000000] OF: reserved mem: initialized node gpu_region@55A15000, 
compatible id removed-dma-pool

pil_gpu_mem: gpu_region@55A15000 {
     compatible = "removed-dma-pool";
     no-map;
     reg = <0x00 0x55a15000 0x00 0x2000>;
     phandle = <0x1e5>;
};


>  		pil_gpu_mem: memory@fa400000 {
>  			reg = <0x0 0xfa400000 0x0 0x2000>;
>  			no-map;
> @@ -108,19 +58,6 @@ vph_pwr: vph-pwr-regulator {
>  	};
>  };
> 
> -&dispcc {
> -	/* Prevent simplefb from dying until we wire panel driver */
> -	status = "disabled";
> -};
> -
> -&gpi_dma0 {
> -	status = "okay";
> -};
> -
> -&gpu {
> -	status = "okay";
> -};
> -
>  &i2c1 {
>  	status = "okay";
> 
> @@ -158,118 +95,13 @@ &mdss_dsi0_out {
>  	data-lanes = <0 1 2 3>;
>  };
> 
> -&pil_cdsp_mem {
> -	reg = <0x0 0x51a00000 0x0 0xa00000>;
> -};
> -
> -&pm6125_gpios {
> -	vol_up_n: vol-up-n-state {
> -		pins = "gpio5";
> -		function = "normal";
> -		power-source = <0>;
> -		bias-pull-up;
> -		input-enable;
> -	};
> -};
> -
> -&pmi632_typec {
> -	status = "okay";
> -
> -	connector {
> -		compatible = "usb-c-connector";
> -
> -		power-role = "dual";
> -		data-role = "dual";
> -		self-powered;
> -
> -		typec-power-opmode = "default";
> -		pd-disable;
> -
> -		vbus-supply = <&pmi632_vbus>;
> -
> -		ports {
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -
> -			port@0 {
> -				reg = <0>;
> -				pmi632_hs_in: endpoint {
> -					remote-endpoint = <&usb_dwc3_hs>;
> -				};
> -			};
> -
> -			port@1 {
> -				reg = <1>;
> -				pmi632_ss_in: endpoint {
> -					remote-endpoint = <&usb_qmpphy_out>;
> -				};
> -			};
> -		};
> -	};
> -};
> -
> -&pmi632_vbus {
> -	regulator-min-microamp = <500000>;
> -	regulator-max-microamp = <1000000>;
> -
> -	status = "okay";
> -};
> -
> -&pon_pwrkey {
> -	status = "okay";
> -};
> -
> -&pon_resin {
> -	linux,code = <KEY_VOLUMEDOWN>;
> -
> -	status = "okay";
> -};
> -
> -&qupv3_id_0 {
> -	status = "okay";
> -};
> -
> -&remoteproc_adsp {
> -	status = "okay";
> -};
> -
> -&remoteproc_cdsp {
> -	status = "okay";
> -};
> -
> -&remoteproc_mpss {
> -	status = "okay";
> -};
> -
>  &rpm_requests {
>  	regulators-0 {
> -		compatible = "qcom,rpm-pm6125-regulators";
> -
> -		pm6125_s6: s6 {
> -			regulator-min-microvolt = <304000>;
> -			regulator-max-microvolt = <1456000>;
> -		};
> -
>  		pm6125_s7: s7 {
>  			regulator-min-microvolt = <1280000>;
>  			regulator-max-microvolt = <2080000>;
>  		};
> 
> -		pm6125_s8: s8 {
> -			regulator-min-microvolt = <1064000>;
> -			regulator-max-microvolt = <1304000>;
> -		};
> -
> -		pm6125_l1: l1 {
> -			regulator-min-microvolt = <952000>;
> -			regulator-max-microvolt = <1152000>;
> -		};
> -
> -		pm6125_l4: l4 {
> -			regulator-min-microvolt = <488000>;
> -			regulator-max-microvolt = <1000000>;
> -		};
> -
>  		pm6125_l5: l5 {
>  			regulator-min-microvolt = <1648000>;
>  			regulator-max-microvolt = <2960000>;
> @@ -278,11 +110,6 @@ pm6125_l5: l5 {
>  			regulator-always-on;
>  		};
> 
> -		pm6125_l6: l6 {
> -			regulator-min-microvolt = <576000>;
> -			regulator-max-microvolt = <656000>;
> -		};
> -
>  		pm6125_l7: l7 {
>  			/* sdhci2 vdd-io-bias supply */
>  			regulator-min-microvolt = <1256000>;
> @@ -291,51 +118,11 @@ pm6125_l7: l7 {
>  			regulator-always-on;
>  		};
> 
> -		pm6125_l8: l8 {
> -			regulator-min-microvolt = <400000>;
> -			regulator-max-microvolt = <728000>;
> -		};
> -
> -		pm6125_l9: l9 {
> -			regulator-min-microvolt = <1800000>;
> -			regulator-max-microvolt = <2000000>;
> -		};
> -
> -		pm6125_l10: l10 {
> -			regulator-min-microvolt = <1704000>;
> -			regulator-max-microvolt = <1904000>;
> -		};
> -
>  		pm6125_l11: l11 {
>  			regulator-min-microvolt = <1768000>;
>  			regulator-max-microvolt = <1952000>;
>  		};
> 
> -		pm6125_l12: l12 {
> -			regulator-min-microvolt = <1624000>;
> -			regulator-max-microvolt = <1984000>;
> -		};
> -
> -		pm6125_l13: l13 {
> -			regulator-min-microvolt = <1504000>;
> -			regulator-max-microvolt = <1952000>;
> -		};
> -
> -		pm6125_l14: l14 {
> -			regulator-min-microvolt = <1704000>;
> -			regulator-max-microvolt = <1904000>;
> -		};
> -
> -		pm6125_l15: l15 {
> -			regulator-min-microvolt = <2920000>;
> -			regulator-max-microvolt = <3232000>;
> -		};
> -
> -		pm6125_l16: l16 {
> -			regulator-min-microvolt = <1704000>;
> -			regulator-max-microvolt = <1904000>;
> -		};
> -
>  		pm6125_l17: l17 {
>  			regulator-min-microvolt = <1152000>;
>  			regulator-max-microvolt = <1384000>;
> @@ -346,21 +133,6 @@ pm6125_l18: l18 {
>  			regulator-max-microvolt = <1232000>;
>  		};
> 
> -		pm6125_l19: l19 {
> -			regulator-min-microvolt = <1624000>;
> -			regulator-max-microvolt = <3304000>;
> -		};
> -
> -		pm6125_l20: l20 {
> -			regulator-min-microvolt = <1624000>;
> -			regulator-max-microvolt = <3304000>;
> -		};
> -
> -		pm6125_l21: l21 {
> -			regulator-min-microvolt = <2400000>;
> -			regulator-max-microvolt = <3600000>;
> -		};
> -
>  		pm6125_l22: l22 {
>  			regulator-min-microvolt = <2952000>;
>  			regulator-max-microvolt = <2960000>;
> @@ -369,11 +141,6 @@ pm6125_l22: l22 {
>  			regulator-always-on;
>  		};
> 
> -		pm6125_l23: l23 {
> -			regulator-min-microvolt = <3200000>;
> -			regulator-max-microvolt = <3400000>;
> -		};
> -
>  		pm6125_l24: l24 {
>  			regulator-min-microvolt = <2704000>;
>  			regulator-max-microvolt = <3600000>;
> @@ -382,23 +149,9 @@ pm6125_l24: l24 {
>  };
> 
>  &sdhc_2 {
> -	cd-gpios = <&tlmm 88 GPIO_ACTIVE_HIGH>;
> -
> -	pinctrl-0 = <&sdc2_state_on>, <&sdc2_cd_on>;
> -	pinctrl-1 = <&sdc2_state_off>, <&sdc2_cd_off>;
> -	pinctrl-names = "default", "sleep";
> -
> -	vmmc-supply = <&pm6125_l22>;
> -	vqmmc-supply = <&pm6125_l5>;
>  	/* No binding for vdd-io-bias on L7*/
>  	no-sdio;
>  	no-mmc;
> -
> -	status = "okay";
> -};
> -
> -&sleep_clk {
> -	clock-frequency = <32764>;
>  };
> 
>  &spi2 {
> @@ -406,8 +159,6 @@ &spi2 {
>  };
> 
>  &tlmm {
> -	gpio-reserved-ranges = <14 4>; /* Fingerprint SPI */
> -
>  	lm3692x_bl_active: lm3692x-active-state {
>  		pins = "gpio99";
>  		function = "gpio";
> @@ -422,20 +173,6 @@ mdss_dsi_active: mdss-dsi-active-state {
>  		bias-disable;
>  	};
> 
> -	sdc2_cd_on: sdc2-cd-on-state {
> -		pins = "gpio88";
> -		function = "gpio";
> -		drive-strength = <2>;
> -		bias-pull-up;
> -	};
> -
> -	sdc2_cd_off: sdc2-cd-off-state {
> -		pins = "gpio88";
> -		function = "gpio";
> -		drive-strength = <2>;
> -		bias-disable;
> -	};
> -
>  	te_active: te-active-state {
>  		pins = "gpio81";
>  		function = "mdp_vsync";
> @@ -443,55 +180,3 @@ te_active: te-active-state {
>  		bias-pull-down;
>  	};
>  };
> -
> -&ufs_mem_hc {
> -	vcc-max-microamp = <600000>;
> -	vcc-supply = <&pm6125_l24>;
> -	vccq2-max-microamp = <600000>;
> -	vccq2-supply = <&pm6125_l11>;
> -	vdd-hba-supply = <&pm6125_l18>;
> -
> -	status = "okay";
> -};
> -
> -&ufs_mem_phy {
> -	vdda-phy-supply = <&pm6125_l4>;
> -	vdda-pll-supply = <&pm6125_l12>;
> -
> -	status = "okay";
> -};
> -
> -&usb {
> -	status = "okay";
> -};
> -
> -&usb_dwc3 {
> -	maximum-speed = "high-speed";
> -};
> -
> -&usb_dwc3_hs {
> -	remote-endpoint = <&pmi632_hs_in>;
> -};
> -
> -&usb_hsphy {
> -	vdd-supply = <&pm6125_l4>;
> -	vdda-pll-supply = <&pm6125_l12>;
> -	vdda-phy-dpdm-supply = <&pm6125_l15>;
> -
> -	status = "okay";
> -};
> -
> -&usb_qmpphy {
> -	vdda-phy-supply = <&pm6125_l4>;
> -	vdda-pll-supply = <&pm6125_l12>;
> -
> -	status = "okay";
> -};
> -
> -&usb_qmpphy_out {
> -	remote-endpoint = <&pmi632_ss_in>;
> -};
> -
> -&xo_board {
> -	clock-frequency = <19200000>;
> -};
> diff --git a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi 
> b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi
> new file mode 100644
> index 0000000000..16883e35b5
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi
> @@ -0,0 +1,335 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
> +/*
> + * Copyright (c) 2026 Adam Skladowski <a39skl@gmail.com>
> + */
> +
> +#include "sm6115.dtsi"
> +#include "pm6125.dtsi"
> +#include "pmi632.dtsi"
> +
> +/delete-node/ &pil_adsp_mem;
> +/delete-node/ &pil_gpu_mem;
> +/delete-node/ &pil_ipa_fw_mem;
> +/delete-node/ &pil_ipa_gsi_mem;
> +
> +/ {
> +	chassis-type = "handset";
> +
> +	chosen {
> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		framebuffer0: framebuffer@5c000000 {
> +			compatible = "simple-framebuffer";
> +			reg = <0 0x5c000000 0 (2340 * 1080 * 4)>;
> +			width = <1080>;
> +			height = <2340>;
> +			stride = <(1080 * 4)>;
> +			format = "a8r8g8b8";
> +			clocks = <&gcc GCC_DISP_HF_AXI_CLK>;
> +		};
> +	};
> +
> +	gpio-keys {
> +		compatible = "gpio-keys";
> +
> +		pinctrl-0 = <&vol_up_n>;
> +		pinctrl-names = "default";
> +
> +		key-volume-up {
> +			label = "Volume Up";
> +			linux,code = <KEY_VOLUMEUP>;
> +			gpios = <&pm6125_gpios 5 GPIO_ACTIVE_LOW>;
> +			debounce-interval = <15>;
> +			linux,can-disable;
> +			wakeup-source;
> +		};
> +	};
> +
> +	reserved-memory {
> +		pil_ipa_fw_mem: memory@55a00000 {
> +			reg = <0x0 0x55a00000 0x0 0x10000>;
> +			no-map;
> +		};
> +
> +		pil_ipa_gsi_mem: memory@55a10000 {
> +			reg = <0x0 0x55a10000 0x0 0x5000>;
> +			no-map;
> +		};
> +	};
> +};
> +
> +&dispcc {
> +	/* Prevent simplefb from dying until we wire panel driver */
> +	status = "disabled";
> +};
> +
> +&gpi_dma0 {
> +	status = "okay";
> +};
> +
> +&gpu {
> +	status = "okay";
> +};
> +
> +&pil_cdsp_mem {
> +	reg = <0x0 0x51a00000 0x0 0xa00000>;
> +};
> +
> +&pm6125_gpios {
> +	vol_up_n: vol-up-n-state {
> +		pins = "gpio5";
> +		function = "normal";
> +		power-source = <0>;
> +		bias-pull-up;
> +		input-enable;
> +	};
> +};
> +
> +&pmi632_typec {
> +	status = "okay";
> +
> +	connector {
> +		compatible = "usb-c-connector";
> +
> +		power-role = "dual";
> +		data-role = "dual";
> +		self-powered;
> +
> +		typec-power-opmode = "default";
> +		pd-disable;
> +
> +		vbus-supply = <&pmi632_vbus>;
> +
> +		ports {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			port@0 {
> +				reg = <0>;
> +				pmi632_hs_in: endpoint {
> +					remote-endpoint = <&usb_dwc3_hs>;
> +				};
> +			};
> +
> +			port@1 {
> +				reg = <1>;
> +				pmi632_ss_in: endpoint {
> +					remote-endpoint = <&usb_qmpphy_out>;
> +				};
> +			};
> +		};
> +	};
> +};
> +
> +&pmi632_vbus {
> +	regulator-min-microamp = <500000>;
> +	regulator-max-microamp = <1000000>;
> +
> +	status = "okay";
> +};
> +
> +&pon_pwrkey {
> +	status = "okay";
> +};
> +
> +&pon_resin {
> +	linux,code = <KEY_VOLUMEDOWN>;
> +
> +	status = "okay";
> +};
> +
> +&qupv3_id_0 {
> +	status = "okay";
> +};
> +
> +&remoteproc_adsp {
> +	status = "okay";
> +};
> +
> +&remoteproc_cdsp {
> +	status = "okay";
> +};
> +
> +&remoteproc_mpss {
> +	status = "okay";
> +};
> +
> +&rpm_requests {
> +	regulators-0 {
> +		compatible = "qcom,rpm-pm6125-regulators";
> +
> +		pm6125_s6: s6 {
> +			regulator-min-microvolt = <304000>;
> +			regulator-max-microvolt = <1456000>;
> +		};
> +
> +		pm6125_s8: s8 {
> +			regulator-min-microvolt = <1064000>;
> +			regulator-max-microvolt = <1304000>;
> +		};
> +
> +		pm6125_l1: l1 {
> +			regulator-min-microvolt = <952000>;
> +			regulator-max-microvolt = <1152000>;
> +		};
> +
> +		pm6125_l4: l4 {
> +			regulator-min-microvolt = <488000>;
> +			regulator-max-microvolt = <1000000>;
> +		};
> +
> +		pm6125_l6: l6 {
> +			regulator-min-microvolt = <576000>;
> +			regulator-max-microvolt = <656000>;
> +		};
> +
> +		pm6125_l8: l8 {
> +			regulator-min-microvolt = <400000>;
> +			regulator-max-microvolt = <728000>;
> +		};
> +
> +		pm6125_l9: l9 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <2000000>;
> +		};
> +
> +		pm6125_l10: l10 {
> +			regulator-min-microvolt = <1704000>;
> +			regulator-max-microvolt = <1904000>;
> +		};
> +
> +		pm6125_l12: l12 {
> +			regulator-min-microvolt = <1624000>;
> +			regulator-max-microvolt = <1984000>;
> +		};
> +
> +		pm6125_l13: l13 {
> +			regulator-min-microvolt = <1504000>;
> +			regulator-max-microvolt = <1952000>;
> +		};
> +
> +		pm6125_l14: l14 {
> +			regulator-min-microvolt = <1704000>;
> +			regulator-max-microvolt = <1904000>;
> +		};
> +
> +		pm6125_l15: l15 {
> +			regulator-min-microvolt = <2920000>;
> +			regulator-max-microvolt = <3232000>;
> +		};
> +
> +		pm6125_l16: l16 {
> +			regulator-min-microvolt = <1704000>;
> +			regulator-max-microvolt = <1904000>;
> +		};
> +
> +		pm6125_l19: l19 {
> +			regulator-min-microvolt = <1624000>;
> +			regulator-max-microvolt = <3304000>;
> +		};
> +
> +		pm6125_l20: l20 {
> +			regulator-min-microvolt = <1624000>;
> +			regulator-max-microvolt = <3304000>;
> +		};
> +
> +		pm6125_l21: l21 {
> +			regulator-min-microvolt = <2400000>;
> +			regulator-max-microvolt = <3600000>;
> +		};
> +
> +		pm6125_l23: l23 {
> +			regulator-min-microvolt = <3200000>;
> +			regulator-max-microvolt = <3400000>;
> +		};
> +	};
> +};
> +
> +&sdhc_2 {
> +	cd-gpios = <&tlmm 88 GPIO_ACTIVE_HIGH>;
> +
> +	pinctrl-0 = <&sdc2_state_on>, <&sdc2_cd_on>;
> +	pinctrl-1 = <&sdc2_state_off>, <&sdc2_cd_off>;
> +	pinctrl-names = "default", "sleep";
> +
> +	vmmc-supply = <&pm6125_l22>;
> +	vqmmc-supply = <&pm6125_l5>;
> +
> +	status = "okay";
> +};
> +
> +&sleep_clk {
> +	clock-frequency = <32764>;
> +};
> +
> +&tlmm {
> +	gpio-reserved-ranges = <14 4>; /* SE5 SPI (fingerprint), not usable 
> from Linux */
> +
> +	sdc2_cd_on: sdc2-cd-on-state {
> +		pins = "gpio88";
> +		function = "gpio";
> +		drive-strength = <2>;
> +		bias-pull-up;
> +	};
> +
> +	sdc2_cd_off: sdc2-cd-off-state {
> +		pins = "gpio88";
> +		function = "gpio";
> +		drive-strength = <2>;
> +		bias-disable;
> +	};
> +};
> +
> +&ufs_mem_hc {
> +	vcc-max-microamp = <600000>;
> +	vcc-supply = <&pm6125_l24>;
> +	vccq2-max-microamp = <600000>;
> +	vccq2-supply = <&pm6125_l11>;
> +	vdd-hba-supply = <&pm6125_l18>;
> +
> +	status = "okay";
> +};
> +
> +&ufs_mem_phy {
> +	vdda-phy-supply = <&pm6125_l4>;
> +	vdda-pll-supply = <&pm6125_l12>;
> +
> +	status = "okay";
> +};
> +
> +&usb {
> +	status = "okay";
> +};
> +
> +&usb_dwc3 {
> +	maximum-speed = "high-speed";
> +};
> +
> +&usb_dwc3_hs {
> +	remote-endpoint = <&pmi632_hs_in>;
> +};
> +
> +&usb_hsphy {
> +	vdd-supply = <&pm6125_l4>;
> +	vdda-pll-supply = <&pm6125_l12>;
> +	vdda-phy-dpdm-supply = <&pm6125_l15>;
> +
> +	status = "okay";
> +};
> +
> +&usb_qmpphy {
> +	vdda-phy-supply = <&pm6125_l4>;
> +	vdda-pll-supply = <&pm6125_l12>;
> +
> +	status = "okay";
> +};
> +
> +&usb_qmpphy_out {
> +	remote-endpoint = <&pmi632_ss_in>;
> +};
> +
> +&xo_board {
> +	clock-frequency = <19200000>;
> +};

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 2/3] arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi
  2026-11-07 14:14 ` [PATCH v3 2/3] arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi Amir Hanip
  2026-11-07 17:49   ` Barnabás Czémán
@ 2026-11-07 18:26   ` Barnabás Czémán
  1 sibling, 0 replies; 6+ messages in thread
From: Barnabás Czémán @ 2026-11-07 18:26 UTC (permalink / raw)
  To: Amir Hanip
  Cc: andersson, konradybcio, linux-arm-msm, abelvesa, conor+dt,
	devicetree, krzk+dt, linux-kernel, robh, a39skl, konrad.dybcio

On 2026-11-07 15:14, Amir Hanip wrote:
> Move the nodes shared with the other Xiaomi SM6115 variants (Redmi 9T
> and Poco M3) into sm6115-xiaomi-lime-common.dtsi, so that the other
> variants can reuse them. No functional change intended: the
> decompiled lemon DTS is identical before and after, except for the
> numbering of auto-generated phandles.
> 
> Signed-off-by: Amir Hanip <killdeath104@gmail.com>
> ---
>  .../boot/dts/qcom/sm6115-xiaomi-lemon.dts     | 317 +----------------
>  .../dts/qcom/sm6115-xiaomi-lime-common.dtsi   | 335 ++++++++++++++++++
>  2 files changed, 336 insertions(+), 316 deletions(-)
>  create mode 100644 
> arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi
> 
> diff --git a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts 
> b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
> index 881e05b701..2caaca3033 100644
> --- a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
> +++ b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
> @@ -5,41 +5,17 @@
> 
>  /dts-v1/;
> 
> -#include "sm6115.dtsi"
> -#include "pm6125.dtsi"
> -#include "pmi632.dtsi"
>  #include <dt-bindings/leds/common.h>
> -
> -/delete-node/ &pil_adsp_mem;
> -/delete-node/ &pil_gpu_mem;
> -/delete-node/ &pil_ipa_fw_mem;
> -/delete-node/ &pil_ipa_gsi_mem;
> +#include "sm6115-xiaomi-lime-common.dtsi"
> 
>  / {
>  	model = "Xiaomi Redmi 9T";
>  	compatible = "xiaomi,lemon", "qcom,sm6115";
> -	chassis-type = "handset";
> 
>  	aliases {
>  		mmc0 = &sdhc_2;
>  	};
> 
> -	chosen {
> -		#address-cells = <2>;
> -		#size-cells = <2>;
> -		ranges;
> -
> -		framebuffer0: framebuffer@5c000000 {
> -			compatible = "simple-framebuffer";
> -			reg = <0 0x5c000000 0 (2340 * 1080 * 4)>;
> -			width = <1080>;
> -			height = <2340>;
> -			stride = <(1080 * 4)>;
> -			format = "a8r8g8b8";
> -			clocks = <&gcc GCC_DISP_HF_AXI_CLK>;
> -		};
> -	};
> -
>  	backlight_dsi: backlight-dsi {
>  		compatible = "led-backlight";
>  		leds = <&led_backlight>;
> @@ -49,38 +25,12 @@ backlight_dsi: backlight-dsi {
>  		status = "disabled";
>  	};
> 
> -	gpio-keys {
> -		compatible = "gpio-keys";
> -
> -		pinctrl-0 = <&vol_up_n>;
> -		pinctrl-names = "default";
> -
> -		key-volume-up {
> -			label = "Volume Up";
> -			linux,code = <KEY_VOLUMEUP>;
> -			gpios = <&pm6125_gpios 5 GPIO_ACTIVE_LOW>;
> -			debounce-interval = <15>;
> -			linux,can-disable;
> -			wakeup-source;
> -		};
> -	};
> -
>  	reserved-memory {
>  		pil_adsp_mem: memory@53400000 {
>  			reg = <0x0 0x53400000 0x0 0x2600000>;
>  			no-map;
>  		};
> 
> -		pil_ipa_fw_mem: memory@55a00000 {
> -			reg = <0x0 0x55a00000 0x0 0x10000>;
> -			no-map;
> -		};
> -
> -		pil_ipa_gsi_mem: memory@55a10000 {
> -			reg = <0x0 0x55a10000 0x0 0x5000>;
> -			no-map;
> -		};
> -
>  		pil_gpu_mem: memory@fa400000 {
>  			reg = <0x0 0xfa400000 0x0 0x2000>;
>  			no-map;
> @@ -108,19 +58,6 @@ vph_pwr: vph-pwr-regulator {
>  	};
>  };
> 
> -&dispcc {
> -	/* Prevent simplefb from dying until we wire panel driver */
> -	status = "disabled";
> -};
> -
> -&gpi_dma0 {
> -	status = "okay";
> -};
> -
> -&gpu {
> -	status = "okay";
> -};
> -
>  &i2c1 {
>  	status = "okay";
> 
> @@ -158,118 +95,13 @@ &mdss_dsi0_out {
>  	data-lanes = <0 1 2 3>;
>  };
> 
> -&pil_cdsp_mem {
> -	reg = <0x0 0x51a00000 0x0 0xa00000>;
> -};
> -
> -&pm6125_gpios {
> -	vol_up_n: vol-up-n-state {
> -		pins = "gpio5";
> -		function = "normal";
> -		power-source = <0>;
> -		bias-pull-up;
> -		input-enable;
> -	};
> -};
> -
> -&pmi632_typec {
> -	status = "okay";
> -
> -	connector {
> -		compatible = "usb-c-connector";
> -
> -		power-role = "dual";
> -		data-role = "dual";
> -		self-powered;
> -
> -		typec-power-opmode = "default";
> -		pd-disable;
> -
> -		vbus-supply = <&pmi632_vbus>;
> -
> -		ports {
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -
> -			port@0 {
> -				reg = <0>;
> -				pmi632_hs_in: endpoint {
> -					remote-endpoint = <&usb_dwc3_hs>;
> -				};
> -			};
> -
> -			port@1 {
> -				reg = <1>;
> -				pmi632_ss_in: endpoint {
> -					remote-endpoint = <&usb_qmpphy_out>;
> -				};
> -			};
> -		};
> -	};
> -};
> -
> -&pmi632_vbus {
> -	regulator-min-microamp = <500000>;
> -	regulator-max-microamp = <1000000>;
> -
> -	status = "okay";
> -};
> -
> -&pon_pwrkey {
> -	status = "okay";
> -};
> -
> -&pon_resin {
> -	linux,code = <KEY_VOLUMEDOWN>;
> -
> -	status = "okay";
> -};
> -
> -&qupv3_id_0 {
> -	status = "okay";
> -};
> -
> -&remoteproc_adsp {
> -	status = "okay";
> -};
> -
> -&remoteproc_cdsp {
> -	status = "okay";
> -};
> -
> -&remoteproc_mpss {
> -	status = "okay";
> -};
> -

You should not override rpm_request node here, you can use the labels
from the common to change the ranges like:
&pm6125_s7 {
    regulator-min-microvolt = <1280000>;
    regulator-max-microvolt = <2080000>;
};
>  &rpm_requests {
>  	regulators-0 {
> -		compatible = "qcom,rpm-pm6125-regulators";
> -
> -		pm6125_s6: s6 {
> -			regulator-min-microvolt = <304000>;
> -			regulator-max-microvolt = <1456000>;
> -		};
> -
>  		pm6125_s7: s7 {
>  			regulator-min-microvolt = <1280000>;
>  			regulator-max-microvolt = <2080000>;
>  		};
> 
> -		pm6125_s8: s8 {
> -			regulator-min-microvolt = <1064000>;
> -			regulator-max-microvolt = <1304000>;
> -		};
> -
> -		pm6125_l1: l1 {
> -			regulator-min-microvolt = <952000>;
> -			regulator-max-microvolt = <1152000>;
> -		};
> -
> -		pm6125_l4: l4 {
> -			regulator-min-microvolt = <488000>;
> -			regulator-max-microvolt = <1000000>;
> -		};
> -
>  		pm6125_l5: l5 {
>  			regulator-min-microvolt = <1648000>;
>  			regulator-max-microvolt = <2960000>;
> @@ -278,11 +110,6 @@ pm6125_l5: l5 {
>  			regulator-always-on;
>  		};
> 
> -		pm6125_l6: l6 {
> -			regulator-min-microvolt = <576000>;
> -			regulator-max-microvolt = <656000>;
> -		};
> -
>  		pm6125_l7: l7 {
>  			/* sdhci2 vdd-io-bias supply */
>  			regulator-min-microvolt = <1256000>;
> @@ -291,51 +118,11 @@ pm6125_l7: l7 {
>  			regulator-always-on;
>  		};
> 
> -		pm6125_l8: l8 {
> -			regulator-min-microvolt = <400000>;
> -			regulator-max-microvolt = <728000>;
> -		};
> -
> -		pm6125_l9: l9 {
> -			regulator-min-microvolt = <1800000>;
> -			regulator-max-microvolt = <2000000>;
> -		};
> -
> -		pm6125_l10: l10 {
> -			regulator-min-microvolt = <1704000>;
> -			regulator-max-microvolt = <1904000>;
> -		};
> -
>  		pm6125_l11: l11 {
>  			regulator-min-microvolt = <1768000>;
>  			regulator-max-microvolt = <1952000>;
>  		};
> 
> -		pm6125_l12: l12 {
> -			regulator-min-microvolt = <1624000>;
> -			regulator-max-microvolt = <1984000>;
> -		};
> -
> -		pm6125_l13: l13 {
> -			regulator-min-microvolt = <1504000>;
> -			regulator-max-microvolt = <1952000>;
> -		};
> -
> -		pm6125_l14: l14 {
> -			regulator-min-microvolt = <1704000>;
> -			regulator-max-microvolt = <1904000>;
> -		};
> -
> -		pm6125_l15: l15 {
> -			regulator-min-microvolt = <2920000>;
> -			regulator-max-microvolt = <3232000>;
> -		};
> -
> -		pm6125_l16: l16 {
> -			regulator-min-microvolt = <1704000>;
> -			regulator-max-microvolt = <1904000>;
> -		};
> -
>  		pm6125_l17: l17 {
>  			regulator-min-microvolt = <1152000>;
>  			regulator-max-microvolt = <1384000>;
> @@ -346,21 +133,6 @@ pm6125_l18: l18 {
>  			regulator-max-microvolt = <1232000>;
>  		};
> 
> -		pm6125_l19: l19 {
> -			regulator-min-microvolt = <1624000>;
> -			regulator-max-microvolt = <3304000>;
> -		};
> -
> -		pm6125_l20: l20 {
> -			regulator-min-microvolt = <1624000>;
> -			regulator-max-microvolt = <3304000>;
> -		};
> -
> -		pm6125_l21: l21 {
> -			regulator-min-microvolt = <2400000>;
> -			regulator-max-microvolt = <3600000>;
> -		};
> -
>  		pm6125_l22: l22 {
>  			regulator-min-microvolt = <2952000>;
>  			regulator-max-microvolt = <2960000>;
> @@ -369,11 +141,6 @@ pm6125_l22: l22 {
>  			regulator-always-on;
>  		};
> 
> -		pm6125_l23: l23 {
> -			regulator-min-microvolt = <3200000>;
> -			regulator-max-microvolt = <3400000>;
> -		};
> -
>  		pm6125_l24: l24 {
>  			regulator-min-microvolt = <2704000>;
>  			regulator-max-microvolt = <3600000>;
> @@ -382,23 +149,9 @@ pm6125_l24: l24 {
>  };
> 
>  &sdhc_2 {
> -	cd-gpios = <&tlmm 88 GPIO_ACTIVE_HIGH>;
> -
> -	pinctrl-0 = <&sdc2_state_on>, <&sdc2_cd_on>;
> -	pinctrl-1 = <&sdc2_state_off>, <&sdc2_cd_off>;
> -	pinctrl-names = "default", "sleep";
> -
> -	vmmc-supply = <&pm6125_l22>;
> -	vqmmc-supply = <&pm6125_l5>;
>  	/* No binding for vdd-io-bias on L7*/
>  	no-sdio;
>  	no-mmc;
> -
> -	status = "okay";
> -};
> -
> -&sleep_clk {
> -	clock-frequency = <32764>;
>  };
> 
>  &spi2 {
> @@ -406,8 +159,6 @@ &spi2 {
>  };
> 
>  &tlmm {
> -	gpio-reserved-ranges = <14 4>; /* Fingerprint SPI */
> -
>  	lm3692x_bl_active: lm3692x-active-state {
>  		pins = "gpio99";
>  		function = "gpio";
> @@ -422,20 +173,6 @@ mdss_dsi_active: mdss-dsi-active-state {
>  		bias-disable;
>  	};
> 
> -	sdc2_cd_on: sdc2-cd-on-state {
> -		pins = "gpio88";
> -		function = "gpio";
> -		drive-strength = <2>;
> -		bias-pull-up;
> -	};
> -
> -	sdc2_cd_off: sdc2-cd-off-state {
> -		pins = "gpio88";
> -		function = "gpio";
> -		drive-strength = <2>;
> -		bias-disable;
> -	};
> -
>  	te_active: te-active-state {
>  		pins = "gpio81";
>  		function = "mdp_vsync";
> @@ -443,55 +180,3 @@ te_active: te-active-state {
>  		bias-pull-down;
>  	};
>  };
> -
> -&ufs_mem_hc {
> -	vcc-max-microamp = <600000>;
> -	vcc-supply = <&pm6125_l24>;
> -	vccq2-max-microamp = <600000>;
> -	vccq2-supply = <&pm6125_l11>;
> -	vdd-hba-supply = <&pm6125_l18>;
> -
> -	status = "okay";
> -};
> -
> -&ufs_mem_phy {
> -	vdda-phy-supply = <&pm6125_l4>;
> -	vdda-pll-supply = <&pm6125_l12>;
> -
> -	status = "okay";
> -};
> -
> -&usb {
> -	status = "okay";
> -};
> -
> -&usb_dwc3 {
> -	maximum-speed = "high-speed";
> -};
> -
> -&usb_dwc3_hs {
> -	remote-endpoint = <&pmi632_hs_in>;
> -};
> -
> -&usb_hsphy {
> -	vdd-supply = <&pm6125_l4>;
> -	vdda-pll-supply = <&pm6125_l12>;
> -	vdda-phy-dpdm-supply = <&pm6125_l15>;
> -
> -	status = "okay";
> -};
> -
> -&usb_qmpphy {
> -	vdda-phy-supply = <&pm6125_l4>;
> -	vdda-pll-supply = <&pm6125_l12>;
> -
> -	status = "okay";
> -};
> -
> -&usb_qmpphy_out {
> -	remote-endpoint = <&pmi632_ss_in>;
> -};
> -
> -&xo_board {
> -	clock-frequency = <19200000>;
> -};
> diff --git a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi 
> b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi
> new file mode 100644
> index 0000000000..16883e35b5
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi
> @@ -0,0 +1,335 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
> +/*
> + * Copyright (c) 2026 Adam Skladowski <a39skl@gmail.com>
> + */
> +
> +#include "sm6115.dtsi"
> +#include "pm6125.dtsi"
> +#include "pmi632.dtsi"
> +
> +/delete-node/ &pil_adsp_mem;
> +/delete-node/ &pil_gpu_mem;
> +/delete-node/ &pil_ipa_fw_mem;
> +/delete-node/ &pil_ipa_gsi_mem;
> +
> +/ {
> +	chassis-type = "handset";
> +
> +	chosen {
> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		framebuffer0: framebuffer@5c000000 {
> +			compatible = "simple-framebuffer";
> +			reg = <0 0x5c000000 0 (2340 * 1080 * 4)>;
> +			width = <1080>;
> +			height = <2340>;
> +			stride = <(1080 * 4)>;
> +			format = "a8r8g8b8";
> +			clocks = <&gcc GCC_DISP_HF_AXI_CLK>;
> +		};
> +	};
> +
> +	gpio-keys {
> +		compatible = "gpio-keys";
> +
> +		pinctrl-0 = <&vol_up_n>;
> +		pinctrl-names = "default";
> +
> +		key-volume-up {
> +			label = "Volume Up";
> +			linux,code = <KEY_VOLUMEUP>;
> +			gpios = <&pm6125_gpios 5 GPIO_ACTIVE_LOW>;
> +			debounce-interval = <15>;
> +			linux,can-disable;
> +			wakeup-source;
> +		};
> +	};
> +
> +	reserved-memory {
> +		pil_ipa_fw_mem: memory@55a00000 {
> +			reg = <0x0 0x55a00000 0x0 0x10000>;
> +			no-map;
> +		};
> +
> +		pil_ipa_gsi_mem: memory@55a10000 {
> +			reg = <0x0 0x55a10000 0x0 0x5000>;
> +			no-map;
> +		};
> +	};
> +};
> +
> +&dispcc {
> +	/* Prevent simplefb from dying until we wire panel driver */
> +	status = "disabled";
> +};
> +
> +&gpi_dma0 {
> +	status = "okay";
> +};
> +
> +&gpu {
> +	status = "okay";
> +};
> +
> +&pil_cdsp_mem {
> +	reg = <0x0 0x51a00000 0x0 0xa00000>;
> +};
> +
> +&pm6125_gpios {
> +	vol_up_n: vol-up-n-state {
> +		pins = "gpio5";
> +		function = "normal";
> +		power-source = <0>;
> +		bias-pull-up;
> +		input-enable;
> +	};
> +};
> +
> +&pmi632_typec {
> +	status = "okay";
> +
> +	connector {
> +		compatible = "usb-c-connector";
> +
> +		power-role = "dual";
> +		data-role = "dual";
> +		self-powered;
> +
> +		typec-power-opmode = "default";
> +		pd-disable;
> +
> +		vbus-supply = <&pmi632_vbus>;
> +
> +		ports {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			port@0 {
> +				reg = <0>;
> +				pmi632_hs_in: endpoint {
> +					remote-endpoint = <&usb_dwc3_hs>;
> +				};
> +			};
> +
> +			port@1 {
> +				reg = <1>;
> +				pmi632_ss_in: endpoint {
> +					remote-endpoint = <&usb_qmpphy_out>;
> +				};
> +			};
> +		};
> +	};
> +};
> +
> +&pmi632_vbus {
> +	regulator-min-microamp = <500000>;
> +	regulator-max-microamp = <1000000>;
> +
> +	status = "okay";
> +};
> +
> +&pon_pwrkey {
> +	status = "okay";
> +};
> +
> +&pon_resin {
> +	linux,code = <KEY_VOLUMEDOWN>;
> +
> +	status = "okay";
> +};
> +
> +&qupv3_id_0 {
> +	status = "okay";
> +};
> +
> +&remoteproc_adsp {
> +	status = "okay";
> +};
> +
> +&remoteproc_cdsp {
> +	status = "okay";
> +};
> +
> +&remoteproc_mpss {
> +	status = "okay";
> +};
> +
Please add the missing regulators.
> +&rpm_requests {
> +	regulators-0 {
> +		compatible = "qcom,rpm-pm6125-regulators";
> +
> +		pm6125_s6: s6 {
> +			regulator-min-microvolt = <304000>;
> +			regulator-max-microvolt = <1456000>;
> +		};
> +
> +		pm6125_s8: s8 {
> +			regulator-min-microvolt = <1064000>;
> +			regulator-max-microvolt = <1304000>;
> +		};
> +
> +		pm6125_l1: l1 {
> +			regulator-min-microvolt = <952000>;
> +			regulator-max-microvolt = <1152000>;
> +		};
> +
> +		pm6125_l4: l4 {
> +			regulator-min-microvolt = <488000>;
> +			regulator-max-microvolt = <1000000>;
> +		};
> +
> +		pm6125_l6: l6 {
> +			regulator-min-microvolt = <576000>;
> +			regulator-max-microvolt = <656000>;
> +		};
> +
> +		pm6125_l8: l8 {
> +			regulator-min-microvolt = <400000>;
> +			regulator-max-microvolt = <728000>;
> +		};
> +
> +		pm6125_l9: l9 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <2000000>;
> +		};
> +
> +		pm6125_l10: l10 {
> +			regulator-min-microvolt = <1704000>;
> +			regulator-max-microvolt = <1904000>;
> +		};
> +
> +		pm6125_l12: l12 {
> +			regulator-min-microvolt = <1624000>;
> +			regulator-max-microvolt = <1984000>;
> +		};
> +
> +		pm6125_l13: l13 {
> +			regulator-min-microvolt = <1504000>;
> +			regulator-max-microvolt = <1952000>;
> +		};
> +
> +		pm6125_l14: l14 {
> +			regulator-min-microvolt = <1704000>;
> +			regulator-max-microvolt = <1904000>;
> +		};
> +
> +		pm6125_l15: l15 {
> +			regulator-min-microvolt = <2920000>;
> +			regulator-max-microvolt = <3232000>;
> +		};
> +
> +		pm6125_l16: l16 {
> +			regulator-min-microvolt = <1704000>;
> +			regulator-max-microvolt = <1904000>;
> +		};
> +
> +		pm6125_l19: l19 {
> +			regulator-min-microvolt = <1624000>;
> +			regulator-max-microvolt = <3304000>;
> +		};
> +
> +		pm6125_l20: l20 {
> +			regulator-min-microvolt = <1624000>;
> +			regulator-max-microvolt = <3304000>;
> +		};
> +
> +		pm6125_l21: l21 {
> +			regulator-min-microvolt = <2400000>;
> +			regulator-max-microvolt = <3600000>;
> +		};
> +
> +		pm6125_l23: l23 {
> +			regulator-min-microvolt = <3200000>;
> +			regulator-max-microvolt = <3400000>;
> +		};
> +	};
> +};
> +
> +&sdhc_2 {
> +	cd-gpios = <&tlmm 88 GPIO_ACTIVE_HIGH>;
> +
> +	pinctrl-0 = <&sdc2_state_on>, <&sdc2_cd_on>;
> +	pinctrl-1 = <&sdc2_state_off>, <&sdc2_cd_off>;
> +	pinctrl-names = "default", "sleep";
> +
> +	vmmc-supply = <&pm6125_l22>;
> +	vqmmc-supply = <&pm6125_l5>;
> +
> +	status = "okay";
> +};
> +
> +&sleep_clk {
> +	clock-frequency = <32764>;
> +};
> +
> +&tlmm {
> +	gpio-reserved-ranges = <14 4>; /* SE5 SPI (fingerprint), not usable 
> from Linux */
> +
> +	sdc2_cd_on: sdc2-cd-on-state {
> +		pins = "gpio88";
> +		function = "gpio";
> +		drive-strength = <2>;
> +		bias-pull-up;
> +	};
> +
> +	sdc2_cd_off: sdc2-cd-off-state {
> +		pins = "gpio88";
> +		function = "gpio";
> +		drive-strength = <2>;
> +		bias-disable;
> +	};
> +};
> +
> +&ufs_mem_hc {
> +	vcc-max-microamp = <600000>;
> +	vcc-supply = <&pm6125_l24>;
> +	vccq2-max-microamp = <600000>;
> +	vccq2-supply = <&pm6125_l11>;
> +	vdd-hba-supply = <&pm6125_l18>;
> +
> +	status = "okay";
> +};
> +
> +&ufs_mem_phy {
> +	vdda-phy-supply = <&pm6125_l4>;
> +	vdda-pll-supply = <&pm6125_l12>;
> +
> +	status = "okay";
> +};
> +
> +&usb {
> +	status = "okay";
> +};
> +
> +&usb_dwc3 {
> +	maximum-speed = "high-speed";
> +};
> +
> +&usb_dwc3_hs {
> +	remote-endpoint = <&pmi632_hs_in>;
> +};
> +
> +&usb_hsphy {
> +	vdd-supply = <&pm6125_l4>;
> +	vdda-pll-supply = <&pm6125_l12>;
> +	vdda-phy-dpdm-supply = <&pm6125_l15>;
> +
> +	status = "okay";
> +};
> +
> +&usb_qmpphy {
> +	vdda-phy-supply = <&pm6125_l4>;
> +	vdda-pll-supply = <&pm6125_l12>;
> +
> +	status = "okay";
> +};
> +
> +&usb_qmpphy_out {
> +	remote-endpoint = <&pmi632_ss_in>;
> +};
> +
> +&xo_board {
> +	clock-frequency = <19200000>;
> +};

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-11-07 18:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-07 14:14 [PATCH v3 0/3] arm64: dts: qcom: Add Xiaomi Poco M3 (citrus) Amir Hanip
2026-11-07 14:14 ` [PATCH v3 1/3] dt-bindings: arm: qcom: Document Xiaomi Poco M3 Amir Hanip
2026-11-07 14:14 ` [PATCH v3 2/3] arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi Amir Hanip
2026-11-07 17:49   ` Barnabás Czémán
2026-11-07 18:26   ` Barnabás Czémán
2026-11-07 14:14 ` [PATCH v3 3/3] arm64: dts: qcom: Add Xiaomi Poco M3 Amir Hanip

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®