* [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; 5+ 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] 5+ 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; 5+ 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] 5+ 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 14:14 ` [PATCH v3 3/3] arm64: dts: qcom: Add Xiaomi Poco M3 Amir Hanip 2 siblings, 1 reply; 5+ 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] 5+ 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 0 siblings, 0 replies; 5+ 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] 5+ 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; 5+ 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] 5+ messages in thread
end of thread, other threads:[~2026-11-07 17:49 UTC | newest] Thread overview: 5+ 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 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®