* [PATCH 1/7] dt-bindings: vendor-prefixes: Add LeEco
2026-08-10 16:55 [PATCH 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
@ 2026-08-10 16:55 ` Adam Skladowski
2026-08-10 16:55 ` [PATCH 2/7] dt-bindings: arm: qcom: Document Motorola Moto One Adam Skladowski
` (5 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Adam Skladowski @ 2026-08-10 16:55 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
Link: https://www.le.com/
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] 10+ messages in thread* [PATCH 2/7] dt-bindings: arm: qcom: Document Motorola Moto One
2026-08-10 16:55 [PATCH 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
2026-08-10 16:55 ` [PATCH 1/7] dt-bindings: vendor-prefixes: Add LeEco Adam Skladowski
@ 2026-08-10 16:55 ` Adam Skladowski
2026-08-10 16:55 ` [PATCH 3/7] arm64: dts: qcom: Add Motorola One Adam Skladowski
` (4 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Adam Skladowski @ 2026-08-10 16:55 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 compatible for Motorola Moto One(deen) based on Snapdragon 625 SoC.
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] 10+ messages in thread* [PATCH 3/7] arm64: dts: qcom: Add Motorola One
2026-08-10 16:55 [PATCH 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
2026-08-10 16:55 ` [PATCH 1/7] dt-bindings: vendor-prefixes: Add LeEco Adam Skladowski
2026-08-10 16:55 ` [PATCH 2/7] dt-bindings: arm: qcom: Document Motorola Moto One Adam Skladowski
@ 2026-08-10 16:55 ` Adam Skladowski
2026-08-10 17:29 ` sashiko-bot
2026-08-10 16:55 ` [PATCH 4/7] dt-bindings: arm: qcom: Document LeEco Le2 Adam Skladowski
` (3 subsequent siblings)
6 siblings, 1 reply; 10+ messages in thread
From: Adam Skladowski @ 2026-08-10 16:55 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 | 443 +++++++++++++++++++++
2 files changed, 444 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..d03b314cd1e8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8953-motorola-deen.dts
@@ -0,0 +1,443 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (c) 2026 Adam Skladowski <a39skl@gmail.com>
+ */
+
+/dts-v1/;
+
+#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;
+ };
+
+ cont_splash_mem: cont-splash@90001000 {
+ reg = <0x0 0x90001000 0x0 (720 * 1520 * 3)>;
+ no-map;
+ };
+
+ reserved@aefd2000 {
+ reg = <0x0 0xaefd2000 0x0 0x2e000>;
+ no-map;
+ };
+
+ reserved@eefe4000 {
+ reg = <0x0 0xeefe4000 0x0 0x1c000>;
+ no-map;
+ };
+
+ ramoops@ef000000 {
+ compatible = "ramoops";
+ reg = <0x0 0xef000000 0x0 0x80000>;
+ console-size = <0x40000>;
+ ftrace-size = <0>;
+ record-size = <0x3f800>;
+ pmsg-size = <0x800>;
+ };
+ };
+
+ vph_pwr: vph-pwr-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "vph_pwr";
+ regulator-always-on;
+ regulator-boot-on;
+ };
+};
+
+&hsusb_phy {
+ vdd-supply = <&pm8953_l3>;
+ vdda-pll-supply = <&pm8953_l7>;
+ vdda-phy-dpdm-supply = <&pm8953_l13>;
+
+ status = "okay";
+};
+
+&i2c_1 {
+ status = "disabled";
+
+ typec-portc@22 {
+ compatible = "fcs,fusb302";
+ reg = <0x22>;
+ interrupts-extended = <&tlmm 9 IRQ_TYPE_EDGE_RISING>;
+
+ status = "disabled";
+
+ connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ };
+ };
+};
+
+&i2c_2 {
+ status = "okay";
+};
+
+&i2c_3 {
+ status = "okay";
+
+ touchscreen@62 {
+ compatible = "novatek,nt36672a-ts";
+ reg = <0x62>;
+
+ interrupts-extended = <&tlmm 65 IRQ_TYPE_EDGE_RISING>;
+ reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
+
+ iovcc-supply = <&pm8953_l6>;
+
+ pinctrl-0 = <&ts_reset_default &ts_int_default>;
+ pinctrl-1 = <&ts_reset_sleep &ts_int_sleep>;
+ pinctrl-names = "default", "sleep";
+
+ touchscreen-size-x = <720>;
+ touchscreen-size-y = <1520>;
+ };
+};
+
+&i2c_5 {
+ status = "okay";
+
+ npc100: pn533@28 {
+ compatible = "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>;
+
+ 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 = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ };
+
+ 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 = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8953_l11: l11 {
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <3000000>;
+ };
+
+ 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 = <2800000>;
+ regulator-max-microvolt = <3000000>;
+ };
+
+ pm8953_l19: l19 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1350000>;
+ };
+
+ pm8953_l22: l22 {
+ regulator-always-on;
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2850000>;
+ };
+
+ pm8953_l23: l23 {
+ regulator-min-microvolt = <975000>;
+ regulator-max-microvolt = <1225000>;
+ };
+ };
+};
+
+&sdhc_1 {
+ vmmc-supply = <&pm8953_l8>;
+ vqmmc-supply = <&pm8953_l5>;
+
+ status = "okay";
+};
+
+&sdhc_2 {
+ cd-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
+
+ vmmc-supply = <&pm8953_l11>;
+ vqmmc-supply = <&pm8953_l12>;
+
+ 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";
+
+ status = "okay";
+};
+
+&tlmm {
+ gpio-reserved-ranges = <96 4>, <111 1>, <126 1>;
+
+ disp_reset_n_active: disp-reset-n-active-state {
+ pins = "gpio61";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ disp_reset_n_sleep: disp-reset-n-sleep-state {
+ pins = "gpio61";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ 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_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>;
+ };
+
+ nfc_firm_default: nfc-firm-state {
+ pins = "gpio62";
+ function = "gpio";
+ bias-pull-down;
+ output-low;
+ drive-strength = <2>;
+ };
+
+ ts_int_default: ts-int-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-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";
+};
+
+&usb3_dwc3 {
+ dr_mode = "peripheral";
+};
+
+&wcnss {
+ vddpx-supply = <&pm8953_l5>;
+
+ status = "okay";
+};
+
+&wcnss_iris {
+ compatible = "qcom,wcn3660b";
+
+ vddxo-supply = <&pm8953_l7>;
+ vddrfa-supply = <&pm8953_l19>;
+ vddpa-supply = <&pm8953_l9>;
+ vdddig-supply = <&pm8953_l5>;
+
+ status = "okay";
+};
--
2.55.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH 3/7] arm64: dts: qcom: Add Motorola One
2026-08-10 16:55 ` [PATCH 3/7] arm64: dts: qcom: Add Motorola One Adam Skladowski
@ 2026-08-10 17:29 ` sashiko-bot
0 siblings, 0 replies; 10+ messages in thread
From: sashiko-bot @ 2026-08-10 17:29 UTC (permalink / raw)
To: Adam Skladowski; +Cc: conor+dt, robh, devicetree
Thank you for your contribution! Sashiko AI review found 5 potential issue(s) to consider:
- [High] Missing `vdd_l23-supply` parent supply linkage for the PM8953 L23 regulator.
- [High] Missing `vcc-supply` for the Novatek touchscreen.
- [High] The `fcs,fusb302` device specifies an incorrect interrupt polarity (`IRQ_TYPE_EDGE_RISING`) for its INT_N pin.
- [Medium] Mismatch between the configured Audio Front End (AFE) DAI, physical GPIO pin functions, and unused pinctrl nodes for the MI2S interface.
- [Low] Misleading node name `pn533@28` for an NXP NCI compatible device.
--
--- Patch [3]: [PATCH 3/7] arm64: dts: qcom: Add Motorola One ---
commit 3b67d53db687653cc242076136d9090f07f776ff
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.
> 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
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8953-motorola-deen.dts
[ ... ]
> +&i2c_1 {
> + status = "disabled";
> +
> + typec-portc@22 {
> + compatible = "fcs,fusb302";
> + reg = <0x22>;
> + interrupts-extended = <&tlmm 9 IRQ_TYPE_EDGE_RISING>;
[Severity: High]
The FUSB302 INT_N pin is an active-low open-drain output, but this interrupt
is configured as IRQ_TYPE_EDGE_RISING.
Will the host miss interrupts since the FUSB302 holds the line low until
cleared, causing a deadlock while the host waits for a rising edge?
Does this regression break Type-C functionality like PD negotiation and
role swapping?
[ ... ]
> +&i2c_3 {
> + status = "okay";
> +
> + touchscreen@62 {
> + compatible = "novatek,nt36672a-ts";
> + reg = <0x62>;
> +
> + interrupts-extended = <&tlmm 65 IRQ_TYPE_EDGE_RISING>;
> + reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
> +
> + iovcc-supply = <&pm8953_l6>;
[Severity: High]
Does the novatek,nt36672a-ts driver also require a vcc-supply to be
specified here?
Omitting it means devm_regulator_bulk_get() might fall back to a dummy
regulator, preventing the physical analog power rail from being enabled.
Does this cause a regression where touchscreen initialization fails?
> +
> + pinctrl-0 = <&ts_reset_default &ts_int_default>;
[ ... ]
> +&i2c_5 {
> + status = "okay";
> +
> + npc100: pn533@28 {
> + compatible = "nxp,nxp-nci-i2c";
[Severity: Low]
Since the compatible string specifies a generic nxp,nxp-nci-i2c controller,
should this node be named with a generic device class like nfc@28 instead of
a specific chip name like pn533@28 to avoid a naming regression?
> +
> + reg = <0x28>;
[ ... ]
> +&q6afedai {
> + dai@22 {
> + reg = <QUATERNARY_MI2S_RX>;
> + qcom,sd-lines = <0>;
> + };
[Severity: Medium]
Is the Audio Front End configured correctly here?
This q6afedai node specifies QUATERNARY_MI2S_RX, but the mi2s_sec_act pinctrl
states added below configure pins 135-138 with the sec_mi2s function.
Could this interface mismatch cause an audio regression on this port?
[ ... ]
> +&rpm_requests {
> + regulators {
> + compatible = "qcom,rpm-pm8953-regulators";
> + vdd_s1-supply = <&vph_pwr>;
[ ... ]
> + vdd_l8_l11_l12_l13_l14_l15-supply = <&vph_pwr>;
> + vdd_l9_l10_l17_l18_l22-supply = <&vph_pwr>;
> +
> + pm8953_s1: s1 {
[Severity: High]
Is there a missing vdd_l23-supply linkage in this parent supply mapping block?
Without mapping vdd_l23-supply to pm8953_s3, the regulator framework is
unaware of the dependency. If the system disables L1, L2, and L3, the PMIC
core might power down S3, starving L23 of its input voltage.
Does this regression lead to a hardware brownout?
[ ... ]
> + pm8953_l22: l22 {
> + regulator-always-on;
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2850000>;
> + };
> +
> + pm8953_l23: l23 {
> + regulator-min-microvolt = <975000>;
> + regulator-max-microvolt = <1225000>;
> + };
[ ... ]
> +&tlmm {
> + gpio-reserved-ranges = <96 4>, <111 1>, <126 1>;
[ ... ]
> + mi2s_sec_act: mi2s-quat-active-state {
> + pins = "gpio135", "gpio136", "gpio137", "gpio138";
> + function = "sec_mi2s";
> + drive-strength = <8>;
> + };
[Severity: Medium]
These secondary MI2S pinctrl states appear to be unreferenced dead code.
Should they be tied to the DAI node above to prevent a configuration
regression?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260810-next-patches-v1-0-79a779d76173@gmail.com?part=3
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 4/7] dt-bindings: arm: qcom: Document LeEco Le2
2026-08-10 16:55 [PATCH 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
` (2 preceding siblings ...)
2026-08-10 16:55 ` [PATCH 3/7] arm64: dts: qcom: Add Motorola One Adam Skladowski
@ 2026-08-10 16:55 ` Adam Skladowski
2026-08-10 16:55 ` [PATCH 5/7] arm64: dts: qcom: Add " Adam Skladowski
` (2 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Adam Skladowski @ 2026-08-10 16:55 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 compatible for LeEco Le2 codename s2 based on Snapdragon 652 SoC.
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] 10+ messages in thread* [PATCH 5/7] arm64: dts: qcom: Add LeEco Le2
2026-08-10 16:55 [PATCH 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
` (3 preceding siblings ...)
2026-08-10 16:55 ` [PATCH 4/7] dt-bindings: arm: qcom: Document LeEco Le2 Adam Skladowski
@ 2026-08-10 16:55 ` Adam Skladowski
2026-08-10 17:49 ` sashiko-bot
2026-08-10 16:55 ` [PATCH 6/7] dt-bindings: arm: qcom: Document Xiaomi Redmi 9T Adam Skladowski
2026-08-10 16:55 ` [PATCH 7/7] arm64: dts: qcom: Add " Adam Skladowski
6 siblings, 1 reply; 10+ messages in thread
From: Adam Skladowski @ 2026-08-10 16:55 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 | 444 ++++++++++++++++++++++++++
2 files changed, 445 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..4a11ea66efde
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8976-leeco-s2.dts
@@ -0,0 +1,444 @@
+// 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 {
+
+ ramoops {
+ compatible = "ramoops";
+ no-map;
+ reg = <0 0x9ff00000 0 0x100000>;
+ record-size = <0x10000>;
+ console-size = <0x60000>;
+ ftrace-size = <0x10000>;
+ pmsg-size = <0x20000>;
+ ecc-size = <16>;
+ };
+
+ /delete-node/ memory@83000000;
+
+ cont_splash_mem: memory@82000000 {
+ reg = <0x0 0x82000000 0x0 0x2800000>;
+ };
+
+ /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";
+
+ rmi4-i2c-dev@4b {
+ reg = <0x4b>;
+ compatible = "syna,rmi4-i2c";
+ interrupts-extended = <&tlmm 65 0x2008>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ vdd-supply = <&pm8950_l17>;
+ vio-supply = <&pm8950_l6>;
+
+ syna,reset-delay-ms = <100>;
+ syna,startup-delay-ms = <500>;
+ 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: tusb320@47 {
+ compatible = "ti,tusb320";
+ reg = <0x47>;
+ interrupts-extended = <&tlmm 21 IRQ_TYPE_EDGE_RISING>;
+ };
+};
+
+&blsp2_i2c4 {
+ status = "okay";
+ led-controller@45 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ compatible = "awinic,aw2013";
+ reg = <0x45>;
+ vcc-supply = <&pm8950_l10>;
+
+ 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 {
+ status = "okay";
+ extcon = <&tiusb320>,<0>;
+};
+
+&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;
+ };
+};
+
+&pmi8950_wled {
+ qcom,current-limit-microamp = <20000>;
+ qcom,enabled-strings = <0 1>;
+ qcom,ovp-millivolt = <29600>;
+};
+
+&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 {
+ 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>, <8 4>;
+
+ disp_reset_n_active: disp-reset-n-active-state {
+ pins = "gpio25";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ 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;
+ };
+
+ ts_int_default: ts-int-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_active: ts-reset-active-state {
+ pins = "gpio64";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+
+ ts_reset_suspend: ts-reset-suspend-state {
+ pins = "gpio64";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+};
+
+&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] 10+ messages in thread* Re: [PATCH 5/7] arm64: dts: qcom: Add LeEco Le2
2026-08-10 16:55 ` [PATCH 5/7] arm64: dts: qcom: Add " Adam Skladowski
@ 2026-08-10 17:49 ` sashiko-bot
0 siblings, 0 replies; 10+ messages in thread
From: sashiko-bot @ 2026-08-10 17:49 UTC (permalink / raw)
To: Adam Skladowski; +Cc: conor+dt, robh, devicetree
Thank you for your contribution! Sashiko AI review found 6 potential issue(s) to consider:
- [High] Touchscreen and USB nodes are missing `pinctrl` properties, `reset-gpios`, and use invalid downstream interrupt flags.
- [High] The eMMC controller (`sdhc_1`) lacks required `non-removable` and `bus-width = <8>` properties.
- [Medium] Missing `no-map` property in the `cont_splash_mem` reserved-memory region.
- [Medium] Unimplemented features claimed in the commit message (Volume Down key and WLED).
- [Low] Attempting to delete a non-existent device tree node breaks the build.
- [Low] The `ramoops` node has a `reg` property but lacks a unit address in its node name.
--
--- Patch [5]: [PATCH 5/7] arm64: dts: qcom: Add LeEco Le2 ---
commit d23816b713fe6e13030690c43966d4d9b18f3739
Author: Adam Skladowski <a39.skl@gmail.com>
arm64: dts: qcom: Add LeEco Le2
This patch adds a devicetree for the LeEco Le2 smartphone based on the MSM8976
SoC. It claims support for peripherals such as I2C, Power/Volume keys,
regulators, WLED, WCNSS, and GPU.
> Supported functionality as of this initial submission:
> * I2C peripherals (Touchscreen,Audio amp, Haptics, Extcon, Led)
> * Power Button, Volume Keys
[Severity: Medium]
The commit message lists Volume Keys, but only the Volume Up key is defined
in the patch. Was the Volume Down key inadvertently omitted?
> * Regulators (PM8950)
> * WLED (PMI8950)
[Severity: Medium]
The commit message lists WLED, but the pmi8950_wled node below lacks
a status = "okay" property to enable it. Does the WLED function work as is?
[ ... ]
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8976-leeco-s2.dts
[ ... ]
> + reserved-memory {
> +
> + ramoops {
> + compatible = "ramoops";
> + no-map;
> + reg = <0 0x9ff00000 0 0x100000>;
[Severity: Low]
Does this node need a unit address in its name to match the reg property
(e.g., ramoops@9ff00000)? Without it, the device tree compiler will generate
a build warning.
> + record-size = <0x10000>;
> + console-size = <0x60000>;
> + ftrace-size = <0x10000>;
> + pmsg-size = <0x20000>;
> + ecc-size = <16>;
> + };
> +
> + /delete-node/ memory@83000000;
[Severity: Low]
Could this /delete-node/ cause a fatal dtc build failure?
The memory@83000000 node does not appear to exist in the included
msm8976.dtsi or PMIC include files.
> +
> + cont_splash_mem: memory@82000000 {
> + reg = <0x0 0x82000000 0x0 0x2800000>;
> + };
[Severity: Medium]
Should the cont_splash_mem node include the no-map property?
Without it, the kernel maps the region as standard cacheable RAM, which can
cause speculative data aborts, caching issues, or visual corruption if the
bootloader leaves the display controller scanning out from this memory.
[ ... ]
> +&blsp1_i2c4 {
> + status = "okay";
> +
> + rmi4-i2c-dev@4b {
> + reg = <0x4b>;
> + compatible = "syna,rmi4-i2c";
> + interrupts-extended = <&tlmm 65 0x2008>;
[Severity: High]
Does this use an invalid downstream interrupt flag?
0x2008 is usually a downstream wakeup flag that the upstream kernel masks,
meaning it won't be recognized as a wakeup source.
Also, are the pinctrl-names, pinctrl-0, and reset-gpios properties missing
here?
Without pinctrl, the interrupt pin (gpio65) lacks a pull-up, which can cause
an interrupt storm, and without reset-gpios, the controller might not probe
properly. The ts_int_default and ts_reset_active pinctrl states defined below
appear to be unused.
> + #address-cells = <1>;
> + #size-cells = <0>;
[ ... ]
> +&blsp2_i2c2 {
> + status = "okay";
[ ... ]
> + tiusb320: tusb320@47 {
> + compatible = "ti,tusb320";
> + reg = <0x47>;
> + interrupts-extended = <&tlmm 21 IRQ_TYPE_EDGE_RISING>;
> + };
[Severity: High]
Is a pinctrl configuration missing for this interrupt pin?
[ ... ]
> +&sdhc_1 {
> + vmmc-supply = <&pm8950_l8>;
> + vqmmc-supply = <&pm8950_l5>;
> +
> + status = "okay";
> +};
[Severity: High]
Should this eMMC controller node include the non-removable and bus-width = <8>
properties?
Because it is not marked as non-removable, the MMC core may treat it as a
hot-pluggable SD card and poll for Card Detect, causing boot delays. Missing
the bus-width property can also degrade storage throughput by restricting it
to 4-bit or 1-bit mode.
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260810-next-patches-v1-0-79a779d76173@gmail.com?part=5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 6/7] dt-bindings: arm: qcom: Document Xiaomi Redmi 9T
2026-08-10 16:55 [PATCH 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
` (4 preceding siblings ...)
2026-08-10 16:55 ` [PATCH 5/7] arm64: dts: qcom: Add " Adam Skladowski
@ 2026-08-10 16:55 ` Adam Skladowski
2026-08-10 16:55 ` [PATCH 7/7] arm64: dts: qcom: Add " Adam Skladowski
6 siblings, 0 replies; 10+ messages in thread
From: Adam Skladowski @ 2026-08-10 16:55 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 compatible for Xiaomi Redmi 9T NFC codename lemon which is one
of variants of Xiaomi Citrus lineup based on Snapdragon 662 SoC.
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] 10+ messages in thread* [PATCH 7/7] arm64: dts: qcom: Add Xiaomi Redmi 9T
2026-08-10 16:55 [PATCH 0/7] arm64: dts: qcom: Add 3 new devices Adam Skladowski
` (5 preceding siblings ...)
2026-08-10 16:55 ` [PATCH 6/7] dt-bindings: arm: qcom: Document Xiaomi Redmi 9T Adam Skladowski
@ 2026-08-10 16:55 ` Adam Skladowski
6 siblings, 0 replies; 10+ messages in thread
From: Adam Skladowski @ 2026-08-10 16:55 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 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.
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 | 440 +++++++++++++++++++++++
2 files changed, 441 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..f33b8e2859ef
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm6115-xiaomi-lemon.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 "sm6115.dtsi"
+#include "pm6125.dtsi"
+#include <dt-bindings/leds/common.h>
+
+/delete-node/ &pil_ipa_fw_mem;
+/delete-node/ &pil_ipa_gsi_mem;
+/delete-node/ &pil_gpu_mem;
+/delete-node/ &pil_adsp_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-names = "default";
+ pinctrl-0 = <&vol_up_n>;
+
+ 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_cdsp_mem: memory@51a00000 {
+ reg = <0x0 0x51a00000 0x0 0xa00000>;
+ no-map;
+ };
+
+ 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@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>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&lm3692x_bl_active>;
+
+ enable-gpios = <&tlmm 99 GPIO_ACTIVE_HIGH>;
+ ti,ovp-microvolt = <29000000>;
+ /* Backlight controllers can differ between panel variants */
+ status = "disabled";
+
+ 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>;
+};
+
+&pm6125_gpios {
+ vol_up_n: vol-up-n-state {
+ pins = "gpio5";
+ function = "normal";
+ power-source = <0>;
+ bias-pull-up;
+ input-enable;
+ };
+};
+
+&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-names = "default", "sleep";
+ pinctrl-0 = <&sdc2_state_on>, <&sdc2_cd_on>;
+ pinctrl-1 = <&sdc2_state_off>, <&sdc2_cd_off>;
+ 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 = <0 4>,<14 4>;
+
+ 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;
+ };
+
+ 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;
+ };
+
+ te_active: te-active-state {
+ pins = "gpio81";
+ function = "mdp_vsync";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+};
+
+&ufs_mem_hc {
+ vcc-supply = <&pm6125_l24>;
+ vcc-max-microamp = <600000>;
+ vccq2-supply = <&pm6125_l11>;
+ vccq2-max-microamp = <600000>;
+ vdd-hba-supply = <&pm6125_l18>;
+ status = "okay";
+};
+
+&ufs_mem_phy {
+ vdda-phy-supply = <&pm6125_l4>;
+ vdda-pll-supply = <&pm6125_l12>;
+ status = "okay";
+};
+
+&usb {
+ qcom,select-utmi-as-pipe-clk;
+ status = "okay";
+};
+
+&usb_dwc3 {
+ maximum-speed = "high-speed";
+ dr_mode = "peripheral";
+ /delete-property/ usb-role-switch;
+ phys = <&usb_hsphy>;
+ phy-names = "usb2-phy";
+ ports {
+ /delete-node/ port@1;
+ };
+};
+
+&usb_hsphy {
+ vdd-supply = <&pm6125_l4>;
+ vdda-pll-supply = <&pm6125_l12>;
+ vdda-phy-dpdm-supply = <&pm6125_l15>;
+ status = "okay";
+};
+
+/delete-node/ &usb_qmpphy;
+
+&xo_board {
+ clock-frequency = <19200000>;
+};
--
2.55.0
^ permalink raw reply related [flat|nested] 10+ messages in thread