* [PATCH] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
@ 2026-07-21 13:32 code_0002
2026-07-21 13:44 ` sashiko-bot
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: code_0002 @ 2026-07-21 13:32 UTC (permalink / raw)
To: andersson
Cc: konradybcio, robh, krzk+dt, conor+dt, linux-arm-msm, devicetree,
linux-kernel, map220v, code002-2
From: map220v <map220v300@gmail.com>
Add device tree for Xiaomi Pad 6S Pro (sheng) based on SM8550.
Signed-off-by: code002-2 <hiez832670@gmail.com>
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../boot/dts/qcom/sm8550-xiaomi-sheng.dts | 1800 +++++++++++++++++
2 files changed, 1801 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 6f33c4e2f..d8e485521 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -386,6 +386,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8550-mtp.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-qrd.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-samsung-q5q.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-sony-xperia-yodo-pdx234.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sm8550-xiaomi-sheng.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8650-ayaneo-pocket-s2.dtb
sm8650-hdk-display-card-dtbs := sm8650-hdk.dtb sm8650-hdk-display-card.dtbo
diff --git a/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
new file mode 100644
index 000000000..218cd84ee
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
@@ -0,0 +1,1800 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2024, map220v <map220v300@gmail.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/arm/qcom,ids.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include "sm8550.dtsi"
+#include "pm8010.dtsi"
+#include "pm8550.dtsi"
+#include "pm8550b.dtsi"
+#define PMK8550VE_SID 5
+#include "pm8550ve.dtsi"
+#include "pm8550vs.dtsi"
+#include "pmk8550.dtsi"
+
+/delete-node/ &rmtfs_mem;
+/delete-node/ &adspslpi_mem;
+/delete-node/ &xbl_dt_log_merged_mem;
+/delete-node/ &hwfence_shbuf;
+
+/*
+ * Free unused regions, these regions don't exist in downstream
+ * dts, and they aren't removed from DDR Memory Map by UEFI.
+ */
+/delete-node/ &hyp_tags_reserved_mem;
+/delete-node/ &cdsp_secure_heap_mem;
+/delete-node/ &trust_ui_vm_mem;
+/delete-node/ &trust_ui_vm_dump;
+/delete-node/ &trust_ui_vm_qrtr;
+/delete-node/ &trust_ui_vm_vblk0_ring;
+/delete-node/ &trust_ui_vm_vblk1_ring;
+/delete-node/ &trust_ui_vm_swiotlb;
+/delete-node/ &oem_vm_vblk0_ring;
+/delete-node/ &oem_vm_swiotlb;
+/delete-node/ &oem_vm_mem;
+/delete-node/ &hyp_ext_tags_mem;
+/delete-node/ &hyp_ext_reserved_mem;
+
+/* Xiaomi uses alternative gpio's for i2c8 */
+/delete-node/ &qup_i2c8_data_clk;
+
+/* Xiaomi change for Nanosic WN803x */
+/delete-node/ &qup_i2c9_data_clk;
+
+/* SM8550P doesn't have Modem DSP */
+/delete-node/ &mpss_dsm_mem;
+/delete-node/ &mpss_mem;
+/delete-node/ &q6_mpss_dtb_mem;
+/delete-node/ &remoteproc_mpss;
+
+/ {
+ model = "Xiaomi Pad 6S Pro 12.4";
+ compatible = "xiaomi,sheng", "qcom,sm8550";
+ chassis-type = "tablet";
+ qcom,msm-id = <536 0x20000>; /* SM8550P v2.0 */
+ qcom,board-id = <0x10008 0>;
+
+ aliases {
+ serial0 = &uart7;
+ serial1 = &uart14;
+ };
+
+ chosen {
+ /* Required for libcamera to allocate buffers when udmabuf is used. */
+ bootargs = "udmabuf.size_limit_mb=256";
+ };
+
+ fingerprint_fpc {
+ compatible = "fpc,fpc1020";
+ interrupt-parent = <&tlmm>;
+ interrupts = <40 0>;
+ fpc,gpio_rst = <&tlmm 41 GPIO_ACTIVE_HIGH>;
+ fpc,gpio_irq = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+ irq-gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+ fp_vdd_vreg-supply = <&vreg_l9b_3p3>;
+
+ pinctrl-names = "fpc1020_reset_reset",
+ "fpc1020_reset_active",
+ "fpc1020_irq_active";
+ pinctrl-0 = <&fpc_reset_low>;
+ pinctrl-1 = <&fpc_reset_high>;
+ pinctrl-2 = <&fpc_irq_active>;
+ };
+
+ bl_vddpos_5p8: bl-vddpos-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "bl_vddpos_5p8";
+ regulator-min-microvolt = <5800000>;
+ regulator-max-microvolt = <5800000>;
+ regulator-enable-ramp-delay = <233>;
+ gpio = <&tlmm 30 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ bl_vddneg_5p8: bl-vddneg-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "bl_vddneg_5p8";
+ regulator-min-microvolt = <5800000>;
+ regulator-max-microvolt = <5800000>;
+ regulator-enable-ramp-delay = <233>;
+ gpio = <&tlmm 31 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&volume_up_n>, <&hall_sensor_default>;
+ pinctrl-names = "default";
+
+ key-volume-up {
+ label = "Volume Up";
+ linux,code = <KEY_VOLUMEUP>;
+ gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+
+ event-hall-sensor {
+ label = "Hall Effect Sensor";
+ gpios = <&tlmm 171 GPIO_ACTIVE_LOW>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_LID>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+
+ event-tablet-mode {
+ label = "Tablet Mode Switch";
+ gpios = <&tlmm 172 GPIO_ACTIVE_LOW>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_TABLET_MODE>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+ };
+
+ pmic-glink {
+ compatible = "xiaomi,sm8550-pmic-glink", "qcom,sm8550-pmic-glink", "qcom,pmic-glink";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ orientation-gpios = <&tlmm 11 GPIO_ACTIVE_HIGH>;
+
+ connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ power-role = "dual";
+ data-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ pmic_glink_hs_in: endpoint {
+ remote-endpoint = <&usb_1_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ pmic_glink_ss_in: endpoint {
+ remote-endpoint = <&redriver_ss_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_sbu: endpoint {
+ remote-endpoint = <&fsa4480_sbu_mux>;
+ };
+ };
+ };
+ };
+ };
+
+ reserved-memory {
+ xbl_ramdump_mem: xbl-ramdump-region@81200000 {
+ reg = <0 0x81200000 0 0x280000>;
+ no-map;
+ };
+
+ xbl_dt_log_mem: xbl-dt-log-region@81a00000 {
+ reg = <0 0x81a00000 0 0x40000>;
+ no-map;
+ };
+
+ aop_image_mem: aop-image-region@81c00000 {
+ reg = <0 0x81c00000 0 0x60000>;
+ no-map;
+ };
+
+ adspslpi_mem: adspslpi-region@9ea00000 {
+ reg = <0 0x9ea00000 0 0x4680000>;
+ no-map;
+ };
+
+ rmtfs_mem: rmtfs-region@ccd00000 {
+ compatible = "qcom,rmtfs-mem";
+ reg = <0x0 0xccd00000 0x0 0x280000>;
+ no-map;
+
+ qcom,client-id = <1>;
+ qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
+ };
+
+ hwfence_shbuf: hwfence-shbuf-region@e6440000 {
+ reg = <0 0xe6440000 0 0x2dd000>;
+ no-map;
+ };
+
+ llcc_lpi_mem: llcc-lpi-region@ff800000 {
+ reg = <0 0xff800000 0 0x600000>;
+ no-map;
+ };
+
+ /* Required for libcamera to allocate buffers when cma is used. */
+ linux,cma {
+ compatible = "shared-dma-pool";
+ size = <0x0 0x30000000>;
+ reusable;
+ linux,cma-default;
+ };
+ };
+
+ sound {
+ compatible = "qcom,sm8550-sndcard", "qcom,sm8450-sndcard";
+ pinctrl-0 = <&i2s1_default>;
+ pinctrl-names = "default";
+
+ model = "Xiaomi-Pad6SPro";
+ audio-routing = "IN1_HPHL", "HPHL_OUT",
+ "IN2_HPHR", "HPHR_OUT",
+ "AMIC1", "MIC BIAS1",
+ "AMIC2", "MIC BIAS2",
+ "AMIC3", "MIC BIAS3",
+ "AMIC4", "MIC BIAS3",
+ "AMIC5", "MIC BIAS4",
+ "TX SWR_INPUT0", "ADC1_OUTPUT",
+ "TX SWR_INPUT1", "ADC2_OUTPUT",
+ "TX SWR_INPUT0", "ADC3_OUTPUT",
+ "TX SWR_INPUT1", "ADC4_OUTPUT";
+
+ secondary-i2s-dai-link {
+ link-name = "Secondary MI2S Playback";
+
+ cpu {
+ sound-dai = <&q6apmbedai SECONDARY_MI2S_RX>;
+ };
+
+ codec {
+ sound-dai = <&cs35l43_tll>, <&cs35l43_tlh>, <&cs35l43_trl>,
+ <&cs35l43_bll>, <&cs35l43_blh>, <&cs35l43_brl>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wcd-playback-dai-link {
+ link-name = "WCD Playback";
+
+ cpu {
+ sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+ };
+
+ codec {
+ sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wcd-capture-dai-link {
+ link-name = "WCD Capture";
+
+ cpu {
+ sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+ };
+
+ codec {
+ sound-dai = <&wcd938x 1>, <&swr2 0>, <&lpass_txmacro 0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ displayport-dai-link {
+ link-name = "DisplayPort Playback";
+
+ cpu {
+ sound-dai = <&q6apmbedai DISPLAY_PORT_RX_0>;
+ };
+
+ codec {
+ sound-dai = <&mdss_dp0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+ };
+
+ 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;
+ };
+
+ wcd938x: audio-codec {
+ compatible = "qcom,wcd9380-codec";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wcd_default>;
+
+ qcom,micbias1-microvolt = <2750000>;
+ qcom,micbias2-microvolt = <2750000>;
+ qcom,micbias3-microvolt = <2750000>;
+ qcom,micbias4-microvolt = <2750000>;
+ qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+ qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+ qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+ qcom,rx-device = <&wcd_rx>;
+ qcom,tx-device = <&wcd_tx>;
+
+ reset-gpios = <&tlmm 108 GPIO_ACTIVE_LOW>;
+
+ vdd-buck-supply = <&vreg_l15b_1p8>;
+ vdd-rxtx-supply = <&vreg_l15b_1p8>;
+ vdd-io-supply = <&vreg_l15b_1p8>;
+ vdd-mic-bias-supply = <&vreg_bob1>;
+
+ #sound-dai-cells = <1>;
+ };
+
+ wcn7850-pmu {
+ compatible = "qcom,wcn7850-pmu";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wlan_en>, <&bt_default>, <&pmk8550_sleep_clk>;
+
+ wlan-enable-gpios = <&tlmm 80 GPIO_ACTIVE_HIGH>;
+ bt-enable-gpios = <&tlmm 81 GPIO_ACTIVE_HIGH>;
+
+ vdd-supply = <&vreg_s5g_0p8>;
+ vddio-supply = <&vreg_l15b_1p8>;
+ vddaon-supply = <&vreg_s2g_0p8>;
+ vdddig-supply = <&vreg_s4e_0p9>;
+ vddrfa1p2-supply = <&vreg_s4g_1p3>;
+ vddrfa1p8-supply = <&vreg_s6g_1p8>;
+
+ regulators {
+ vreg_pmu_rfa_cmn: ldo0 {
+ regulator-name = "vreg_pmu_rfa_cmn";
+ };
+
+ vreg_pmu_aon_0p59: ldo1 {
+ regulator-name = "vreg_pmu_aon_0p59";
+ };
+
+ vreg_pmu_wlcx_0p8: ldo2 {
+ regulator-name = "vreg_pmu_wlcx_0p8";
+ };
+
+ vreg_pmu_wlmx_0p85: ldo3 {
+ regulator-name = "vreg_pmu_wlmx_0p85";
+ };
+
+ vreg_pmu_btcmx_0p85: ldo4 {
+ regulator-name = "vreg_pmu_btcmx_0p85";
+ };
+
+ vreg_pmu_rfa_0p8: ldo5 {
+ regulator-name = "vreg_pmu_rfa_0p8";
+ };
+
+ vreg_pmu_rfa_1p2: ldo6 {
+ regulator-name = "vreg_pmu_rfa_1p2";
+ };
+
+ vreg_pmu_rfa_1p8: ldo7 {
+ regulator-name = "vreg_pmu_rfa_1p8";
+ };
+
+ vreg_pmu_pcie_0p9: ldo8 {
+ regulator-name = "vreg_pmu_pcie_0p9";
+ };
+
+ vreg_pmu_pcie_1p8: ldo9 {
+ regulator-name = "vreg_pmu_pcie_1p8";
+ };
+ };
+ };
+};
+
+&apps_rsc {
+ regulators-0 {
+ compatible = "qcom,pm8550-rpmh-regulators";
+ qcom,pmic-id = "b";
+
+ vdd-bob1-supply = <&vph_pwr>;
+ vdd-bob2-supply = <&vph_pwr>;
+ vdd-l1-l4-l10-supply = <&vreg_s6g_1p8>;
+ vdd-l2-l13-l14-supply = <&vreg_bob1>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ vdd-l5-l16-supply = <&vreg_bob1>;
+ vdd-l6-l7-supply = <&vreg_bob1>;
+ vdd-l8-l9-supply = <&vreg_bob1>;
+ vdd-l11-supply = <&vreg_s4g_1p3>;
+ vdd-l12-supply = <&vreg_s6g_1p8>;
+ vdd-l15-supply = <&vreg_s6g_1p8>;
+ vdd-l17-supply = <&vreg_bob2>;
+
+ vreg_bob1: bob1 {
+ regulator-name = "vreg_bob1";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3960000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ /* Xiaomi change for Camera Modules */
+ vreg_bob2: bob2 {
+ regulator-name = "vreg_bob2";
+ regulator-min-microvolt = <2704000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1b_1p8: ldo1 {
+ regulator-name = "vreg_l1b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2b_3p0: ldo2 {
+ regulator-name = "vreg_l2b_3p0";
+ regulator-min-microvolt = <3008000>;
+ regulator-max-microvolt = <3008000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4b_1p8: ldo4 {
+ regulator-name = "vreg_l4b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5b_3p1: ldo5 {
+ regulator-name = "vreg_l5b_3p1";
+ regulator-min-microvolt = <3104000>;
+ regulator-max-microvolt = <3104000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ /* Xiaomi change for Nanosic WN803x */
+ vreg_l6b_1p8: ldo6 {
+ regulator-name = "vreg_l6b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ /* Xiaomi change for Camera Modules */
+ vreg_l7b_1p8: ldo7 {
+ regulator-name = "vreg_l7b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ /* Xiaomi change for Semtech SX9371 */
+ vreg_l8b_1p8: ldo8 {
+ regulator-name = "vreg_l8b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ /* Xiaomi change for FPC1552 */
+ vreg_l9b_3p3: ldo9 {
+ regulator-name = "vreg_l9b_3p3";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l10b_1p8: ldo10 {
+ regulator-name = "vreg_l10b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l11b_1p2: ldo11 {
+ regulator-name = "vreg_l11b_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1504000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l12b_1p8: ldo12 {
+ regulator-name = "vreg_l12b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ /* Xiaomi change for Nanosic WN803x */
+ vreg_l13b_3p3: ldo13 {
+ regulator-name = "vreg_l13b_3p3";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l14b_3p2: ldo14 {
+ regulator-name = "vreg_l14b_3p2";
+ regulator-min-microvolt = <3200000>;
+ regulator-max-microvolt = <3200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l15b_1p8: ldo15 {
+ regulator-name = "vreg_l15b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l16b_2p8: ldo16 {
+ regulator-name = "vreg_l16b_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l17b_2p5: ldo17 {
+ regulator-name = "vreg_l17b_2p5";
+ regulator-min-microvolt = <2504000>;
+ regulator-max-microvolt = <2504000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-1 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "c";
+
+ vdd-l3-supply = <&vreg_s4e_0p9>;
+
+ vreg_l3c_0p91: ldo3 {
+ regulator-name = "vreg_l3c_0p9";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-2 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "d";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+
+ vreg_l1d_0p88: ldo1 {
+ regulator-name = "vreg_l1d_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-3 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "e";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+ vdd-l2-supply = <&vreg_s4e_0p9>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ vdd-s4-supply = <&vph_pwr>;
+ vdd-s5-supply = <&vph_pwr>;
+
+ vreg_s4e_0p9: smps4 {
+ regulator-name = "vreg_s4e_0p9";
+ regulator-min-microvolt = <904000>;
+ regulator-max-microvolt = <984000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s5e_1p1: smps5 {
+ regulator-name = "vreg_s5e_1p1";
+ regulator-min-microvolt = <1080000>;
+ regulator-max-microvolt = <1120000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1e_0p88: ldo1 {
+ regulator-name = "vreg_l1e_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <880000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2e_0p9: ldo2 {
+ regulator-name = "vreg_l2e_0p9";
+ regulator-min-microvolt = <904000>;
+ regulator-max-microvolt = <970000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3e_1p2: ldo3 {
+ regulator-name = "vreg_l3e_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-4 {
+ compatible = "qcom,pm8550ve-rpmh-regulators";
+ qcom,pmic-id = "f";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+ vdd-l2-supply = <&vreg_s4e_0p9>;
+ vdd-l3-supply = <&vreg_s4e_0p9>;
+ vdd-s4-supply = <&vph_pwr>;
+
+ vreg_s4f_0p5: smps4 {
+ regulator-name = "vreg_s4f_0p5";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <700000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1f_0p9: ldo1 {
+ regulator-name = "vreg_l1f_0p9";
+ regulator-min-microvolt = <912000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2f_0p88: ldo2 {
+ regulator-name = "vreg_l2f_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3f_0p91: ldo3 {
+ regulator-name = "vreg_l3f_0p91";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-5 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "g";
+
+ vdd-l1-supply = <&vreg_s4g_1p3>;
+ vdd-l2-supply = <&vreg_s4g_1p3>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ 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>;
+
+ vreg_s1g_1p2: smps1 {
+ regulator-name = "vreg_s1g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s2g_0p8: smps2 {
+ regulator-name = "vreg_s2g_0p8";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ /* Xiaomi change for Display Panel */
+ vreg_s3g_0p7: smps3 {
+ regulator-name = "vreg_s3g_0p7";
+ regulator-min-microvolt = <600000>;
+ regulator-max-microvolt = <1900000>; //2004000
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ /* Xiaomi change for Camera Modules */
+ vreg_s4g_1p3: smps4 {
+ regulator-name = "vreg_s4g_1p3";
+ regulator-min-microvolt = <1256000>;
+ regulator-max-microvolt = <1408000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s5g_0p8: smps5 {
+ regulator-name = "vreg_s5g_0p8";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1004000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s6g_1p8: smps6 {
+ regulator-name = "vreg_s6g_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1g_1p2: ldo1 {
+ regulator-name = "vreg_l1g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2g_1p2: ldo2 {
+ regulator-name = "vreg_l2g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3g_1p2: ldo3 {
+ regulator-name = "vreg_l3g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-6 {
+ compatible = "qcom,pm8010-rpmh-regulators";
+ qcom,pmic-id = "m";
+
+ vdd-l1-l2-supply = <&vreg_s4g_1p3>;
+ vdd-l3-l4-supply = <&vreg_bob2>;
+ vdd-l5-supply = <&vreg_s6g_1p8>;
+ vdd-l6-supply = <&vreg_bob2>;
+ vdd-l7-supply = <&vreg_bob2>;
+
+ /* Xiaomi change for Camera Modules */
+ vreg_l1m_1p2: ldo1 {
+ regulator-name = "vreg_l1m_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ /* Xiaomi change for Camera Modules */
+ vreg_l2m_1p08: ldo2 {
+ regulator-name = "vreg_l2m_1p08";
+ regulator-min-microvolt = <1080000>;
+ regulator-max-microvolt = <1080000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3m_2p8: ldo3 {
+ regulator-name = "vreg_l3m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4m_2p8: ldo4 {
+ regulator-name = "vreg_l4m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5m_1p8: ldo5 {
+ regulator-name = "vreg_l5m_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ /* Xiaomi change for Camera Modules */
+ vreg_l6m_2p8: ldo6 {
+ regulator-name = "vreg_l6m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ /* Xiaomi change for Camera Modules */
+ vreg_l7m_2p85: ldo7 {
+ regulator-name = "vreg_l7m_2p85";
+ regulator-min-microvolt = <2856000>;
+ regulator-max-microvolt = <2856000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+};
+
+&camss {
+ vdda-phy-supply = <&vreg_l1e_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+
+ csiphy1_ep: endpoint {
+ data-lanes = <0>;
+ remote-endpoint = <&ov02b1b_ep>;
+ };
+ };
+
+ port@3 {
+ reg = <3>;
+
+ csiphy3_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&s5kjn1_ep>;
+ };
+ };
+
+ port@4 {
+ reg = <4>;
+
+ csiphy4_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&ov32d40_ep>;
+ };
+ };
+ };
+};
+
+&cci0 {
+ status = "okay";
+};
+
+&cci0_i2c1 {
+ clock-frequency = <1000000>;
+
+ camera@10 {
+ compatible = "samsung,s5kjn1";
+ reg = <0x10>;
+
+ reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&cam2_default>, <&cam_rear_reset_default>;
+
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+
+ orientation = <1>;
+ rotation = <0>;
+
+ lens-focus = <>9764>;
+
+ vddio-supply = <&vreg_l4b_1p8>;
+ vddd-supply = <&vreg_l2m_1p08>;
+ vdda-supply = <&vreg_l4m_2p8>;
+
+ port {
+ s5kjn1_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <857600000>;
+ remote-endpoint = <&csiphy3_ep>;
+ };
+ };
+ };
+
+ gt9764: camera-lens@c {
+ compatible = "giantec,gt9764";
+ reg = <0x0c>;
+
+ vin-supply = <&vreg_l4b_1p8>;
+ vdd-supply = <&vreg_l7m_2p85>;
+ dongwoon,clock-presc = <0>;
+ dongwoon,aac-timing = <0x6a>;
+ dongwoon,initial-focus = <0x200>;
+ dongwoon,move-delay-us = <7000>;
+ };
+};
+
+&cci1 {
+ status = "okay";
+};
+
+&cci1_i2c0 {
+ clock-frequency = <400000>;
+
+ camera@3c {
+ compatible = "ovti,ov02b1b";
+ reg = <0x3c>;
+
+ reset-gpios = <&tlmm 117 GPIO_ACTIVE_LOW>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&cam1_default>, <&cam_depth_reset_default>;
+
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+
+ orientation = <1>;
+ rotation = <0>;
+
+ vddio-supply = <&vreg_l10b_1p8>;
+ avdd-supply = <&vreg_l6m_2p8>;
+
+ port {
+ ov02b1b_ep: endpoint {
+ data-lanes = <0>;
+ link-frequencies = /bits/ 64 <332800000>;
+ remote-endpoint = <&csiphy1_ep>;
+ };
+ };
+ };
+};
+
+&cci1_i2c1 {
+ clock-frequency = <1000000>;
+
+ camera@10 {
+ compatible = "ovti,ov32d40";
+ reg = <0x10>;
+
+ reset-gpios = <&tlmm 120 GPIO_ACTIVE_LOW>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&cam4_default>, <&cam_front_reset_default>;
+
+ clocks = <&camcc CAM_CC_MCLK4_CLK>;
+
+ orientation = <0>;
+ rotation = <0>;
+
+ vddio-supply = <&vreg_l5m_1p8>;
+ dvdd-supply = <&vreg_l1m_1p2>;
+ avdd-supply = <&vreg_l3m_2p8>;
+
+ port {
+ ov32d40_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <842400000>;
+ remote-endpoint = <&csiphy4_ep>;
+ };
+ };
+ };
+};
+
+&ipa {
+ qcom,gsi-loader = "self";
+ memory-region = <&ipa_fw_mem>;
+ firmware-name = "qcom/sm8550/sheng/ipa_fws.mbn";
+ status = "okay";
+};
+
+&gpi_dma1 {
+ status = "okay";
+};
+
+&gpi_dma2 {
+ status = "okay";
+};
+
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/sm8550/sheng/a740_zap.mbn";
+};
+
+&i2c0 {
+ clock-frequency = <400000>;
+ status = "okay";
+
+ typec-retimer@28 {
+ compatible = "parade,ps5169";
+ reg = <0x28>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&ps5169_reset_default>;
+
+ reset-gpios = <&tlmm 7 GPIO_ACTIVE_LOW>;
+
+ orientation-switch;
+ retimer-switch;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ redriver_ss_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ redriver_ss_in: endpoint {
+ data-lanes = <3 2 1 0>;
+ remote-endpoint = <&usb_dp_qmpphy_out>;
+ };
+ };
+ };
+ };
+};
+
+&i2c1 {
+ status = "okay";
+
+ backlight: backlight@11 {
+ compatible = "kinetic,ktz8866a";
+ reg = <0x11>;
+ vin-supply = <&vph_pwr>;
+ enable-gpios = <&tlmm 128 GPIO_ACTIVE_HIGH>;
+ current-num-sinks = <5>;
+ kinetic,current-ramp-delay-ms = <256>;
+ kinetic,led-enable-ramp-delay-ms = <8>;
+ kinetic,enable-lcd-bias;
+ };
+};
+
+&i2c5 {
+ clock-frequency = <1000000>;
+ status = "okay";
+
+ cs35l43_trl: cs35l43@40 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x40>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TRL";
+ cirrus,dsp-part-name = "trl-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_tlh: cs35l43@41 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x41>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <99 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TLH";
+ cirrus,dsp-part-name = "tlh-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_tll: cs35l43@42 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x42>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TLL";
+ cirrus,dsp-part-name = "tll-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+};
+
+&i2c8 {
+ clock-frequency = <1000000>;
+ status = "okay";
+
+ cs35l43_blh: cs35l43@40 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x40>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BLH";
+ cirrus,dsp-part-name = "blh-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_bll: cs35l43@41 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x41>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BLL";
+ cirrus,dsp-part-name = "bll-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_brl: cs35l43@42 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x42>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <85 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BRL";
+ cirrus,dsp-part-name = "brl-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+};
+
+&i2c9 {
+ status = "okay";
+
+ nanosic_mcu@4c {
+ compatible = "nanosic,wn8030-sheng";
+ reg = <0x4c>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&nanosic_mcu_default>;
+
+ interrupt-parent = <&tlmm>;
+ interrupts = <62 IRQ_TYPE_EDGE_RISING>;
+
+ reset-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
+ sleep-gpios = <&tlmm 57 GPIO_ACTIVE_LOW>;
+ status-gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>;
+
+ vddio-supply = <&vreg_l12b_1p8>;
+ dvdd-supply = <&vreg_l13b_3p3>;
+ };
+};
+
+&i2c_master_hub_0 {
+ status = "okay";
+};
+
+&i2c_hub_2 {
+ status = "okay";
+
+ backlight@11 {
+ compatible = "kinetic,ktz8866b";
+ reg = <0x11>;
+ vin-supply = <&vph_pwr>;
+ enable-gpios = <&tlmm 128 GPIO_ACTIVE_HIGH>;
+ current-num-sinks = <5>;
+ kinetic,current-ramp-delay-ms = <256>;
+ kinetic,led-enable-ramp-delay-ms = <8>;
+ kinetic,enable-lcd-bias;
+ };
+
+ typec-mux@42 {
+ compatible = "fcs,fsa4480";
+ reg = <0x42>;
+
+ vcc-supply = <&vreg_bob1>;
+
+ mode-switch;
+ orientation-switch;
+
+ port {
+ fsa4480_sbu_mux: endpoint {
+ remote-endpoint = <&pmic_glink_sbu>;
+ };
+ };
+ };
+};
+
+&iris {
+ status = "okay";
+
+ firmware-name = "qcom/sm8550/sheng/vpu30_4v.mbn";
+};
+
+&mdss {
+ status = "okay";
+};
+
+&mdss_dsi0 {
+ vdda-supply = <&vreg_l3e_1p2>;
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+ qcom,master-dsi;
+ status = "okay";
+
+ display_panel: panel@0 {
+ compatible = "xiaomi,sheng-nt36532e", "novatek,nt36532e";
+ reg = <0>;
+
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&sde_dsi_active>;
+ pinctrl-1 = <&sde_dsi_suspend>;
+
+ vddio-supply = <&vreg_s3g_0p7>;
+ avdd-supply = <&bl_vddpos_5p8>;
+ avee-supply = <&bl_vddneg_5p8>;
+
+ reset-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
+ backlight = <&backlight>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ panel_in_0: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ panel_in_1: endpoint {
+ remote-endpoint = <&mdss_dsi1_out>;
+ };
+ };
+ };
+ };
+};
+
+&mdss_dsi0_out {
+ remote-endpoint = <&panel_in_0>;
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi0_phy {
+ vdds-supply = <&vreg_l1e_0p88>;
+ status = "okay";
+};
+
+&mdss_dsi1 {
+ vdda-supply = <&vreg_l3e_1p2>;
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+ /* DSI1 is slave, so use DSI0 clocks */
+ assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+ status = "okay";
+};
+
+&mdss_dsi1_out {
+ remote-endpoint = <&panel_in_1>;
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi1_phy {
+ vdds-supply = <&vreg_l1e_0p88>;
+ status = "okay";
+};
+
+&mdss_dp0 {
+ status = "okay";
+};
+
+&mdss_dp0_out {
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&pcie0 {
+ wake-gpios = <&tlmm 96 GPIO_ACTIVE_HIGH>;
+ perst-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pcie0_default_state>;
+
+ status = "okay";
+};
+
+&pcieport0 {
+ wifi@0 {
+ compatible = "pci17cb,1107";
+ reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+ vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+ vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+ };
+};
+
+&pcie0_phy {
+ vdda-phy-supply = <&vreg_l1e_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&pm8010_n {
+ status = "disabled";
+};
+
+&pm8550_flash {
+ status = "okay";
+
+ led-0 {
+ function = LED_FUNCTION_FLASH;
+ color = <LED_COLOR_ID_WHITE>;
+ led-sources = <1>;
+ led-max-microamp = <400000>;
+ flash-max-microamp = <400000>;
+ flash-max-timeout-us = <300000>;
+ function-enumerator = <0>;
+ };
+};
+
+&pm8550_gpios {
+ volume_up_n: volume-up-n-state {
+ pins = "gpio6";
+ function = "normal";
+ power-source = <1>;
+ bias-pull-up;
+ input-enable;
+ };
+};
+
+&pm8550_pwm {
+ status = "okay";
+
+ multi-led {
+ color = <LED_COLOR_ID_RGB>;
+ function = LED_FUNCTION_STATUS;
+ max-brightness = <255>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led@1 {
+ reg = <1>;
+ color = <LED_COLOR_ID_RED>;
+ };
+
+ led@2 {
+ reg = <2>;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+
+ led@3 {
+ reg = <3>;
+ color = <LED_COLOR_ID_BLUE>;
+ };
+ };
+};
+
+&pm8550b_eusb2_repeater {
+ vdd18-supply = <&vreg_l15b_1p8>;
+ vdd3-supply = <&vreg_l5b_3p1>;
+};
+
+&pm8550vs_c {
+ status = "okay";
+};
+
+&pm8550vs_d {
+ status = "okay";
+};
+
+&pm8550vs_e {
+ status = "okay";
+};
+
+&pm8550vs_g {
+ status = "okay";
+};
+
+&pon_pwrkey {
+ status = "okay";
+};
+
+&pon_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+
+ status = "okay";
+};
+
+&pmk8550_gpios {
+ pmk8550_sleep_clk: sleep-clk-state {
+ pins = "gpio3";
+ function = "func1";
+ input-disable;
+ output-enable;
+ bias-disable;
+ power-source = <0>;
+ };
+};
+
+&pmk8550_rtc {
+ nvmem-cells = <&rtc_offset>;
+ nvmem-cell-names = "offset";
+};
+
+&pmk8550_sdam_2 {
+ rtc_offset: rtc-offset@bc {
+ reg = <0xbc 0x4>;
+ };
+};
+
+&qupv3_id_0 {
+ status = "okay";
+};
+
+&qupv3_id_1 {
+ status = "okay";
+};
+
+&remoteproc_adsp {
+ firmware-name = "qcom/sm8550/sheng/adsp.mbn",
+ "qcom/sm8550/sheng/adsp_dtb.mbn";
+ status = "okay";
+};
+
+&remoteproc_cdsp {
+ firmware-name = "qcom/sm8550/sheng/cdsp.mbn",
+ "qcom/sm8550/sheng/cdsp_dtb.mbn";
+ status = "okay";
+};
+
+&sleep_clk {
+ clock-frequency = <32764>;
+};
+
+&spi4 {
+ status = "okay";
+
+ touchscreen@0 {
+ compatible = "novatek,NVT-ts-spi";
+ reg = <0>;
+
+ spi-max-frequency = <19200000>;
+ novatek,irq-gpio = <&tlmm 25 0x2001>;
+
+ panel = <&display_panel>;
+
+ firmware-name = "novatek/novatek_nt36532_n81a_fw_csot.bin";
+ };
+};
+
+&swr1 {
+ status = "okay";
+
+ /* WCD9380 RX */
+ wcd_rx: codec@0,4 {
+ compatible = "sdw20217010d00";
+ reg = <0 4>;
+ qcom,rx-port-mapping = <1 2 3 4 5>;
+ };
+};
+
+&swr2 {
+ status = "okay";
+
+ /* WCD9380 TX */
+ wcd_tx: codec@0,3 {
+ compatible = "sdw20217010d00";
+ reg = <0 3>;
+ qcom,tx-port-mapping = <2 2 3 4>;
+ };
+};
+
+&tlmm {
+ gpio-reserved-ranges = <36 4>;
+
+ fpc_reset_low: fpc-reset-low-state {
+ pins = "gpio41";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ output-low;
+ };
+
+ fpc_reset_high: fpc-reset-high-state {
+ pins = "gpio41";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ output-high;
+ };
+
+ fpc_irq_active: fpc-irq-active-state {
+ pins = "gpio40";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ sde_dsi_active: sde-dsi-active-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ sde_dsi_suspend: sde-dsi-suspend-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ bt_default: bt-default-state {
+ bt-en-pins {
+ pins = "gpio81";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ sw-ctrl-pins {
+ pins = "gpio82";
+ function = "gpio";
+ bias-pull-down;
+ };
+ };
+
+ wlan_en: wlan-en-state {
+ pins = "gpio80";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+
+ qup_i2c8_data_clk: qup-i2c8-data-clk-state {
+ scl-pins {
+ pins = "gpio1";
+ function = "qup2_se0_l1_mirb";
+ drive-strength = <2>;
+ bias-pull-up = <2200>;
+ };
+
+ sda-pins {
+ pins = "gpio0";
+ function = "qup2_se0_l0_mirb";
+ drive-strength = <2>;
+ bias-pull-up = <2200>;
+ };
+ };
+
+ hall_sensor_default: hall-sensor-default-state {
+ pins = "gpio171", "gpio172";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ input-enable;
+ };
+
+ wcd_default: wcd-reset-n-active-state {
+ pins = "gpio108";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ output-low;
+ };
+
+ i2s1_default: i2s1-default-state {
+ sck-pins {
+ pins = "gpio121";
+ function = "i2s1_sck";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data0-pins {
+ pins = "gpio122";
+ function = "i2s1_data0";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ws-pins {
+ pins = "gpio123";
+ function = "i2s1_ws";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data1-pins {
+ pins = "gpio124";
+ function = "i2s1_data1";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+ };
+
+ cam_rear_reset_default: cam-rear-reset-default-state {
+ pins = "gpio118";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_depth_reset_default: cam-depth-reset-default-state {
+ pins = "gpio117";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_front_reset_default: cam-front-reset-default-state {
+ pins = "gpio120";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ ps5169_reset_default: ps5169-reset-default-state {
+ pins = "gpio7";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ qup_i2c9_data_clk: qup-i2c9-data-clk-state {
+ /* SDA, SCL */
+ pins = "gpio60", "gpio61";
+ function = "qup2_se1";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ nanosic_mcu_default: nanosic-mcu-default-state {
+ status-pins {
+ pins = "gpio56";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ sleep-pins {
+ pins = "gpio57";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ reset-pins {
+ pins = "gpio58";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+};
+
+&uart14 {
+ status = "okay";
+
+ bluetooth {
+ compatible = "qcom,wcn7850-bt";
+
+ local-bd-address = [ 24 00 00 00 5a ad ];
+
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+
+ max-speed = <3200000>;
+ };
+};
+
+&ufs_mem_hc {
+ reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>;
+ vcc-supply = <&vreg_l17b_2p5>;
+ vcc-max-microamp = <1300000>;
+ vccq-supply = <&vreg_l1g_1p2>;
+ vccq-max-microamp = <1200000>;
+ vdd-hba-supply = <&vreg_l3g_1p2>;
+
+ status = "okay";
+};
+
+&ufs_mem_phy {
+ vdda-phy-supply = <&vreg_l1d_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&usb_1 {
+ status = "okay";
+};
+
+&usb_1_dwc3_hs {
+ remote-endpoint = <&pmic_glink_hs_in>;
+};
+
+&usb_1_hsphy {
+ vdd-supply = <&vreg_l1e_0p88>;
+ vdda12-supply = <&vreg_l3e_1p2>;
+
+ phys = <&pm8550b_eusb2_repeater>;
+
+ status = "okay";
+};
+
+&usb_dp_qmpphy {
+ vdda-phy-supply = <&vreg_l3e_1p2>;
+ vdda-pll-supply = <&vreg_l3f_0p91>;
+
+ status = "okay";
+};
+
+&usb_dp_qmpphy_out {
+ remote-endpoint = <&redriver_ss_in>;
+};
+
+&xo_board {
+ clock-frequency = <76800000>;
+};
--
2.54.0.windows.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
2026-07-21 13:32 [PATCH] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng) code_0002
@ 2026-07-21 13:44 ` sashiko-bot
2026-07-21 14:20 ` Konrad Dybcio
2026-07-21 14:45 ` [PATCH v3] " code_0002
2 siblings, 0 replies; 11+ messages in thread
From: sashiko-bot @ 2026-07-21 13:44 UTC (permalink / raw)
To: code_0002; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 6 potential issue(s) to consider:
- [Medium] Usage of undocumented out-of-tree bindings and non-standard properties.
- [Medium] The second ktz8866 backlight driver will fail to probe due to a shared exclusive GPIO and is orphaned by the display panel.
- [Medium] Redefinition of rmtfs_mem for the modem subsystem despite the modem being disabled.
- [Low] Invalid magic number used in GPIO specifier flags for the touchscreen node.
- [Low] Invalid interrupt trigger type (IRQ_TYPE_NONE) used in the fingerprint node.
- [Low] The vreg_l8b_1p8 regulator is forced always-on for an undocumented device.
--
--- Patch [1]: [PATCH] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng) ---
commit d0e6714197ea1b708f0af6021943e85e81c2c897
Author: map220v <map220v300@gmail.com>
arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
Add device tree for Xiaomi Pad 6S Pro (sheng) based on SM8550.
> diff --git a/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
> new file mode 100644
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
[ ... ]
> + fingerprint_fpc {
> + compatible = "fpc,fpc1020";
> + interrupt-parent = <&tlmm>;
> + interrupts = <40 0>;
[Severity: Low]
Should this interrupt trigger type be explicitly defined as an edge or level
instead of 0 (IRQ_TYPE_NONE)? Hardware interrupt triggers generally need to
be explicitly defined to pass dtbs_check validation.
> + fpc,gpio_rst = <&tlmm 41 GPIO_ACTIVE_HIGH>;
> + fpc,gpio_irq = <&tlmm 40 GPIO_ACTIVE_HIGH>;
[Severity: Medium]
Are the fpc,fpc1020 compatible string, along with the fpc,gpio_rst and
fpc,gpio_irq properties, documented in the upstream bindings? Using
undocumented vendor bindings usually triggers dtbs_check validation errors.
[ ... ]
> + rmtfs_mem: rmtfs-region@ccd00000 {
> + compatible = "qcom,rmtfs-mem";
> + reg = <0x0 0xccd00000 0x0 0x280000>;
> + no-map;
> +
> + qcom,client-id = <1>;
> + qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
> + };
[Severity: Medium]
Since the modem subsystem nodes are explicitly deleted because the SM8550P
lacks a modem DSP, is it necessary to recreate the rmtfs_mem reservation
and assign it to the modem VMID?
Could this cause SCM assignment errors on hardware lacking the modem DSP,
or unnecessarily reserve 2.5MB of RAM?
[ ... ]
> + /* Xiaomi change for Semtech SX9371 */
> + vreg_l8b_1p8: ldo8 {
> + regulator-name = "vreg_l8b_1p8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
[Severity: Low]
Is it intentional to force this regulator always-on when there doesn't
appear to be a Semtech SX9371 consumer node defined in the device tree?
Could this circumvent runtime power management for this regulator?
[ ... ]
> +&i2c1 {
> + status = "okay";
> +
> + backlight: backlight@11 {
> + compatible = "kinetic,ktz8866a";
> + reg = <0x11>;
> + vin-supply = <&vph_pwr>;
> + enable-gpios = <&tlmm 128 GPIO_ACTIVE_HIGH>;
[ ... ]
> +&i2c9 {
> + status = "okay";
> +
> + nanosic_mcu@4c {
> + compatible = "nanosic,wn8030-sheng";
[Severity: Medium]
Is the nanosic,wn8030-sheng compatible string documented upstream?
[ ... ]
> +&i2c_hub_2 {
> + status = "okay";
> +
> + backlight@11 {
> + compatible = "kinetic,ktz8866b";
> + reg = <0x11>;
> + vin-supply = <&vph_pwr>;
> + enable-gpios = <&tlmm 128 GPIO_ACTIVE_HIGH>;
[Severity: Medium]
Will this second backlight driver fail to probe with -EBUSY since both
instances request the same exclusive GPIO from tlmm?
Also, since the display panel node only holds a phandle to the first
backlight, will this second instance remain orphaned and uncontrolled?
[ ... ]
> +&spi4 {
> + status = "okay";
> +
> + touchscreen@0 {
> + compatible = "novatek,NVT-ts-spi";
> + reg = <0>;
> +
> + spi-max-frequency = <19200000>;
> + novatek,irq-gpio = <&tlmm 25 0x2001>;
[Severity: Low]
Does the GPIO specifier flag 0x2001 contain an undocumented downstream bit?
Standard dt-bindings define GPIO_ACTIVE_LOW as 1, so 0x2000 might cause
validation warnings upstream.
[Severity: Medium]
Are the novatek,NVT-ts-spi compatible and novatek,irq-gpio property
documented upstream?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260721133204.902-1-code_0002@163.com?part=1
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
2026-07-21 13:32 [PATCH] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng) code_0002
2026-07-21 13:44 ` sashiko-bot
@ 2026-07-21 14:20 ` Konrad Dybcio
2026-07-21 14:45 ` [PATCH v3] " code_0002
2 siblings, 0 replies; 11+ messages in thread
From: Konrad Dybcio @ 2026-07-21 14:20 UTC (permalink / raw)
To: code_0002, andersson
Cc: konradybcio, robh, krzk+dt, conor+dt, linux-arm-msm, devicetree,
linux-kernel, map220v, code002-2
On 7/21/26 3:32 PM, code_0002@163.com wrote:
> From: map220v <map220v300@gmail.com>
>
> Add device tree for Xiaomi Pad 6S Pro (sheng) based on SM8550.
>
> Signed-off-by: code002-2 <hiez832670@gmail.com>
> ---
[...]
> +/*
> + * Free unused regions, these regions don't exist in downstream
> + * dts, and they aren't removed from DDR Memory Map by UEFI.
> + */
> +/delete-node/ &hyp_tags_reserved_mem;
> +/delete-node/ &cdsp_secure_heap_mem;
> +/delete-node/ &trust_ui_vm_mem;
> +/delete-node/ &trust_ui_vm_dump;
> +/delete-node/ &trust_ui_vm_qrtr;
> +/delete-node/ &trust_ui_vm_vblk0_ring;
> +/delete-node/ &trust_ui_vm_vblk1_ring;
> +/delete-node/ &trust_ui_vm_swiotlb;
> +/delete-node/ &oem_vm_vblk0_ring;
> +/delete-node/ &oem_vm_swiotlb;
> +/delete-node/ &oem_vm_mem;
> +/delete-node/ &hyp_ext_tags_mem;
> +/delete-node/ &hyp_ext_reserved_mem;
I think all of them can be removed from the SoC DTSI
> +/* Xiaomi uses alternative gpio's for i2c8 */
> +/delete-node/ &qup_i2c8_data_clk;
> +
> +/* Xiaomi change for Nanosic WN803x */
> +/delete-node/ &qup_i2c9_data_clk;
The change here seems to just be a difference in pull-up
> +
> +/* SM8550P doesn't have Modem DSP */
> +/delete-node/ &mpss_dsm_mem;
> +/delete-node/ &mpss_mem;
> +/delete-node/ &q6_mpss_dtb_mem;
> +/delete-node/ &remoteproc_mpss;
I'm not sure that's true. Have you tried booting it up?
> +/ {
> + model = "Xiaomi Pad 6S Pro 12.4";
> + compatible = "xiaomi,sheng", "qcom,sm8550";
> + chassis-type = "tablet";
> + qcom,msm-id = <536 0x20000>; /* SM8550P v2.0 */
Please define it in include/dt-bindings/arm/qcom,ids.h and use the define here
But you shouldn't need msm-id on non-ancient hardware
> + qcom,board-id = <0x10008 0>;
> +
> + aliases {
> + serial0 = &uart7;
> + serial1 = &uart14;
> + };
> +
> + chosen {
> + /* Required for libcamera to allocate buffers when udmabuf is used. */
> + bootargs = "udmabuf.size_limit_mb=256";
> + };
Is this actually necessary?
> +
> + fingerprint_fpc {
Node names must not contain underscores and should be generic.
fingerprint-reader {} sounds good
> + compatible = "fpc,fpc1020";
This compatible doesn't exist in the tree.
> + interrupt-parent = <&tlmm>;
> + interrupts = <40 0>;
interrupts-extended = <&tlmm 40 IRQ_TYPE_PLEASEFIX>;
[...]
> + pmic-glink {
> + compatible = "xiaomi,sm8550-pmic-glink", "qcom,sm8550-pmic-glink", "qcom,pmic-glink";
1 per line, please
[...]
> + secondary-i2s-dai-link {
> + link-name = "Secondary MI2S Playback";
> +
> + cpu {
> + sound-dai = <&q6apmbedai SECONDARY_MI2S_RX>;
> + };
> +
> + codec {
'co'dec < 'cp'u
> + sound-dai = <&cs35l43_tll>, <&cs35l43_tlh>, <&cs35l43_trl>,
> + <&cs35l43_bll>, <&cs35l43_blh>, <&cs35l43_brl>;
Please align (set your tab width to 8)
[...]
> + wcd938x: audio-codec {
Nodes without a unit address should be sorted by name
https://docs.kernel.org/devicetree/bindings/dts-coding-style.html
> + compatible = "qcom,wcd9380-codec";
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&wcd_default>;
property-n
property-names
in this order, file-wide please
[...]
> + /* Xiaomi change for Camera Modules */
I don't think these comments are valuable.
[...]
> +&cci0_i2c1 {
> + clock-frequency = <1000000>;
> +
> + camera@10 {
> + compatible = "samsung,s5kjn1";
> + reg = <0x10>;
> +
> + reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&cam2_default>, <&cam_rear_reset_default>;
> +
> + clocks = <&camcc CAM_CC_MCLK2_CLK>;
> +
> + orientation = <1>;
Please use a define from:
https://lore.kernel.org/linux-arm-msm/20260628-kbingham-orientation-v3-0-4ed92968aff8@ideasonboard.com/
> + rotation = <0>;
> +
> + lens-focus = <>9764>;
> +
> + vddio-supply = <&vreg_l4b_1p8>;
> + vddd-supply = <&vreg_l2m_1p08>;
> + vdda-supply = <&vreg_l4m_2p8>;
> +
> + port {
> + s5kjn1_ep: endpoint {
> + data-lanes = <0 1 2 3>;
> + link-frequencies = /bits/ 64 <857600000>;
> + remote-endpoint = <&csiphy3_ep>;
> + };
> + };
> + };
> +
> + gt9764: camera-lens@c {
> + compatible = "giantec,gt9764";
This compatible doesn't exist in the tree
[...]
> +&ipa {
> + qcom,gsi-loader = "self";
> + memory-region = <&ipa_fw_mem>;
Please rebase atop
https://lore.kernel.org/linux-arm-msm/20260517-ipa-loader-v1-0-3c3764c1b4a3@oss.qualcomm.com/
This is in -next already, so I'm worried you're not working on
linux-next/master.
> + firmware-name = "qcom/sm8550/sheng/ipa_fws.mbn";
> + status = "okay";
Please keep a \n above 'status', uniformly
[...]
> +&gpu_zap_shader {
> + firmware-name = "qcom/sm8550/sheng/a740_zap.mbn";
Paths should contain the name of the vendor
> +};
> +
> +&i2c0 {
> + clock-frequency = <400000>;
> + status = "okay";
> +
> + typec-retimer@28 {
> + compatible = "parade,ps5169";
This compatible doesn't exist in the tree.
[...]
> + backlight: backlight@11 {
> + compatible = "kinetic,ktz8866a";
This compatible doesn't exist in the tree.
> + reg = <0x11>;
> + vin-supply = <&vph_pwr>;
> + enable-gpios = <&tlmm 128 GPIO_ACTIVE_HIGH>;
> + current-num-sinks = <5>;
> + kinetic,current-ramp-delay-ms = <256>;
> + kinetic,led-enable-ramp-delay-ms = <8>;
> + kinetic,enable-lcd-bias;
> + };
> +};
> +
> +&i2c5 {
> + clock-frequency = <1000000>;
> + status = "okay";
> +
> + cs35l43_trl: cs35l43@40 {
> + compatible = "cirrus,cs35l43";
This compatible doesn't exist in the tree.
[...]
> +&i2c9 {
> + status = "okay";
> +
> + nanosic_mcu@4c {
> + compatible = "nanosic,wn8030-sheng";
This compatible doesn't exist in the tree.
[...]
> + backlight@11 {
> + compatible = "kinetic,ktz8866b";
This compatible doesn't exist in the tree.
[...]
> + display_panel: panel@0 {
> + compatible = "xiaomi,sheng-nt36532e", "novatek,nt36532e";
This compatible doesn't exist in the tree.
[...]
> +&spi4 {
> + status = "okay";
> +
> + touchscreen@0 {
> + compatible = "novatek,NVT-ts-spi";
This compatible definitely doesn't exist in the tree.
[...]
> + wcd_default: wcd-reset-n-active-state {
> + pins = "gpio108";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + output-low;
Remove output- properties from TLMM pins. The consumer drivers will
call the appropriate GPIOD APIs
Konrad
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
2026-07-21 13:32 [PATCH] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng) code_0002
2026-07-21 13:44 ` sashiko-bot
2026-07-21 14:20 ` Konrad Dybcio
@ 2026-07-21 14:45 ` code_0002
2026-07-21 14:58 ` [PATCH v4] " code_0002
2026-07-21 15:01 ` [PATCH v3] " sashiko-bot
2 siblings, 2 replies; 11+ messages in thread
From: code_0002 @ 2026-07-21 14:45 UTC (permalink / raw)
To: konrad.dybcio, andersson
Cc: linux-arm-msm, devicetree, linux-kernel, code_0002, map220v,
code002-2
From: map220v <map220v300@gmail.com>
Add device tree for Xiaomi Pad 6S Pro (sheng) based on SM8550.
Signed-off-by: code002-2 <hiez832670@gmail.com>
---
v3: address review comments from Konrad Dybcio
- SM8550P has no modem; confirmed on device (dmesg shows no mpss)
- Rename fingerprint_fpc -> fingerprint-reader, use interrupts-extended
- pmic-glink compatibles: one per line
- Sort DAI link subnodes alphabetically (codec before cpu)
- Reorder root-level nodes by name
- Place pinctrl-n properties before pinctrl-names
- Remove msm-id, board-id, Xiaomi-specific comments
- Remove output-low/output-high from TLMM pinctrl
- Remove udmabuf bootargs (confirmed not in use on device)
- Add "xiaomi-" prefix to firmware paths
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../boot/dts/qcom/sm8550-xiaomi-sheng.dts | 1763 +++++++++++++++++
2 files changed, 1764 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 6f33c4e2f..d8e485521 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -386,6 +386,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8550-mtp.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-qrd.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-samsung-q5q.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-sony-xperia-yodo-pdx234.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sm8550-xiaomi-sheng.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8650-ayaneo-pocket-s2.dtb
sm8650-hdk-display-card-dtbs := sm8650-hdk.dtb sm8650-hdk-display-card.dtbo
diff --git a/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
new file mode 100644
index 000000000..4ca113842
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
@@ -0,0 +1,1763 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2024, map220v <map220v300@gmail.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/arm/qcom,ids.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include "sm8550.dtsi"
+#include "pm8010.dtsi"
+#include "pm8550.dtsi"
+#include "pm8550b.dtsi"
+#define PMK8550VE_SID 5
+#include "pm8550ve.dtsi"
+#include "pm8550vs.dtsi"
+#include "pmk8550.dtsi"
+
+/delete-node/ &rmtfs_mem;
+/delete-node/ &adspslpi_mem;
+/delete-node/ &xbl_dt_log_merged_mem;
+/delete-node/ &hwfence_shbuf;
+
+/* Free unused regions */
+/delete-node/ &hyp_tags_reserved_mem;
+/delete-node/ &cdsp_secure_heap_mem;
+/delete-node/ &trust_ui_vm_mem;
+/delete-node/ &trust_ui_vm_dump;
+/delete-node/ &trust_ui_vm_qrtr;
+/delete-node/ &trust_ui_vm_vblk0_ring;
+/delete-node/ &trust_ui_vm_vblk1_ring;
+/delete-node/ &trust_ui_vm_swiotlb;
+/delete-node/ &oem_vm_vblk0_ring;
+/delete-node/ &oem_vm_swiotlb;
+/delete-node/ &oem_vm_mem;
+/delete-node/ &hyp_ext_tags_mem;
+/delete-node/ &hyp_ext_reserved_mem;
+
+/delete-node/ &qup_i2c8_data_clk;
+
+/delete-node/ &qup_i2c9_data_clk;
+
+/delete-node/ &mpss_dsm_mem;
+/delete-node/ &mpss_mem;
+/delete-node/ &q6_mpss_dtb_mem;
+/delete-node/ &remoteproc_mpss;
+
+/ {
+ model = "Xiaomi Pad 6S Pro 12.4";
+ compatible = "xiaomi,sheng", "qcom,sm8550";
+ chassis-type = "tablet";
+ aliases {
+ serial0 = &uart7;
+ serial1 = &uart14;
+ };
+
+ chosen {
+ };
+
+ wcd938x: audio-codec {
+ compatible = "qcom,wcd9380-codec";
+
+ pinctrl-0 = <&wcd_default>;
+ pinctrl-names = "default";
+
+ qcom,micbias1-microvolt = <2750000>;
+ qcom,micbias2-microvolt = <2750000>;
+ qcom,micbias3-microvolt = <2750000>;
+ qcom,micbias4-microvolt = <2750000>;
+ qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+ qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+ qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+ qcom,rx-device = <&wcd_rx>;
+ qcom,tx-device = <&wcd_tx>;
+
+ reset-gpios = <&tlmm 108 GPIO_ACTIVE_LOW>;
+
+ vdd-buck-supply = <&vreg_l15b_1p8>;
+ vdd-rxtx-supply = <&vreg_l15b_1p8>;
+ vdd-io-supply = <&vreg_l15b_1p8>;
+ vdd-mic-bias-supply = <&vreg_bob1>;
+
+ #sound-dai-cells = <1>;
+ };
+
+ bl_vddneg_5p8: bl-vddneg-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "bl_vddneg_5p8";
+ regulator-min-microvolt = <5800000>;
+ regulator-max-microvolt = <5800000>;
+ regulator-enable-ramp-delay = <233>;
+ gpio = <&tlmm 31 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ bl_vddpos_5p8: bl-vddpos-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "bl_vddpos_5p8";
+ regulator-min-microvolt = <5800000>;
+ regulator-max-microvolt = <5800000>;
+ regulator-enable-ramp-delay = <233>;
+ gpio = <&tlmm 30 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ fingerprint-reader {
+ compatible = "fpc,fpc1020";
+ interrupts-extended = <&tlmm 40 IRQ_TYPE_EDGE_RISING>;
+ fpc,gpio_rst = <&tlmm 41 GPIO_ACTIVE_HIGH>;
+ fpc,gpio_irq = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+ irq-gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+ fp_vdd_vreg-supply = <&vreg_l9b_3p3>;
+
+ pinctrl-0 = <&fpc_reset_low>;
+ pinctrl-1 = <&fpc_reset_high>;
+ pinctrl-2 = <&fpc_irq_active>;
+ pinctrl-names = "fpc1020_reset_reset",
+ "fpc1020_reset_active",
+ "fpc1020_irq_active";
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&volume_up_n>, <&hall_sensor_default>;
+ pinctrl-names = "default";
+
+ key-volume-up {
+ label = "Volume Up";
+ linux,code = <KEY_VOLUMEUP>;
+ gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+
+ event-hall-sensor {
+ label = "Hall Effect Sensor";
+ gpios = <&tlmm 171 GPIO_ACTIVE_LOW>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_LID>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+
+ event-tablet-mode {
+ label = "Tablet Mode Switch";
+ gpios = <&tlmm 172 GPIO_ACTIVE_LOW>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_TABLET_MODE>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+ };
+
+ pmic-glink {
+ compatible = "xiaomi,sm8550-pmic-glink",
+ "qcom,sm8550-pmic-glink",
+ "qcom,pmic-glink";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ orientation-gpios = <&tlmm 11 GPIO_ACTIVE_HIGH>;
+
+ connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ power-role = "dual";
+ data-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ pmic_glink_hs_in: endpoint {
+ remote-endpoint = <&usb_1_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ pmic_glink_ss_in: endpoint {
+ remote-endpoint = <&redriver_ss_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_sbu: endpoint {
+ remote-endpoint = <&fsa4480_sbu_mux>;
+ };
+ };
+ };
+ };
+ };
+
+ reserved-memory {
+ xbl_ramdump_mem: xbl-ramdump-region@81200000 {
+ reg = <0 0x81200000 0 0x280000>;
+ no-map;
+ };
+
+ xbl_dt_log_mem: xbl-dt-log-region@81a00000 {
+ reg = <0 0x81a00000 0 0x40000>;
+ no-map;
+ };
+
+ aop_image_mem: aop-image-region@81c00000 {
+ reg = <0 0x81c00000 0 0x60000>;
+ no-map;
+ };
+
+ adspslpi_mem: adspslpi-region@9ea00000 {
+ reg = <0 0x9ea00000 0 0x4680000>;
+ no-map;
+ };
+
+ rmtfs_mem: rmtfs-region@ccd00000 {
+ compatible = "qcom,rmtfs-mem";
+ reg = <0x0 0xccd00000 0x0 0x280000>;
+ no-map;
+
+ qcom,client-id = <1>;
+ };
+
+ hwfence_shbuf: hwfence-shbuf-region@e6440000 {
+ reg = <0 0xe6440000 0 0x2dd000>;
+ no-map;
+ };
+
+ llcc_lpi_mem: llcc-lpi-region@ff800000 {
+ reg = <0 0xff800000 0 0x600000>;
+ no-map;
+ };
+
+ /* Required for libcamera to allocate buffers when cma is used. */
+ linux,cma {
+ compatible = "shared-dma-pool";
+ size = <0x0 0x30000000>;
+ reusable;
+ linux,cma-default;
+ };
+ };
+
+ sound {
+ compatible = "qcom,sm8550-sndcard", "qcom,sm8450-sndcard";
+ pinctrl-0 = <&i2s1_default>;
+ pinctrl-names = "default";
+
+ model = "Xiaomi-Pad6SPro";
+ audio-routing = "IN1_HPHL", "HPHL_OUT",
+ "IN2_HPHR", "HPHR_OUT",
+ "AMIC1", "MIC BIAS1",
+ "AMIC2", "MIC BIAS2",
+ "AMIC3", "MIC BIAS3",
+ "AMIC4", "MIC BIAS3",
+ "AMIC5", "MIC BIAS4",
+ "TX SWR_INPUT0", "ADC1_OUTPUT",
+ "TX SWR_INPUT1", "ADC2_OUTPUT",
+ "TX SWR_INPUT0", "ADC3_OUTPUT",
+ "TX SWR_INPUT1", "ADC4_OUTPUT";
+
+ secondary-i2s-dai-link {
+ link-name = "Secondary MI2S Playback";
+
+ codec {
+ sound-dai = <&cs35l43_tll>, <&cs35l43_tlh>, <&cs35l43_trl>,
+ <&cs35l43_bll>, <&cs35l43_blh>, <&cs35l43_brl>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai SECONDARY_MI2S_RX>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wcd-playback-dai-link {
+ link-name = "WCD Playback";
+
+ codec {
+ sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wcd-capture-dai-link {
+ link-name = "WCD Capture";
+
+ codec {
+ sound-dai = <&wcd938x 1>, <&swr2 0>, <&lpass_txmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ displayport-dai-link {
+ link-name = "DisplayPort Playback";
+
+ codec {
+ sound-dai = <&mdss_dp0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai DISPLAY_PORT_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+ };
+
+ 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;
+ };
+
+ wcn7850-pmu {
+ compatible = "qcom,wcn7850-pmu";
+
+ pinctrl-0 = <&wlan_en>, <&bt_default>, <&pmk8550_sleep_clk>;
+ pinctrl-names = "default";
+
+ wlan-enable-gpios = <&tlmm 80 GPIO_ACTIVE_HIGH>;
+ bt-enable-gpios = <&tlmm 81 GPIO_ACTIVE_HIGH>;
+
+ vdd-supply = <&vreg_s5g_0p8>;
+ vddio-supply = <&vreg_l15b_1p8>;
+ vddaon-supply = <&vreg_s2g_0p8>;
+ vdddig-supply = <&vreg_s4e_0p9>;
+ vddrfa1p2-supply = <&vreg_s4g_1p3>;
+ vddrfa1p8-supply = <&vreg_s6g_1p8>;
+
+ regulators {
+ vreg_pmu_rfa_cmn: ldo0 {
+ regulator-name = "vreg_pmu_rfa_cmn";
+ };
+
+ vreg_pmu_aon_0p59: ldo1 {
+ regulator-name = "vreg_pmu_aon_0p59";
+ };
+
+ vreg_pmu_wlcx_0p8: ldo2 {
+ regulator-name = "vreg_pmu_wlcx_0p8";
+ };
+
+ vreg_pmu_wlmx_0p85: ldo3 {
+ regulator-name = "vreg_pmu_wlmx_0p85";
+ };
+
+ vreg_pmu_btcmx_0p85: ldo4 {
+ regulator-name = "vreg_pmu_btcmx_0p85";
+ };
+
+ vreg_pmu_rfa_0p8: ldo5 {
+ regulator-name = "vreg_pmu_rfa_0p8";
+ };
+
+ vreg_pmu_rfa_1p2: ldo6 {
+ regulator-name = "vreg_pmu_rfa_1p2";
+ };
+
+ vreg_pmu_rfa_1p8: ldo7 {
+ regulator-name = "vreg_pmu_rfa_1p8";
+ };
+
+ vreg_pmu_pcie_0p9: ldo8 {
+ regulator-name = "vreg_pmu_pcie_0p9";
+ };
+
+ vreg_pmu_pcie_1p8: ldo9 {
+ regulator-name = "vreg_pmu_pcie_1p8";
+ };
+ };
+ };
+};
+
+&apps_rsc {
+ regulators-0 {
+ compatible = "qcom,pm8550-rpmh-regulators";
+ qcom,pmic-id = "b";
+
+ vdd-bob1-supply = <&vph_pwr>;
+ vdd-bob2-supply = <&vph_pwr>;
+ vdd-l1-l4-l10-supply = <&vreg_s6g_1p8>;
+ vdd-l2-l13-l14-supply = <&vreg_bob1>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ vdd-l5-l16-supply = <&vreg_bob1>;
+ vdd-l6-l7-supply = <&vreg_bob1>;
+ vdd-l8-l9-supply = <&vreg_bob1>;
+ vdd-l11-supply = <&vreg_s4g_1p3>;
+ vdd-l12-supply = <&vreg_s6g_1p8>;
+ vdd-l15-supply = <&vreg_s6g_1p8>;
+ vdd-l17-supply = <&vreg_bob2>;
+
+ vreg_bob1: bob1 {
+ regulator-name = "vreg_bob1";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3960000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_bob2: bob2 {
+ regulator-name = "vreg_bob2";
+ regulator-min-microvolt = <2704000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1b_1p8: ldo1 {
+ regulator-name = "vreg_l1b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2b_3p0: ldo2 {
+ regulator-name = "vreg_l2b_3p0";
+ regulator-min-microvolt = <3008000>;
+ regulator-max-microvolt = <3008000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4b_1p8: ldo4 {
+ regulator-name = "vreg_l4b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5b_3p1: ldo5 {
+ regulator-name = "vreg_l5b_3p1";
+ regulator-min-microvolt = <3104000>;
+ regulator-max-microvolt = <3104000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6b_1p8: ldo6 {
+ regulator-name = "vreg_l6b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7b_1p8: ldo7 {
+ regulator-name = "vreg_l7b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l8b_1p8: ldo8 {
+ regulator-name = "vreg_l8b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l9b_3p3: ldo9 {
+ regulator-name = "vreg_l9b_3p3";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l10b_1p8: ldo10 {
+ regulator-name = "vreg_l10b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l11b_1p2: ldo11 {
+ regulator-name = "vreg_l11b_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1504000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l12b_1p8: ldo12 {
+ regulator-name = "vreg_l12b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l13b_3p3: ldo13 {
+ regulator-name = "vreg_l13b_3p3";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l14b_3p2: ldo14 {
+ regulator-name = "vreg_l14b_3p2";
+ regulator-min-microvolt = <3200000>;
+ regulator-max-microvolt = <3200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l15b_1p8: ldo15 {
+ regulator-name = "vreg_l15b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l16b_2p8: ldo16 {
+ regulator-name = "vreg_l16b_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l17b_2p5: ldo17 {
+ regulator-name = "vreg_l17b_2p5";
+ regulator-min-microvolt = <2504000>;
+ regulator-max-microvolt = <2504000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-1 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "c";
+
+ vdd-l3-supply = <&vreg_s4e_0p9>;
+
+ vreg_l3c_0p91: ldo3 {
+ regulator-name = "vreg_l3c_0p9";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-2 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "d";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+
+ vreg_l1d_0p88: ldo1 {
+ regulator-name = "vreg_l1d_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-3 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "e";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+ vdd-l2-supply = <&vreg_s4e_0p9>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ vdd-s4-supply = <&vph_pwr>;
+ vdd-s5-supply = <&vph_pwr>;
+
+ vreg_s4e_0p9: smps4 {
+ regulator-name = "vreg_s4e_0p9";
+ regulator-min-microvolt = <904000>;
+ regulator-max-microvolt = <984000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s5e_1p1: smps5 {
+ regulator-name = "vreg_s5e_1p1";
+ regulator-min-microvolt = <1080000>;
+ regulator-max-microvolt = <1120000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1e_0p88: ldo1 {
+ regulator-name = "vreg_l1e_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <880000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2e_0p9: ldo2 {
+ regulator-name = "vreg_l2e_0p9";
+ regulator-min-microvolt = <904000>;
+ regulator-max-microvolt = <970000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3e_1p2: ldo3 {
+ regulator-name = "vreg_l3e_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-4 {
+ compatible = "qcom,pm8550ve-rpmh-regulators";
+ qcom,pmic-id = "f";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+ vdd-l2-supply = <&vreg_s4e_0p9>;
+ vdd-l3-supply = <&vreg_s4e_0p9>;
+ vdd-s4-supply = <&vph_pwr>;
+
+ vreg_s4f_0p5: smps4 {
+ regulator-name = "vreg_s4f_0p5";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <700000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1f_0p9: ldo1 {
+ regulator-name = "vreg_l1f_0p9";
+ regulator-min-microvolt = <912000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2f_0p88: ldo2 {
+ regulator-name = "vreg_l2f_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3f_0p91: ldo3 {
+ regulator-name = "vreg_l3f_0p91";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-5 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "g";
+
+ vdd-l1-supply = <&vreg_s4g_1p3>;
+ vdd-l2-supply = <&vreg_s4g_1p3>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ 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>;
+
+ vreg_s1g_1p2: smps1 {
+ regulator-name = "vreg_s1g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s2g_0p8: smps2 {
+ regulator-name = "vreg_s2g_0p8";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s3g_0p7: smps3 {
+ regulator-name = "vreg_s3g_0p7";
+ regulator-min-microvolt = <600000>;
+ regulator-max-microvolt = <1900000>; //2004000
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s4g_1p3: smps4 {
+ regulator-name = "vreg_s4g_1p3";
+ regulator-min-microvolt = <1256000>;
+ regulator-max-microvolt = <1408000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s5g_0p8: smps5 {
+ regulator-name = "vreg_s5g_0p8";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1004000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s6g_1p8: smps6 {
+ regulator-name = "vreg_s6g_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1g_1p2: ldo1 {
+ regulator-name = "vreg_l1g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2g_1p2: ldo2 {
+ regulator-name = "vreg_l2g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3g_1p2: ldo3 {
+ regulator-name = "vreg_l3g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-6 {
+ compatible = "qcom,pm8010-rpmh-regulators";
+ qcom,pmic-id = "m";
+
+ vdd-l1-l2-supply = <&vreg_s4g_1p3>;
+ vdd-l3-l4-supply = <&vreg_bob2>;
+ vdd-l5-supply = <&vreg_s6g_1p8>;
+ vdd-l6-supply = <&vreg_bob2>;
+ vdd-l7-supply = <&vreg_bob2>;
+
+ vreg_l1m_1p2: ldo1 {
+ regulator-name = "vreg_l1m_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2m_1p08: ldo2 {
+ regulator-name = "vreg_l2m_1p08";
+ regulator-min-microvolt = <1080000>;
+ regulator-max-microvolt = <1080000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3m_2p8: ldo3 {
+ regulator-name = "vreg_l3m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4m_2p8: ldo4 {
+ regulator-name = "vreg_l4m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5m_1p8: ldo5 {
+ regulator-name = "vreg_l5m_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6m_2p8: ldo6 {
+ regulator-name = "vreg_l6m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7m_2p85: ldo7 {
+ regulator-name = "vreg_l7m_2p85";
+ regulator-min-microvolt = <2856000>;
+ regulator-max-microvolt = <2856000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+};
+
+&camss {
+ vdda-phy-supply = <&vreg_l1e_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+
+ csiphy1_ep: endpoint {
+ data-lanes = <0>;
+ remote-endpoint = <&ov02b1b_ep>;
+ };
+ };
+
+ port@3 {
+ reg = <3>;
+
+ csiphy3_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&s5kjn1_ep>;
+ };
+ };
+
+ port@4 {
+ reg = <4>;
+
+ csiphy4_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&ov32d40_ep>;
+ };
+ };
+ };
+};
+
+&cci0 {
+ status = "okay";
+};
+
+&cci0_i2c1 {
+ clock-frequency = <1000000>;
+
+ camera@10 {
+ compatible = "samsung,s5kjn1";
+ reg = <0x10>;
+
+ reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam2_default>, <&cam_rear_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+
+ orientation = <1>;
+ rotation = <0>;
+
+ lens-focus = <>9764>;
+
+ vddio-supply = <&vreg_l4b_1p8>;
+ vddd-supply = <&vreg_l2m_1p08>;
+ vdda-supply = <&vreg_l4m_2p8>;
+
+ port {
+ s5kjn1_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <857600000>;
+ remote-endpoint = <&csiphy3_ep>;
+ };
+ };
+ };
+
+ gt9764: camera-lens@c {
+ compatible = "giantec,gt9764";
+ reg = <0x0c>;
+
+ vin-supply = <&vreg_l4b_1p8>;
+ vdd-supply = <&vreg_l7m_2p85>;
+ dongwoon,clock-presc = <0>;
+ dongwoon,aac-timing = <0x6a>;
+ dongwoon,initial-focus = <0x200>;
+ dongwoon,move-delay-us = <7000>;
+ };
+};
+
+&cci1 {
+ status = "okay";
+};
+
+&cci1_i2c0 {
+ clock-frequency = <400000>;
+
+ camera@3c {
+ compatible = "ovti,ov02b1b";
+ reg = <0x3c>;
+
+ reset-gpios = <&tlmm 117 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam1_default>, <&cam_depth_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+
+ orientation = <1>;
+ rotation = <0>;
+
+ vddio-supply = <&vreg_l10b_1p8>;
+ avdd-supply = <&vreg_l6m_2p8>;
+
+ port {
+ ov02b1b_ep: endpoint {
+ data-lanes = <0>;
+ link-frequencies = /bits/ 64 <332800000>;
+ remote-endpoint = <&csiphy1_ep>;
+ };
+ };
+ };
+};
+
+&cci1_i2c1 {
+ clock-frequency = <1000000>;
+
+ camera@10 {
+ compatible = "ovti,ov32d40";
+ reg = <0x10>;
+
+ reset-gpios = <&tlmm 120 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam4_default>, <&cam_front_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK4_CLK>;
+
+ orientation = <0>;
+ rotation = <0>;
+
+ vddio-supply = <&vreg_l5m_1p8>;
+ dvdd-supply = <&vreg_l1m_1p2>;
+ avdd-supply = <&vreg_l3m_2p8>;
+
+ port {
+ ov32d40_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <842400000>;
+ remote-endpoint = <&csiphy4_ep>;
+ };
+ };
+ };
+};
+
+&ipa {
+ qcom,gsi-loader = "self";
+ memory-region = <&ipa_fw_mem>;
+ firmware-name = "qcom/sm8550/xiaomi-sheng/ipa_fws.mbn";
+ status = "okay";
+};
+
+&gpi_dma1 {
+ status = "okay";
+};
+
+&gpi_dma2 {
+ status = "okay";
+};
+
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/a740_zap.mbn";
+};
+
+&i2c0 {
+ clock-frequency = <400000>;
+ status = "okay";
+
+ typec-retimer@28 {
+ compatible = "parade,ps5169";
+ reg = <0x28>;
+
+ pinctrl-0 = <&ps5169_reset_default>;
+ pinctrl-names = "default";
+
+ reset-gpios = <&tlmm 7 GPIO_ACTIVE_LOW>;
+
+ orientation-switch;
+ retimer-switch;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ redriver_ss_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ redriver_ss_in: endpoint {
+ data-lanes = <3 2 1 0>;
+ remote-endpoint = <&usb_dp_qmpphy_out>;
+ };
+ };
+ };
+ };
+};
+
+&i2c1 {
+ status = "okay";
+
+ backlight: backlight@11 {
+ compatible = "kinetic,ktz8866a";
+ reg = <0x11>;
+ vin-supply = <&vph_pwr>;
+ enable-gpios = <&tlmm 128 GPIO_ACTIVE_HIGH>;
+ current-num-sinks = <5>;
+ kinetic,current-ramp-delay-ms = <256>;
+ kinetic,led-enable-ramp-delay-ms = <8>;
+ kinetic,enable-lcd-bias;
+ };
+};
+
+&i2c5 {
+ clock-frequency = <1000000>;
+ status = "okay";
+
+ cs35l43_trl: cs35l43@40 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x40>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TRL";
+ cirrus,dsp-part-name = "trl-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_tlh: cs35l43@41 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x41>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <99 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TLH";
+ cirrus,dsp-part-name = "tlh-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_tll: cs35l43@42 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x42>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TLL";
+ cirrus,dsp-part-name = "tll-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+};
+
+&i2c8 {
+ clock-frequency = <1000000>;
+ status = "okay";
+
+ cs35l43_blh: cs35l43@40 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x40>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BLH";
+ cirrus,dsp-part-name = "blh-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_bll: cs35l43@41 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x41>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BLL";
+ cirrus,dsp-part-name = "bll-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_brl: cs35l43@42 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x42>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <85 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BRL";
+ cirrus,dsp-part-name = "brl-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+};
+
+&i2c9 {
+ status = "okay";
+
+ nanosic_mcu@4c {
+ compatible = "nanosic,wn8030-sheng";
+ reg = <0x4c>;
+
+ pinctrl-0 = <&nanosic_mcu_default>;
+ pinctrl-names = "default";
+
+ interrupt-parent = <&tlmm>;
+ interrupts = <62 IRQ_TYPE_EDGE_RISING>;
+
+ reset-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
+ sleep-gpios = <&tlmm 57 GPIO_ACTIVE_LOW>;
+ status-gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>;
+
+ vddio-supply = <&vreg_l12b_1p8>;
+ dvdd-supply = <&vreg_l13b_3p3>;
+ };
+};
+
+&i2c_master_hub_0 {
+ status = "okay";
+};
+
+&i2c_hub_2 {
+ status = "okay";
+
+ typec-mux@42 {
+ compatible = "fcs,fsa4480";
+ reg = <0x42>;
+
+ vcc-supply = <&vreg_bob1>;
+
+ mode-switch;
+ orientation-switch;
+
+ port {
+ fsa4480_sbu_mux: endpoint {
+ remote-endpoint = <&pmic_glink_sbu>;
+ };
+ };
+ };
+};
+
+&iris {
+ status = "okay";
+
+ firmware-name = "qcom/sm8550/xiaomi-sheng/vpu30_4v.mbn";
+};
+
+&mdss {
+ status = "okay";
+};
+
+&mdss_dsi0 {
+ vdda-supply = <&vreg_l3e_1p2>;
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+ qcom,master-dsi;
+ status = "okay";
+
+ display_panel: panel@0 {
+ compatible = "xiaomi,sheng-nt36532e", "novatek,nt36532e";
+ reg = <0>;
+
+ pinctrl-0 = <&sde_dsi_active>;
+ pinctrl-1 = <&sde_dsi_suspend>;
+ pinctrl-names = "default", "sleep";
+
+ vddio-supply = <&vreg_s3g_0p7>;
+ avdd-supply = <&bl_vddpos_5p8>;
+ avee-supply = <&bl_vddneg_5p8>;
+
+ reset-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
+ backlight = <&backlight>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ panel_in_0: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ panel_in_1: endpoint {
+ remote-endpoint = <&mdss_dsi1_out>;
+ };
+ };
+ };
+ };
+};
+
+&mdss_dsi0_out {
+ remote-endpoint = <&panel_in_0>;
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi0_phy {
+ vdds-supply = <&vreg_l1e_0p88>;
+ status = "okay";
+};
+
+&mdss_dsi1 {
+ vdda-supply = <&vreg_l3e_1p2>;
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+ /* DSI1 is slave, so use DSI0 clocks */
+ assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+ status = "okay";
+};
+
+&mdss_dsi1_out {
+ remote-endpoint = <&panel_in_1>;
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi1_phy {
+ vdds-supply = <&vreg_l1e_0p88>;
+ status = "okay";
+};
+
+&mdss_dp0 {
+ status = "okay";
+};
+
+&mdss_dp0_out {
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&pcie0 {
+ wake-gpios = <&tlmm 96 GPIO_ACTIVE_HIGH>;
+ perst-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&pcie0_default_state>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
+&pcieport0 {
+ wifi@0 {
+ compatible = "pci17cb,1107";
+ reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+ vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+ vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+ };
+};
+
+&pcie0_phy {
+ vdda-phy-supply = <&vreg_l1e_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&pm8010_n {
+ status = "disabled";
+};
+
+&pm8550_flash {
+ status = "okay";
+
+ led-0 {
+ function = LED_FUNCTION_FLASH;
+ color = <LED_COLOR_ID_WHITE>;
+ led-sources = <1>;
+ led-max-microamp = <400000>;
+ flash-max-microamp = <400000>;
+ flash-max-timeout-us = <300000>;
+ function-enumerator = <0>;
+ };
+};
+
+&pm8550_gpios {
+ volume_up_n: volume-up-n-state {
+ pins = "gpio6";
+ function = "normal";
+ power-source = <1>;
+ bias-pull-up;
+ input-enable;
+ };
+};
+
+&pm8550_pwm {
+ status = "okay";
+
+ multi-led {
+ color = <LED_COLOR_ID_RGB>;
+ function = LED_FUNCTION_STATUS;
+ max-brightness = <255>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led@1 {
+ reg = <1>;
+ color = <LED_COLOR_ID_RED>;
+ };
+
+ led@2 {
+ reg = <2>;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+
+ led@3 {
+ reg = <3>;
+ color = <LED_COLOR_ID_BLUE>;
+ };
+ };
+};
+
+&pm8550b_eusb2_repeater {
+ vdd18-supply = <&vreg_l15b_1p8>;
+ vdd3-supply = <&vreg_l5b_3p1>;
+};
+
+&pm8550vs_c {
+ status = "okay";
+};
+
+&pm8550vs_d {
+ status = "okay";
+};
+
+&pm8550vs_e {
+ status = "okay";
+};
+
+&pm8550vs_g {
+ status = "okay";
+};
+
+&pon_pwrkey {
+ status = "okay";
+};
+
+&pon_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+
+ status = "okay";
+};
+
+&pmk8550_gpios {
+ pmk8550_sleep_clk: sleep-clk-state {
+ pins = "gpio3";
+ function = "func1";
+ input-disable;
+ output-enable;
+ bias-disable;
+ power-source = <0>;
+ };
+};
+
+&pmk8550_rtc {
+ nvmem-cells = <&rtc_offset>;
+ nvmem-cell-names = "offset";
+};
+
+&pmk8550_sdam_2 {
+ rtc_offset: rtc-offset@bc {
+ reg = <0xbc 0x4>;
+ };
+};
+
+&qupv3_id_0 {
+ status = "okay";
+};
+
+&qupv3_id_1 {
+ status = "okay";
+};
+
+&remoteproc_adsp {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/adsp.mbn",
+ "qcom/sm8550/xiaomi-sheng/adsp_dtb.mbn";
+ status = "okay";
+};
+
+&remoteproc_cdsp {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/cdsp.mbn",
+ "qcom/sm8550/xiaomi-sheng/cdsp_dtb.mbn";
+ status = "okay";
+};
+
+&sleep_clk {
+ clock-frequency = <32764>;
+};
+
+&spi4 {
+ status = "okay";
+
+ touchscreen@0 {
+ compatible = "novatek,NVT-ts-spi";
+ reg = <0>;
+
+ spi-max-frequency = <19200000>;
+ novatek,irq-gpio = <&tlmm 25 GPIO_ACTIVE_LOW>;
+
+ panel = <&display_panel>;
+
+ firmware-name = "novatek/novatek_nt36532_n81a_fw_csot.bin";
+ };
+};
+
+&swr1 {
+ status = "okay";
+
+ /* WCD9380 RX */
+ wcd_rx: codec@0,4 {
+ compatible = "sdw20217010d00";
+ reg = <0 4>;
+ qcom,rx-port-mapping = <1 2 3 4 5>;
+ };
+};
+
+&swr2 {
+ status = "okay";
+
+ /* WCD9380 TX */
+ wcd_tx: codec@0,3 {
+ compatible = "sdw20217010d00";
+ reg = <0 3>;
+ qcom,tx-port-mapping = <2 2 3 4>;
+ };
+};
+
+&tlmm {
+ gpio-reserved-ranges = <36 4>;
+
+ fpc_reset_low: fpc-reset-low-state {
+ pins = "gpio41";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ fpc_reset_high: fpc-reset-high-state {
+ pins = "gpio41";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ fpc_irq_active: fpc-irq-active-state {
+ pins = "gpio40";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ sde_dsi_active: sde-dsi-active-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ sde_dsi_suspend: sde-dsi-suspend-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ bt_default: bt-default-state {
+ bt-en-pins {
+ pins = "gpio81";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ sw-ctrl-pins {
+ pins = "gpio82";
+ function = "gpio";
+ bias-pull-down;
+ };
+ };
+
+ wlan_en: wlan-en-state {
+ pins = "gpio80";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+
+ qup_i2c8_data_clk: qup-i2c8-data-clk-state {
+ scl-pins {
+ pins = "gpio1";
+ function = "qup2_se0_l1_mirb";
+ drive-strength = <2>;
+ bias-pull-up = <2200>;
+ };
+
+ sda-pins {
+ pins = "gpio0";
+ function = "qup2_se0_l0_mirb";
+ drive-strength = <2>;
+ bias-pull-up = <2200>;
+ };
+ };
+
+ hall_sensor_default: hall-sensor-default-state {
+ pins = "gpio171", "gpio172";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ input-enable;
+ };
+
+ wcd_default: wcd-reset-n-active-state {
+ pins = "gpio108";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ i2s1_default: i2s1-default-state {
+ sck-pins {
+ pins = "gpio121";
+ function = "i2s1_sck";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data0-pins {
+ pins = "gpio122";
+ function = "i2s1_data0";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ws-pins {
+ pins = "gpio123";
+ function = "i2s1_ws";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data1-pins {
+ pins = "gpio124";
+ function = "i2s1_data1";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+ };
+
+ cam_rear_reset_default: cam-rear-reset-default-state {
+ pins = "gpio118";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_depth_reset_default: cam-depth-reset-default-state {
+ pins = "gpio117";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_front_reset_default: cam-front-reset-default-state {
+ pins = "gpio120";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ ps5169_reset_default: ps5169-reset-default-state {
+ pins = "gpio7";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ qup_i2c9_data_clk: qup-i2c9-data-clk-state {
+ /* SDA, SCL */
+ pins = "gpio60", "gpio61";
+ function = "qup2_se1";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ nanosic_mcu_default: nanosic-mcu-default-state {
+ status-pins {
+ pins = "gpio56";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ sleep-pins {
+ pins = "gpio57";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ reset-pins {
+ pins = "gpio58";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+};
+
+&uart14 {
+ status = "okay";
+
+ bluetooth {
+ compatible = "qcom,wcn7850-bt";
+
+ local-bd-address = [ 24 00 00 00 5a ad ];
+
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+
+ max-speed = <3200000>;
+ };
+};
+
+&ufs_mem_hc {
+ reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>;
+ vcc-supply = <&vreg_l17b_2p5>;
+ vcc-max-microamp = <1300000>;
+ vccq-supply = <&vreg_l1g_1p2>;
+ vccq-max-microamp = <1200000>;
+ vdd-hba-supply = <&vreg_l3g_1p2>;
+
+ status = "okay";
+};
+
+&ufs_mem_phy {
+ vdda-phy-supply = <&vreg_l1d_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&usb_1 {
+ status = "okay";
+};
+
+&usb_1_dwc3_hs {
+ remote-endpoint = <&pmic_glink_hs_in>;
+};
+
+&usb_1_hsphy {
+ vdd-supply = <&vreg_l1e_0p88>;
+ vdda12-supply = <&vreg_l3e_1p2>;
+
+ phys = <&pm8550b_eusb2_repeater>;
+
+ status = "okay";
+};
+
+&usb_dp_qmpphy {
+ vdda-phy-supply = <&vreg_l3e_1p2>;
+ vdda-pll-supply = <&vreg_l3f_0p91>;
+
+ status = "okay";
+};
+
+&usb_dp_qmpphy_out {
+ remote-endpoint = <&redriver_ss_in>;
+};
+
+&xo_board {
+ clock-frequency = <76800000>;
+};
--
2.54.0.windows.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v4] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
[not found] <v3的message-id>
@ 2026-07-21 14:54 ` code_0002
2026-07-21 15:04 ` sashiko-bot
0 siblings, 1 reply; 11+ messages in thread
From: code_0002 @ 2026-07-21 14:54 UTC (permalink / raw)
To: konrad.dybcio, andersson
Cc: linux-arm-msm, devicetree, linux-kernel, code_0002, map220v,
code002-2
From: map220v <map220v300@gmail.com>
Add device tree for Xiaomi Pad 6S Pro (sheng) based on SM8550.
Signed-off-by: code002-2 <hiez832670@gmail.com>
---
v4: address Sashiko AI review comments
- Add GPIO_OPEN_DRAIN to shared cs35l43 reset-gpios to avoid -EBUSY
- Set Bluetooth local-bd-address to [ 00 00 00 00 00 00 ]
v3: address review comments from Konrad Dybcio
- SM8550P has no modem; confirmed on device (dmesg shows no mpss)
- Rename fingerprint_fpc -> fingerprint-reader, use interrupts-extended
- pmic-glink compatibles: one per line
- Sort DAI link subnodes alphabetically (codec before cpu)
- Reorder root-level nodes by name
- Place pinctrl-n properties before pinctrl-names
- Remove msm-id, board-id, Xiaomi-specific comments
- Remove output-low/output-high from TLMM pinctrl
- Remove udmabuf bootargs (confirmed not in use on device)
- Add "xiaomi-" prefix to firmware paths
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../boot/dts/qcom/sm8550-xiaomi-sheng.dts | 1763 +++++++++++++++++
2 files changed, 1764 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 6f33c4e2f..d8e485521 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -386,6 +386,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8550-mtp.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-qrd.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-samsung-q5q.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-sony-xperia-yodo-pdx234.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sm8550-xiaomi-sheng.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8650-ayaneo-pocket-s2.dtb
sm8650-hdk-display-card-dtbs := sm8650-hdk.dtb sm8650-hdk-display-card.dtbo
diff --git a/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
new file mode 100644
index 000000000..a5aa49a01
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
@@ -0,0 +1,1763 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2024, map220v <map220v300@gmail.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/arm/qcom,ids.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include "sm8550.dtsi"
+#include "pm8010.dtsi"
+#include "pm8550.dtsi"
+#include "pm8550b.dtsi"
+#define PMK8550VE_SID 5
+#include "pm8550ve.dtsi"
+#include "pm8550vs.dtsi"
+#include "pmk8550.dtsi"
+
+/delete-node/ &rmtfs_mem;
+/delete-node/ &adspslpi_mem;
+/delete-node/ &xbl_dt_log_merged_mem;
+/delete-node/ &hwfence_shbuf;
+
+/* Free unused regions */
+/delete-node/ &hyp_tags_reserved_mem;
+/delete-node/ &cdsp_secure_heap_mem;
+/delete-node/ &trust_ui_vm_mem;
+/delete-node/ &trust_ui_vm_dump;
+/delete-node/ &trust_ui_vm_qrtr;
+/delete-node/ &trust_ui_vm_vblk0_ring;
+/delete-node/ &trust_ui_vm_vblk1_ring;
+/delete-node/ &trust_ui_vm_swiotlb;
+/delete-node/ &oem_vm_vblk0_ring;
+/delete-node/ &oem_vm_swiotlb;
+/delete-node/ &oem_vm_mem;
+/delete-node/ &hyp_ext_tags_mem;
+/delete-node/ &hyp_ext_reserved_mem;
+
+/delete-node/ &qup_i2c8_data_clk;
+
+/delete-node/ &qup_i2c9_data_clk;
+
+/delete-node/ &mpss_dsm_mem;
+/delete-node/ &mpss_mem;
+/delete-node/ &q6_mpss_dtb_mem;
+/delete-node/ &remoteproc_mpss;
+
+/ {
+ model = "Xiaomi Pad 6S Pro 12.4";
+ compatible = "xiaomi,sheng", "qcom,sm8550";
+ chassis-type = "tablet";
+ aliases {
+ serial0 = &uart7;
+ serial1 = &uart14;
+ };
+
+ chosen {
+ };
+
+ wcd938x: audio-codec {
+ compatible = "qcom,wcd9380-codec";
+
+ pinctrl-0 = <&wcd_default>;
+ pinctrl-names = "default";
+
+ qcom,micbias1-microvolt = <2750000>;
+ qcom,micbias2-microvolt = <2750000>;
+ qcom,micbias3-microvolt = <2750000>;
+ qcom,micbias4-microvolt = <2750000>;
+ qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+ qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+ qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+ qcom,rx-device = <&wcd_rx>;
+ qcom,tx-device = <&wcd_tx>;
+
+ reset-gpios = <&tlmm 108 GPIO_ACTIVE_LOW>;
+
+ vdd-buck-supply = <&vreg_l15b_1p8>;
+ vdd-rxtx-supply = <&vreg_l15b_1p8>;
+ vdd-io-supply = <&vreg_l15b_1p8>;
+ vdd-mic-bias-supply = <&vreg_bob1>;
+
+ #sound-dai-cells = <1>;
+ };
+
+ bl_vddneg_5p8: bl-vddneg-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "bl_vddneg_5p8";
+ regulator-min-microvolt = <5800000>;
+ regulator-max-microvolt = <5800000>;
+ regulator-enable-ramp-delay = <233>;
+ gpio = <&tlmm 31 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ bl_vddpos_5p8: bl-vddpos-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "bl_vddpos_5p8";
+ regulator-min-microvolt = <5800000>;
+ regulator-max-microvolt = <5800000>;
+ regulator-enable-ramp-delay = <233>;
+ gpio = <&tlmm 30 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ fingerprint-reader {
+ compatible = "fpc,fpc1020";
+ interrupts-extended = <&tlmm 40 IRQ_TYPE_EDGE_RISING>;
+ fpc,gpio_rst = <&tlmm 41 GPIO_ACTIVE_HIGH>;
+ fpc,gpio_irq = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+ irq-gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+ fp_vdd_vreg-supply = <&vreg_l9b_3p3>;
+
+ pinctrl-0 = <&fpc_reset_low>;
+ pinctrl-1 = <&fpc_reset_high>;
+ pinctrl-2 = <&fpc_irq_active>;
+ pinctrl-names = "fpc1020_reset_reset",
+ "fpc1020_reset_active",
+ "fpc1020_irq_active";
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&volume_up_n>, <&hall_sensor_default>;
+ pinctrl-names = "default";
+
+ key-volume-up {
+ label = "Volume Up";
+ linux,code = <KEY_VOLUMEUP>;
+ gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+
+ event-hall-sensor {
+ label = "Hall Effect Sensor";
+ gpios = <&tlmm 171 GPIO_ACTIVE_LOW>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_LID>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+
+ event-tablet-mode {
+ label = "Tablet Mode Switch";
+ gpios = <&tlmm 172 GPIO_ACTIVE_LOW>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_TABLET_MODE>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+ };
+
+ pmic-glink {
+ compatible = "xiaomi,sm8550-pmic-glink",
+ "qcom,sm8550-pmic-glink",
+ "qcom,pmic-glink";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ orientation-gpios = <&tlmm 11 GPIO_ACTIVE_HIGH>;
+
+ connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ power-role = "dual";
+ data-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ pmic_glink_hs_in: endpoint {
+ remote-endpoint = <&usb_1_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ pmic_glink_ss_in: endpoint {
+ remote-endpoint = <&redriver_ss_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_sbu: endpoint {
+ remote-endpoint = <&fsa4480_sbu_mux>;
+ };
+ };
+ };
+ };
+ };
+
+ reserved-memory {
+ xbl_ramdump_mem: xbl-ramdump-region@81200000 {
+ reg = <0 0x81200000 0 0x280000>;
+ no-map;
+ };
+
+ xbl_dt_log_mem: xbl-dt-log-region@81a00000 {
+ reg = <0 0x81a00000 0 0x40000>;
+ no-map;
+ };
+
+ aop_image_mem: aop-image-region@81c00000 {
+ reg = <0 0x81c00000 0 0x60000>;
+ no-map;
+ };
+
+ adspslpi_mem: adspslpi-region@9ea00000 {
+ reg = <0 0x9ea00000 0 0x4680000>;
+ no-map;
+ };
+
+ rmtfs_mem: rmtfs-region@ccd00000 {
+ compatible = "qcom,rmtfs-mem";
+ reg = <0x0 0xccd00000 0x0 0x280000>;
+ no-map;
+
+ qcom,client-id = <1>;
+ };
+
+ hwfence_shbuf: hwfence-shbuf-region@e6440000 {
+ reg = <0 0xe6440000 0 0x2dd000>;
+ no-map;
+ };
+
+ llcc_lpi_mem: llcc-lpi-region@ff800000 {
+ reg = <0 0xff800000 0 0x600000>;
+ no-map;
+ };
+
+ /* Required for libcamera to allocate buffers when cma is used. */
+ linux,cma {
+ compatible = "shared-dma-pool";
+ size = <0x0 0x30000000>;
+ reusable;
+ linux,cma-default;
+ };
+ };
+
+ sound {
+ compatible = "qcom,sm8550-sndcard", "qcom,sm8450-sndcard";
+ pinctrl-0 = <&i2s1_default>;
+ pinctrl-names = "default";
+
+ model = "Xiaomi-Pad6SPro";
+ audio-routing = "IN1_HPHL", "HPHL_OUT",
+ "IN2_HPHR", "HPHR_OUT",
+ "AMIC1", "MIC BIAS1",
+ "AMIC2", "MIC BIAS2",
+ "AMIC3", "MIC BIAS3",
+ "AMIC4", "MIC BIAS3",
+ "AMIC5", "MIC BIAS4",
+ "TX SWR_INPUT0", "ADC1_OUTPUT",
+ "TX SWR_INPUT1", "ADC2_OUTPUT",
+ "TX SWR_INPUT0", "ADC3_OUTPUT",
+ "TX SWR_INPUT1", "ADC4_OUTPUT";
+
+ secondary-i2s-dai-link {
+ link-name = "Secondary MI2S Playback";
+
+ codec {
+ sound-dai = <&cs35l43_tll>, <&cs35l43_tlh>, <&cs35l43_trl>,
+ <&cs35l43_bll>, <&cs35l43_blh>, <&cs35l43_brl>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai SECONDARY_MI2S_RX>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wcd-playback-dai-link {
+ link-name = "WCD Playback";
+
+ codec {
+ sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wcd-capture-dai-link {
+ link-name = "WCD Capture";
+
+ codec {
+ sound-dai = <&wcd938x 1>, <&swr2 0>, <&lpass_txmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ displayport-dai-link {
+ link-name = "DisplayPort Playback";
+
+ codec {
+ sound-dai = <&mdss_dp0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai DISPLAY_PORT_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+ };
+
+ 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;
+ };
+
+ wcn7850-pmu {
+ compatible = "qcom,wcn7850-pmu";
+
+ pinctrl-0 = <&wlan_en>, <&bt_default>, <&pmk8550_sleep_clk>;
+ pinctrl-names = "default";
+
+ wlan-enable-gpios = <&tlmm 80 GPIO_ACTIVE_HIGH>;
+ bt-enable-gpios = <&tlmm 81 GPIO_ACTIVE_HIGH>;
+
+ vdd-supply = <&vreg_s5g_0p8>;
+ vddio-supply = <&vreg_l15b_1p8>;
+ vddaon-supply = <&vreg_s2g_0p8>;
+ vdddig-supply = <&vreg_s4e_0p9>;
+ vddrfa1p2-supply = <&vreg_s4g_1p3>;
+ vddrfa1p8-supply = <&vreg_s6g_1p8>;
+
+ regulators {
+ vreg_pmu_rfa_cmn: ldo0 {
+ regulator-name = "vreg_pmu_rfa_cmn";
+ };
+
+ vreg_pmu_aon_0p59: ldo1 {
+ regulator-name = "vreg_pmu_aon_0p59";
+ };
+
+ vreg_pmu_wlcx_0p8: ldo2 {
+ regulator-name = "vreg_pmu_wlcx_0p8";
+ };
+
+ vreg_pmu_wlmx_0p85: ldo3 {
+ regulator-name = "vreg_pmu_wlmx_0p85";
+ };
+
+ vreg_pmu_btcmx_0p85: ldo4 {
+ regulator-name = "vreg_pmu_btcmx_0p85";
+ };
+
+ vreg_pmu_rfa_0p8: ldo5 {
+ regulator-name = "vreg_pmu_rfa_0p8";
+ };
+
+ vreg_pmu_rfa_1p2: ldo6 {
+ regulator-name = "vreg_pmu_rfa_1p2";
+ };
+
+ vreg_pmu_rfa_1p8: ldo7 {
+ regulator-name = "vreg_pmu_rfa_1p8";
+ };
+
+ vreg_pmu_pcie_0p9: ldo8 {
+ regulator-name = "vreg_pmu_pcie_0p9";
+ };
+
+ vreg_pmu_pcie_1p8: ldo9 {
+ regulator-name = "vreg_pmu_pcie_1p8";
+ };
+ };
+ };
+};
+
+&apps_rsc {
+ regulators-0 {
+ compatible = "qcom,pm8550-rpmh-regulators";
+ qcom,pmic-id = "b";
+
+ vdd-bob1-supply = <&vph_pwr>;
+ vdd-bob2-supply = <&vph_pwr>;
+ vdd-l1-l4-l10-supply = <&vreg_s6g_1p8>;
+ vdd-l2-l13-l14-supply = <&vreg_bob1>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ vdd-l5-l16-supply = <&vreg_bob1>;
+ vdd-l6-l7-supply = <&vreg_bob1>;
+ vdd-l8-l9-supply = <&vreg_bob1>;
+ vdd-l11-supply = <&vreg_s4g_1p3>;
+ vdd-l12-supply = <&vreg_s6g_1p8>;
+ vdd-l15-supply = <&vreg_s6g_1p8>;
+ vdd-l17-supply = <&vreg_bob2>;
+
+ vreg_bob1: bob1 {
+ regulator-name = "vreg_bob1";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3960000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_bob2: bob2 {
+ regulator-name = "vreg_bob2";
+ regulator-min-microvolt = <2704000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1b_1p8: ldo1 {
+ regulator-name = "vreg_l1b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2b_3p0: ldo2 {
+ regulator-name = "vreg_l2b_3p0";
+ regulator-min-microvolt = <3008000>;
+ regulator-max-microvolt = <3008000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4b_1p8: ldo4 {
+ regulator-name = "vreg_l4b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5b_3p1: ldo5 {
+ regulator-name = "vreg_l5b_3p1";
+ regulator-min-microvolt = <3104000>;
+ regulator-max-microvolt = <3104000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6b_1p8: ldo6 {
+ regulator-name = "vreg_l6b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7b_1p8: ldo7 {
+ regulator-name = "vreg_l7b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l8b_1p8: ldo8 {
+ regulator-name = "vreg_l8b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l9b_3p3: ldo9 {
+ regulator-name = "vreg_l9b_3p3";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l10b_1p8: ldo10 {
+ regulator-name = "vreg_l10b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l11b_1p2: ldo11 {
+ regulator-name = "vreg_l11b_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1504000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l12b_1p8: ldo12 {
+ regulator-name = "vreg_l12b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l13b_3p3: ldo13 {
+ regulator-name = "vreg_l13b_3p3";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l14b_3p2: ldo14 {
+ regulator-name = "vreg_l14b_3p2";
+ regulator-min-microvolt = <3200000>;
+ regulator-max-microvolt = <3200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l15b_1p8: ldo15 {
+ regulator-name = "vreg_l15b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l16b_2p8: ldo16 {
+ regulator-name = "vreg_l16b_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l17b_2p5: ldo17 {
+ regulator-name = "vreg_l17b_2p5";
+ regulator-min-microvolt = <2504000>;
+ regulator-max-microvolt = <2504000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-1 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "c";
+
+ vdd-l3-supply = <&vreg_s4e_0p9>;
+
+ vreg_l3c_0p91: ldo3 {
+ regulator-name = "vreg_l3c_0p9";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-2 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "d";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+
+ vreg_l1d_0p88: ldo1 {
+ regulator-name = "vreg_l1d_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-3 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "e";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+ vdd-l2-supply = <&vreg_s4e_0p9>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ vdd-s4-supply = <&vph_pwr>;
+ vdd-s5-supply = <&vph_pwr>;
+
+ vreg_s4e_0p9: smps4 {
+ regulator-name = "vreg_s4e_0p9";
+ regulator-min-microvolt = <904000>;
+ regulator-max-microvolt = <984000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s5e_1p1: smps5 {
+ regulator-name = "vreg_s5e_1p1";
+ regulator-min-microvolt = <1080000>;
+ regulator-max-microvolt = <1120000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1e_0p88: ldo1 {
+ regulator-name = "vreg_l1e_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <880000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2e_0p9: ldo2 {
+ regulator-name = "vreg_l2e_0p9";
+ regulator-min-microvolt = <904000>;
+ regulator-max-microvolt = <970000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3e_1p2: ldo3 {
+ regulator-name = "vreg_l3e_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-4 {
+ compatible = "qcom,pm8550ve-rpmh-regulators";
+ qcom,pmic-id = "f";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+ vdd-l2-supply = <&vreg_s4e_0p9>;
+ vdd-l3-supply = <&vreg_s4e_0p9>;
+ vdd-s4-supply = <&vph_pwr>;
+
+ vreg_s4f_0p5: smps4 {
+ regulator-name = "vreg_s4f_0p5";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <700000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1f_0p9: ldo1 {
+ regulator-name = "vreg_l1f_0p9";
+ regulator-min-microvolt = <912000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2f_0p88: ldo2 {
+ regulator-name = "vreg_l2f_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3f_0p91: ldo3 {
+ regulator-name = "vreg_l3f_0p91";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-5 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "g";
+
+ vdd-l1-supply = <&vreg_s4g_1p3>;
+ vdd-l2-supply = <&vreg_s4g_1p3>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ 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>;
+
+ vreg_s1g_1p2: smps1 {
+ regulator-name = "vreg_s1g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s2g_0p8: smps2 {
+ regulator-name = "vreg_s2g_0p8";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s3g_0p7: smps3 {
+ regulator-name = "vreg_s3g_0p7";
+ regulator-min-microvolt = <600000>;
+ regulator-max-microvolt = <1900000>; //2004000
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s4g_1p3: smps4 {
+ regulator-name = "vreg_s4g_1p3";
+ regulator-min-microvolt = <1256000>;
+ regulator-max-microvolt = <1408000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s5g_0p8: smps5 {
+ regulator-name = "vreg_s5g_0p8";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1004000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s6g_1p8: smps6 {
+ regulator-name = "vreg_s6g_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1g_1p2: ldo1 {
+ regulator-name = "vreg_l1g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2g_1p2: ldo2 {
+ regulator-name = "vreg_l2g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3g_1p2: ldo3 {
+ regulator-name = "vreg_l3g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-6 {
+ compatible = "qcom,pm8010-rpmh-regulators";
+ qcom,pmic-id = "m";
+
+ vdd-l1-l2-supply = <&vreg_s4g_1p3>;
+ vdd-l3-l4-supply = <&vreg_bob2>;
+ vdd-l5-supply = <&vreg_s6g_1p8>;
+ vdd-l6-supply = <&vreg_bob2>;
+ vdd-l7-supply = <&vreg_bob2>;
+
+ vreg_l1m_1p2: ldo1 {
+ regulator-name = "vreg_l1m_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2m_1p08: ldo2 {
+ regulator-name = "vreg_l2m_1p08";
+ regulator-min-microvolt = <1080000>;
+ regulator-max-microvolt = <1080000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3m_2p8: ldo3 {
+ regulator-name = "vreg_l3m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4m_2p8: ldo4 {
+ regulator-name = "vreg_l4m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5m_1p8: ldo5 {
+ regulator-name = "vreg_l5m_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6m_2p8: ldo6 {
+ regulator-name = "vreg_l6m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7m_2p85: ldo7 {
+ regulator-name = "vreg_l7m_2p85";
+ regulator-min-microvolt = <2856000>;
+ regulator-max-microvolt = <2856000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+};
+
+&camss {
+ vdda-phy-supply = <&vreg_l1e_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+
+ csiphy1_ep: endpoint {
+ data-lanes = <0>;
+ remote-endpoint = <&ov02b1b_ep>;
+ };
+ };
+
+ port@3 {
+ reg = <3>;
+
+ csiphy3_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&s5kjn1_ep>;
+ };
+ };
+
+ port@4 {
+ reg = <4>;
+
+ csiphy4_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&ov32d40_ep>;
+ };
+ };
+ };
+};
+
+&cci0 {
+ status = "okay";
+};
+
+&cci0_i2c1 {
+ clock-frequency = <1000000>;
+
+ camera@10 {
+ compatible = "samsung,s5kjn1";
+ reg = <0x10>;
+
+ reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam2_default>, <&cam_rear_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+
+ orientation = <1>;
+ rotation = <0>;
+
+ lens-focus = <>9764>;
+
+ vddio-supply = <&vreg_l4b_1p8>;
+ vddd-supply = <&vreg_l2m_1p08>;
+ vdda-supply = <&vreg_l4m_2p8>;
+
+ port {
+ s5kjn1_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <857600000>;
+ remote-endpoint = <&csiphy3_ep>;
+ };
+ };
+ };
+
+ gt9764: camera-lens@c {
+ compatible = "giantec,gt9764";
+ reg = <0x0c>;
+
+ vin-supply = <&vreg_l4b_1p8>;
+ vdd-supply = <&vreg_l7m_2p85>;
+ dongwoon,clock-presc = <0>;
+ dongwoon,aac-timing = <0x6a>;
+ dongwoon,initial-focus = <0x200>;
+ dongwoon,move-delay-us = <7000>;
+ };
+};
+
+&cci1 {
+ status = "okay";
+};
+
+&cci1_i2c0 {
+ clock-frequency = <400000>;
+
+ camera@3c {
+ compatible = "ovti,ov02b1b";
+ reg = <0x3c>;
+
+ reset-gpios = <&tlmm 117 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam1_default>, <&cam_depth_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+
+ orientation = <1>;
+ rotation = <0>;
+
+ vddio-supply = <&vreg_l10b_1p8>;
+ avdd-supply = <&vreg_l6m_2p8>;
+
+ port {
+ ov02b1b_ep: endpoint {
+ data-lanes = <0>;
+ link-frequencies = /bits/ 64 <332800000>;
+ remote-endpoint = <&csiphy1_ep>;
+ };
+ };
+ };
+};
+
+&cci1_i2c1 {
+ clock-frequency = <1000000>;
+
+ camera@10 {
+ compatible = "ovti,ov32d40";
+ reg = <0x10>;
+
+ reset-gpios = <&tlmm 120 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam4_default>, <&cam_front_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK4_CLK>;
+
+ orientation = <0>;
+ rotation = <0>;
+
+ vddio-supply = <&vreg_l5m_1p8>;
+ dvdd-supply = <&vreg_l1m_1p2>;
+ avdd-supply = <&vreg_l3m_2p8>;
+
+ port {
+ ov32d40_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <842400000>;
+ remote-endpoint = <&csiphy4_ep>;
+ };
+ };
+ };
+};
+
+&ipa {
+ qcom,gsi-loader = "self";
+ memory-region = <&ipa_fw_mem>;
+ firmware-name = "qcom/sm8550/xiaomi-sheng/ipa_fws.mbn";
+ status = "okay";
+};
+
+&gpi_dma1 {
+ status = "okay";
+};
+
+&gpi_dma2 {
+ status = "okay";
+};
+
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/a740_zap.mbn";
+};
+
+&i2c0 {
+ clock-frequency = <400000>;
+ status = "okay";
+
+ typec-retimer@28 {
+ compatible = "parade,ps5169";
+ reg = <0x28>;
+
+ pinctrl-0 = <&ps5169_reset_default>;
+ pinctrl-names = "default";
+
+ reset-gpios = <&tlmm 7 GPIO_ACTIVE_LOW>;
+
+ orientation-switch;
+ retimer-switch;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ redriver_ss_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ redriver_ss_in: endpoint {
+ data-lanes = <3 2 1 0>;
+ remote-endpoint = <&usb_dp_qmpphy_out>;
+ };
+ };
+ };
+ };
+};
+
+&i2c1 {
+ status = "okay";
+
+ backlight: backlight@11 {
+ compatible = "kinetic,ktz8866a";
+ reg = <0x11>;
+ vin-supply = <&vph_pwr>;
+ enable-gpios = <&tlmm 128 GPIO_ACTIVE_HIGH>;
+ current-num-sinks = <5>;
+ kinetic,current-ramp-delay-ms = <256>;
+ kinetic,led-enable-ramp-delay-ms = <8>;
+ kinetic,enable-lcd-bias;
+ };
+};
+
+&i2c5 {
+ clock-frequency = <1000000>;
+ status = "okay";
+
+ cs35l43_trl: cs35l43@40 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x40>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TRL";
+ cirrus,dsp-part-name = "trl-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_tlh: cs35l43@41 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x41>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <99 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TLH";
+ cirrus,dsp-part-name = "tlh-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_tll: cs35l43@42 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x42>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TLL";
+ cirrus,dsp-part-name = "tll-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+};
+
+&i2c8 {
+ clock-frequency = <1000000>;
+ status = "okay";
+
+ cs35l43_blh: cs35l43@40 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x40>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BLH";
+ cirrus,dsp-part-name = "blh-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_bll: cs35l43@41 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x41>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BLL";
+ cirrus,dsp-part-name = "bll-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_brl: cs35l43@42 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x42>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <85 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BRL";
+ cirrus,dsp-part-name = "brl-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+};
+
+&i2c9 {
+ status = "okay";
+
+ nanosic_mcu@4c {
+ compatible = "nanosic,wn8030-sheng";
+ reg = <0x4c>;
+
+ pinctrl-0 = <&nanosic_mcu_default>;
+ pinctrl-names = "default";
+
+ interrupt-parent = <&tlmm>;
+ interrupts = <62 IRQ_TYPE_EDGE_RISING>;
+
+ reset-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
+ sleep-gpios = <&tlmm 57 GPIO_ACTIVE_LOW>;
+ status-gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>;
+
+ vddio-supply = <&vreg_l12b_1p8>;
+ dvdd-supply = <&vreg_l13b_3p3>;
+ };
+};
+
+&i2c_master_hub_0 {
+ status = "okay";
+};
+
+&i2c_hub_2 {
+ status = "okay";
+
+ typec-mux@42 {
+ compatible = "fcs,fsa4480";
+ reg = <0x42>;
+
+ vcc-supply = <&vreg_bob1>;
+
+ mode-switch;
+ orientation-switch;
+
+ port {
+ fsa4480_sbu_mux: endpoint {
+ remote-endpoint = <&pmic_glink_sbu>;
+ };
+ };
+ };
+};
+
+&iris {
+ status = "okay";
+
+ firmware-name = "qcom/sm8550/xiaomi-sheng/vpu30_4v.mbn";
+};
+
+&mdss {
+ status = "okay";
+};
+
+&mdss_dsi0 {
+ vdda-supply = <&vreg_l3e_1p2>;
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+ qcom,master-dsi;
+ status = "okay";
+
+ display_panel: panel@0 {
+ compatible = "xiaomi,sheng-nt36532e", "novatek,nt36532e";
+ reg = <0>;
+
+ pinctrl-0 = <&sde_dsi_active>;
+ pinctrl-1 = <&sde_dsi_suspend>;
+ pinctrl-names = "default", "sleep";
+
+ vddio-supply = <&vreg_s3g_0p7>;
+ avdd-supply = <&bl_vddpos_5p8>;
+ avee-supply = <&bl_vddneg_5p8>;
+
+ reset-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
+ backlight = <&backlight>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ panel_in_0: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ panel_in_1: endpoint {
+ remote-endpoint = <&mdss_dsi1_out>;
+ };
+ };
+ };
+ };
+};
+
+&mdss_dsi0_out {
+ remote-endpoint = <&panel_in_0>;
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi0_phy {
+ vdds-supply = <&vreg_l1e_0p88>;
+ status = "okay";
+};
+
+&mdss_dsi1 {
+ vdda-supply = <&vreg_l3e_1p2>;
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+ /* DSI1 is slave, so use DSI0 clocks */
+ assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+ status = "okay";
+};
+
+&mdss_dsi1_out {
+ remote-endpoint = <&panel_in_1>;
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi1_phy {
+ vdds-supply = <&vreg_l1e_0p88>;
+ status = "okay";
+};
+
+&mdss_dp0 {
+ status = "okay";
+};
+
+&mdss_dp0_out {
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&pcie0 {
+ wake-gpios = <&tlmm 96 GPIO_ACTIVE_HIGH>;
+ perst-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&pcie0_default_state>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
+&pcieport0 {
+ wifi@0 {
+ compatible = "pci17cb,1107";
+ reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+ vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+ vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+ };
+};
+
+&pcie0_phy {
+ vdda-phy-supply = <&vreg_l1e_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&pm8010_n {
+ status = "disabled";
+};
+
+&pm8550_flash {
+ status = "okay";
+
+ led-0 {
+ function = LED_FUNCTION_FLASH;
+ color = <LED_COLOR_ID_WHITE>;
+ led-sources = <1>;
+ led-max-microamp = <400000>;
+ flash-max-microamp = <400000>;
+ flash-max-timeout-us = <300000>;
+ function-enumerator = <0>;
+ };
+};
+
+&pm8550_gpios {
+ volume_up_n: volume-up-n-state {
+ pins = "gpio6";
+ function = "normal";
+ power-source = <1>;
+ bias-pull-up;
+ input-enable;
+ };
+};
+
+&pm8550_pwm {
+ status = "okay";
+
+ multi-led {
+ color = <LED_COLOR_ID_RGB>;
+ function = LED_FUNCTION_STATUS;
+ max-brightness = <255>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led@1 {
+ reg = <1>;
+ color = <LED_COLOR_ID_RED>;
+ };
+
+ led@2 {
+ reg = <2>;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+
+ led@3 {
+ reg = <3>;
+ color = <LED_COLOR_ID_BLUE>;
+ };
+ };
+};
+
+&pm8550b_eusb2_repeater {
+ vdd18-supply = <&vreg_l15b_1p8>;
+ vdd3-supply = <&vreg_l5b_3p1>;
+};
+
+&pm8550vs_c {
+ status = "okay";
+};
+
+&pm8550vs_d {
+ status = "okay";
+};
+
+&pm8550vs_e {
+ status = "okay";
+};
+
+&pm8550vs_g {
+ status = "okay";
+};
+
+&pon_pwrkey {
+ status = "okay";
+};
+
+&pon_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+
+ status = "okay";
+};
+
+&pmk8550_gpios {
+ pmk8550_sleep_clk: sleep-clk-state {
+ pins = "gpio3";
+ function = "func1";
+ input-disable;
+ output-enable;
+ bias-disable;
+ power-source = <0>;
+ };
+};
+
+&pmk8550_rtc {
+ nvmem-cells = <&rtc_offset>;
+ nvmem-cell-names = "offset";
+};
+
+&pmk8550_sdam_2 {
+ rtc_offset: rtc-offset@bc {
+ reg = <0xbc 0x4>;
+ };
+};
+
+&qupv3_id_0 {
+ status = "okay";
+};
+
+&qupv3_id_1 {
+ status = "okay";
+};
+
+&remoteproc_adsp {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/adsp.mbn",
+ "qcom/sm8550/xiaomi-sheng/adsp_dtb.mbn";
+ status = "okay";
+};
+
+&remoteproc_cdsp {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/cdsp.mbn",
+ "qcom/sm8550/xiaomi-sheng/cdsp_dtb.mbn";
+ status = "okay";
+};
+
+&sleep_clk {
+ clock-frequency = <32764>;
+};
+
+&spi4 {
+ status = "okay";
+
+ touchscreen@0 {
+ compatible = "novatek,NVT-ts-spi";
+ reg = <0>;
+
+ spi-max-frequency = <19200000>;
+ novatek,irq-gpio = <&tlmm 25 GPIO_ACTIVE_LOW>;
+
+ panel = <&display_panel>;
+
+ firmware-name = "novatek/novatek_nt36532_n81a_fw_csot.bin";
+ };
+};
+
+&swr1 {
+ status = "okay";
+
+ /* WCD9380 RX */
+ wcd_rx: codec@0,4 {
+ compatible = "sdw20217010d00";
+ reg = <0 4>;
+ qcom,rx-port-mapping = <1 2 3 4 5>;
+ };
+};
+
+&swr2 {
+ status = "okay";
+
+ /* WCD9380 TX */
+ wcd_tx: codec@0,3 {
+ compatible = "sdw20217010d00";
+ reg = <0 3>;
+ qcom,tx-port-mapping = <2 2 3 4>;
+ };
+};
+
+&tlmm {
+ gpio-reserved-ranges = <36 4>;
+
+ fpc_reset_low: fpc-reset-low-state {
+ pins = "gpio41";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ fpc_reset_high: fpc-reset-high-state {
+ pins = "gpio41";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ fpc_irq_active: fpc-irq-active-state {
+ pins = "gpio40";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ sde_dsi_active: sde-dsi-active-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ sde_dsi_suspend: sde-dsi-suspend-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ bt_default: bt-default-state {
+ bt-en-pins {
+ pins = "gpio81";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ sw-ctrl-pins {
+ pins = "gpio82";
+ function = "gpio";
+ bias-pull-down;
+ };
+ };
+
+ wlan_en: wlan-en-state {
+ pins = "gpio80";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+
+ qup_i2c8_data_clk: qup-i2c8-data-clk-state {
+ scl-pins {
+ pins = "gpio1";
+ function = "qup2_se0_l1_mirb";
+ drive-strength = <2>;
+ bias-pull-up = <2200>;
+ };
+
+ sda-pins {
+ pins = "gpio0";
+ function = "qup2_se0_l0_mirb";
+ drive-strength = <2>;
+ bias-pull-up = <2200>;
+ };
+ };
+
+ hall_sensor_default: hall-sensor-default-state {
+ pins = "gpio171", "gpio172";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ input-enable;
+ };
+
+ wcd_default: wcd-reset-n-active-state {
+ pins = "gpio108";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ i2s1_default: i2s1-default-state {
+ sck-pins {
+ pins = "gpio121";
+ function = "i2s1_sck";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data0-pins {
+ pins = "gpio122";
+ function = "i2s1_data0";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ws-pins {
+ pins = "gpio123";
+ function = "i2s1_ws";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data1-pins {
+ pins = "gpio124";
+ function = "i2s1_data1";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+ };
+
+ cam_rear_reset_default: cam-rear-reset-default-state {
+ pins = "gpio118";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_depth_reset_default: cam-depth-reset-default-state {
+ pins = "gpio117";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_front_reset_default: cam-front-reset-default-state {
+ pins = "gpio120";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ ps5169_reset_default: ps5169-reset-default-state {
+ pins = "gpio7";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ qup_i2c9_data_clk: qup-i2c9-data-clk-state {
+ /* SDA, SCL */
+ pins = "gpio60", "gpio61";
+ function = "qup2_se1";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ nanosic_mcu_default: nanosic-mcu-default-state {
+ status-pins {
+ pins = "gpio56";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ sleep-pins {
+ pins = "gpio57";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ reset-pins {
+ pins = "gpio58";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+};
+
+&uart14 {
+ status = "okay";
+
+ bluetooth {
+ compatible = "qcom,wcn7850-bt";
+
+ local-bd-address = [ 00 00 00 00 00 00 ];
+
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+
+ max-speed = <3200000>;
+ };
+};
+
+&ufs_mem_hc {
+ reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>;
+ vcc-supply = <&vreg_l17b_2p5>;
+ vcc-max-microamp = <1300000>;
+ vccq-supply = <&vreg_l1g_1p2>;
+ vccq-max-microamp = <1200000>;
+ vdd-hba-supply = <&vreg_l3g_1p2>;
+
+ status = "okay";
+};
+
+&ufs_mem_phy {
+ vdda-phy-supply = <&vreg_l1d_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&usb_1 {
+ status = "okay";
+};
+
+&usb_1_dwc3_hs {
+ remote-endpoint = <&pmic_glink_hs_in>;
+};
+
+&usb_1_hsphy {
+ vdd-supply = <&vreg_l1e_0p88>;
+ vdda12-supply = <&vreg_l3e_1p2>;
+
+ phys = <&pm8550b_eusb2_repeater>;
+
+ status = "okay";
+};
+
+&usb_dp_qmpphy {
+ vdda-phy-supply = <&vreg_l3e_1p2>;
+ vdda-pll-supply = <&vreg_l3f_0p91>;
+
+ status = "okay";
+};
+
+&usb_dp_qmpphy_out {
+ remote-endpoint = <&redriver_ss_in>;
+};
+
+&xo_board {
+ clock-frequency = <76800000>;
+};
--
2.54.0.windows.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v4] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
2026-07-21 14:45 ` [PATCH v3] " code_0002
@ 2026-07-21 14:58 ` code_0002
2026-07-21 15:07 ` [PATCH v5] " code_0002
2026-07-21 15:14 ` [PATCH v4] " sashiko-bot
2026-07-21 15:01 ` [PATCH v3] " sashiko-bot
1 sibling, 2 replies; 11+ messages in thread
From: code_0002 @ 2026-07-21 14:58 UTC (permalink / raw)
To: konrad.dybcio, andersson
Cc: linux-arm-msm, devicetree, linux-kernel, code_0002, map220v,
code002-2
From: map220v <map220v300@gmail.com>
Add device tree for Xiaomi Pad 6S Pro (sheng) based on SM8550.
Signed-off-by: code002-2 <hiez832670@gmail.com>
---
v4: address Sashiko AI review comments
- Add GPIO_OPEN_DRAIN to shared cs35l43 reset-gpios to avoid -EBUSY
- Set Bluetooth local-bd-address to [ 00 00 00 00 00 00 ]
v3: address review comments from Konrad Dybcio
- SM8550P has no modem; confirmed on device (dmesg shows no mpss)
- Rename fingerprint_fpc -> fingerprint-reader, use interrupts-extended
- pmic-glink compatibles: one per line
- Sort DAI link subnodes alphabetically (codec before cpu)
- Reorder root-level nodes by name
- Place pinctrl-n properties before pinctrl-names
- Remove msm-id, board-id, Xiaomi-specific comments
- Remove output-low/output-high from TLMM pinctrl
- Remove udmabuf bootargs (confirmed not in use on device)
- Add "xiaomi-" prefix to firmware paths
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../boot/dts/qcom/sm8550-xiaomi-sheng.dts | 1763 +++++++++++++++++
2 files changed, 1764 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 6f33c4e2f..d8e485521 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -386,6 +386,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8550-mtp.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-qrd.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-samsung-q5q.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-sony-xperia-yodo-pdx234.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sm8550-xiaomi-sheng.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8650-ayaneo-pocket-s2.dtb
sm8650-hdk-display-card-dtbs := sm8650-hdk.dtb sm8650-hdk-display-card.dtbo
diff --git a/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
new file mode 100644
index 000000000..a5aa49a01
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
@@ -0,0 +1,1763 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2024, map220v <map220v300@gmail.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/arm/qcom,ids.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include "sm8550.dtsi"
+#include "pm8010.dtsi"
+#include "pm8550.dtsi"
+#include "pm8550b.dtsi"
+#define PMK8550VE_SID 5
+#include "pm8550ve.dtsi"
+#include "pm8550vs.dtsi"
+#include "pmk8550.dtsi"
+
+/delete-node/ &rmtfs_mem;
+/delete-node/ &adspslpi_mem;
+/delete-node/ &xbl_dt_log_merged_mem;
+/delete-node/ &hwfence_shbuf;
+
+/* Free unused regions */
+/delete-node/ &hyp_tags_reserved_mem;
+/delete-node/ &cdsp_secure_heap_mem;
+/delete-node/ &trust_ui_vm_mem;
+/delete-node/ &trust_ui_vm_dump;
+/delete-node/ &trust_ui_vm_qrtr;
+/delete-node/ &trust_ui_vm_vblk0_ring;
+/delete-node/ &trust_ui_vm_vblk1_ring;
+/delete-node/ &trust_ui_vm_swiotlb;
+/delete-node/ &oem_vm_vblk0_ring;
+/delete-node/ &oem_vm_swiotlb;
+/delete-node/ &oem_vm_mem;
+/delete-node/ &hyp_ext_tags_mem;
+/delete-node/ &hyp_ext_reserved_mem;
+
+/delete-node/ &qup_i2c8_data_clk;
+
+/delete-node/ &qup_i2c9_data_clk;
+
+/delete-node/ &mpss_dsm_mem;
+/delete-node/ &mpss_mem;
+/delete-node/ &q6_mpss_dtb_mem;
+/delete-node/ &remoteproc_mpss;
+
+/ {
+ model = "Xiaomi Pad 6S Pro 12.4";
+ compatible = "xiaomi,sheng", "qcom,sm8550";
+ chassis-type = "tablet";
+ aliases {
+ serial0 = &uart7;
+ serial1 = &uart14;
+ };
+
+ chosen {
+ };
+
+ wcd938x: audio-codec {
+ compatible = "qcom,wcd9380-codec";
+
+ pinctrl-0 = <&wcd_default>;
+ pinctrl-names = "default";
+
+ qcom,micbias1-microvolt = <2750000>;
+ qcom,micbias2-microvolt = <2750000>;
+ qcom,micbias3-microvolt = <2750000>;
+ qcom,micbias4-microvolt = <2750000>;
+ qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+ qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+ qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+ qcom,rx-device = <&wcd_rx>;
+ qcom,tx-device = <&wcd_tx>;
+
+ reset-gpios = <&tlmm 108 GPIO_ACTIVE_LOW>;
+
+ vdd-buck-supply = <&vreg_l15b_1p8>;
+ vdd-rxtx-supply = <&vreg_l15b_1p8>;
+ vdd-io-supply = <&vreg_l15b_1p8>;
+ vdd-mic-bias-supply = <&vreg_bob1>;
+
+ #sound-dai-cells = <1>;
+ };
+
+ bl_vddneg_5p8: bl-vddneg-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "bl_vddneg_5p8";
+ regulator-min-microvolt = <5800000>;
+ regulator-max-microvolt = <5800000>;
+ regulator-enable-ramp-delay = <233>;
+ gpio = <&tlmm 31 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ bl_vddpos_5p8: bl-vddpos-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "bl_vddpos_5p8";
+ regulator-min-microvolt = <5800000>;
+ regulator-max-microvolt = <5800000>;
+ regulator-enable-ramp-delay = <233>;
+ gpio = <&tlmm 30 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ fingerprint-reader {
+ compatible = "fpc,fpc1020";
+ interrupts-extended = <&tlmm 40 IRQ_TYPE_EDGE_RISING>;
+ fpc,gpio_rst = <&tlmm 41 GPIO_ACTIVE_HIGH>;
+ fpc,gpio_irq = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+ irq-gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+ fp_vdd_vreg-supply = <&vreg_l9b_3p3>;
+
+ pinctrl-0 = <&fpc_reset_low>;
+ pinctrl-1 = <&fpc_reset_high>;
+ pinctrl-2 = <&fpc_irq_active>;
+ pinctrl-names = "fpc1020_reset_reset",
+ "fpc1020_reset_active",
+ "fpc1020_irq_active";
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&volume_up_n>, <&hall_sensor_default>;
+ pinctrl-names = "default";
+
+ key-volume-up {
+ label = "Volume Up";
+ linux,code = <KEY_VOLUMEUP>;
+ gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+
+ event-hall-sensor {
+ label = "Hall Effect Sensor";
+ gpios = <&tlmm 171 GPIO_ACTIVE_LOW>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_LID>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+
+ event-tablet-mode {
+ label = "Tablet Mode Switch";
+ gpios = <&tlmm 172 GPIO_ACTIVE_LOW>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_TABLET_MODE>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+ };
+
+ pmic-glink {
+ compatible = "xiaomi,sm8550-pmic-glink",
+ "qcom,sm8550-pmic-glink",
+ "qcom,pmic-glink";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ orientation-gpios = <&tlmm 11 GPIO_ACTIVE_HIGH>;
+
+ connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ power-role = "dual";
+ data-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ pmic_glink_hs_in: endpoint {
+ remote-endpoint = <&usb_1_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ pmic_glink_ss_in: endpoint {
+ remote-endpoint = <&redriver_ss_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_sbu: endpoint {
+ remote-endpoint = <&fsa4480_sbu_mux>;
+ };
+ };
+ };
+ };
+ };
+
+ reserved-memory {
+ xbl_ramdump_mem: xbl-ramdump-region@81200000 {
+ reg = <0 0x81200000 0 0x280000>;
+ no-map;
+ };
+
+ xbl_dt_log_mem: xbl-dt-log-region@81a00000 {
+ reg = <0 0x81a00000 0 0x40000>;
+ no-map;
+ };
+
+ aop_image_mem: aop-image-region@81c00000 {
+ reg = <0 0x81c00000 0 0x60000>;
+ no-map;
+ };
+
+ adspslpi_mem: adspslpi-region@9ea00000 {
+ reg = <0 0x9ea00000 0 0x4680000>;
+ no-map;
+ };
+
+ rmtfs_mem: rmtfs-region@ccd00000 {
+ compatible = "qcom,rmtfs-mem";
+ reg = <0x0 0xccd00000 0x0 0x280000>;
+ no-map;
+
+ qcom,client-id = <1>;
+ };
+
+ hwfence_shbuf: hwfence-shbuf-region@e6440000 {
+ reg = <0 0xe6440000 0 0x2dd000>;
+ no-map;
+ };
+
+ llcc_lpi_mem: llcc-lpi-region@ff800000 {
+ reg = <0 0xff800000 0 0x600000>;
+ no-map;
+ };
+
+ /* Required for libcamera to allocate buffers when cma is used. */
+ linux,cma {
+ compatible = "shared-dma-pool";
+ size = <0x0 0x30000000>;
+ reusable;
+ linux,cma-default;
+ };
+ };
+
+ sound {
+ compatible = "qcom,sm8550-sndcard", "qcom,sm8450-sndcard";
+ pinctrl-0 = <&i2s1_default>;
+ pinctrl-names = "default";
+
+ model = "Xiaomi-Pad6SPro";
+ audio-routing = "IN1_HPHL", "HPHL_OUT",
+ "IN2_HPHR", "HPHR_OUT",
+ "AMIC1", "MIC BIAS1",
+ "AMIC2", "MIC BIAS2",
+ "AMIC3", "MIC BIAS3",
+ "AMIC4", "MIC BIAS3",
+ "AMIC5", "MIC BIAS4",
+ "TX SWR_INPUT0", "ADC1_OUTPUT",
+ "TX SWR_INPUT1", "ADC2_OUTPUT",
+ "TX SWR_INPUT0", "ADC3_OUTPUT",
+ "TX SWR_INPUT1", "ADC4_OUTPUT";
+
+ secondary-i2s-dai-link {
+ link-name = "Secondary MI2S Playback";
+
+ codec {
+ sound-dai = <&cs35l43_tll>, <&cs35l43_tlh>, <&cs35l43_trl>,
+ <&cs35l43_bll>, <&cs35l43_blh>, <&cs35l43_brl>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai SECONDARY_MI2S_RX>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wcd-playback-dai-link {
+ link-name = "WCD Playback";
+
+ codec {
+ sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wcd-capture-dai-link {
+ link-name = "WCD Capture";
+
+ codec {
+ sound-dai = <&wcd938x 1>, <&swr2 0>, <&lpass_txmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ displayport-dai-link {
+ link-name = "DisplayPort Playback";
+
+ codec {
+ sound-dai = <&mdss_dp0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai DISPLAY_PORT_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+ };
+
+ 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;
+ };
+
+ wcn7850-pmu {
+ compatible = "qcom,wcn7850-pmu";
+
+ pinctrl-0 = <&wlan_en>, <&bt_default>, <&pmk8550_sleep_clk>;
+ pinctrl-names = "default";
+
+ wlan-enable-gpios = <&tlmm 80 GPIO_ACTIVE_HIGH>;
+ bt-enable-gpios = <&tlmm 81 GPIO_ACTIVE_HIGH>;
+
+ vdd-supply = <&vreg_s5g_0p8>;
+ vddio-supply = <&vreg_l15b_1p8>;
+ vddaon-supply = <&vreg_s2g_0p8>;
+ vdddig-supply = <&vreg_s4e_0p9>;
+ vddrfa1p2-supply = <&vreg_s4g_1p3>;
+ vddrfa1p8-supply = <&vreg_s6g_1p8>;
+
+ regulators {
+ vreg_pmu_rfa_cmn: ldo0 {
+ regulator-name = "vreg_pmu_rfa_cmn";
+ };
+
+ vreg_pmu_aon_0p59: ldo1 {
+ regulator-name = "vreg_pmu_aon_0p59";
+ };
+
+ vreg_pmu_wlcx_0p8: ldo2 {
+ regulator-name = "vreg_pmu_wlcx_0p8";
+ };
+
+ vreg_pmu_wlmx_0p85: ldo3 {
+ regulator-name = "vreg_pmu_wlmx_0p85";
+ };
+
+ vreg_pmu_btcmx_0p85: ldo4 {
+ regulator-name = "vreg_pmu_btcmx_0p85";
+ };
+
+ vreg_pmu_rfa_0p8: ldo5 {
+ regulator-name = "vreg_pmu_rfa_0p8";
+ };
+
+ vreg_pmu_rfa_1p2: ldo6 {
+ regulator-name = "vreg_pmu_rfa_1p2";
+ };
+
+ vreg_pmu_rfa_1p8: ldo7 {
+ regulator-name = "vreg_pmu_rfa_1p8";
+ };
+
+ vreg_pmu_pcie_0p9: ldo8 {
+ regulator-name = "vreg_pmu_pcie_0p9";
+ };
+
+ vreg_pmu_pcie_1p8: ldo9 {
+ regulator-name = "vreg_pmu_pcie_1p8";
+ };
+ };
+ };
+};
+
+&apps_rsc {
+ regulators-0 {
+ compatible = "qcom,pm8550-rpmh-regulators";
+ qcom,pmic-id = "b";
+
+ vdd-bob1-supply = <&vph_pwr>;
+ vdd-bob2-supply = <&vph_pwr>;
+ vdd-l1-l4-l10-supply = <&vreg_s6g_1p8>;
+ vdd-l2-l13-l14-supply = <&vreg_bob1>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ vdd-l5-l16-supply = <&vreg_bob1>;
+ vdd-l6-l7-supply = <&vreg_bob1>;
+ vdd-l8-l9-supply = <&vreg_bob1>;
+ vdd-l11-supply = <&vreg_s4g_1p3>;
+ vdd-l12-supply = <&vreg_s6g_1p8>;
+ vdd-l15-supply = <&vreg_s6g_1p8>;
+ vdd-l17-supply = <&vreg_bob2>;
+
+ vreg_bob1: bob1 {
+ regulator-name = "vreg_bob1";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3960000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_bob2: bob2 {
+ regulator-name = "vreg_bob2";
+ regulator-min-microvolt = <2704000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1b_1p8: ldo1 {
+ regulator-name = "vreg_l1b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2b_3p0: ldo2 {
+ regulator-name = "vreg_l2b_3p0";
+ regulator-min-microvolt = <3008000>;
+ regulator-max-microvolt = <3008000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4b_1p8: ldo4 {
+ regulator-name = "vreg_l4b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5b_3p1: ldo5 {
+ regulator-name = "vreg_l5b_3p1";
+ regulator-min-microvolt = <3104000>;
+ regulator-max-microvolt = <3104000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6b_1p8: ldo6 {
+ regulator-name = "vreg_l6b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7b_1p8: ldo7 {
+ regulator-name = "vreg_l7b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l8b_1p8: ldo8 {
+ regulator-name = "vreg_l8b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l9b_3p3: ldo9 {
+ regulator-name = "vreg_l9b_3p3";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l10b_1p8: ldo10 {
+ regulator-name = "vreg_l10b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l11b_1p2: ldo11 {
+ regulator-name = "vreg_l11b_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1504000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l12b_1p8: ldo12 {
+ regulator-name = "vreg_l12b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l13b_3p3: ldo13 {
+ regulator-name = "vreg_l13b_3p3";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l14b_3p2: ldo14 {
+ regulator-name = "vreg_l14b_3p2";
+ regulator-min-microvolt = <3200000>;
+ regulator-max-microvolt = <3200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l15b_1p8: ldo15 {
+ regulator-name = "vreg_l15b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l16b_2p8: ldo16 {
+ regulator-name = "vreg_l16b_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l17b_2p5: ldo17 {
+ regulator-name = "vreg_l17b_2p5";
+ regulator-min-microvolt = <2504000>;
+ regulator-max-microvolt = <2504000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-1 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "c";
+
+ vdd-l3-supply = <&vreg_s4e_0p9>;
+
+ vreg_l3c_0p91: ldo3 {
+ regulator-name = "vreg_l3c_0p9";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-2 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "d";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+
+ vreg_l1d_0p88: ldo1 {
+ regulator-name = "vreg_l1d_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-3 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "e";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+ vdd-l2-supply = <&vreg_s4e_0p9>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ vdd-s4-supply = <&vph_pwr>;
+ vdd-s5-supply = <&vph_pwr>;
+
+ vreg_s4e_0p9: smps4 {
+ regulator-name = "vreg_s4e_0p9";
+ regulator-min-microvolt = <904000>;
+ regulator-max-microvolt = <984000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s5e_1p1: smps5 {
+ regulator-name = "vreg_s5e_1p1";
+ regulator-min-microvolt = <1080000>;
+ regulator-max-microvolt = <1120000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1e_0p88: ldo1 {
+ regulator-name = "vreg_l1e_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <880000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2e_0p9: ldo2 {
+ regulator-name = "vreg_l2e_0p9";
+ regulator-min-microvolt = <904000>;
+ regulator-max-microvolt = <970000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3e_1p2: ldo3 {
+ regulator-name = "vreg_l3e_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-4 {
+ compatible = "qcom,pm8550ve-rpmh-regulators";
+ qcom,pmic-id = "f";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+ vdd-l2-supply = <&vreg_s4e_0p9>;
+ vdd-l3-supply = <&vreg_s4e_0p9>;
+ vdd-s4-supply = <&vph_pwr>;
+
+ vreg_s4f_0p5: smps4 {
+ regulator-name = "vreg_s4f_0p5";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <700000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1f_0p9: ldo1 {
+ regulator-name = "vreg_l1f_0p9";
+ regulator-min-microvolt = <912000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2f_0p88: ldo2 {
+ regulator-name = "vreg_l2f_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3f_0p91: ldo3 {
+ regulator-name = "vreg_l3f_0p91";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-5 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "g";
+
+ vdd-l1-supply = <&vreg_s4g_1p3>;
+ vdd-l2-supply = <&vreg_s4g_1p3>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ 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>;
+
+ vreg_s1g_1p2: smps1 {
+ regulator-name = "vreg_s1g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s2g_0p8: smps2 {
+ regulator-name = "vreg_s2g_0p8";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s3g_0p7: smps3 {
+ regulator-name = "vreg_s3g_0p7";
+ regulator-min-microvolt = <600000>;
+ regulator-max-microvolt = <1900000>; //2004000
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s4g_1p3: smps4 {
+ regulator-name = "vreg_s4g_1p3";
+ regulator-min-microvolt = <1256000>;
+ regulator-max-microvolt = <1408000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s5g_0p8: smps5 {
+ regulator-name = "vreg_s5g_0p8";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1004000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s6g_1p8: smps6 {
+ regulator-name = "vreg_s6g_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1g_1p2: ldo1 {
+ regulator-name = "vreg_l1g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2g_1p2: ldo2 {
+ regulator-name = "vreg_l2g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3g_1p2: ldo3 {
+ regulator-name = "vreg_l3g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-6 {
+ compatible = "qcom,pm8010-rpmh-regulators";
+ qcom,pmic-id = "m";
+
+ vdd-l1-l2-supply = <&vreg_s4g_1p3>;
+ vdd-l3-l4-supply = <&vreg_bob2>;
+ vdd-l5-supply = <&vreg_s6g_1p8>;
+ vdd-l6-supply = <&vreg_bob2>;
+ vdd-l7-supply = <&vreg_bob2>;
+
+ vreg_l1m_1p2: ldo1 {
+ regulator-name = "vreg_l1m_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2m_1p08: ldo2 {
+ regulator-name = "vreg_l2m_1p08";
+ regulator-min-microvolt = <1080000>;
+ regulator-max-microvolt = <1080000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3m_2p8: ldo3 {
+ regulator-name = "vreg_l3m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4m_2p8: ldo4 {
+ regulator-name = "vreg_l4m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5m_1p8: ldo5 {
+ regulator-name = "vreg_l5m_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6m_2p8: ldo6 {
+ regulator-name = "vreg_l6m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7m_2p85: ldo7 {
+ regulator-name = "vreg_l7m_2p85";
+ regulator-min-microvolt = <2856000>;
+ regulator-max-microvolt = <2856000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+};
+
+&camss {
+ vdda-phy-supply = <&vreg_l1e_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+
+ csiphy1_ep: endpoint {
+ data-lanes = <0>;
+ remote-endpoint = <&ov02b1b_ep>;
+ };
+ };
+
+ port@3 {
+ reg = <3>;
+
+ csiphy3_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&s5kjn1_ep>;
+ };
+ };
+
+ port@4 {
+ reg = <4>;
+
+ csiphy4_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&ov32d40_ep>;
+ };
+ };
+ };
+};
+
+&cci0 {
+ status = "okay";
+};
+
+&cci0_i2c1 {
+ clock-frequency = <1000000>;
+
+ camera@10 {
+ compatible = "samsung,s5kjn1";
+ reg = <0x10>;
+
+ reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam2_default>, <&cam_rear_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+
+ orientation = <1>;
+ rotation = <0>;
+
+ lens-focus = <>9764>;
+
+ vddio-supply = <&vreg_l4b_1p8>;
+ vddd-supply = <&vreg_l2m_1p08>;
+ vdda-supply = <&vreg_l4m_2p8>;
+
+ port {
+ s5kjn1_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <857600000>;
+ remote-endpoint = <&csiphy3_ep>;
+ };
+ };
+ };
+
+ gt9764: camera-lens@c {
+ compatible = "giantec,gt9764";
+ reg = <0x0c>;
+
+ vin-supply = <&vreg_l4b_1p8>;
+ vdd-supply = <&vreg_l7m_2p85>;
+ dongwoon,clock-presc = <0>;
+ dongwoon,aac-timing = <0x6a>;
+ dongwoon,initial-focus = <0x200>;
+ dongwoon,move-delay-us = <7000>;
+ };
+};
+
+&cci1 {
+ status = "okay";
+};
+
+&cci1_i2c0 {
+ clock-frequency = <400000>;
+
+ camera@3c {
+ compatible = "ovti,ov02b1b";
+ reg = <0x3c>;
+
+ reset-gpios = <&tlmm 117 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam1_default>, <&cam_depth_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+
+ orientation = <1>;
+ rotation = <0>;
+
+ vddio-supply = <&vreg_l10b_1p8>;
+ avdd-supply = <&vreg_l6m_2p8>;
+
+ port {
+ ov02b1b_ep: endpoint {
+ data-lanes = <0>;
+ link-frequencies = /bits/ 64 <332800000>;
+ remote-endpoint = <&csiphy1_ep>;
+ };
+ };
+ };
+};
+
+&cci1_i2c1 {
+ clock-frequency = <1000000>;
+
+ camera@10 {
+ compatible = "ovti,ov32d40";
+ reg = <0x10>;
+
+ reset-gpios = <&tlmm 120 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam4_default>, <&cam_front_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK4_CLK>;
+
+ orientation = <0>;
+ rotation = <0>;
+
+ vddio-supply = <&vreg_l5m_1p8>;
+ dvdd-supply = <&vreg_l1m_1p2>;
+ avdd-supply = <&vreg_l3m_2p8>;
+
+ port {
+ ov32d40_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <842400000>;
+ remote-endpoint = <&csiphy4_ep>;
+ };
+ };
+ };
+};
+
+&ipa {
+ qcom,gsi-loader = "self";
+ memory-region = <&ipa_fw_mem>;
+ firmware-name = "qcom/sm8550/xiaomi-sheng/ipa_fws.mbn";
+ status = "okay";
+};
+
+&gpi_dma1 {
+ status = "okay";
+};
+
+&gpi_dma2 {
+ status = "okay";
+};
+
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/a740_zap.mbn";
+};
+
+&i2c0 {
+ clock-frequency = <400000>;
+ status = "okay";
+
+ typec-retimer@28 {
+ compatible = "parade,ps5169";
+ reg = <0x28>;
+
+ pinctrl-0 = <&ps5169_reset_default>;
+ pinctrl-names = "default";
+
+ reset-gpios = <&tlmm 7 GPIO_ACTIVE_LOW>;
+
+ orientation-switch;
+ retimer-switch;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ redriver_ss_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ redriver_ss_in: endpoint {
+ data-lanes = <3 2 1 0>;
+ remote-endpoint = <&usb_dp_qmpphy_out>;
+ };
+ };
+ };
+ };
+};
+
+&i2c1 {
+ status = "okay";
+
+ backlight: backlight@11 {
+ compatible = "kinetic,ktz8866a";
+ reg = <0x11>;
+ vin-supply = <&vph_pwr>;
+ enable-gpios = <&tlmm 128 GPIO_ACTIVE_HIGH>;
+ current-num-sinks = <5>;
+ kinetic,current-ramp-delay-ms = <256>;
+ kinetic,led-enable-ramp-delay-ms = <8>;
+ kinetic,enable-lcd-bias;
+ };
+};
+
+&i2c5 {
+ clock-frequency = <1000000>;
+ status = "okay";
+
+ cs35l43_trl: cs35l43@40 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x40>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TRL";
+ cirrus,dsp-part-name = "trl-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_tlh: cs35l43@41 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x41>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <99 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TLH";
+ cirrus,dsp-part-name = "tlh-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_tll: cs35l43@42 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x42>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TLL";
+ cirrus,dsp-part-name = "tll-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+};
+
+&i2c8 {
+ clock-frequency = <1000000>;
+ status = "okay";
+
+ cs35l43_blh: cs35l43@40 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x40>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BLH";
+ cirrus,dsp-part-name = "blh-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_bll: cs35l43@41 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x41>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BLL";
+ cirrus,dsp-part-name = "bll-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_brl: cs35l43@42 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x42>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <85 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BRL";
+ cirrus,dsp-part-name = "brl-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+};
+
+&i2c9 {
+ status = "okay";
+
+ nanosic_mcu@4c {
+ compatible = "nanosic,wn8030-sheng";
+ reg = <0x4c>;
+
+ pinctrl-0 = <&nanosic_mcu_default>;
+ pinctrl-names = "default";
+
+ interrupt-parent = <&tlmm>;
+ interrupts = <62 IRQ_TYPE_EDGE_RISING>;
+
+ reset-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
+ sleep-gpios = <&tlmm 57 GPIO_ACTIVE_LOW>;
+ status-gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>;
+
+ vddio-supply = <&vreg_l12b_1p8>;
+ dvdd-supply = <&vreg_l13b_3p3>;
+ };
+};
+
+&i2c_master_hub_0 {
+ status = "okay";
+};
+
+&i2c_hub_2 {
+ status = "okay";
+
+ typec-mux@42 {
+ compatible = "fcs,fsa4480";
+ reg = <0x42>;
+
+ vcc-supply = <&vreg_bob1>;
+
+ mode-switch;
+ orientation-switch;
+
+ port {
+ fsa4480_sbu_mux: endpoint {
+ remote-endpoint = <&pmic_glink_sbu>;
+ };
+ };
+ };
+};
+
+&iris {
+ status = "okay";
+
+ firmware-name = "qcom/sm8550/xiaomi-sheng/vpu30_4v.mbn";
+};
+
+&mdss {
+ status = "okay";
+};
+
+&mdss_dsi0 {
+ vdda-supply = <&vreg_l3e_1p2>;
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+ qcom,master-dsi;
+ status = "okay";
+
+ display_panel: panel@0 {
+ compatible = "xiaomi,sheng-nt36532e", "novatek,nt36532e";
+ reg = <0>;
+
+ pinctrl-0 = <&sde_dsi_active>;
+ pinctrl-1 = <&sde_dsi_suspend>;
+ pinctrl-names = "default", "sleep";
+
+ vddio-supply = <&vreg_s3g_0p7>;
+ avdd-supply = <&bl_vddpos_5p8>;
+ avee-supply = <&bl_vddneg_5p8>;
+
+ reset-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
+ backlight = <&backlight>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ panel_in_0: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ panel_in_1: endpoint {
+ remote-endpoint = <&mdss_dsi1_out>;
+ };
+ };
+ };
+ };
+};
+
+&mdss_dsi0_out {
+ remote-endpoint = <&panel_in_0>;
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi0_phy {
+ vdds-supply = <&vreg_l1e_0p88>;
+ status = "okay";
+};
+
+&mdss_dsi1 {
+ vdda-supply = <&vreg_l3e_1p2>;
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+ /* DSI1 is slave, so use DSI0 clocks */
+ assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+ status = "okay";
+};
+
+&mdss_dsi1_out {
+ remote-endpoint = <&panel_in_1>;
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi1_phy {
+ vdds-supply = <&vreg_l1e_0p88>;
+ status = "okay";
+};
+
+&mdss_dp0 {
+ status = "okay";
+};
+
+&mdss_dp0_out {
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&pcie0 {
+ wake-gpios = <&tlmm 96 GPIO_ACTIVE_HIGH>;
+ perst-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&pcie0_default_state>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
+&pcieport0 {
+ wifi@0 {
+ compatible = "pci17cb,1107";
+ reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+ vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+ vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+ };
+};
+
+&pcie0_phy {
+ vdda-phy-supply = <&vreg_l1e_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&pm8010_n {
+ status = "disabled";
+};
+
+&pm8550_flash {
+ status = "okay";
+
+ led-0 {
+ function = LED_FUNCTION_FLASH;
+ color = <LED_COLOR_ID_WHITE>;
+ led-sources = <1>;
+ led-max-microamp = <400000>;
+ flash-max-microamp = <400000>;
+ flash-max-timeout-us = <300000>;
+ function-enumerator = <0>;
+ };
+};
+
+&pm8550_gpios {
+ volume_up_n: volume-up-n-state {
+ pins = "gpio6";
+ function = "normal";
+ power-source = <1>;
+ bias-pull-up;
+ input-enable;
+ };
+};
+
+&pm8550_pwm {
+ status = "okay";
+
+ multi-led {
+ color = <LED_COLOR_ID_RGB>;
+ function = LED_FUNCTION_STATUS;
+ max-brightness = <255>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led@1 {
+ reg = <1>;
+ color = <LED_COLOR_ID_RED>;
+ };
+
+ led@2 {
+ reg = <2>;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+
+ led@3 {
+ reg = <3>;
+ color = <LED_COLOR_ID_BLUE>;
+ };
+ };
+};
+
+&pm8550b_eusb2_repeater {
+ vdd18-supply = <&vreg_l15b_1p8>;
+ vdd3-supply = <&vreg_l5b_3p1>;
+};
+
+&pm8550vs_c {
+ status = "okay";
+};
+
+&pm8550vs_d {
+ status = "okay";
+};
+
+&pm8550vs_e {
+ status = "okay";
+};
+
+&pm8550vs_g {
+ status = "okay";
+};
+
+&pon_pwrkey {
+ status = "okay";
+};
+
+&pon_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+
+ status = "okay";
+};
+
+&pmk8550_gpios {
+ pmk8550_sleep_clk: sleep-clk-state {
+ pins = "gpio3";
+ function = "func1";
+ input-disable;
+ output-enable;
+ bias-disable;
+ power-source = <0>;
+ };
+};
+
+&pmk8550_rtc {
+ nvmem-cells = <&rtc_offset>;
+ nvmem-cell-names = "offset";
+};
+
+&pmk8550_sdam_2 {
+ rtc_offset: rtc-offset@bc {
+ reg = <0xbc 0x4>;
+ };
+};
+
+&qupv3_id_0 {
+ status = "okay";
+};
+
+&qupv3_id_1 {
+ status = "okay";
+};
+
+&remoteproc_adsp {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/adsp.mbn",
+ "qcom/sm8550/xiaomi-sheng/adsp_dtb.mbn";
+ status = "okay";
+};
+
+&remoteproc_cdsp {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/cdsp.mbn",
+ "qcom/sm8550/xiaomi-sheng/cdsp_dtb.mbn";
+ status = "okay";
+};
+
+&sleep_clk {
+ clock-frequency = <32764>;
+};
+
+&spi4 {
+ status = "okay";
+
+ touchscreen@0 {
+ compatible = "novatek,NVT-ts-spi";
+ reg = <0>;
+
+ spi-max-frequency = <19200000>;
+ novatek,irq-gpio = <&tlmm 25 GPIO_ACTIVE_LOW>;
+
+ panel = <&display_panel>;
+
+ firmware-name = "novatek/novatek_nt36532_n81a_fw_csot.bin";
+ };
+};
+
+&swr1 {
+ status = "okay";
+
+ /* WCD9380 RX */
+ wcd_rx: codec@0,4 {
+ compatible = "sdw20217010d00";
+ reg = <0 4>;
+ qcom,rx-port-mapping = <1 2 3 4 5>;
+ };
+};
+
+&swr2 {
+ status = "okay";
+
+ /* WCD9380 TX */
+ wcd_tx: codec@0,3 {
+ compatible = "sdw20217010d00";
+ reg = <0 3>;
+ qcom,tx-port-mapping = <2 2 3 4>;
+ };
+};
+
+&tlmm {
+ gpio-reserved-ranges = <36 4>;
+
+ fpc_reset_low: fpc-reset-low-state {
+ pins = "gpio41";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ fpc_reset_high: fpc-reset-high-state {
+ pins = "gpio41";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ fpc_irq_active: fpc-irq-active-state {
+ pins = "gpio40";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ sde_dsi_active: sde-dsi-active-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ sde_dsi_suspend: sde-dsi-suspend-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ bt_default: bt-default-state {
+ bt-en-pins {
+ pins = "gpio81";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ sw-ctrl-pins {
+ pins = "gpio82";
+ function = "gpio";
+ bias-pull-down;
+ };
+ };
+
+ wlan_en: wlan-en-state {
+ pins = "gpio80";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+
+ qup_i2c8_data_clk: qup-i2c8-data-clk-state {
+ scl-pins {
+ pins = "gpio1";
+ function = "qup2_se0_l1_mirb";
+ drive-strength = <2>;
+ bias-pull-up = <2200>;
+ };
+
+ sda-pins {
+ pins = "gpio0";
+ function = "qup2_se0_l0_mirb";
+ drive-strength = <2>;
+ bias-pull-up = <2200>;
+ };
+ };
+
+ hall_sensor_default: hall-sensor-default-state {
+ pins = "gpio171", "gpio172";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ input-enable;
+ };
+
+ wcd_default: wcd-reset-n-active-state {
+ pins = "gpio108";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ i2s1_default: i2s1-default-state {
+ sck-pins {
+ pins = "gpio121";
+ function = "i2s1_sck";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data0-pins {
+ pins = "gpio122";
+ function = "i2s1_data0";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ws-pins {
+ pins = "gpio123";
+ function = "i2s1_ws";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+
+ data1-pins {
+ pins = "gpio124";
+ function = "i2s1_data1";
+ drive-strength = <8>;
+ bias-disable;
+ output-high;
+ };
+ };
+
+ cam_rear_reset_default: cam-rear-reset-default-state {
+ pins = "gpio118";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_depth_reset_default: cam-depth-reset-default-state {
+ pins = "gpio117";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_front_reset_default: cam-front-reset-default-state {
+ pins = "gpio120";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ ps5169_reset_default: ps5169-reset-default-state {
+ pins = "gpio7";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ qup_i2c9_data_clk: qup-i2c9-data-clk-state {
+ /* SDA, SCL */
+ pins = "gpio60", "gpio61";
+ function = "qup2_se1";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ nanosic_mcu_default: nanosic-mcu-default-state {
+ status-pins {
+ pins = "gpio56";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ sleep-pins {
+ pins = "gpio57";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ reset-pins {
+ pins = "gpio58";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+};
+
+&uart14 {
+ status = "okay";
+
+ bluetooth {
+ compatible = "qcom,wcn7850-bt";
+
+ local-bd-address = [ 00 00 00 00 00 00 ];
+
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+
+ max-speed = <3200000>;
+ };
+};
+
+&ufs_mem_hc {
+ reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>;
+ vcc-supply = <&vreg_l17b_2p5>;
+ vcc-max-microamp = <1300000>;
+ vccq-supply = <&vreg_l1g_1p2>;
+ vccq-max-microamp = <1200000>;
+ vdd-hba-supply = <&vreg_l3g_1p2>;
+
+ status = "okay";
+};
+
+&ufs_mem_phy {
+ vdda-phy-supply = <&vreg_l1d_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&usb_1 {
+ status = "okay";
+};
+
+&usb_1_dwc3_hs {
+ remote-endpoint = <&pmic_glink_hs_in>;
+};
+
+&usb_1_hsphy {
+ vdd-supply = <&vreg_l1e_0p88>;
+ vdda12-supply = <&vreg_l3e_1p2>;
+
+ phys = <&pm8550b_eusb2_repeater>;
+
+ status = "okay";
+};
+
+&usb_dp_qmpphy {
+ vdda-phy-supply = <&vreg_l3e_1p2>;
+ vdda-pll-supply = <&vreg_l3f_0p91>;
+
+ status = "okay";
+};
+
+&usb_dp_qmpphy_out {
+ remote-endpoint = <&redriver_ss_in>;
+};
+
+&xo_board {
+ clock-frequency = <76800000>;
+};
--
2.54.0.windows.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
2026-07-21 14:45 ` [PATCH v3] " code_0002
2026-07-21 14:58 ` [PATCH v4] " code_0002
@ 2026-07-21 15:01 ` sashiko-bot
1 sibling, 0 replies; 11+ messages in thread
From: sashiko-bot @ 2026-07-21 15:01 UTC (permalink / raw)
To: code_0002; +Cc: conor+dt, devicetree, robh
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [High] Missing `assigned-clocks` property in `mdss_dsi1` causes `assigned-clock-parents` to be silently ignored.
- [High] The device tree hardcodes a specific Bluetooth MAC address, leaking the author's device MAC and causing network collisions for all users.
- [Medium] Introduction of downstream-specific, undocumented bindings and structurally invalid node placement.
- [Medium] The patch retains `output-high` in the `i2s1_default` pinctrl state despite the commit message claiming its removal.
--
--- Patch [1]: [PATCH v3] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng) ---
commit a32cafba2cc54395e026266ce89446c6ffa392e4
Author: map220v <map220v300@gmail.com>
arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
Add device tree for Xiaomi Pad 6S Pro (sheng) based on SM8550.
> ---
> v3: address review comments from Konrad Dybcio
> - SM8550P has no modem; confirmed on device (dmesg shows no mpss)
> - Rename fingerprint_fpc -> fingerprint-reader, use interrupts-extended
> - pmic-glink compatibles: one per line
> - Sort DAI link subnodes alphabetically (codec before cpu)
> - Reorder root-level nodes by name
> - Place pinctrl-n properties before pinctrl-names
> - Remove msm-id, board-id, Xiaomi-specific comments
> - Remove output-low/output-high from TLMM pinctrl
[Severity: Medium]
Is this description accurate? The output-high property is still present in
the i2s1_default pinctrl state below.
> - Remove udmabuf bootargs (confirmed not in use on device)
> - Add "xiaomi-" prefix to firmware paths
> ---
> arch/arm64/boot/dts/qcom/Makefile | 1 +
> .../boot/dts/qcom/sm8550-xiaomi-sheng.dts | 1763 +++++++++++++++++
> 2 files changed, 1764 insertions(+)
> create mode 100644 arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
[ ... ]
> + bl_vddpos_5p8: bl-vddpos-regulator {
> + compatible = "regulator-fixed";
> + regulator-name = "bl_vddpos_5p8";
> + regulator-min-microvolt = <5800000>;
> + regulator-max-microvolt = <5800000>;
> + regulator-enable-ramp-delay = <233>;
> + gpio = <&tlmm 30 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> + fingerprint-reader {
> + compatible = "fpc,fpc1020";
> + interrupts-extended = <&tlmm 40 IRQ_TYPE_EDGE_RISING>;
[Severity: Medium]
Should this node be placed under its corresponding hardware bus instead of at
the root level? Also, does this use an undocumented downstream compatible?
> + fpc,gpio_rst = <&tlmm 41 GPIO_ACTIVE_HIGH>;
> + fpc,gpio_irq = <&tlmm 40 GPIO_ACTIVE_HIGH>;
[ ... ]
> +&mdss_dsi1 {
> + vdda-supply = <&vreg_l3e_1p2>;
> + qcom,dual-dsi-mode;
> + qcom,sync-dual-dsi;
> + /* DSI1 is slave, so use DSI0 clocks */
> + assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
[Severity: High]
Will assigned-clock-parents be silently ignored here without an
assigned-clocks property to specify which clocks should receive the new
parents?
> + status = "okay";
> +};
[ ... ]
> +&i2c9 {
> + status = "okay";
> +
> + nanosic_mcu@4c {
> + compatible = "nanosic,wn8030-sheng";
[Severity: Medium]
Is this an upstream-supported compatible string, or does this use an
undocumented downstream binding?
> + reg = <0x4c>;
> +
> + pinctrl-0 = <&nanosic_mcu_default>;
[ ... ]
> +&spi4 {
> + status = "okay";
> +
> + touchscreen@0 {
> + compatible = "novatek,NVT-ts-spi";
[Severity: Medium]
Does this use an undocumented downstream compatible for the touchscreen?
> + reg = <0>;
> +
> + spi-max-frequency = <19200000>;
[ ... ]
> + wcd_default: wcd-reset-n-active-state {
> + pins = "gpio108";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + };
> +
> + i2s1_default: i2s1-default-state {
> + sck-pins {
> + pins = "gpio121";
> + function = "i2s1_sck";
> + drive-strength = <8>;
> + bias-disable;
> + output-high;
> + };
[Severity: Medium]
Is the output-high property intended here? The commit message mentions this
was removed, and setting an output level on a pin configured for an alternate
function like i2s1_sck might be invalid.
> +
> + data0-pins {
> + pins = "gpio122";
[ ... ]
> +&uart14 {
> + status = "okay";
> +
> + bluetooth {
> + compatible = "qcom,wcn7850-bt";
> +
> + local-bd-address = [ 24 00 00 00 5a ad ];
[Severity: High]
Does hardcoding local-bd-address cause all users of this device tree to
broadcast the same Bluetooth MAC address? This could cause network collisions
if multiple devices are nearby. Should this be zeroed out or removed so the
bootloader can populate it?
> +
> + vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
> + vddaon-supply = <&vreg_pmu_aon_0p59>;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260721144557.1455-1-code_0002@163.com?part=1
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v4] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
2026-07-21 14:54 ` [PATCH v4] " code_0002
@ 2026-07-21 15:04 ` sashiko-bot
0 siblings, 0 replies; 11+ messages in thread
From: sashiko-bot @ 2026-07-21 15:04 UTC (permalink / raw)
To: code_0002; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Sharing the same reset GPIO across multiple cs35l43 codec nodes using `GPIO_OPEN_DRAIN` does not prevent `-EBUSY` probe failures.
- [Medium] The commit message claims to 'Remove output-low/output-high from TLMM pinctrl', but `output-high` is still present in the `i2s1_default` pin configuration.
--
--- Patch [1]: [PATCH v4] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng) ---
commit 409a566ed91cfcb1ea5b448084073b5d36eb09ec
Author: map220v <map220v300@gmail.com>
arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
Add device tree for Xiaomi Pad 6S Pro (sheng) based on SM8550.
> diff --git a/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
> new file mode 100644
> index 0000000000000..a5aa49a01dde9
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
[ ... ]
> +&i2c5 {
> + clock-frequency = <1000000>;
> + status = "okay";
> +
> + cs35l43_trl: cs35l43@40 {
> + compatible = "cirrus,cs35l43";
> + reg = <0x40>;
> + interrupt-parent = <&tlmm>;
> + interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
> + reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
[Severity: High]
The commit message mentions adding GPIO_OPEN_DRAIN to avoid -EBUSY on
shared reset-gpios. Does this actually prevent the probe failures?
When devm_gpiod_get_optional() is called by the codec driver without
GPIOD_FLAGS_BIT_NONEXCLUSIVE in the driver's C code, gpiolib enforces
exclusive access.
Since GPIO_OPEN_DRAIN only configures the hardware output behavior, it looks
like the first cs35l43 codec instance will succeed but the subsequent
instances will still fail to probe with -EBUSY.
[ ... ]
> + i2s1_default: i2s1-default-state {
> + sck-pins {
> + pins = "gpio121";
> + function = "i2s1_sck";
> + drive-strength = <8>;
> + bias-disable;
> + output-high;
> + };
[Severity: Medium]
The commit message states "Remove output-low/output-high from TLMM pinctrl",
but output-high is still present in this i2s1_default pin configuration. Did
this get missed during the cleanup?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260721145452.1996-1-code_0002@163.com?part=1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v5] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
2026-07-21 14:58 ` [PATCH v4] " code_0002
@ 2026-07-21 15:07 ` code_0002
2026-07-21 15:21 ` sashiko-bot
2026-07-21 15:14 ` [PATCH v4] " sashiko-bot
1 sibling, 1 reply; 11+ messages in thread
From: code_0002 @ 2026-07-21 15:07 UTC (permalink / raw)
To: konrad.dybcio, andersson
Cc: linux-arm-msm, devicetree, linux-kernel, code_0002, map220v,
code002-2
From: map220v <map220v300@gmail.com>
Add device tree for Xiaomi Pad 6S Pro (sheng) based on SM8550.
Signed-off-by: code002-2 <hiez832670@gmail.com>
---
v5: address additional Sashiko AI review on v3/v4
- Add assigned-clocks alongside assigned-clock-parents in mdss_dsi1
- Actually remove output-high from i2s1_default pinctrl (missed in v3)
v4: address Sashiko AI review comments
- Add GPIO_OPEN_DRAIN to shared cs35l43 reset-gpios to avoid -EBUSY
- Set Bluetooth local-bd-address to [ 00 00 00 00 00 00 ]
v3: address review comments from Konrad Dybcio
- SM8550P has no modem; confirmed on device (dmesg shows no mpss)
- Rename fingerprint_fpc -> fingerprint-reader, use interrupts-extended
- pmic-glink compatibles: one per line
- Sort DAI link subnodes alphabetically (codec before cpu)
- Reorder root-level nodes by name
- Place pinctrl-n properties before pinctrl-names
- Remove msm-id, board-id, Xiaomi-specific comments
- Remove output-low/output-high from TLMM pinctrl
- Remove udmabuf bootargs (confirmed not in use on device)
- Add "xiaomi-" prefix to firmware paths
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../boot/dts/qcom/sm8550-xiaomi-sheng.dts | 1761 +++++++++++++++++
2 files changed, 1762 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 6f33c4e2f..d8e485521 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -386,6 +386,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8550-mtp.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-qrd.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-samsung-q5q.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8550-sony-xperia-yodo-pdx234.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sm8550-xiaomi-sheng.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8650-ayaneo-pocket-s2.dtb
sm8650-hdk-display-card-dtbs := sm8650-hdk.dtb sm8650-hdk-display-card.dtbo
diff --git a/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
new file mode 100644
index 000000000..6a2185a05
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
@@ -0,0 +1,1761 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2024, map220v <map220v300@gmail.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/arm/qcom,ids.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include "sm8550.dtsi"
+#include "pm8010.dtsi"
+#include "pm8550.dtsi"
+#include "pm8550b.dtsi"
+#define PMK8550VE_SID 5
+#include "pm8550ve.dtsi"
+#include "pm8550vs.dtsi"
+#include "pmk8550.dtsi"
+
+/delete-node/ &rmtfs_mem;
+/delete-node/ &adspslpi_mem;
+/delete-node/ &xbl_dt_log_merged_mem;
+/delete-node/ &hwfence_shbuf;
+
+/* Free unused regions */
+/delete-node/ &hyp_tags_reserved_mem;
+/delete-node/ &cdsp_secure_heap_mem;
+/delete-node/ &trust_ui_vm_mem;
+/delete-node/ &trust_ui_vm_dump;
+/delete-node/ &trust_ui_vm_qrtr;
+/delete-node/ &trust_ui_vm_vblk0_ring;
+/delete-node/ &trust_ui_vm_vblk1_ring;
+/delete-node/ &trust_ui_vm_swiotlb;
+/delete-node/ &oem_vm_vblk0_ring;
+/delete-node/ &oem_vm_swiotlb;
+/delete-node/ &oem_vm_mem;
+/delete-node/ &hyp_ext_tags_mem;
+/delete-node/ &hyp_ext_reserved_mem;
+
+/delete-node/ &qup_i2c8_data_clk;
+
+/delete-node/ &qup_i2c9_data_clk;
+
+/delete-node/ &mpss_dsm_mem;
+/delete-node/ &mpss_mem;
+/delete-node/ &q6_mpss_dtb_mem;
+/delete-node/ &remoteproc_mpss;
+
+/ {
+ model = "Xiaomi Pad 6S Pro 12.4";
+ compatible = "xiaomi,sheng", "qcom,sm8550";
+ chassis-type = "tablet";
+ aliases {
+ serial0 = &uart7;
+ serial1 = &uart14;
+ };
+
+ chosen {
+ };
+
+ wcd938x: audio-codec {
+ compatible = "qcom,wcd9380-codec";
+
+ pinctrl-0 = <&wcd_default>;
+ pinctrl-names = "default";
+
+ qcom,micbias1-microvolt = <2750000>;
+ qcom,micbias2-microvolt = <2750000>;
+ qcom,micbias3-microvolt = <2750000>;
+ qcom,micbias4-microvolt = <2750000>;
+ qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+ qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+ qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+ qcom,rx-device = <&wcd_rx>;
+ qcom,tx-device = <&wcd_tx>;
+
+ reset-gpios = <&tlmm 108 GPIO_ACTIVE_LOW>;
+
+ vdd-buck-supply = <&vreg_l15b_1p8>;
+ vdd-rxtx-supply = <&vreg_l15b_1p8>;
+ vdd-io-supply = <&vreg_l15b_1p8>;
+ vdd-mic-bias-supply = <&vreg_bob1>;
+
+ #sound-dai-cells = <1>;
+ };
+
+ bl_vddneg_5p8: bl-vddneg-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "bl_vddneg_5p8";
+ regulator-min-microvolt = <5800000>;
+ regulator-max-microvolt = <5800000>;
+ regulator-enable-ramp-delay = <233>;
+ gpio = <&tlmm 31 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ bl_vddpos_5p8: bl-vddpos-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "bl_vddpos_5p8";
+ regulator-min-microvolt = <5800000>;
+ regulator-max-microvolt = <5800000>;
+ regulator-enable-ramp-delay = <233>;
+ gpio = <&tlmm 30 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ fingerprint-reader {
+ compatible = "fpc,fpc1020";
+ interrupts-extended = <&tlmm 40 IRQ_TYPE_EDGE_RISING>;
+ fpc,gpio_rst = <&tlmm 41 GPIO_ACTIVE_HIGH>;
+ fpc,gpio_irq = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+ irq-gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+ fp_vdd_vreg-supply = <&vreg_l9b_3p3>;
+
+ pinctrl-0 = <&fpc_reset_low>;
+ pinctrl-1 = <&fpc_reset_high>;
+ pinctrl-2 = <&fpc_irq_active>;
+ pinctrl-names = "fpc1020_reset_reset",
+ "fpc1020_reset_active",
+ "fpc1020_irq_active";
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&volume_up_n>, <&hall_sensor_default>;
+ pinctrl-names = "default";
+
+ key-volume-up {
+ label = "Volume Up";
+ linux,code = <KEY_VOLUMEUP>;
+ gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+
+ event-hall-sensor {
+ label = "Hall Effect Sensor";
+ gpios = <&tlmm 171 GPIO_ACTIVE_LOW>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_LID>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+
+ event-tablet-mode {
+ label = "Tablet Mode Switch";
+ gpios = <&tlmm 172 GPIO_ACTIVE_LOW>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_TABLET_MODE>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+ };
+
+ pmic-glink {
+ compatible = "xiaomi,sm8550-pmic-glink",
+ "qcom,sm8550-pmic-glink",
+ "qcom,pmic-glink";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ orientation-gpios = <&tlmm 11 GPIO_ACTIVE_HIGH>;
+
+ connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ power-role = "dual";
+ data-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ pmic_glink_hs_in: endpoint {
+ remote-endpoint = <&usb_1_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ pmic_glink_ss_in: endpoint {
+ remote-endpoint = <&redriver_ss_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_sbu: endpoint {
+ remote-endpoint = <&fsa4480_sbu_mux>;
+ };
+ };
+ };
+ };
+ };
+
+ reserved-memory {
+ xbl_ramdump_mem: xbl-ramdump-region@81200000 {
+ reg = <0 0x81200000 0 0x280000>;
+ no-map;
+ };
+
+ xbl_dt_log_mem: xbl-dt-log-region@81a00000 {
+ reg = <0 0x81a00000 0 0x40000>;
+ no-map;
+ };
+
+ aop_image_mem: aop-image-region@81c00000 {
+ reg = <0 0x81c00000 0 0x60000>;
+ no-map;
+ };
+
+ adspslpi_mem: adspslpi-region@9ea00000 {
+ reg = <0 0x9ea00000 0 0x4680000>;
+ no-map;
+ };
+
+ rmtfs_mem: rmtfs-region@ccd00000 {
+ compatible = "qcom,rmtfs-mem";
+ reg = <0x0 0xccd00000 0x0 0x280000>;
+ no-map;
+
+ qcom,client-id = <1>;
+ };
+
+ hwfence_shbuf: hwfence-shbuf-region@e6440000 {
+ reg = <0 0xe6440000 0 0x2dd000>;
+ no-map;
+ };
+
+ llcc_lpi_mem: llcc-lpi-region@ff800000 {
+ reg = <0 0xff800000 0 0x600000>;
+ no-map;
+ };
+
+ /* Required for libcamera to allocate buffers when cma is used. */
+ linux,cma {
+ compatible = "shared-dma-pool";
+ size = <0x0 0x30000000>;
+ reusable;
+ linux,cma-default;
+ };
+ };
+
+ sound {
+ compatible = "qcom,sm8550-sndcard", "qcom,sm8450-sndcard";
+ pinctrl-0 = <&i2s1_default>;
+ pinctrl-names = "default";
+
+ model = "Xiaomi-Pad6SPro";
+ audio-routing = "IN1_HPHL", "HPHL_OUT",
+ "IN2_HPHR", "HPHR_OUT",
+ "AMIC1", "MIC BIAS1",
+ "AMIC2", "MIC BIAS2",
+ "AMIC3", "MIC BIAS3",
+ "AMIC4", "MIC BIAS3",
+ "AMIC5", "MIC BIAS4",
+ "TX SWR_INPUT0", "ADC1_OUTPUT",
+ "TX SWR_INPUT1", "ADC2_OUTPUT",
+ "TX SWR_INPUT0", "ADC3_OUTPUT",
+ "TX SWR_INPUT1", "ADC4_OUTPUT";
+
+ secondary-i2s-dai-link {
+ link-name = "Secondary MI2S Playback";
+
+ codec {
+ sound-dai = <&cs35l43_tll>, <&cs35l43_tlh>, <&cs35l43_trl>,
+ <&cs35l43_bll>, <&cs35l43_blh>, <&cs35l43_brl>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai SECONDARY_MI2S_RX>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wcd-playback-dai-link {
+ link-name = "WCD Playback";
+
+ codec {
+ sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wcd-capture-dai-link {
+ link-name = "WCD Capture";
+
+ codec {
+ sound-dai = <&wcd938x 1>, <&swr2 0>, <&lpass_txmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ displayport-dai-link {
+ link-name = "DisplayPort Playback";
+
+ codec {
+ sound-dai = <&mdss_dp0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai DISPLAY_PORT_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+ };
+
+ 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;
+ };
+
+ wcn7850-pmu {
+ compatible = "qcom,wcn7850-pmu";
+
+ pinctrl-0 = <&wlan_en>, <&bt_default>, <&pmk8550_sleep_clk>;
+ pinctrl-names = "default";
+
+ wlan-enable-gpios = <&tlmm 80 GPIO_ACTIVE_HIGH>;
+ bt-enable-gpios = <&tlmm 81 GPIO_ACTIVE_HIGH>;
+
+ vdd-supply = <&vreg_s5g_0p8>;
+ vddio-supply = <&vreg_l15b_1p8>;
+ vddaon-supply = <&vreg_s2g_0p8>;
+ vdddig-supply = <&vreg_s4e_0p9>;
+ vddrfa1p2-supply = <&vreg_s4g_1p3>;
+ vddrfa1p8-supply = <&vreg_s6g_1p8>;
+
+ regulators {
+ vreg_pmu_rfa_cmn: ldo0 {
+ regulator-name = "vreg_pmu_rfa_cmn";
+ };
+
+ vreg_pmu_aon_0p59: ldo1 {
+ regulator-name = "vreg_pmu_aon_0p59";
+ };
+
+ vreg_pmu_wlcx_0p8: ldo2 {
+ regulator-name = "vreg_pmu_wlcx_0p8";
+ };
+
+ vreg_pmu_wlmx_0p85: ldo3 {
+ regulator-name = "vreg_pmu_wlmx_0p85";
+ };
+
+ vreg_pmu_btcmx_0p85: ldo4 {
+ regulator-name = "vreg_pmu_btcmx_0p85";
+ };
+
+ vreg_pmu_rfa_0p8: ldo5 {
+ regulator-name = "vreg_pmu_rfa_0p8";
+ };
+
+ vreg_pmu_rfa_1p2: ldo6 {
+ regulator-name = "vreg_pmu_rfa_1p2";
+ };
+
+ vreg_pmu_rfa_1p8: ldo7 {
+ regulator-name = "vreg_pmu_rfa_1p8";
+ };
+
+ vreg_pmu_pcie_0p9: ldo8 {
+ regulator-name = "vreg_pmu_pcie_0p9";
+ };
+
+ vreg_pmu_pcie_1p8: ldo9 {
+ regulator-name = "vreg_pmu_pcie_1p8";
+ };
+ };
+ };
+};
+
+&apps_rsc {
+ regulators-0 {
+ compatible = "qcom,pm8550-rpmh-regulators";
+ qcom,pmic-id = "b";
+
+ vdd-bob1-supply = <&vph_pwr>;
+ vdd-bob2-supply = <&vph_pwr>;
+ vdd-l1-l4-l10-supply = <&vreg_s6g_1p8>;
+ vdd-l2-l13-l14-supply = <&vreg_bob1>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ vdd-l5-l16-supply = <&vreg_bob1>;
+ vdd-l6-l7-supply = <&vreg_bob1>;
+ vdd-l8-l9-supply = <&vreg_bob1>;
+ vdd-l11-supply = <&vreg_s4g_1p3>;
+ vdd-l12-supply = <&vreg_s6g_1p8>;
+ vdd-l15-supply = <&vreg_s6g_1p8>;
+ vdd-l17-supply = <&vreg_bob2>;
+
+ vreg_bob1: bob1 {
+ regulator-name = "vreg_bob1";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3960000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_bob2: bob2 {
+ regulator-name = "vreg_bob2";
+ regulator-min-microvolt = <2704000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1b_1p8: ldo1 {
+ regulator-name = "vreg_l1b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2b_3p0: ldo2 {
+ regulator-name = "vreg_l2b_3p0";
+ regulator-min-microvolt = <3008000>;
+ regulator-max-microvolt = <3008000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4b_1p8: ldo4 {
+ regulator-name = "vreg_l4b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5b_3p1: ldo5 {
+ regulator-name = "vreg_l5b_3p1";
+ regulator-min-microvolt = <3104000>;
+ regulator-max-microvolt = <3104000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6b_1p8: ldo6 {
+ regulator-name = "vreg_l6b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7b_1p8: ldo7 {
+ regulator-name = "vreg_l7b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l8b_1p8: ldo8 {
+ regulator-name = "vreg_l8b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l9b_3p3: ldo9 {
+ regulator-name = "vreg_l9b_3p3";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l10b_1p8: ldo10 {
+ regulator-name = "vreg_l10b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l11b_1p2: ldo11 {
+ regulator-name = "vreg_l11b_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1504000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l12b_1p8: ldo12 {
+ regulator-name = "vreg_l12b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l13b_3p3: ldo13 {
+ regulator-name = "vreg_l13b_3p3";
+ regulator-min-microvolt = <3296000>;
+ regulator-max-microvolt = <3296000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l14b_3p2: ldo14 {
+ regulator-name = "vreg_l14b_3p2";
+ regulator-min-microvolt = <3200000>;
+ regulator-max-microvolt = <3200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l15b_1p8: ldo15 {
+ regulator-name = "vreg_l15b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l16b_2p8: ldo16 {
+ regulator-name = "vreg_l16b_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l17b_2p5: ldo17 {
+ regulator-name = "vreg_l17b_2p5";
+ regulator-min-microvolt = <2504000>;
+ regulator-max-microvolt = <2504000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-1 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "c";
+
+ vdd-l3-supply = <&vreg_s4e_0p9>;
+
+ vreg_l3c_0p91: ldo3 {
+ regulator-name = "vreg_l3c_0p9";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-2 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "d";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+
+ vreg_l1d_0p88: ldo1 {
+ regulator-name = "vreg_l1d_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-3 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "e";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+ vdd-l2-supply = <&vreg_s4e_0p9>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ vdd-s4-supply = <&vph_pwr>;
+ vdd-s5-supply = <&vph_pwr>;
+
+ vreg_s4e_0p9: smps4 {
+ regulator-name = "vreg_s4e_0p9";
+ regulator-min-microvolt = <904000>;
+ regulator-max-microvolt = <984000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s5e_1p1: smps5 {
+ regulator-name = "vreg_s5e_1p1";
+ regulator-min-microvolt = <1080000>;
+ regulator-max-microvolt = <1120000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1e_0p88: ldo1 {
+ regulator-name = "vreg_l1e_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <880000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2e_0p9: ldo2 {
+ regulator-name = "vreg_l2e_0p9";
+ regulator-min-microvolt = <904000>;
+ regulator-max-microvolt = <970000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3e_1p2: ldo3 {
+ regulator-name = "vreg_l3e_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-4 {
+ compatible = "qcom,pm8550ve-rpmh-regulators";
+ qcom,pmic-id = "f";
+
+ vdd-l1-supply = <&vreg_s4e_0p9>;
+ vdd-l2-supply = <&vreg_s4e_0p9>;
+ vdd-l3-supply = <&vreg_s4e_0p9>;
+ vdd-s4-supply = <&vph_pwr>;
+
+ vreg_s4f_0p5: smps4 {
+ regulator-name = "vreg_s4f_0p5";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <700000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1f_0p9: ldo1 {
+ regulator-name = "vreg_l1f_0p9";
+ regulator-min-microvolt = <912000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2f_0p88: ldo2 {
+ regulator-name = "vreg_l2f_0p88";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3f_0p91: ldo3 {
+ regulator-name = "vreg_l3f_0p91";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-5 {
+ compatible = "qcom,pm8550vs-rpmh-regulators";
+ qcom,pmic-id = "g";
+
+ vdd-l1-supply = <&vreg_s4g_1p3>;
+ vdd-l2-supply = <&vreg_s4g_1p3>;
+ vdd-l3-supply = <&vreg_s4g_1p3>;
+ 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>;
+
+ vreg_s1g_1p2: smps1 {
+ regulator-name = "vreg_s1g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s2g_0p8: smps2 {
+ regulator-name = "vreg_s2g_0p8";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s3g_0p7: smps3 {
+ regulator-name = "vreg_s3g_0p7";
+ regulator-min-microvolt = <600000>;
+ regulator-max-microvolt = <1900000>; //2004000
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s4g_1p3: smps4 {
+ regulator-name = "vreg_s4g_1p3";
+ regulator-min-microvolt = <1256000>;
+ regulator-max-microvolt = <1408000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s5g_0p8: smps5 {
+ regulator-name = "vreg_s5g_0p8";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <1004000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s6g_1p8: smps6 {
+ regulator-name = "vreg_s6g_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1g_1p2: ldo1 {
+ regulator-name = "vreg_l1g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2g_1p2: ldo2 {
+ regulator-name = "vreg_l2g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3g_1p2: ldo3 {
+ regulator-name = "vreg_l3g_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ regulators-6 {
+ compatible = "qcom,pm8010-rpmh-regulators";
+ qcom,pmic-id = "m";
+
+ vdd-l1-l2-supply = <&vreg_s4g_1p3>;
+ vdd-l3-l4-supply = <&vreg_bob2>;
+ vdd-l5-supply = <&vreg_s6g_1p8>;
+ vdd-l6-supply = <&vreg_bob2>;
+ vdd-l7-supply = <&vreg_bob2>;
+
+ vreg_l1m_1p2: ldo1 {
+ regulator-name = "vreg_l1m_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2m_1p08: ldo2 {
+ regulator-name = "vreg_l2m_1p08";
+ regulator-min-microvolt = <1080000>;
+ regulator-max-microvolt = <1080000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3m_2p8: ldo3 {
+ regulator-name = "vreg_l3m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4m_2p8: ldo4 {
+ regulator-name = "vreg_l4m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5m_1p8: ldo5 {
+ regulator-name = "vreg_l5m_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6m_2p8: ldo6 {
+ regulator-name = "vreg_l6m_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7m_2p85: ldo7 {
+ regulator-name = "vreg_l7m_2p85";
+ regulator-min-microvolt = <2856000>;
+ regulator-max-microvolt = <2856000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+};
+
+&camss {
+ vdda-phy-supply = <&vreg_l1e_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+
+ csiphy1_ep: endpoint {
+ data-lanes = <0>;
+ remote-endpoint = <&ov02b1b_ep>;
+ };
+ };
+
+ port@3 {
+ reg = <3>;
+
+ csiphy3_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&s5kjn1_ep>;
+ };
+ };
+
+ port@4 {
+ reg = <4>;
+
+ csiphy4_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&ov32d40_ep>;
+ };
+ };
+ };
+};
+
+&cci0 {
+ status = "okay";
+};
+
+&cci0_i2c1 {
+ clock-frequency = <1000000>;
+
+ camera@10 {
+ compatible = "samsung,s5kjn1";
+ reg = <0x10>;
+
+ reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam2_default>, <&cam_rear_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+
+ orientation = <1>;
+ rotation = <0>;
+
+ lens-focus = <>9764>;
+
+ vddio-supply = <&vreg_l4b_1p8>;
+ vddd-supply = <&vreg_l2m_1p08>;
+ vdda-supply = <&vreg_l4m_2p8>;
+
+ port {
+ s5kjn1_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <857600000>;
+ remote-endpoint = <&csiphy3_ep>;
+ };
+ };
+ };
+
+ gt9764: camera-lens@c {
+ compatible = "giantec,gt9764";
+ reg = <0x0c>;
+
+ vin-supply = <&vreg_l4b_1p8>;
+ vdd-supply = <&vreg_l7m_2p85>;
+ dongwoon,clock-presc = <0>;
+ dongwoon,aac-timing = <0x6a>;
+ dongwoon,initial-focus = <0x200>;
+ dongwoon,move-delay-us = <7000>;
+ };
+};
+
+&cci1 {
+ status = "okay";
+};
+
+&cci1_i2c0 {
+ clock-frequency = <400000>;
+
+ camera@3c {
+ compatible = "ovti,ov02b1b";
+ reg = <0x3c>;
+
+ reset-gpios = <&tlmm 117 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam1_default>, <&cam_depth_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK1_CLK>;
+
+ orientation = <1>;
+ rotation = <0>;
+
+ vddio-supply = <&vreg_l10b_1p8>;
+ avdd-supply = <&vreg_l6m_2p8>;
+
+ port {
+ ov02b1b_ep: endpoint {
+ data-lanes = <0>;
+ link-frequencies = /bits/ 64 <332800000>;
+ remote-endpoint = <&csiphy1_ep>;
+ };
+ };
+ };
+};
+
+&cci1_i2c1 {
+ clock-frequency = <1000000>;
+
+ camera@10 {
+ compatible = "ovti,ov32d40";
+ reg = <0x10>;
+
+ reset-gpios = <&tlmm 120 GPIO_ACTIVE_LOW>;
+ pinctrl-0 = <&cam4_default>, <&cam_front_reset_default>;
+ pinctrl-names = "default";
+
+ clocks = <&camcc CAM_CC_MCLK4_CLK>;
+
+ orientation = <0>;
+ rotation = <0>;
+
+ vddio-supply = <&vreg_l5m_1p8>;
+ dvdd-supply = <&vreg_l1m_1p2>;
+ avdd-supply = <&vreg_l3m_2p8>;
+
+ port {
+ ov32d40_ep: endpoint {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <842400000>;
+ remote-endpoint = <&csiphy4_ep>;
+ };
+ };
+ };
+};
+
+&ipa {
+ qcom,gsi-loader = "self";
+ memory-region = <&ipa_fw_mem>;
+ firmware-name = "qcom/sm8550/xiaomi-sheng/ipa_fws.mbn";
+ status = "okay";
+};
+
+&gpi_dma1 {
+ status = "okay";
+};
+
+&gpi_dma2 {
+ status = "okay";
+};
+
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/a740_zap.mbn";
+};
+
+&i2c0 {
+ clock-frequency = <400000>;
+ status = "okay";
+
+ typec-retimer@28 {
+ compatible = "parade,ps5169";
+ reg = <0x28>;
+
+ pinctrl-0 = <&ps5169_reset_default>;
+ pinctrl-names = "default";
+
+ reset-gpios = <&tlmm 7 GPIO_ACTIVE_LOW>;
+
+ orientation-switch;
+ retimer-switch;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ redriver_ss_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ redriver_ss_in: endpoint {
+ data-lanes = <3 2 1 0>;
+ remote-endpoint = <&usb_dp_qmpphy_out>;
+ };
+ };
+ };
+ };
+};
+
+&i2c1 {
+ status = "okay";
+
+ backlight: backlight@11 {
+ compatible = "kinetic,ktz8866a";
+ reg = <0x11>;
+ vin-supply = <&vph_pwr>;
+ enable-gpios = <&tlmm 128 GPIO_ACTIVE_HIGH>;
+ current-num-sinks = <5>;
+ kinetic,current-ramp-delay-ms = <256>;
+ kinetic,led-enable-ramp-delay-ms = <8>;
+ kinetic,enable-lcd-bias;
+ };
+};
+
+&i2c5 {
+ clock-frequency = <1000000>;
+ status = "okay";
+
+ cs35l43_trl: cs35l43@40 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x40>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TRL";
+ cirrus,dsp-part-name = "trl-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_tlh: cs35l43@41 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x41>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <99 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TLH";
+ cirrus,dsp-part-name = "tlh-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_tll: cs35l43@42 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x42>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TLL";
+ cirrus,dsp-part-name = "tll-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+};
+
+&i2c8 {
+ clock-frequency = <1000000>;
+ status = "okay";
+
+ cs35l43_blh: cs35l43@40 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x40>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BLH";
+ cirrus,dsp-part-name = "blh-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_bll: cs35l43@41 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x41>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BLL";
+ cirrus,dsp-part-name = "bll-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+
+ cs35l43_brl: cs35l43@42 {
+ compatible = "cirrus,cs35l43";
+ reg = <0x42>;
+ interrupt-parent = <&tlmm>;
+ interrupts = <85 IRQ_TYPE_LEVEL_LOW>;
+ reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "BRL";
+ cirrus,dsp-part-name = "brl-cs35l43";
+ cirrus,vpbr-thld = <8>;
+ cirrus,vpbr-max-att = <3>;
+ cirrus,vpbr-atk-vol = <5>;
+ cirrus,vpbr-atk-rate = <0>;
+ cirrus,vpbr-wait = <0>;
+ cirrus,vpbr-rel-rate = <0>;
+ cirrus,vpbr-enable = <1>;
+ cirrus,gpio2-src-sel = <4>;
+ cirrus,asp-sdout-hiz = <3>;
+ cirrus,bst-ipk-ma = <4000>;
+ };
+};
+
+&i2c9 {
+ status = "okay";
+
+ nanosic_mcu@4c {
+ compatible = "nanosic,wn8030-sheng";
+ reg = <0x4c>;
+
+ pinctrl-0 = <&nanosic_mcu_default>;
+ pinctrl-names = "default";
+
+ interrupt-parent = <&tlmm>;
+ interrupts = <62 IRQ_TYPE_EDGE_RISING>;
+
+ reset-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
+ sleep-gpios = <&tlmm 57 GPIO_ACTIVE_LOW>;
+ status-gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>;
+
+ vddio-supply = <&vreg_l12b_1p8>;
+ dvdd-supply = <&vreg_l13b_3p3>;
+ };
+};
+
+&i2c_master_hub_0 {
+ status = "okay";
+};
+
+&i2c_hub_2 {
+ status = "okay";
+
+ typec-mux@42 {
+ compatible = "fcs,fsa4480";
+ reg = <0x42>;
+
+ vcc-supply = <&vreg_bob1>;
+
+ mode-switch;
+ orientation-switch;
+
+ port {
+ fsa4480_sbu_mux: endpoint {
+ remote-endpoint = <&pmic_glink_sbu>;
+ };
+ };
+ };
+};
+
+&iris {
+ status = "okay";
+
+ firmware-name = "qcom/sm8550/xiaomi-sheng/vpu30_4v.mbn";
+};
+
+&mdss {
+ status = "okay";
+};
+
+&mdss_dsi0 {
+ vdda-supply = <&vreg_l3e_1p2>;
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+ qcom,master-dsi;
+ status = "okay";
+
+ display_panel: panel@0 {
+ compatible = "xiaomi,sheng-nt36532e", "novatek,nt36532e";
+ reg = <0>;
+
+ pinctrl-0 = <&sde_dsi_active>;
+ pinctrl-1 = <&sde_dsi_suspend>;
+ pinctrl-names = "default", "sleep";
+
+ vddio-supply = <&vreg_s3g_0p7>;
+ avdd-supply = <&bl_vddpos_5p8>;
+ avee-supply = <&bl_vddneg_5p8>;
+
+ reset-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
+ backlight = <&backlight>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ panel_in_0: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ panel_in_1: endpoint {
+ remote-endpoint = <&mdss_dsi1_out>;
+ };
+ };
+ };
+ };
+};
+
+&mdss_dsi0_out {
+ remote-endpoint = <&panel_in_0>;
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi0_phy {
+ vdds-supply = <&vreg_l1e_0p88>;
+ status = "okay";
+};
+
+&mdss_dsi1 {
+ vdda-supply = <&vreg_l3e_1p2>;
+ qcom,dual-dsi-mode;
+ qcom,sync-dual-dsi;
+ /* DSI1 is slave, so use DSI0 clocks */
+ assigned-clocks = <&mdss_dsi1_phy 0>, <&mdss_dsi1_phy 1>;
+ assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+ status = "okay";
+};
+
+&mdss_dsi1_out {
+ remote-endpoint = <&panel_in_1>;
+ data-lanes = <0 1 2 3>;
+};
+
+&mdss_dsi1_phy {
+ vdds-supply = <&vreg_l1e_0p88>;
+ status = "okay";
+};
+
+&mdss_dp0 {
+ status = "okay";
+};
+
+&mdss_dp0_out {
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&pcie0 {
+ wake-gpios = <&tlmm 96 GPIO_ACTIVE_HIGH>;
+ perst-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&pcie0_default_state>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
+&pcieport0 {
+ wifi@0 {
+ compatible = "pci17cb,1107";
+ reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+ vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+ vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+ };
+};
+
+&pcie0_phy {
+ vdda-phy-supply = <&vreg_l1e_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&pm8010_n {
+ status = "disabled";
+};
+
+&pm8550_flash {
+ status = "okay";
+
+ led-0 {
+ function = LED_FUNCTION_FLASH;
+ color = <LED_COLOR_ID_WHITE>;
+ led-sources = <1>;
+ led-max-microamp = <400000>;
+ flash-max-microamp = <400000>;
+ flash-max-timeout-us = <300000>;
+ function-enumerator = <0>;
+ };
+};
+
+&pm8550_gpios {
+ volume_up_n: volume-up-n-state {
+ pins = "gpio6";
+ function = "normal";
+ power-source = <1>;
+ bias-pull-up;
+ input-enable;
+ };
+};
+
+&pm8550_pwm {
+ status = "okay";
+
+ multi-led {
+ color = <LED_COLOR_ID_RGB>;
+ function = LED_FUNCTION_STATUS;
+ max-brightness = <255>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led@1 {
+ reg = <1>;
+ color = <LED_COLOR_ID_RED>;
+ };
+
+ led@2 {
+ reg = <2>;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+
+ led@3 {
+ reg = <3>;
+ color = <LED_COLOR_ID_BLUE>;
+ };
+ };
+};
+
+&pm8550b_eusb2_repeater {
+ vdd18-supply = <&vreg_l15b_1p8>;
+ vdd3-supply = <&vreg_l5b_3p1>;
+};
+
+&pm8550vs_c {
+ status = "okay";
+};
+
+&pm8550vs_d {
+ status = "okay";
+};
+
+&pm8550vs_e {
+ status = "okay";
+};
+
+&pm8550vs_g {
+ status = "okay";
+};
+
+&pon_pwrkey {
+ status = "okay";
+};
+
+&pon_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+
+ status = "okay";
+};
+
+&pmk8550_gpios {
+ pmk8550_sleep_clk: sleep-clk-state {
+ pins = "gpio3";
+ function = "func1";
+ input-disable;
+ output-enable;
+ bias-disable;
+ power-source = <0>;
+ };
+};
+
+&pmk8550_rtc {
+ nvmem-cells = <&rtc_offset>;
+ nvmem-cell-names = "offset";
+};
+
+&pmk8550_sdam_2 {
+ rtc_offset: rtc-offset@bc {
+ reg = <0xbc 0x4>;
+ };
+};
+
+&qupv3_id_0 {
+ status = "okay";
+};
+
+&qupv3_id_1 {
+ status = "okay";
+};
+
+&remoteproc_adsp {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/adsp.mbn",
+ "qcom/sm8550/xiaomi-sheng/adsp_dtb.mbn";
+ status = "okay";
+};
+
+&remoteproc_cdsp {
+ firmware-name = "qcom/sm8550/xiaomi-sheng/cdsp.mbn",
+ "qcom/sm8550/xiaomi-sheng/cdsp_dtb.mbn";
+ status = "okay";
+};
+
+&sleep_clk {
+ clock-frequency = <32764>;
+};
+
+&spi4 {
+ status = "okay";
+
+ touchscreen@0 {
+ compatible = "novatek,NVT-ts-spi";
+ reg = <0>;
+
+ spi-max-frequency = <19200000>;
+ novatek,irq-gpio = <&tlmm 25 GPIO_ACTIVE_LOW>;
+
+ panel = <&display_panel>;
+
+ firmware-name = "novatek/novatek_nt36532_n81a_fw_csot.bin";
+ };
+};
+
+&swr1 {
+ status = "okay";
+
+ /* WCD9380 RX */
+ wcd_rx: codec@0,4 {
+ compatible = "sdw20217010d00";
+ reg = <0 4>;
+ qcom,rx-port-mapping = <1 2 3 4 5>;
+ };
+};
+
+&swr2 {
+ status = "okay";
+
+ /* WCD9380 TX */
+ wcd_tx: codec@0,3 {
+ compatible = "sdw20217010d00";
+ reg = <0 3>;
+ qcom,tx-port-mapping = <2 2 3 4>;
+ };
+};
+
+&tlmm {
+ gpio-reserved-ranges = <36 4>;
+
+ fpc_reset_low: fpc-reset-low-state {
+ pins = "gpio41";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ fpc_reset_high: fpc-reset-high-state {
+ pins = "gpio41";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ fpc_irq_active: fpc-irq-active-state {
+ pins = "gpio40";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ sde_dsi_active: sde-dsi-active-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ sde_dsi_suspend: sde-dsi-suspend-state {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ bt_default: bt-default-state {
+ bt-en-pins {
+ pins = "gpio81";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ sw-ctrl-pins {
+ pins = "gpio82";
+ function = "gpio";
+ bias-pull-down;
+ };
+ };
+
+ wlan_en: wlan-en-state {
+ pins = "gpio80";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-down;
+ };
+
+ qup_i2c8_data_clk: qup-i2c8-data-clk-state {
+ scl-pins {
+ pins = "gpio1";
+ function = "qup2_se0_l1_mirb";
+ drive-strength = <2>;
+ bias-pull-up = <2200>;
+ };
+
+ sda-pins {
+ pins = "gpio0";
+ function = "qup2_se0_l0_mirb";
+ drive-strength = <2>;
+ bias-pull-up = <2200>;
+ };
+ };
+
+ hall_sensor_default: hall-sensor-default-state {
+ pins = "gpio171", "gpio172";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ input-enable;
+ };
+
+ wcd_default: wcd-reset-n-active-state {
+ pins = "gpio108";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ i2s1_default: i2s1-default-state {
+ sck-pins {
+ pins = "gpio121";
+ function = "i2s1_sck";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ data0-pins {
+ pins = "gpio122";
+ function = "i2s1_data0";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ ws-pins {
+ pins = "gpio123";
+ function = "i2s1_ws";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ data1-pins {
+ pins = "gpio124";
+ function = "i2s1_data1";
+ drive-strength = <8>;
+ bias-disable;
+ };
+ };
+
+ cam_rear_reset_default: cam-rear-reset-default-state {
+ pins = "gpio118";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_depth_reset_default: cam-depth-reset-default-state {
+ pins = "gpio117";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ cam_front_reset_default: cam-front-reset-default-state {
+ pins = "gpio120";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ ps5169_reset_default: ps5169-reset-default-state {
+ pins = "gpio7";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ qup_i2c9_data_clk: qup-i2c9-data-clk-state {
+ /* SDA, SCL */
+ pins = "gpio60", "gpio61";
+ function = "qup2_se1";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ nanosic_mcu_default: nanosic-mcu-default-state {
+ status-pins {
+ pins = "gpio56";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ sleep-pins {
+ pins = "gpio57";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ reset-pins {
+ pins = "gpio58";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+};
+
+&uart14 {
+ status = "okay";
+
+ bluetooth {
+ compatible = "qcom,wcn7850-bt";
+
+ local-bd-address = [ 00 00 00 00 00 00 ];
+
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+
+ max-speed = <3200000>;
+ };
+};
+
+&ufs_mem_hc {
+ reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>;
+ vcc-supply = <&vreg_l17b_2p5>;
+ vcc-max-microamp = <1300000>;
+ vccq-supply = <&vreg_l1g_1p2>;
+ vccq-max-microamp = <1200000>;
+ vdd-hba-supply = <&vreg_l3g_1p2>;
+
+ status = "okay";
+};
+
+&ufs_mem_phy {
+ vdda-phy-supply = <&vreg_l1d_0p88>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&usb_1 {
+ status = "okay";
+};
+
+&usb_1_dwc3_hs {
+ remote-endpoint = <&pmic_glink_hs_in>;
+};
+
+&usb_1_hsphy {
+ vdd-supply = <&vreg_l1e_0p88>;
+ vdda12-supply = <&vreg_l3e_1p2>;
+
+ phys = <&pm8550b_eusb2_repeater>;
+
+ status = "okay";
+};
+
+&usb_dp_qmpphy {
+ vdda-phy-supply = <&vreg_l3e_1p2>;
+ vdda-pll-supply = <&vreg_l3f_0p91>;
+
+ status = "okay";
+};
+
+&usb_dp_qmpphy_out {
+ remote-endpoint = <&redriver_ss_in>;
+};
+
+&xo_board {
+ clock-frequency = <76800000>;
+};
--
2.54.0.windows.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v4] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
2026-07-21 14:58 ` [PATCH v4] " code_0002
2026-07-21 15:07 ` [PATCH v5] " code_0002
@ 2026-07-21 15:14 ` sashiko-bot
1 sibling, 0 replies; 11+ messages in thread
From: sashiko-bot @ 2026-07-21 15:14 UTC (permalink / raw)
To: code_0002; +Cc: robh, devicetree, conor+dt
Thank you for your contribution! Sashiko AI review found 6 potential issue(s) to consider:
- [High] Adding GPIO_OPEN_DRAIN to shared reset-gpios does not bypass the gpiolib exclusive request check, causing subsequent codec probes to fail with -EBUSY.
- [High] The reset-gpios for cs35l43 codecs use GPIO_ACTIVE_HIGH, which inverts the required active-low reset polarity.
- [High] Invalid compatible string `kinetic,ktz8866a` prevents the backlight driver from probing.
- [High] Missing pinctrl configurations for critical interrupt and reset GPIOs, which may leave inputs floating.
- [Medium] The commit violates the kernel's Developer Certificate of Origin (DCO) and Submitting Patches guidelines regarding identity and chain of custody.
- [Medium] The `output-high` properties were incorrectly applied to hardware-muxed pins in `i2s1_default` and were not removed as claimed in the changelog.
--
--- Patch [1]: [PATCH v4] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng) ---
commit 67dc6a3d188573154b653dea21a66bad2811a5b2
Author: map220v <map220v300@gmail.com>
arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
Add device tree for Xiaomi Pad 6S Pro (sheng) based on SM8550.
> Author: map220v <map220v300@gmail.com>
[ ... ]
> Signed-off-by: code002-2 <hiez832670@gmail.com>
[Severity: Medium]
Do these identities meet the kernel's Developer Certificate of Origin (DCO)
requirements? Both the Author and the Signed-off-by tags appear to use
pseudonyms.
Furthermore, the Author's identity is missing from the Signed-off-by chain,
which breaks the custody tracking.
> diff --git a/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
> new file mode 100644
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
[ ... ]
> +&i2c1 {
> + status = "okay";
> +
> + backlight: backlight@11 {
> + compatible = "kinetic,ktz8866a";
[Severity: High]
Does the upstream Kinetic KTZ8866 backlight driver recognize the 'a' suffix?
The driver in drivers/video/backlight/ktz8866.c and its bindings seem to only
support "kinetic,ktz8866". Without a fallback, could this silently fail to
probe and leave the display unlit?
[ ... ]
> +&i2c5 {
> + clock-frequency = <1000000>;
> + status = "okay";
> +
> + cs35l43_trl: cs35l43@40 {
> + compatible = "cirrus,cs35l43";
> + reg = <0x40>;
> + interrupt-parent = <&tlmm>;
> + interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
> + reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
[Severity: High]
Does adding GPIO_OPEN_DRAIN bypass the gpiolib exclusive request check?
Since all six cs35l43 codec nodes share this exact reset GPIO, gpiolib will
likely return -EBUSY for all subsequent codec probes after the first one
succeeds.
[Severity: High]
Also, does (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN) invert the intended active-low
reset polarity?
By specifying GPIO_ACTIVE_HIGH, gpiolib will translate a driver's logical 0
into a physical LOW, which might hold the codecs in reset permanently.
[ ... ]
> +&spi4 {
> + status = "okay";
> +
> + touchscreen@0 {
> + compatible = "novatek,NVT-ts-spi";
> + reg = <0>;
> +
> + spi-max-frequency = <19200000>;
> + novatek,irq-gpio = <&tlmm 25 GPIO_ACTIVE_LOW>;
[Severity: High]
Is a pinctrl configuration missing for this interrupt pin?
The device tree relies on interrupt pins like gpio25 for the touchscreen,
gpio62 for the MCU, codec interrupts, and the shared reset pin gpio90, but
fails to define and attach pinctrl states for them.
Leaving interrupt pins floating without explicit biases risks spurious
interrupt storms, and unconfigured outputs risk failing to reset hardware
correctly.
[ ... ]
> + i2s1_default: i2s1-default-state {
> + sck-pins {
> + pins = "gpio121";
> + function = "i2s1_sck";
> + drive-strength = <8>;
> + bias-disable;
> + output-high;
> + };
> +
> + data0-pins {
> + pins = "gpio122";
> + function = "i2s1_data0";
> + drive-strength = <8>;
> + bias-disable;
> + };
> +
> + ws-pins {
> + pins = "gpio123";
> + function = "i2s1_ws";
> + drive-strength = <8>;
> + bias-disable;
> + output-high;
> + };
> +
> + data1-pins {
> + pins = "gpio124";
> + function = "i2s1_data1";
> + drive-strength = <8>;
> + bias-disable;
> + output-high;
> + };
> + };
[Severity: Medium]
Are these output-high properties correctly applied to hardware-muxed pins?
In Qualcomm pinctrl, static output states should typically only be configured
when function = "gpio". Applying output-high to hardware-driven pins can
conflict with the hardware controller block.
The commit message also mentions removing output-low/output-high from TLMM
pinctrls, but they appear to still be present here.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260721145822.1278-1-code_0002@163.com?part=1
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v5] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
2026-07-21 15:07 ` [PATCH v5] " code_0002
@ 2026-07-21 15:21 ` sashiko-bot
0 siblings, 0 replies; 11+ messages in thread
From: sashiko-bot @ 2026-07-21 15:21 UTC (permalink / raw)
To: code_0002; +Cc: robh, conor+dt, devicetree
Thank you for your contribution! Sashiko AI review found 6 potential issue(s) to consider:
- [High] Invalid clock reparenting for dual DSI synchronization.
- [High] Using `GPIO_OPEN_DRAIN` does not bypass gpiolib's exclusive access check for shared reset lines.
- [High] Severe overvoltage risk by configuring a 0.7V-named regulator to 1.9V.
- [Medium] Asymmetric speaker assignment breaks stereo audio routing.
- [Medium] Unnecessary memory allocation for non-existent modem RMTFS.
- [Low] Use of undocumented and downstream DT bindings.
--
--- Patch [1]: [PATCH v5] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng) ---
commit 84985aa6cc3ea47e6961c9fece55de9d4418b9fc
Author: map220v <map220v300@gmail.com>
arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
Add device tree for Xiaomi Pad 6S Pro (sheng) based on SM8550.
> v4: address Sashiko AI review comments
> - Add GPIO_OPEN_DRAIN to shared cs35l43 reset-gpios to avoid -EBUSY
[Severity: High]
Will this still result in -EBUSY errors for 5 out of the 6 speaker
amplifiers?
Adding GPIO_OPEN_DRAIN is an electrical configuration and does not instruct
gpiolib to bypass exclusive access checks.
> diff --git a/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
> new file mode 100644
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sm8550-xiaomi-sheng.dts
[ ... ]
> + reserved-memory {
[ ... ]
> + rmtfs_mem: rmtfs-region@ccd00000 {
> + compatible = "qcom,rmtfs-mem";
> + reg = <0x0 0xccd00000 0x0 0x280000>;
> + no-map;
> +
> + qcom,client-id = <1>;
> + };
[Severity: Medium]
Is this reserved memory region necessary?
The commit message notes the device lacks a modem, but this node allocates
memory for client-id 1, which strictly maps to the MPSS remote file system
client.
[ ... ]
> + regulators-5 {
> + compatible = "qcom,pm8550vs-rpmh-regulators";
[ ... ]
> + vreg_s3g_0p7: smps3 {
> + regulator-name = "vreg_s3g_0p7";
> + regulator-min-microvolt = <600000>;
> + regulator-max-microvolt = <1900000>; //2004000
[Severity: High]
Could this create an overvoltage risk for other hardware relying on a 0.7V
rail?
The regulator node name implies a nominally 0.7V rail, but it allows up to
1.9V. If this is a dedicated 1.8V rail, should the node be renamed to
reflect the hardware reality and prevent unsafe reuse?
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
[ ... ]
> +&i2c5 {
> + clock-frequency = <1000000>;
> + status = "okay";
> +
> + cs35l43_trl: cs35l43@40 {
> + compatible = "cirrus,cs35l43";
> + reg = <0x40>;
> + interrupt-parent = <&tlmm>;
> + interrupts = <98 IRQ_TYPE_LEVEL_LOW>;
> + reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
[Severity: High]
Does this properly bypass gpiolib's exclusive access check for shared
reset lines?
Setting GPIO_OPEN_DRAIN alone does not bypass exclusive access, so devices
probing after the first one might still receive -EBUSY.
> + #sound-dai-cells = <0>;
[ ... ]
> +&i2c8 {
> + clock-frequency = <1000000>;
> + status = "okay";
> +
> + cs35l43_blh: cs35l43@40 {
> + compatible = "cirrus,cs35l43";
> + reg = <0x40>;
> + interrupt-parent = <&tlmm>;
> + interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
> + reset-gpios = <&tlmm 90 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> + #sound-dai-cells = <0>;
> + sound-name-prefix = "BLH";
> + cirrus,dsp-part-name = "blh-cs35l43";
[Severity: Medium]
Does this asymmetric speaker assignment break stereo audio routing?
There are left-side tweeter nodes defined (TLH and BLH) but no right-side
high speakers, which seems to create an asymmetric 4-left / 2-right topology.
> + cirrus,vpbr-thld = <8>;
[ ... ]
> +&mdss_dsi0 {
> + vdda-supply = <&vreg_l3e_1p2>;
> + qcom,dual-dsi-mode;
> + qcom,sync-dual-dsi;
> + qcom,master-dsi;
> + status = "okay";
> +
> + display_panel: panel@0 {
> + compatible = "xiaomi,sheng-nt36532e", "novatek,nt36532e";
> + reg = <0>;
> +
> + pinctrl-0 = <&sde_dsi_active>;
> + pinctrl-1 = <&sde_dsi_suspend>;
> + pinctrl-names = "default", "sleep";
> +
> + vddio-supply = <&vreg_s3g_0p7>;
[Severity: High]
Is it safe to assign a nominally 0.7V regulator to the display panel's
vddio-supply here? This usage forces the voltage to the higher 1.9V limit.
> + avdd-supply = <&bl_vddpos_5p8>;
[ ... ]
> +&mdss_dsi1 {
> + vdda-supply = <&vreg_l3e_1p2>;
> + qcom,dual-dsi-mode;
> + qcom,sync-dual-dsi;
> + /* DSI1 is slave, so use DSI0 clocks */
> + assigned-clocks = <&mdss_dsi1_phy 0>, <&mdss_dsi1_phy 1>;
> + assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
[Severity: High]
Will this clock reparenting fail during probe and break dual display
initialization?
DSI PHY PLL output clocks are fixed to their local PLLs and do not have
configurable parents. Shouldn't the consumer dispcc clocks be parented to
the master PHY's outputs to properly sync dual DSI?
> + status = "okay";
> +};
[ ... ]
> +&spi4 {
> + status = "okay";
> +
> + touchscreen@0 {
> + compatible = "novatek,NVT-ts-spi";
> + reg = <0>;
> +
> + spi-max-frequency = <19200000>;
> + novatek,irq-gpio = <&tlmm 25 GPIO_ACTIVE_LOW>;
[Severity: Low]
Will these undocumented downstream compatibles and properties fail dtbs_check
and prevent standard upstream drivers from binding?
> +
> + panel = <&display_panel>;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260721150740.300-1-code_0002@163.com?part=1
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-07-21 15:21 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-21 13:32 [PATCH] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng) code_0002
2026-07-21 13:44 ` sashiko-bot
2026-07-21 14:20 ` Konrad Dybcio
2026-07-21 14:45 ` [PATCH v3] " code_0002
2026-07-21 14:58 ` [PATCH v4] " code_0002
2026-07-21 15:07 ` [PATCH v5] " code_0002
2026-07-21 15:21 ` sashiko-bot
2026-07-21 15:14 ` [PATCH v4] " sashiko-bot
2026-07-21 15:01 ` [PATCH v3] " sashiko-bot
[not found] <v3的message-id>
2026-07-21 14:54 ` [PATCH v4] " code_0002
2026-07-21 15:04 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox