arm64: dts: qcom: Add Xiaomi Poco M3 (citrus)
v3 cover arm64: dts: qcom: Add Xiaomi Poco M3 (citrus)
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/[email protected]/
Link to v2:
https://lore.kernel.org/linux-arm-msm/[email protected]/
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
Signature · 1 line
2.47.3
PATCH v3 1/3 dt-bindings: arm: qcom: Document Xiaomi Poco M3
Add compatible for Xiaomi Poco M3 codename citrus, which is based on Snapdragon 662 (SM6115) SoC.
--- Documentation/devicetree/bindings/arm/qcom.yaml | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/arm/qcom.yaml +1 -0
@@ -1068,6 +1068,7 @@ properties: - items: - enum: - fxtec,pro1x + - xiaomi,citrus - xiaomi,lemon - const: qcom,sm6115
Signature · 1 line
2.47.3
PATCH v3 2/3 arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi
In reply to Amir HanipMove 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.
--- .../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
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts +1 -316
@@ -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>; -};
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi new file +335 -0
335 lines not on this page · raw message
Signature · 1 line
2.47.3
Re: [PATCH v3 2/3] arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi
Quoted 76 lines · Amir Hanip
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 <[email protected]>--- .../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.dtsiarch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts +1
-36@@ -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>;
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts backlight_dsi: backlight-dsi { · line 32
Quoted 10 lines
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts +0
-5- 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>;
};arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts backlight_dsi: backlight-dsi { · line 83
Quoted 11 lines
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts +0
-10- 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>;
};Quoted 692 lines
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts +0
-265pil_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>; -};arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi new file +268
-0@@ -0,0 +1,335 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* + * Copyright (c) 2026 Adam Skladowski <[email protected]> + */ + +#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 usablefrom Linux */
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi new file +67
-0+ + 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>; +};
Re: [PATCH v3 2/3] arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi
In reply to Amir HanipQuoted 197 lines · Amir Hanip
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 <[email protected]>--- .../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.dtsiarch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts +1
-137@@ -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";
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts &mdss_dsi0_out { · line 243
Quoted 10 lines
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts +0
-10-}; - -&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>;
};
Quoted 394 lines
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts +0
-169&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>; -};arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi new file +148
-0@@ -0,0 +1,335 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* + * Copyright (c) 2026 Adam Skladowski <[email protected]> + */ + +#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";
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi line 158
Quoted 10 lines
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi new file +10
-0+}; + +&remoteproc_cdsp { + status = "okay"; +}; + +&remoteproc_mpss { + status = "okay"; +}; +
Please add the missing regulators.
Quoted 178 lines
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi new file +110
-0+&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 usablefrom Linux */
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lime-common.dtsi new file +67
-0+ + 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>; +};
Re: [PATCH v3 2/3] arm64: dts: qcom: sm6115-xiaomi-lemon: Split out a common dtsi
Quoted 8 lines · Barnabas Czeman
You should not override
rpm_requestnode here, you can use the labels from the common to change the ranges like:&pm6125_s7 { regulator-min-microvolt = <1280000>; regulator-max-microvolt = <2080000>; };[...]
Please add the missing regulators.
Hi Barnabas,
Thanks, understood. In v4 the common dtsi will define all the PM6125 regulators with their labels, and lemon and citrus will only change the ranges that differ through those labels, without overriding rpm_requests. I assume that by the missing regulators you mean the ones that lemon.dts still defines (s7, l5, l7, l11, l17, l18, l22 and l24). Is that right?
About your previous mail: thanks for the dumps. In v4 I will move the ADSP and GPU carve-outs to the common dtsi with the values from your MIUI dump (ADSP 0x53800000/0x2200000, GPU 0x55a15000/0x2000), as a separate patch from the pure split, so it can be reviewed on its own. It changes lemon's compiled DT: the ADSP region shrinks by 4 MiB and the GPU region moves away from 0xfa400000.
I can only test citrus. Would you, or Adam, be able to test the lemon patches in v4? A Tested-by would help a lot.
Sashiko points out that WiFi bypasses the wcn3950-pmu regulators. WiFi works on citrus as is, but I will route its supplies through vreg_pmu_xo/rf/ch0 like qrb2210-rb1 does and test it before v4.
Thanks,
Amir
PATCH v3 3/3 arm64: dts: qcom: Add Xiaomi Poco M3
In reply to Amir HanipAdd 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.
--- 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
arch/arm64/boot/dts/qcom/Makefile +1 -0
@@ -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
arch/arm64/boot/dts/qcom/sm6115-xiaomi-citrus.dts new file +237 -0
237 lines not on this page · raw message
Signature · 1 line
2.47.3
[email protected]
AI reviewRe: [PATCH v3 3/3] arm64: dts: qcom: Add Xiaomi Poco M3
Thank you for your contribution! Sashiko AI review found 1 potential issue to consider: - [Medium] arm64: dts: qcom: citrus: wifi node bypasses wcn3950-pmu regulators --
Thank you for your contribution! Sashiko AI review found 1 potential issue to consider:
- [Medium] arm64: dts: qcom: citrus: wifi node bypasses wcn3950-pmu regulators
--
commit 143f785de163a225c81347bf706860097515c0a4
Author: Amir Hanip <[email protected]>
arm64: dts: qcom: Add Xiaomi Poco M3
This commit adds the initial device tree for the SM6115-based Xiaomi Poco M3 (citrus).
Quoted 6 lines
arch/arm64/boot/dts/qcom/sm6115-xiaomi-citrus.dts new file +0
-0@@ -0,0 +1,237 @@
[ ... ]
Quoted 36 lines
arch/arm64/boot/dts/qcom/sm6115-xiaomi-citrus.dts new file +36
-0+ 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"; + }; + }; + }; +};
[ ... ]
arch/arm64/boot/dts/qcom/sm6115-xiaomi-citrus.dts line 237
Quoted 9 lines
+&wifi {
arch/arm64/boot/dts/qcom/sm6115-xiaomi-citrus.dts new file +8
-0+ 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"; +};
[Severity: Medium]
Should the wifi node consume the wcn3950-pmu regulator outputs (vreg_pmu_xo, vreg_pmu_rf, vreg_pmu_ch0) instead of referencing the pm6125_l* regulators directly?
pwrseq_qcom_wcn3990_match() matches the WiFi device by checking whether vdd-1.8-xo-supply is a child regulator of wcn3950-pmu. Because vdd-1.8-xo-supply points to pm6125_l16 under rpm-requests, devm_pwrseq_get(&pdev->dev, "wlan") in ath10k_snoc_probe() fails to match and falls back to ar_snoc->pwrseq = NULL. This bypasses the WCN3950 power sequence and never votes for wcn3950-pmu's vddio-supply (pm6125_l9), leaving vddio unpowered when Bluetooth is off or disabling it when Bluetooth powers down while WiFi is active.
In addition, vdd-3.3-ch1-supply is wired to pm6125_l24 (the UFS vcc supply in sm6115-xiaomi-lime-common.dtsi) while wcn3950-pmu defines vreg_pmu_ch1 without a vddch1-supply input, and vdd-0.8-cx-mx-supply points to pm6125_l4 (the 0.9V USB/UFS PHY supply) rather than pm6125_l8.
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=3