* [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; 4+ 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] 4+ 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:14 ` sashiko-bot
0 siblings, 1 reply; 4+ 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] 4+ messages in thread
* Re: [PATCH v4] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng)
2026-07-21 14:54 ` [PATCH v4] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng) code_0002
@ 2026-07-21 15:04 ` sashiko-bot
0 siblings, 0 replies; 4+ 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] 4+ 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:14 ` sashiko-bot
0 siblings, 0 replies; 4+ 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] 4+ messages in thread
end of thread, other threads:[~2026-07-21 15:14 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <v3的message-id>
2026-07-21 14:54 ` [PATCH v4] arm64: dts: qcom: sm8550: add Xiaomi Pad 6S Pro (sheng) code_0002
2026-07-21 15:04 ` sashiko-bot
2026-07-21 14:45 [PATCH v3] " code_0002
2026-07-21 14:58 ` [PATCH v4] " code_0002
2026-07-21 15:14 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox