From: Gianluca Boiano <morf3089@gmail.com>
To: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org
Cc: andersson@kernel.org, konradybcio@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, robh@kernel.org, david@ixit.cz,
Gianluca Boiano <morf3089@gmail.com>
Subject: [PATCH 2/7] arm64: dts: qcom: sdm660: add common Xiaomi SDM636/SDM660 include file
Date: Tue, 20 Jan 2026 19:00:47 +0100 [thread overview]
Message-ID: <20260120180052.1031231-3-morf3089@gmail.com> (raw)
In-Reply-To: <20260120180052.1031231-1-morf3089@gmail.com>
Create a shared device tree include file for Xiaomi smartphones and tablets
based on Qualcomm SDM636/SDM660 SoCs. This reduces code duplication when
adding new Xiaomi devices and ensures consistent configuration across the
family.
The common dtsi includes:
- PM660/PM660L PMIC configuration with volume/power buttons
- Serial console (blsp1_uart2, blsp2_uart1)
- Hall effect sensor (disabled by default)
- USB (qusb2phy0, usb3) in peripheral mode
- SD card (sdhc_2) pinctrl and supplies
- eMMC (sdhc_1) with HS400 support
- Backlight (pm660l_wled)
- Framebuffer memory reservation
- WiFi (wcn3990)
- Bluetooth (wcn3990)
Also refactor sdm660-xiaomi-lavender.dts to use the new common include,
removing duplicated code.
Signed-off-by: Gianluca Boiano <morf3089@gmail.com>
---
.../boot/dts/qcom/sdm660-xiaomi-common.dtsi | 214 ++++++++++++++++++
.../boot/dts/qcom/sdm660-xiaomi-lavender.dts | 144 +-----------
2 files changed, 219 insertions(+), 139 deletions(-)
create mode 100644 arch/arm64/boot/dts/qcom/sdm660-xiaomi-common.dtsi
diff --git a/arch/arm64/boot/dts/qcom/sdm660-xiaomi-common.dtsi b/arch/arm64/boot/dts/qcom/sdm660-xiaomi-common.dtsi
new file mode 100644
index 000000000000..37ce675089fb
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm660-xiaomi-common.dtsi
@@ -0,0 +1,214 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Common devicetree for Xiaomi SDM636/SDM660 devices
+ *
+ * Copyright (c) 2020, Alexey Minnekhanov <alexey.min@gmail.com>
+ * Copyright (c) 2022, Gianluca Boiano <morf3089@gmail.com>
+ */
+
+#include "pm660.dtsi"
+#include "pm660l.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+
+/ {
+ aliases {
+ serial0 = &blsp1_uart2;
+ serial1 = &blsp2_uart1;
+ };
+
+ chosen {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ stdout-path = "serial0:115200n8";
+
+ framebuffer0: framebuffer@9d400000 {
+ compatible = "simple-framebuffer";
+ memory-region = <&framebuffer_mem>;
+ /*
+ * width/height/stride to be overridden
+ * by individual device dts
+ */
+ format = "a8r8g8b8";
+
+ status = "disabled";
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&vol_up_default>;
+ pinctrl-names = "default";
+
+ key-volup {
+ label = "Volume Up";
+ gpios = <&pm660l_gpios 7 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_VOLUMEUP>;
+ debounce-interval = <15>;
+ };
+ };
+
+ gpio_hall_sensor: gpio-hall-sensor {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&gpio_hall_sensor_default>;
+ pinctrl-names = "default";
+
+ status = "disabled";
+
+ event-hall {
+ label = "Hall Effect Sensor";
+ gpios = <&tlmm 75 GPIO_ACTIVE_LOW>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_LID>;
+ linux,can-disable;
+ wakeup-source;
+ };
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ framebuffer_mem: memory@9d400000 {
+ reg = <0x0 0x9d400000 0x0 0x2400000>;
+ no-map;
+ };
+ };
+
+ 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;
+ };
+
+};
+
+&blsp1_uart2 {
+ status = "okay";
+};
+
+&blsp2_uart1 {
+ status = "okay";
+
+ bluetooth {
+ compatible = "qcom,wcn3990-bt";
+ vddxo-supply = <&vreg_l9a_1p8>;
+ vddrf-supply = <&vreg_l6a_1p3>;
+ vddch0-supply = <&vreg_l19a_3p3>;
+ vddio-supply = <&vreg_l13a_1p8>;
+ max-speed = <3200000>;
+ };
+};
+
+&pm660l_gpios {
+ vol_up_default: vol-up-default-state {
+ pins = "gpio7";
+ function = PMIC_GPIO_FUNC_NORMAL;
+ bias-pull-up;
+ input-enable;
+ qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+ };
+};
+
+&pm660l_wled {
+ qcom,switching-freq = <800>;
+ qcom,current-limit-microamp = <20000>;
+ qcom,num-strings = <2>;
+};
+
+&pon_pwrkey {
+ status = "okay";
+};
+
+&pon_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+
+ status = "okay";
+};
+
+&qusb2phy0 {
+ vdd-supply = <&vreg_l1b_0p925>;
+ vdda-pll-supply = <&vreg_l10a_1p8>;
+ vdda-phy-dpdm-supply = <&vreg_l7b_3p125>;
+
+ status = "okay";
+};
+
+&sdc2_state_off {
+ sd-cd-pins {
+ pins = "gpio54";
+ function = "gpio";
+ bias-disable;
+ drive-strength = <2>;
+ };
+};
+
+&sdc2_state_on {
+ sd-cd-pins {
+ pins = "gpio54";
+ function = "gpio";
+ bias-pull-up;
+ drive-strength = <2>;
+ };
+};
+
+&sdhc_1 {
+ supports-cqe;
+
+ mmc-hs200-1_8v;
+ mmc-hs400-1_8v;
+ mmc-hs400-enhanced-strobe;
+
+ vmmc-supply = <&vreg_l4b_2p95>;
+ vqmmc-supply = <&vreg_l8a_1p8>;
+
+ status = "okay";
+};
+
+&sdhc_2 {
+ cd-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+
+ vmmc-supply = <&vreg_l5b_2p95>;
+ vqmmc-supply = <&vreg_l2b_2p95>;
+};
+
+&tlmm {
+ gpio_hall_sensor_default: gpio-hall-sensor-default-state {
+ pins = "gpio75";
+ function = "gpio";
+ drive-strength = <6>;
+ bias-pull-up;
+ };
+};
+
+&usb3 {
+ qcom,select-utmi-as-pipe-clk;
+
+ status = "okay";
+};
+
+&usb3_dwc3 {
+ maximum-speed = "high-speed";
+ phys = <&qusb2phy0>;
+ phy-names = "usb2-phy";
+ dr_mode = "peripheral";
+};
+
+&wifi {
+ vdd-0.8-cx-mx-supply = <&vreg_l5a_0p848>;
+ vdd-1.8-xo-supply = <&vreg_l9a_1p8>;
+ vdd-1.3-rfa-supply = <&vreg_l6a_1p3>;
+ vdd-3.3-ch0-supply = <&vreg_l19a_3p3>;
+
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts b/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts
index a9926ad6c6f9..6467cb4dfd16 100644
--- a/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts
+++ b/arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts
@@ -7,58 +7,13 @@
/dts-v1/;
#include "sdm660.dtsi"
-#include "pm660.dtsi"
-#include "pm660l.dtsi"
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/input/gpio-keys.h>
+#include "sdm660-xiaomi-common.dtsi"
/ {
model = "Xiaomi Redmi Note 7";
compatible = "xiaomi,lavender", "qcom,sdm660";
chassis-type = "handset";
- aliases {
- serial0 = &blsp1_uart2;
- };
-
- chosen {
- #address-cells = <2>;
- #size-cells = <2>;
- ranges;
-
- stdout-path = "serial0:115200n8";
-
- framebuffer0: framebuffer@9d400000 {
- compatible = "simple-framebuffer";
- reg = <0 0x9d400000 0 (1080 * 2340 * 4)>;
- width = <1080>;
- height = <2340>;
- stride = <(1080 * 4)>;
- format = "a8r8g8b8";
- };
- };
-
- 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;
- };
-
- gpio-keys {
- compatible = "gpio-keys";
-
- key-volup {
- label = "Volume Up";
- gpios = <&pm660l_gpios 7 GPIO_ACTIVE_LOW>;
- linux,code = <KEY_VOLUMEUP>;
- debounce-interval = <15>;
- };
- };
-
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
@@ -78,37 +33,14 @@ framebuffer_mem: memory@9d400000 {
no-map;
};
};
-
- /*
- * Until we hook up type-c detection, we
- * have to stick with this. But it works.
- */
- extcon_usb: extcon-usb {
- compatible = "linux,extcon-usb-gpio";
- id-gpios = <&tlmm 58 GPIO_ACTIVE_HIGH>;
- };
-};
-
-&blsp1_uart2 {
- status = "okay";
};
-&pon_pwrkey {
- status = "okay";
-};
+&framebuffer0 {
+ width = <1080>;
+ height = <2340>;
+ stride = <(1080 * 4)>;
-&pon_resin {
status = "okay";
-
- linux,code = <KEY_VOLUMEDOWN>;
-};
-
-&qusb2phy0 {
- status = "okay";
-
- vdd-supply = <&vreg_l1b_0p925>;
- vdda-pll-supply = <&vreg_l10a_1p8>;
- vdda-phy-dpdm-supply = <&vreg_l7b_3p125>;
};
&rpm_requests {
@@ -363,69 +295,3 @@ vreg_l19a_3p3: l19 {
};
};
};
-
-&pm660l_wled {
- status = "okay";
-
- qcom,switching-freq = <800>;
- qcom,current-limit-microamp = <20000>;
- qcom,num-strings = <2>;
-};
-
-&sdc2_state_on {
- sd-cd-pins {
- pins = "gpio54";
- function = "gpio";
- bias-pull-up;
- drive-strength = <2>;
- };
-};
-
-&sdc2_state_off {
- sd-cd-pins {
- pins = "gpio54";
- function = "gpio";
- bias-disable;
- drive-strength = <2>;
- };
-};
-
-&sdhc_1 {
- status = "okay";
- supports-cqe;
-
- mmc-hs200-1_8v;
- mmc-hs400-1_8v;
- mmc-hs400-enhanced-strobe;
-
- vmmc-supply = <&vreg_l4b_2p95>;
- vqmmc-supply = <&vreg_l8a_1p8>;
-};
-
-&sdhc_2 {
- status = "okay";
-
- cd-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
-
- vmmc-supply = <&vreg_l5b_2p95>;
- vqmmc-supply = <&vreg_l2b_2p95>;
-};
-
-&tlmm {
- gpio-reserved-ranges = <8 4>;
-};
-
-&usb3 {
- qcom,select-utmi-as-pipe-clk;
-
- status = "okay";
-};
-
-&usb3_dwc3 {
- maximum-speed = "high-speed";
- phys = <&qusb2phy0>;
- phy-names = "usb2-phy";
-
- dr_mode = "peripheral";
- extcon = <&extcon_usb>;
-};
--
2.52.0
next prev parent reply other threads:[~2026-01-20 18:01 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-20 18:00 [PATCH 0/7] arm64: dts: qcom: add support for Xiaomi SDM636/SDM660 devices Gianluca Boiano
2026-01-20 18:00 ` [PATCH 1/7] dt-bindings: arm: qcom: add " Gianluca Boiano
2026-01-21 8:14 ` Krzysztof Kozlowski
2026-01-20 18:00 ` Gianluca Boiano [this message]
2026-01-21 12:35 ` [PATCH 2/7] arm64: dts: qcom: sdm660: add common Xiaomi SDM636/SDM660 include file Konrad Dybcio
2026-01-21 20:30 ` Gianluca Boiano
2026-01-20 18:00 ` [PATCH 3/7] arm64: dts: qcom: sdm660-xiaomi-lavender: fix regulator and SD settings Gianluca Boiano
2026-01-21 11:27 ` Konrad Dybcio
2026-01-21 20:30 ` Gianluca Boiano
2026-01-22 11:40 ` Konrad Dybcio
2026-01-22 16:34 ` Alexey Minnekhanov
2026-01-22 20:47 ` Konrad Dybcio
2026-01-22 16:44 ` Alexey Minnekhanov
2026-01-23 9:26 ` Konrad Dybcio
2026-01-23 20:11 ` Alexey Minnekhanov
2026-01-25 11:10 ` Dmitry Baryshkov
2026-01-28 13:24 ` Konrad Dybcio
2026-01-28 13:52 ` Dmitry Baryshkov
2026-01-21 12:36 ` Konrad Dybcio
2026-01-20 18:00 ` [PATCH 4/7] arm64: dts: qcom: add device tree for Xiaomi Redmi Note 6 Pro (tulip) Gianluca Boiano
2026-01-21 12:42 ` Konrad Dybcio
2026-01-21 20:30 ` Gianluca Boiano
2026-01-22 17:12 ` Alexey Minnekhanov
2026-01-22 20:45 ` Konrad Dybcio
2026-01-20 18:00 ` [PATCH 5/7] arm64: dts: qcom: add device tree for Xiaomi Redmi Note 5 Pro (whyred) Gianluca Boiano
2026-01-20 18:00 ` [PATCH 6/7] arm64: dts: qcom: add device tree for Xiaomi Mi A2 (jasmine) Gianluca Boiano
2026-01-20 18:00 ` [PATCH 7/7] arm64: dts: qcom: add device tree for Xiaomi Mi 8 Lite (platina) Gianluca Boiano
2026-01-21 21:02 ` [PATCH 0/7] arm64: dts: qcom: Add Xiaomi SDM636/SDM660 devices Gianluca Boiano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260120180052.1031231-3-morf3089@gmail.com \
--to=morf3089@gmail.com \
--cc=andersson@kernel.org \
--cc=conor+dt@kernel.org \
--cc=david@ixit.cz \
--cc=devicetree@vger.kernel.org \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox