* [PATCH v3 1/7] dt-bindings: vendor-prefixes: Add LeEco
2026-08-21 11:36 [PATCH v3 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
@ 2026-08-21 11:36 ` Adam Skladowski
2026-08-21 11:36 ` [PATCH v3 2/7] dt-bindings: arm: qcom: Document Motorola Moto One Adam Skladowski
` (5 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Adam Skladowski @ 2026-08-21 11:36 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Kees Cook, Tony Luck, Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, linux-hardening,
Adam Skladowski
Add vendor prefix for now dead ecosystem company LeEco
Signed-off-by: Adam Skladowski <a39.skl@gmail.com>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 136681412501..dd0762d3334b 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -947,6 +947,8 @@ patternProperties:
description: Shenzen LC Technology Co., Ltd.
"^leadtek,.*":
description: Shenzhen Leadtek Technology Co., Ltd.
+ "^leeco,.*":
+ description: Leshi Holding Beijing.
"^leez,.*":
description: Leez
"^lego,.*":
--
2.55.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v3 2/7] dt-bindings: arm: qcom: Document Motorola Moto One
2026-08-21 11:36 [PATCH v3 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
2026-08-21 11:36 ` [PATCH v3 1/7] dt-bindings: vendor-prefixes: Add LeEco Adam Skladowski
@ 2026-08-21 11:36 ` Adam Skladowski
2026-08-21 11:36 ` [PATCH v3 3/7] arm64: dts: qcom: Add Motorola One Adam Skladowski
` (4 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Adam Skladowski @ 2026-08-21 11:36 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Kees Cook, Tony Luck, Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, linux-hardening,
Adam Skladowski, Krzysztof Kozlowski
Add compatible for Motorola Moto One(deen) based on Snapdragon 625 SoC.
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Adam Skladowski <a39.skl@gmail.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 ff8a35df7862..289a3de1d24b 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -292,6 +292,7 @@ properties:
- items:
- enum:
- flipkart,rimob
+ - motorola,deen
- motorola,potter
- xiaomi,daisy
- xiaomi,mido
--
2.55.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v3 3/7] arm64: dts: qcom: Add Motorola One
2026-08-21 11:36 [PATCH v3 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
2026-08-21 11:36 ` [PATCH v3 1/7] dt-bindings: vendor-prefixes: Add LeEco Adam Skladowski
2026-08-21 11:36 ` [PATCH v3 2/7] dt-bindings: arm: qcom: Document Motorola Moto One Adam Skladowski
@ 2026-08-21 11:36 ` Adam Skladowski
2026-08-21 11:47 ` sashiko-bot
2026-08-21 11:36 ` [PATCH v3 4/7] dt-bindings: arm: qcom: Document LeEco Le2 Adam Skladowski
` (3 subsequent siblings)
6 siblings, 1 reply; 11+ messages in thread
From: Adam Skladowski @ 2026-08-21 11:36 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Kees Cook, Tony Luck, Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, linux-hardening,
Adam Skladowski
Add a devicetree for the Motorola One smartphone, which is based
on the Jacala/MSM8953 SoC.
Supported functionality as of this initial submission:
* I2C peripherals (Touchscreen,NFC)
* Power Button, Volume Keys
* Regulators (PM8953)
* Remoteprocs (ADSP, MPSS, WCNSS)
* USB
Device tree also contains supply maps to other subsystems like MDSS
but due to missing dependencies like panel those are disabled.
Signed-off-by: Adam Skladowski <a39.skl@gmail.com>
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
arch/arm64/boot/dts/qcom/msm8953-motorola-deen.dts | 440 +++++++++++++++++++++
2 files changed, 441 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 1c86e7e98f55..11e953657691 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -120,6 +120,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8939-sony-xperia-kanuti-tulip.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8939-wingtech-wt82918.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8939-wingtech-wt82918hd.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8953-flipkart-rimob.dtb
+dtb-$(CONFIG_ARCH_QCOM) += msm8953-motorola-deen.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8953-motorola-potter.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8953-xiaomi-daisy.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8953-xiaomi-mido.dtb
diff --git a/arch/arm64/boot/dts/qcom/msm8953-motorola-deen.dts b/arch/arm64/boot/dts/qcom/msm8953-motorola-deen.dts
new file mode 100644
index 000000000000..66ecfab69c36
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8953-motorola-deen.dts
@@ -0,0 +1,440 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (c) 2026 Adam Skladowski <a39skl@gmail.com>
+ */
+
+/dts-v1/;
+#include <dt-bindings/usb/pd.h>
+#include "msm8953.dtsi"
+#include "pm8953.dtsi"
+#include "pmi8950.dtsi"
+
+/delete-node/ &cont_splash_mem;
+/delete-node/ &qseecom_mem;
+
+/ {
+ model = "Motorola One";
+ compatible = "motorola,deen", "qcom,msm8953";
+ chassis-type = "handset";
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&gpio_key_default>;
+ pinctrl-names = "default";
+
+ key-volume-up {
+ label = "Volume Up";
+ gpios = <&tlmm 85 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_VOLUMEUP>;
+ };
+ };
+
+ reserved-memory {
+ qseecom_mem: qseecom@84300000 {
+ reg = <0x0 0x84300000 0x0 0x2000000>;
+ no-map;
+ };
+ };
+
+ vph_pwr: vph-pwr-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "vph_pwr";
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ /* Fake VBUS 5V supply till we wire pmi8950 one */
+ fusb302_vbus: otg-vbus {
+ compatible = "regulator-fixed";
+ regulator-name = "otg-vbus";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-always-on;
+ regulator-boot-on;
+ };
+};
+
+&hsusb_phy {
+ vdd-supply = <&pm8953_l3>;
+ vdda-phy-dpdm-supply = <&pm8953_l13>;
+ vdda-pll-supply = <&pm8953_l7>;
+
+ status = "okay";
+};
+
+&i2c_1 {
+ status = "okay";
+
+ typec-portc@22 {
+ compatible = "fcs,fusb302";
+ reg = <0x22>;
+ interrupts-extended = <&tlmm 9 IRQ_TYPE_LEVEL_LOW>;
+
+ pinctrl-0 = <&fusb302_int_default>;
+ pinctrl-names = "default";
+
+ vbus-supply = <&fusb302_vbus>;
+
+ connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ power-role = "dual";
+ data-role = "dual";
+ op-sink-microwatt = <2000000>;
+ try-power-role = "sink";
+ typec-power-opmode = "default";
+ source-pdos = <PDO_FIXED(5000, 500,
+ PDO_FIXED_DUAL_ROLE |
+ PDO_FIXED_DATA_SWAP |
+ PDO_FIXED_USB_COMM)>;
+ sink-pdos = <PDO_FIXED(5000, 3000,
+ PDO_FIXED_DUAL_ROLE |
+ PDO_FIXED_DATA_SWAP |
+ PDO_FIXED_USB_COMM)>;
+
+ port {
+ fusb302: endpoint {
+ remote-endpoint = <&usb_dwc3_hs>;
+ };
+ };
+ };
+ };
+};
+
+&i2c_2 {
+ status = "okay";
+};
+
+&i2c_3 {
+ status = "okay";
+};
+
+&i2c_5 {
+ status = "okay";
+
+ pn553: nfc@28 {
+ compatible = "nxp,pn553", "nxp,nxp-nci-i2c";
+ reg = <0x28>;
+ interrupts-extended = <&tlmm 17 IRQ_TYPE_LEVEL_HIGH>;
+
+ enable-gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>;
+ firmware-gpios = <&tlmm 62 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-0 = <&nfc_firm_default &nfc_irq_default &nfc_pwr_default>;
+ pinctrl-names = "default";
+ };
+};
+
+&ibb {
+ qcom,discharge-resistor-kohms = <32>;
+};
+
+&lpass {
+ status = "okay";
+};
+
+&mdss_dsi0 {
+ vdda-supply = <&pm8953_s3>;
+ vddio-supply = <&pm8953_l6>;
+};
+
+&mdss_dsi0_out {
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi0_phy {
+ vcca-supply = <&pm8953_l3>;
+};
+
+&mpss {
+ pll-supply = <&pm8953_l7>;
+
+ status = "okay";
+};
+
+&pm8953_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+
+ status = "okay";
+};
+
+&pmi8950_wled {
+ qcom,current-limit-microamp = <25000>;
+ qcom,num-strings = <2>;
+
+ qcom,cabc;
+ qcom,external-pfet;
+};
+
+&q6afedai {
+ dai@22 {
+ reg = <QUATERNARY_MI2S_RX>;
+ qcom,sd-lines = <0>;
+ };
+
+ dai@127 {
+ reg = <QUINARY_MI2S_RX>;
+ qcom,sd-lines = <1>;
+ };
+};
+
+&rpm_requests {
+ regulators {
+ compatible = "qcom,rpm-pm8953-regulators";
+ vdd_s1-supply = <&vph_pwr>;
+ vdd_s2-supply = <&vph_pwr>;
+ vdd_s3-supply = <&vph_pwr>;
+ vdd_s4-supply = <&vph_pwr>;
+ vdd_s5-supply = <&vph_pwr>;
+ vdd_s6-supply = <&vph_pwr>;
+ vdd_s7-supply = <&vph_pwr>;
+ vdd_l1-supply = <&pm8953_s3>;
+ vdd_l2_l3-supply = <&pm8953_s3>;
+ vdd_l4_l5_l6_l7_l16_l19-supply = <&pm8953_s4>;
+ vdd_l8_l11_l12_l13_l14_l15-supply = <&vph_pwr>;
+ vdd_l9_l10_l17_l18_l22-supply = <&vph_pwr>;
+ vdd_l23-supply = <&pm8953_s3>;
+
+ pm8953_s1: s1 {
+ regulator-min-microvolt = <863000>;
+ regulator-max-microvolt = <1152000>;
+ };
+
+ pm8953_s3: s3 {
+ regulator-min-microvolt = <1224000>;
+ regulator-max-microvolt = <1224000>;
+ };
+
+ pm8953_s4: s4 {
+ regulator-min-microvolt = <1896000>;
+ regulator-max-microvolt = <2048000>;
+ };
+
+ pm8953_l1: l1 {
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1100000>;
+ };
+
+ pm8953_l2: l2 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+
+ pm8953_l3: l3 {
+ regulator-min-microvolt = <925000>;
+ regulator-max-microvolt = <925000>;
+ regulator-allow-set-load;
+ };
+
+ pm8953_l5: l5 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8953_l6: l6 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ };
+
+ pm8953_l7: l7 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1900000>;
+ };
+
+ pm8953_l8: l8 {
+ regulator-min-microvolt = <2900000>;
+ regulator-max-microvolt = <2900000>;
+ };
+
+ pm8953_l9: l9 {
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ pm8953_l10: l10 {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <2850000>;
+ };
+
+ pm8953_l11: l11 {
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2950000>;
+ regulator-allow-set-load;
+ regulator-system-load = <200000>;
+ };
+
+ pm8953_l12: l12 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3000000>;
+ };
+
+ pm8953_l13: l13 {
+ regulator-min-microvolt = <3075000>;
+ regulator-max-microvolt = <3125000>;
+ };
+
+ pm8953_l15: l15 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8953_l16: l16 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8953_l17: l17 {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <2850000>;
+ };
+
+ pm8953_l19: l19 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1350000>;
+ };
+
+ pm8953_l22: l22 {
+ regulator-min-microvolt = <2900000>;
+ regulator-max-microvolt = <2900000>;
+ };
+
+ pm8953_l23: l23 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+ };
+};
+
+&sdhc_1 {
+ vmmc-supply = <&pm8953_l8>;
+ vqmmc-supply = <&pm8953_l5>;
+
+ status = "okay";
+};
+
+&sdhc_2 {
+ cd-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_off>;
+ pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
+ pinctrl-names = "default", "sleep";
+
+ vmmc-supply = <&pm8953_l11>;
+ vqmmc-supply = <&pm8953_l12>;
+
+ status = "okay";
+};
+
+&tlmm {
+ gpio-reserved-ranges = <96 4>; /* Fingerprint SPI */
+
+ disp_reset_n_active: disp-reset-n-active-state {
+ pins = "gpio61";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ disp_reset_n_sleep: disp-reset-n-sleep-state {
+ pins = "gpio61";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ fusb302_int_default: fusb302-int-default-state {
+ pins = "gpio9";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ mi2s_sec_act: mi2s-quat-active-state {
+ pins = "gpio135", "gpio136", "gpio137", "gpio138";
+ function = "sec_mi2s";
+ drive-strength = <8>;
+ };
+
+ mi2s_sec_sus: mi2s-quat-sleep-state {
+ pins = "gpio135", "gpio136", "gpio137", "gpio138";
+ function = "sec_mi2s";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ nfc_firm_default: nfc-firm-state {
+ pins = "gpio62";
+ function = "gpio";
+ bias-pull-down;
+ output-low;
+ drive-strength = <2>;
+ };
+
+ nfc_irq_default: nfc-irq-state {
+ pins = "gpio17";
+ function = "gpio";
+ bias-pull-down;
+ drive-strength = <2>;
+ };
+
+ nfc_pwr_default: nfc-pwr-state {
+ pins = "gpio16";
+ function = "gpio";
+ bias-pull-down;
+ output-low;
+ drive-strength = <2>;
+ };
+
+ ts_int_default: ts-int-default-state {
+ pins = "gpio65";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+
+ ts_int_sleep: ts-int-sleep-state {
+ pins = "gpio65";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ ts_reset_default: ts-reset-default-state {
+ pins = "gpio64";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+
+ ts_reset_sleep: ts-reset-sleep-state {
+ pins = "gpio64";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+};
+
+&usb3 {
+ status = "okay";
+};
+
+&usb_dwc3_hs {
+ remote-endpoint = <&fusb302>;
+};
+
+&wcnss {
+ vddpx-supply = <&pm8953_l5>;
+
+ status = "okay";
+};
+
+&wcnss_iris {
+ compatible = "qcom,wcn3660b";
+
+ vdddig-supply = <&pm8953_l5>;
+ vddpa-supply = <&pm8953_l9>;
+ vddrfa-supply = <&pm8953_l19>;
+ vddxo-supply = <&pm8953_l7>;
+};
--
2.55.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3 3/7] arm64: dts: qcom: Add Motorola One
2026-08-21 11:36 ` [PATCH v3 3/7] arm64: dts: qcom: Add Motorola One Adam Skladowski
@ 2026-08-21 11:47 ` sashiko-bot
0 siblings, 0 replies; 11+ messages in thread
From: sashiko-bot @ 2026-08-21 11:47 UTC (permalink / raw)
To: Adam Skladowski; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] Missing touchscreen device node despite being claimed as supported in the commit message.
- [Low] Invalid node names for 'regulator-fixed' devices failing schema validation.
--
--- Patch [3]: [PATCH v3 3/7] arm64: dts: qcom: Add Motorola One ---
commit 8ba9a47fea266dad9cdd80e285fa6a60029f2405
Author: Adam Skladowski <a39.skl@gmail.com>
arm64: dts: qcom: Add Motorola One
Add a devicetree for the Motorola One smartphone, which is based
on the Jacala/MSM8953 SoC.
> Supported functionality as of this initial submission:
> * I2C peripherals (Touchscreen,NFC)
[Severity: Medium]
The commit message mentions touchscreen support, but it appears the device
node is missing from the I2C buses in the device tree. Are the touchscreen
nodes missing from this submission?
> diff --git a/arch/arm64/boot/dts/qcom/msm8953-motorola-deen.dts b/arch/arm64/boot/dts/qcom/msm8953-motorola-deen.dts
> new file mode 100644
> index 0000000000000..66ecfab69c365
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8953-motorola-deen.dts
[ ... ]
> + vph_pwr: vph-pwr-regulator {
> + compatible = "regulator-fixed";
> + regulator-name = "vph_pwr";
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + /* Fake VBUS 5V supply till we wire pmi8950 one */
> + fusb302_vbus: otg-vbus {
> + compatible = "regulator-fixed";
[Severity: Low]
Will these node names cause dtbs_check warnings?
It looks like vph-pwr-regulator and otg-vbus do not match the required node
name pattern for fixed regulators in fixed-regulator.yaml. Should they
start with "regulator" to pass validation?
[ ... ]
> +&i2c_2 {
> + status = "okay";
> +};
> +
> +&i2c_3 {
> + status = "okay";
> +};
[Severity: Medium]
Are these I2C buses left empty because the intended touchscreen device node
is missing?
[ ... ]
> + ts_int_default: ts-int-default-state {
> + pins = "gpio65";
> + function = "gpio";
> + drive-strength = <8>;
> + bias-pull-up;
> + };
[Severity: Medium]
Since the touchscreen device node seems to be missing, are these pinctrl
configurations currently unused?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260821-next-patches-v3-0-cd64bcef6e21@gmail.com?part=3
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 4/7] dt-bindings: arm: qcom: Document LeEco Le2
2026-08-21 11:36 [PATCH v3 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
` (2 preceding siblings ...)
2026-08-21 11:36 ` [PATCH v3 3/7] arm64: dts: qcom: Add Motorola One Adam Skladowski
@ 2026-08-21 11:36 ` Adam Skladowski
2026-08-21 11:36 ` [PATCH v3 5/7] arm64: dts: qcom: Add " Adam Skladowski
` (2 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Adam Skladowski @ 2026-08-21 11:36 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Kees Cook, Tony Luck, Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, linux-hardening,
Adam Skladowski, Krzysztof Kozlowski
Add compatible for LeEco Le2 codename s2 based on Snapdragon 652 SoC.
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Adam Skladowski <a39.skl@gmail.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 289a3de1d24b..68542f76df30 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -348,6 +348,7 @@ properties:
- items:
- enum:
+ - leeco,s2
- longcheer,l9360
- const: qcom,msm8976
--
2.55.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v3 5/7] arm64: dts: qcom: Add LeEco Le2
2026-08-21 11:36 [PATCH v3 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
` (3 preceding siblings ...)
2026-08-21 11:36 ` [PATCH v3 4/7] dt-bindings: arm: qcom: Document LeEco Le2 Adam Skladowski
@ 2026-08-21 11:36 ` Adam Skladowski
2026-08-21 11:52 ` sashiko-bot
2026-08-21 11:36 ` [PATCH v3 6/7] dt-bindings: arm: qcom: Document Xiaomi Redmi 9T Adam Skladowski
2026-08-21 11:36 ` [PATCH v3 7/7] arm64: dts: qcom: Add " Adam Skladowski
6 siblings, 1 reply; 11+ messages in thread
From: Adam Skladowski @ 2026-08-21 11:36 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Kees Cook, Tony Luck, Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, linux-hardening,
Adam Skladowski
Add a devicetree for the LeEco Le2 smartphone, which is based
on the Eldarion/MSM8976 SoC.
Supported functionality as of this initial submission:
* I2C peripherals (Touchscreen,Audio amp, Haptics, Extcon, Led)
* Power Button, Volume Keys
* Regulators (PM8950)
* WLED (PMI8950)
* Remoteprocs (WCNSS)
* GPU
Device tree also contains supply maps to other subsystems like MDSS
but due to missing dependencies like panel those are disabled.
Signed-off-by: Adam Skladowski <a39.skl@gmail.com>
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
arch/arm64/boot/dts/qcom/msm8976-leeco-s2.dts | 441 ++++++++++++++++++++++++++
2 files changed, 442 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 11e953657691..1487f2beff3d 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -128,6 +128,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8953-xiaomi-tissot.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8953-xiaomi-vince.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8956-sony-xperia-loire-kugo.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8956-sony-xperia-loire-suzu.dtb
+dtb-$(CONFIG_ARCH_QCOM) += msm8976-leeco-s2.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8976-longcheer-l9360.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8992-lg-bullhead-rev-10.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8992-lg-bullhead-rev-101.dtb
diff --git a/arch/arm64/boot/dts/qcom/msm8976-leeco-s2.dts b/arch/arm64/boot/dts/qcom/msm8976-leeco-s2.dts
new file mode 100644
index 000000000000..086fab5ae6e7
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8976-leeco-s2.dts
@@ -0,0 +1,441 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (c) 2026 Adam Skladowski <a39skl@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "msm8976.dtsi"
+#include "pm8950.dtsi"
+#include "pm8004.dtsi"
+#include "pmi8950.dtsi"
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/input/ti-drv260x.h>
+
+/ {
+ model = "Leeco Le S2";
+ compatible = "leeco,s2", "qcom,msm8976";
+ chassis-type = "handset";
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&gpio_key_default>;
+ pinctrl-names = "default";
+
+ key-volume-up {
+ label = "Volume Up";
+ gpios = <&tlmm 113 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_VOLUMEUP>;
+ };
+ };
+
+ reserved-memory {
+ /delete-node/ ext-region@85b00000;
+
+ ext_region: memory@84a00000 {
+ reg = <0x0 0x84a00000 0x0 0x1900000>;
+ no-map;
+ };
+ };
+
+ vph_pwr: vph-pwr-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "vph_pwr";
+ regulator-always-on;
+ regulator-boot-on;
+ };
+};
+
+&adreno_gpu {
+ status = "okay";
+};
+
+&blsp1_i2c4 {
+ status = "okay";
+
+ touchscreen@4b {
+ compatible = "syna,rmi4-i2c";
+ reg = <0x4b>;
+ interrupts-extended = <&tlmm 65 IRQ_TYPE_EDGE_FALLING>;
+
+ pinctrl-0 = <&touch_default_state>;
+ pinctrl-names = "default";
+
+ reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
+
+ vdd-supply = <&pm8950_l17>;
+ vio-supply = <&pm8950_l6>;
+
+ syna,reset-delay-ms = <100>;
+ syna,startup-delay-ms = <500>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ rmi4-f01@1 {
+ reg = <0x01>;
+ syna,nosleep-mode = <1>;
+ };
+
+ rmi4-f12@12 {
+ reg = <0x12>;
+ syna,sensor-type = <1>;
+ syna,clip-x-low = <0>;
+ syna,clip-x-high = <1080>;
+ syna,clip-y-low = <0>;
+ syna,clip-y-high = <1920>;
+ };
+ };
+};
+
+&blsp2_i2c2 {
+ status = "okay";
+
+ haptics: haptics@5a {
+ compatible = "ti,drv2604";
+ reg = <0x5a>;
+ enable-gpios = <&tlmm 109 GPIO_ACTIVE_HIGH>;
+ mode = <DRV260X_LRA_MODE>;
+ library-sel = <DRV260X_LIB_LRA>;
+ };
+
+ tiusb320: typec@47 {
+ compatible = "ti,tusb320";
+ reg = <0x47>;
+ interrupts-extended = <&tlmm 21 IRQ_TYPE_EDGE_RISING>;
+
+ pinctrl-0 = <&tusb320_int_active>;
+ pinctrl-names = "default";
+ };
+};
+
+&blsp2_i2c4 {
+ status = "okay";
+
+ led-controller@45 {
+ compatible = "awinic,aw2013";
+ reg = <0x45>;
+ vcc-supply = <&pm8950_l10>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led@0 {
+ reg = <0>;
+ led-max-microamp = <5000>;
+ function = LED_FUNCTION_INDICATOR;
+ color = <LED_COLOR_ID_RED>;
+ };
+
+ led@1 {
+ reg = <1>;
+ led-max-microamp = <5000>;
+ function = LED_FUNCTION_INDICATOR;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+
+ led@2 {
+ reg = <2>;
+ led-max-microamp = <5000>;
+ function = LED_FUNCTION_INDICATOR;
+ color = <LED_COLOR_ID_BLUE>;
+ };
+ };
+
+ speaker_codec: audio-codec@34 {
+ compatible = "nxp,tfa9890";
+ reg = <0x34>;
+ vddd-supply = <&pm8950_l5>;
+ sound-name-prefix = "Speaker";
+ #sound-dai-cells = <0>;
+ };
+};
+
+&gcc {
+ vdd_gfx-supply = <&pm8004_s5>;
+};
+
+&mdss_dsi0 {
+ vdd-supply = <&pm8950_l17>;
+ vdda-supply = <&pm8950_l1>;
+ vddio-supply = <&pm8950_l6>;
+};
+
+&mdss_dsi0_out {
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi0_phy {
+ vddio-supply = <&pm8950_l6>;
+};
+
+&otg {
+ extcon = <&tiusb320>;
+};
+
+&pm8004_lsid5 {
+ status = "okay";
+};
+
+&pm8004_spmi_regulators {
+ vdd_s2-supply = <&vph_pwr>;
+ vdd_s5-supply = <&vph_pwr>;
+
+ status = "okay";
+
+ /* Cluster 1 supply */
+ pm8004_s2: s2 {
+ regulator-name = "VDD_APC1";
+ regulator-min-microvolt = <950000>;
+ regulator-max-microvolt = <1165000>;
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ pm8004_s5: s5 {
+ regulator-name = "VDD_GFX";
+ regulator-min-microvolt = <950000>;
+ regulator-max-microvolt = <1165000>;
+ regulator-enable-ramp-delay = <500>;
+ regulator-always-on;
+ };
+};
+
+&pm8950_spmi_regulators {
+ vdd_s5-supply = <&vph_pwr>;
+
+ /* Cluster 0 supply */
+ pm8950_spmi_s5: s5 {
+ regulator-min-microvolt = <950000>;
+ regulator-max-microvolt = <1165000>;
+ regulator-name = "VDD_APC0";
+ regulator-always-on;
+ regulator-boot-on;
+ };
+};
+
+&pm8950_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+
+ status = "okay";
+};
+
+&pmi8950_wled {
+ qcom,current-limit-microamp = <20000>;
+ qcom,enabled-strings = <0 1>;
+ qcom,ovp-millivolt = <29500>;
+};
+
+&rpm_requests {
+ regulators {
+ compatible = "qcom,rpm-pm8950-regulators";
+
+ vdd_s1-supply = <&vph_pwr>;
+ vdd_s2-supply = <&vph_pwr>;
+ vdd_s3-supply = <&vph_pwr>;
+ vdd_s4-supply = <&vph_pwr>;
+ vdd_s6-supply = <&vph_pwr>;
+ vdd_l1_l19-supply = <&pm8950_s3>;
+ vdd_l2_l23-supply = <&pm8950_s3>;
+ vdd_l3-supply = <&pm8950_s3>;
+ vdd_l5_l6_l7_l16-supply = <&pm8950_s4>;
+ vdd_l8_l11_l12_l17_l22-supply = <&vph_pwr>;
+
+ pm8950_s3: s3 {
+ regulator-min-microvolt = <1325000>;
+ regulator-max-microvolt = <1325000>;
+ };
+
+ pm8950_s4: s4 {
+ regulator-min-microvolt = <2050000>;
+ regulator-max-microvolt = <2050000>;
+ };
+
+ pm8950_l1: l1 {
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1300000>;
+ };
+
+ pm8950_l2: l2 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+
+ pm8950_l3: l3 {
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1100000>;
+ };
+
+ pm8950_l5: l5 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8950_l6: l6 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8950_l7: l7 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1900000>;
+ };
+
+ pm8950_l8: l8 {
+ regulator-min-microvolt = <2900000>;
+ regulator-max-microvolt = <2900000>;
+ };
+
+ pm8950_l9: l9 {
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ pm8950_l10: l10 {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <2850000>;
+ };
+
+ pm8950_l11: l11 {
+ /* TUSB320 power supply */
+ regulator-always-on;
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2950000>;
+ };
+
+ pm8950_l12: l12 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2950000>;
+ };
+
+ pm8950_l13: l13 {
+ regulator-min-microvolt = <3075000>;
+ regulator-max-microvolt = <3075000>;
+ };
+
+ pm8950_l14: l14 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ pm8950_l15: l15 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ pm8950_l16: l16 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8950_l17: l17 {
+ regulator-min-microvolt = <2500000>;
+ regulator-max-microvolt = <2900000>;
+ };
+
+ pm8950_l19: l19 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1350000>;
+ };
+
+ pm8950_l22: l22 {
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ };
+
+ pm8950_l23: l23 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+ };
+};
+
+&sdhc_1 {
+ vmmc-supply = <&pm8950_l8>;
+ vqmmc-supply = <&pm8950_l5>;
+
+ status = "okay";
+};
+
+&tlmm {
+ gpio-reserved-ranges = <0 4>, /* Unknown */
+ <8 4>; /* Fingerprint SPI */
+
+ disp_reset_n_active: disp-reset-n-active-state {
+ pins = "gpio25";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ disp_reset_n_sleep: disp-reset-n-sleep-state {
+ pins = "gpio25";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ disp_te_default: disp-te-default-state {
+ pins = "gpio24";
+ function = "mdp_vsync";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ gpio_key_default: gpio-key-default-state {
+ pins = "gpio113";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ touch_default_state: touch-default-state {
+ irq-pins {
+ pins = "gpio65";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+
+ reset-pins {
+ pins = "gpio64";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+ };
+
+ tusb320_int_active: tusb320-int-active-state {
+ pins = "gpio21";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+};
+
+&wcnss {
+ vddpx-supply = <&pm8950_l5>;
+
+ status = "okay";
+};
+
+&wcnss_iris {
+ compatible = "qcom,wcn3680";
+
+ vddxo-supply = <&pm8950_l7>;
+ vddrfa-supply = <&pm8950_l19>;
+ vddpa-supply = <&pm8950_l9>;
+ vdddig-supply = <&pm8950_l5>;
+};
+
+&xo_board {
+ clock-frequency = <19200000>;
+};
+
--
2.55.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3 5/7] arm64: dts: qcom: Add LeEco Le2
2026-08-21 11:36 ` [PATCH v3 5/7] arm64: dts: qcom: Add " Adam Skladowski
@ 2026-08-21 11:52 ` sashiko-bot
0 siblings, 0 replies; 11+ messages in thread
From: sashiko-bot @ 2026-08-21 11:52 UTC (permalink / raw)
To: Adam Skladowski; +Cc: conor+dt, devicetree, robh
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [High] The TUSB320 Type-C controller's interrupt is incorrectly configured with a rising edge trigger.
- [Medium] The GPU regulator `VDD_GFX` is marked `regulator-always-on`, which defeats dynamic power scaling.
- [Medium] WLED is claimed as supported but the pmi8950_wled node is left disabled.
- [Medium] The 'vdd_l9_l10_l13_l14_l15_l18-supply' property is missing from the pm8950 rpm_requests regulator node.
--
--- Patch [5]: [PATCH v3 5/7] arm64: dts: qcom: Add LeEco Le2 ---
commit cfadc21619b39e4cbfad0d3c04b195d16b58fa22
Author: Adam Skladowski <a39.skl@gmail.com>
arm64: dts: qcom: Add LeEco Le2
Adds a devicetree for the LeEco Le2 smartphone based on the
MSM8976 SoC. Supported features include I2C peripherals, WLED, GPU,
and regulators.
> diff --git a/arch/arm64/boot/dts/qcom/msm8976-leeco-s2.dts b/arch/arm64/boot/dts/qcom/msm8976-leeco-s2.dts
> new file mode 100644
> index 0000000000000..086fab5ae6e7c
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8976-leeco-s2.dts
[ ... ]
> + tiusb320: typec@47 {
> + compatible = "ti,tusb320";
> + reg = <0x47>;
> + interrupts-extended = <&tlmm 21 IRQ_TYPE_EDGE_RISING>;
[Severity: High]
The TUSB320 INT_N interrupt signal is typically an active-low open-drain
output.
Will configuring it to trigger on a rising edge cause the driver to miss
Type-C events, since it would only process the interrupt when the hardware
deasserts the line?
> +
> + pinctrl-0 = <&tusb320_int_active>;
> + pinctrl-names = "default";
> + };
[ ... ]
> + pm8004_s5: s5 {
> + regulator-name = "VDD_GFX";
> + regulator-min-microvolt = <950000>;
> + regulator-max-microvolt = <1165000>;
> + regulator-enable-ramp-delay = <500>;
> + regulator-always-on;
[Severity: Medium]
Does setting regulator-always-on for the VDD_GFX regulator defeat the Adreno
GPU driver's dynamic power scaling?
This appears to keep the GPU rail powered even when idle or suspended.
> + };
> +};
[ ... ]
> +&pm8950_resin {
> + linux,code = <KEY_VOLUMEDOWN>;
> +
> + status = "okay";
> +};
> +
> +&pmi8950_wled {
> + qcom,current-limit-microamp = <20000>;
> + qcom,enabled-strings = <0 1>;
> + qcom,ovp-millivolt = <29500>;
[Severity: Medium]
The commit message lists WLED as supported, but this node lacks a
status = "okay" property.
Since pmi8950.dtsi defaults the WLED node to disabled, will the driver fail
to probe?
> +};
> +
> +&rpm_requests {
> + regulators {
> + compatible = "qcom,rpm-pm8950-regulators";
> +
> + vdd_s1-supply = <&vph_pwr>;
> + vdd_s2-supply = <&vph_pwr>;
> + vdd_s3-supply = <&vph_pwr>;
> + vdd_s4-supply = <&vph_pwr>;
> + vdd_s6-supply = <&vph_pwr>;
> + vdd_l1_l19-supply = <&pm8950_s3>;
> + vdd_l2_l23-supply = <&pm8950_s3>;
> + vdd_l3-supply = <&pm8950_s3>;
> + vdd_l5_l6_l7_l16-supply = <&pm8950_s4>;
> + vdd_l8_l11_l12_l17_l22-supply = <&vph_pwr>;
[Severity: Medium]
Are we missing the vdd_l9_l10_l13_l14_l15_l18-supply property here?
Without it, the regulator core might not be able to track the parent supply
for LDOs 9, 10, 13, 14, 15, and 18.
> +
> + pm8950_s3: s3 {
> + regulator-min-microvolt = <1325000>;
> + regulator-max-microvolt = <1325000>;
> + };
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260821-next-patches-v3-0-cd64bcef6e21@gmail.com?part=5
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 6/7] dt-bindings: arm: qcom: Document Xiaomi Redmi 9T
2026-08-21 11:36 [PATCH v3 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
` (4 preceding siblings ...)
2026-08-21 11:36 ` [PATCH v3 5/7] arm64: dts: qcom: Add " Adam Skladowski
@ 2026-08-21 11:36 ` Adam Skladowski
2026-08-21 11:36 ` [PATCH v3 7/7] arm64: dts: qcom: Add " Adam Skladowski
6 siblings, 0 replies; 11+ messages in thread
From: Adam Skladowski @ 2026-08-21 11:36 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Kees Cook, Tony Luck, Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, linux-hardening,
Adam Skladowski, Krzysztof Kozlowski
Add compatible for Xiaomi Redmi 9T NFC codename lemon which is one
of variants of Xiaomi Citrus lineup based on Snapdragon 662 SoC.
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Adam Skladowski <a39.skl@gmail.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 68542f76df30..5363efadd4ee 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -1035,6 +1035,7 @@ properties:
- items:
- enum:
- fxtec,pro1x
+ - xiaomi,lemon
- const: qcom,sm6115
- items:
--
2.55.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v3 7/7] arm64: dts: qcom: Add Xiaomi Redmi 9T
2026-08-21 11:36 [PATCH v3 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
` (5 preceding siblings ...)
2026-08-21 11:36 ` [PATCH v3 6/7] dt-bindings: arm: qcom: Document Xiaomi Redmi 9T Adam Skladowski
@ 2026-08-21 11:36 ` Adam Skladowski
2026-08-21 11:46 ` sashiko-bot
6 siblings, 1 reply; 11+ messages in thread
From: Adam Skladowski @ 2026-08-21 11:36 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Kees Cook, Tony Luck, Guilherme G. Piccoli
Cc: linux-arm-msm, devicetree, linux-kernel, linux-hardening,
Adam Skladowski, Konrad Dybcio
Add a devicetree for the Xiaomi Redmi 9T smartphone, which is based
on the Bengal/SM6115 SoC.
Supported functionality as of this initial submission:
* Display via SimpleFB/SimpleDRM
* GPU
* I2C peripherals (Backlight)
* Power Button, Volume Keys
* Regulators
* Remoteprocs (ADSP, CDSP, MPSS)
* UFS/SDCARD
* USB
Device tree also contains supply maps to other subsystems like MDSS
but due to missing dependencies like panel those are disabled.
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Adam Skladowski <a39.skl@gmail.com>
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts | 497 +++++++++++++++++++++++
2 files changed, 498 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 1487f2beff3d..6dee0a99fdc6 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -345,6 +345,7 @@ 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) += sm6115p-lenovo-j606f.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sm6115-xiaomi-lemon.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm6125-sony-xperia-seine-pdx201.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm6125-xiaomi-ginkgo.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm6125-xiaomi-laurel-sprout.dtb
diff --git a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
new file mode 100644
index 000000000000..881e05b70116
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
@@ -0,0 +1,497 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (c) 2026 Adam Skladowski <a39skl@gmail.com>
+ */
+
+/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;
+
+/ {
+ 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>;
+ brightness-levels = <255>;
+ default-brightness-level = <190>;
+ /* Backlight controllers can differ between panel variants */
+ 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;
+ };
+
+ ramoops: ramoops@64000000 {
+ compatible = "ramoops";
+ no-map;
+ reg = <0x0 0x64000000 0x0 0x400000>;
+ record-size = <0x100000>;
+ console-size = <0x100000>;
+ pmsg-size = <0x200000>;
+ ecc-size = <16>;
+ };
+ };
+
+ vph_pwr: vph-pwr-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "vph_pwr";
+ regulator-min-microvolt = <3700000>;
+ regulator-max-microvolt = <3700000>;
+
+ regulator-always-on;
+ regulator-boot-on;
+ };
+};
+
+&dispcc {
+ /* Prevent simplefb from dying until we wire panel driver */
+ status = "disabled";
+};
+
+&gpi_dma0 {
+ status = "okay";
+};
+
+&gpu {
+ status = "okay";
+};
+
+&i2c1 {
+ status = "okay";
+
+ lm36923_bl: led-controller@36 {
+ compatible = "ti,lm36923";
+ reg = <0x36>;
+
+ pinctrl-0 = <&lm3692x_bl_active>;
+ pinctrl-names = "default";
+
+ enable-gpios = <&tlmm 99 GPIO_ACTIVE_HIGH>;
+ ti,ovp-microvolt = <29000000>;
+ /* Backlight controllers can differ between panel variants */
+ status = "disabled";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led_backlight: led@0 {
+ reg = <0>;
+ function = LED_FUNCTION_BACKLIGHT;
+ color = <LED_COLOR_ID_WHITE>;
+ label = ":backlight";
+ linux,default-trigger = "backlight";
+ led-max-microamp = <25000>;
+ };
+ };
+};
+
+&mdss_dsi0 {
+ vdda-supply = <&pm6125_l18>;
+};
+
+&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>;
+ regulator-allow-set-load;
+
+ 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>;
+ regulator-max-microvolt = <1256000>;
+
+ 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>;
+ };
+
+ pm6125_l18: l18 {
+ regulator-min-microvolt = <1232000>;
+ 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>;
+ regulator-allow-set-load;
+
+ 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>;
+ };
+ };
+};
+
+&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 {
+ status = "okay";
+};
+
+&tlmm {
+ gpio-reserved-ranges = <14 4>; /* Fingerprint SPI */
+
+ lm3692x_bl_active: lm3692x-active-state {
+ pins = "gpio99";
+ function = "gpio";
+ drive-strength = <0x02>;
+ bias-pull-up;
+ };
+
+ mdss_dsi_active: mdss-dsi-active-state {
+ pins = "gpio85";
+ function = "gpio";
+ drive-strength = <8>;
+ 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";
+ drive-strength = <2>;
+ 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>;
+};
--
2.55.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3 7/7] arm64: dts: qcom: Add Xiaomi Redmi 9T
2026-08-21 11:36 ` [PATCH v3 7/7] arm64: dts: qcom: Add " Adam Skladowski
@ 2026-08-21 11:46 ` sashiko-bot
0 siblings, 0 replies; 11+ messages in thread
From: sashiko-bot @ 2026-08-21 11:46 UTC (permalink / raw)
To: Adam Skladowski; +Cc: conor+dt, robh, devicetree
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [Medium] Contradiction in Supported Features regarding backlight.
- [Low] Unnecessary Hardware Enablement of SPI2 bus.
- [Low] Invalid `brightness-levels` array in `backlight-dsi` causes boot warning.
- [Low] The dtb targets in `arch/arm64/boot/dts/qcom/Makefile` are not sorted alphabetically.
--
--- Patch [7]: [PATCH v3 7/7] arm64: dts: qcom: Add Xiaomi Redmi 9T ---
commit 5a94602cab46fa97db70f855960005f354c8b9aa
Author: Adam Skladowski <a39.skl@gmail.com>
arm64: dts: qcom: Add Xiaomi Redmi 9T
This commit adds the devicetree for the Xiaomi Redmi 9T smartphone, based on
the Bengal/SM6115 SoC. It defines memory regions, regulators, and enables
various peripherals like SimpleFB and remoteprocs.
> Supported functionality as of this initial submission:
>
> * Display via SimpleFB/SimpleDRM
> * GPU
> * I2C peripherals (Backlight)
[Severity: Medium]
Is the commit message accurate about backlight support? The device tree marks
both the backlight-dsi and lm36923_bl nodes with status = "disabled", which
would prevent the driver from probing.
[ ... ]
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 821101c6d338e..63d678ab215e4 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -340,6 +340,7 @@ 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) += sm6115p-lenovo-j606f.dtb
> +dtb-$(CONFIG_ARCH_QCOM) += sm6115-xiaomi-lemon.dtb
[Severity: Low]
Does this break alphabetical ordering in the Makefile? The hyphen character
comes before 'p' in ASCII, so sm6115-xiaomi-lemon.dtb should probably be
placed before sm6115p-lenovo-j606f.dtb to prevent future merge conflicts.
> dtb-$(CONFIG_ARCH_QCOM) += sm6125-sony-xperia-seine-pdx201.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sm6125-xiaomi-ginkgo.dtb
[ ... ]
> diff --git a/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
> new file mode 100644
> index 0000000000000..881e05b70116b
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.dts
[ ... ]
> + backlight_dsi: backlight-dsi {
> + compatible = "led-backlight";
> + leds = <&led_backlight>;
> + brightness-levels = <255>;
[Severity: Low]
Does this single-element brightness-levels array trigger a boot warning? In
led_bl_parse_levels(), the driver checks if there is more than 1 level and
emits a "Not enough levels defined" warning if only one is present.
> + default-brightness-level = <190>;
> + /* Backlight controllers can differ between panel variants */
> + status = "disabled";
> + };
[ ... ]
> +&spi2 {
> + status = "okay";
> +};
[Severity: Low]
Is it necessary to enable the spi2 bus here? It appears to be enabled
without any child nodes or pinctrl configurations, which might hold
unnecessary power and clock resources.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260821-next-patches-v3-0-cd64bcef6e21@gmail.com?part=7
^ permalink raw reply [flat|nested] 11+ messages in thread