// SPDX-License-Identifier: BSD-3-Clause /* * Copyright (c) 2023, Linaro Limited */ /dts-v1/; #include #include #include "sa8775p.dtsi" #include "sa8775p-pmics.dtsi" / { aliases { ethernet0 = ðernet0; ethernet1 = ðernet1; i2c11 = &i2c11; i2c18 = &i2c18; serial0 = &uart10; serial1 = &uart12; serial2 = &uart17; spi16 = &spi16; ufshc1 = &ufs_mem_hc; }; chosen { stdout-path = "serial0:115200n8"; }; vreg_conn_1p8: vreg_conn_1p8 { compatible = "regulator-fixed"; regulator-name = "vreg_conn_1p8"; startup-delay-us = <4000>; enable-active-high; gpio = <&pmm8654au_1_gpios 4 GPIO_ACTIVE_HIGH>; }; vreg_conn_pa: vreg_conn_pa { compatible = "regulator-fixed"; regulator-name = "vreg_conn_pa"; startup-delay-us = <4000>; enable-active-high; gpio = <&pmm8654au_1_gpios 6 GPIO_ACTIVE_HIGH>; }; wcn6855-pmu { compatible = "qcom,wcn6855-pmu"; pinctrl-names = "default"; pinctrl-0 = <&bt_en_state>, <&wlan_en_state>; vddio-supply = <&vreg_conn_pa>; vddaon-supply = <&vreg_l2c>; vddpmu-supply = <&vreg_conn_1p8>; vddrfa0p95-supply = <&vreg_l2c>; vddrfa1p3-supply = <&vreg_l6e>; vddrfa1p9-supply = <&vreg_s5a>; vddpcie1p3-supply = <&vreg_l6e>; vddpcie1p9-supply = <&vreg_s5a>; bt-enable-gpios = <&pmm8654au_1_gpios 8 GPIO_ACTIVE_HIGH>; wlan-enable-gpios = <&pmm8654au_1_gpios 7 GPIO_ACTIVE_HIGH>; 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_1p7: ldo7 { regulator-name = "vreg_pmu_rfa_1p7"; }; 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,pmm8654au-rpmh-regulators"; qcom,pmic-id = "a"; vreg_s4a: smps4 { regulator-name = "vreg_s4a"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1816000>; regulator-initial-mode = ; }; vreg_s5a: smps5 { regulator-name = "vreg_s5a"; regulator-min-microvolt = <1850000>; regulator-max-microvolt = <1996000>; regulator-initial-mode = ; }; vreg_s9a: smps9 { regulator-name = "vreg_s9a"; regulator-min-microvolt = <535000>; regulator-max-microvolt = <1120000>; regulator-initial-mode = ; }; vreg_l4a: ldo4 { regulator-name = "vreg_l4a"; regulator-min-microvolt = <788000>; regulator-max-microvolt = <1050000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l5a: ldo5 { regulator-name = "vreg_l5a"; regulator-min-microvolt = <870000>; regulator-max-microvolt = <950000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l6a: ldo6 { regulator-name = "vreg_l6a"; regulator-min-microvolt = <870000>; regulator-max-microvolt = <970000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l7a: ldo7 { regulator-name = "vreg_l7a"; regulator-min-microvolt = <720000>; regulator-max-microvolt = <950000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l8a: ldo8 { regulator-name = "vreg_l8a"; regulator-min-microvolt = <2504000>; regulator-max-microvolt = <3300000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l9a: ldo9 { regulator-name = "vreg_l9a"; regulator-min-microvolt = <2970000>; regulator-max-microvolt = <3544000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; }; regulators-1 { compatible = "qcom,pmm8654au-rpmh-regulators"; qcom,pmic-id = "c"; vreg_l1c: ldo1 { regulator-name = "vreg_l1c"; regulator-min-microvolt = <1140000>; regulator-max-microvolt = <1260000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l2c: ldo2 { regulator-name = "vreg_l2c"; regulator-min-microvolt = <900000>; regulator-max-microvolt = <1100000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l3c: ldo3 { regulator-name = "vreg_l3c"; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1300000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l4c: ldo4 { regulator-name = "vreg_l4c"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-initial-mode = ; /* * FIXME: This should have regulator-allow-set-load but * we're getting an over-current fault from the PMIC * when switching to LPM. */ }; vreg_l5c: ldo5 { regulator-name = "vreg_l5c"; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1300000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l6c: ldo6 { regulator-name = "vreg_l6c"; regulator-min-microvolt = <1620000>; regulator-max-microvolt = <1980000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l7c: ldo7 { regulator-name = "vreg_l7c"; regulator-min-microvolt = <1620000>; regulator-max-microvolt = <2000000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l8c: ldo8 { regulator-name = "vreg_l8c"; regulator-min-microvolt = <2400000>; regulator-max-microvolt = <3300000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l9c: ldo9 { regulator-name = "vreg_l9c"; regulator-min-microvolt = <1650000>; regulator-max-microvolt = <2700000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; }; regulators-2 { compatible = "qcom,pmm8654au-rpmh-regulators"; qcom,pmic-id = "e"; vreg_s4e: smps4 { regulator-name = "vreg_s4e"; regulator-min-microvolt = <970000>; regulator-max-microvolt = <1520000>; regulator-initial-mode = ; }; vreg_s7e: smps7 { regulator-name = "vreg_s7e"; regulator-min-microvolt = <1010000>; regulator-max-microvolt = <1170000>; regulator-initial-mode = ; }; vreg_s9e: smps9 { regulator-name = "vreg_s9e"; regulator-min-microvolt = <300000>; regulator-max-microvolt = <570000>; regulator-initial-mode = ; }; vreg_l6e: ldo6 { regulator-name = "vreg_l6e"; regulator-min-microvolt = <1280000>; regulator-max-microvolt = <1450000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l8e: ldo8 { regulator-name = "vreg_l8e"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1950000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; }; }; ðernet0 { phy-handle = <&sgmii_phy0>; pinctrl-0 = <ðernet0_default>; pinctrl-names = "default"; snps,mtl-rx-config = <&mtl_rx_setup>; snps,mtl-tx-config = <&mtl_tx_setup>; snps,ps-speed = <1000>; status = "okay"; mdio: mdio { compatible = "snps,dwmac-mdio"; #address-cells = <1>; #size-cells = <0>; }; mtl_rx_setup: rx-queues-config { snps,rx-queues-to-use = <4>; snps,rx-sched-sp; queue0 { snps,dcb-algorithm; snps,map-to-dma-channel = <0x0>; snps,route-up; snps,priority = <0x1>; }; queue1 { snps,dcb-algorithm; snps,map-to-dma-channel = <0x1>; snps,route-ptp; }; queue2 { snps,avb-algorithm; snps,map-to-dma-channel = <0x2>; snps,route-avcp; }; queue3 { snps,avb-algorithm; snps,map-to-dma-channel = <0x3>; snps,priority = <0xc>; }; }; mtl_tx_setup: tx-queues-config { snps,tx-queues-to-use = <4>; snps,tx-sched-sp; queue0 { snps,dcb-algorithm; }; queue1 { snps,dcb-algorithm; }; queue2 { snps,avb-algorithm; snps,send_slope = <0x1000>; snps,idle_slope = <0x1000>; snps,high_credit = <0x3e800>; snps,low_credit = <0xffc18000>; }; queue3 { snps,avb-algorithm; snps,send_slope = <0x1000>; snps,idle_slope = <0x1000>; snps,high_credit = <0x3e800>; snps,low_credit = <0xffc18000>; }; }; }; ðernet1 { phy-handle = <&sgmii_phy1>; snps,mtl-rx-config = <&mtl_rx_setup1>; snps,mtl-tx-config = <&mtl_tx_setup1>; snps,ps-speed = <1000>; status = "okay"; mtl_rx_setup1: rx-queues-config { snps,rx-queues-to-use = <4>; snps,rx-sched-sp; queue0 { snps,dcb-algorithm; snps,map-to-dma-channel = <0x0>; snps,route-up; snps,priority = <0x1>; }; queue1 { snps,dcb-algorithm; snps,map-to-dma-channel = <0x1>; snps,route-ptp; }; queue2 { snps,avb-algorithm; snps,map-to-dma-channel = <0x2>; snps,route-avcp; }; queue3 { snps,avb-algorithm; snps,map-to-dma-channel = <0x3>; snps,priority = <0xc>; }; }; mtl_tx_setup1: tx-queues-config { snps,tx-queues-to-use = <4>; snps,tx-sched-sp; queue0 { snps,dcb-algorithm; }; queue1 { snps,dcb-algorithm; }; queue2 { snps,avb-algorithm; snps,send_slope = <0x1000>; snps,idle_slope = <0x1000>; snps,high_credit = <0x3e800>; snps,low_credit = <0xffc18000>; }; queue3 { snps,avb-algorithm; snps,send_slope = <0x1000>; snps,idle_slope = <0x1000>; snps,high_credit = <0x3e800>; snps,low_credit = <0xffc18000>; }; }; }; &i2c11 { clock-frequency = <400000>; pinctrl-0 = <&qup_i2c11_default>; pinctrl-names = "default"; status = "okay"; }; &i2c18 { clock-frequency = <400000>; pinctrl-0 = <&qup_i2c18_default>; pinctrl-names = "default"; status = "okay"; }; &pmm8654au_0_gpios { gpio-line-names = "DS_EN", "POFF_COMPLETE", "UFS0_VER_ID", "FAST_POFF", "DBU1_PON_DONE", "AOSS_SLEEP", "CAM_DES0_EN", "CAM_DES1_EN", "CAM_DES2_EN", "CAM_DES3_EN", "UEFI", "ANALOG_PON_OPT"; }; &pmm8654au_0_pon_resin { linux,code = ; status = "okay"; }; &pmm8654au_1_gpios { gpio-line-names = "PMIC_C_ID0", "PMIC_C_ID1", "UFS1_VER_ID", "IPA_PWR", "", "WLAN_DBU4_EN", "WLAN_EN", "BT_EN", "USB2_PWR_EN", "USB2_FAULT"; wlan_en_state: wlan-en-state { pins = "gpio7"; function = "normal"; output-low; bias-pull-down; }; bt_en_state: bt-en-state { pins = "gpio8"; function = "normal"; output-low; bias-pull-down; }; usb2_en_state: usb2-en-state { pins = "gpio9"; function = "normal"; output-high; power-source = <0>; }; }; &pmm8654au_2_gpios { gpio-line-names = "PMIC_E_ID0", "PMIC_E_ID1", "USB0_PWR_EN", "USB0_FAULT", "SENSOR_IRQ_1", "SENSOR_IRQ_2", "SENSOR_RST", "SGMIIO0_RST", "SGMIIO1_RST", "USB1_PWR_ENABLE", "USB1_FAULT", "VMON_SPX8"; usb0_en_state: usb0-en-state { pins = "gpio3"; function = "normal"; output-high; power-source = <0>; }; usb1_en_state: usb1-en-state { pins = "gpio10"; function = "normal"; output-high; power-source = <0>; }; }; &pmm8654au_3_gpios { gpio-line-names = "PMIC_G_ID0", "PMIC_G_ID1", "GNSS_RST", "GNSS_EN", "GNSS_BOOT_MODE"; }; &qupv3_id_1 { status = "okay"; }; &qupv3_id_2 { status = "okay"; }; &serdes0 { phy-supply = <&vreg_l5a>; status = "okay"; }; &serdes1 { phy-supply = <&vreg_l5a>; status = "okay"; }; &sleep_clk { clock-frequency = <32764>; }; &spi16 { pinctrl-0 = <&qup_spi16_default>; pinctrl-names = "default"; status = "okay"; }; &tlmm { ethernet0_default: ethernet0-default-state { ethernet0_mdc: ethernet0-mdc-pins { pins = "gpio8"; function = "emac0_mdc"; drive-strength = <16>; bias-pull-up; }; ethernet0_mdio: ethernet0-mdio-pins { pins = "gpio9"; function = "emac0_mdio"; drive-strength = <16>; bias-pull-up; }; }; qup_uart10_default: qup-uart10-state { pins = "gpio46", "gpio47"; function = "qup1_se3"; }; qup_spi16_default: qup-spi16-state { pins = "gpio86", "gpio87", "gpio88", "gpio89"; function = "qup2_se2"; drive-strength = <6>; bias-disable; }; qup_i2c11_default: qup-i2c11-state { pins = "gpio48", "gpio49"; function = "qup1_se4"; drive-strength = <2>; bias-pull-up; }; qup_i2c18_default: qup-i2c18-state { pins = "gpio95", "gpio96"; function = "qup2_se4"; drive-strength = <2>; bias-pull-up; }; qup_uart12_default: qup-uart12-state { qup_uart12_cts: qup-uart12-cts-pins { pins = "gpio52"; function = "qup1_se5"; bias-disable; }; qup_uart12_rts: qup-uart12-rts-pins { pins = "gpio53"; function = "qup1_se5"; bias-pull-down; }; qup_uart12_tx: qup-uart12-tx-pins { pins = "gpio54"; function = "qup1_se5"; bias-pull-up; }; qup_uart12_rx: qup-uart12-rx-pins { pins = "gpio55"; function = "qup1_se5"; bias-pull-down; }; }; qup_uart17_default: qup-uart17-state { qup_uart17_cts: qup-uart17-cts-pins { pins = "gpio91"; function = "qup2_se3"; bias-disable; }; qup_uart17_rts: qup0-uart17-rts-pins { pins = "gpio92"; function = "qup2_se3"; bias-pull-down; }; qup_uart17_tx: qup0-uart17-tx-pins { pins = "gpio93"; function = "qup2_se3"; bias-pull-up; }; qup_uart17_rx: qup0-uart17-rx-pins { pins = "gpio94"; function = "qup2_se3"; bias-pull-down; }; }; pcie0_default_state: pcie0-default-state { perst-pins { pins = "gpio2"; function = "gpio"; drive-strength = <2>; bias-pull-down; }; clkreq-pins { pins = "gpio1"; function = "pcie0_clkreq"; drive-strength = <2>; bias-pull-up; }; wake-pins { pins = "gpio0"; function = "gpio"; drive-strength = <2>; bias-pull-up; }; }; pcie1_default_state: pcie1-default-state { perst-pins { pins = "gpio4"; function = "gpio"; drive-strength = <2>; bias-pull-down; }; clkreq-pins { pins = "gpio3"; function = "pcie1_clkreq"; drive-strength = <2>; bias-pull-up; }; wake-pins { pins = "gpio5"; function = "gpio"; drive-strength = <2>; bias-pull-up; }; }; }; &pcie0 { perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>; wake-gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&pcie0_default_state>; status = "okay"; }; &pcie1 { perst-gpios = <&tlmm 4 GPIO_ACTIVE_LOW>; wake-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&pcie1_default_state>; status = "okay"; }; &pcie0_phy { vdda-phy-supply = <&vreg_l5a>; vdda-pll-supply = <&vreg_l1c>; status = "okay"; }; &pcie1_phy { vdda-phy-supply = <&vreg_l5a>; vdda-pll-supply = <&vreg_l1c>; status = "okay"; }; &pcieport0 { wifi@0 { compatible = "pci17cb,1101"; reg = <0x10000 0x0 0x0 0x0 0x0>; qcom,ath11k-calibration-variant = "QC_SA8775P_Ride"; 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>; vddrfa1p7-supply = <&vreg_pmu_rfa_1p7>; vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>; vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>; }; }; &remoteproc_adsp { firmware-name = "qcom/sa8775p/adsp.mbn"; status = "okay"; }; &remoteproc_cdsp0 { firmware-name = "qcom/sa8775p/cdsp0.mbn"; status = "okay"; }; &remoteproc_cdsp1 { firmware-name = "qcom/sa8775p/cdsp1.mbn"; status = "okay"; }; &remoteproc_gpdsp0 { firmware-name = "qcom/sa8775p/gpdsp0.mbn"; status = "okay"; }; &remoteproc_gpdsp1 { firmware-name = "qcom/sa8775p/gpdsp1.mbn"; status = "okay"; }; &uart10 { compatible = "qcom,geni-debug-uart"; pinctrl-0 = <&qup_uart10_default>; pinctrl-names = "default"; status = "okay"; }; &uart12 { pinctrl-0 = <&qup_uart12_default>; pinctrl-names = "default"; status = "okay"; }; &uart17 { pinctrl-0 = <&qup_uart17_default>; pinctrl-names = "default"; status = "okay"; bluetooth { compatible = "qcom,wcn6855-bt"; vddrfacmn-supply = <&vreg_pmu_rfa_cmn>; vddaon-supply = <&vreg_pmu_aon_0p59>; vddbtcmx-supply = <&vreg_pmu_btcmx_0p85>; vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>; vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>; vddrfa1p7-supply = <&vreg_pmu_rfa_1p7>; }; }; &ufs_mem_hc { reset-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>; vcc-supply = <&vreg_l8a>; vcc-max-microamp = <1100000>; vccq-supply = <&vreg_l4c>; vccq-max-microamp = <1200000>; status = "okay"; }; &ufs_mem_phy { vdda-phy-supply = <&vreg_l4a>; vdda-pll-supply = <&vreg_l1c>; status = "okay"; }; &usb_0 { pinctrl-names = "default"; pinctrl-0 = <&usb0_en_state>; status = "okay"; }; &usb_0_dwc3 { dr_mode = "peripheral"; }; &usb_0_hsphy { vdda-pll-supply = <&vreg_l7a>; vdda18-supply = <&vreg_l6c>; vdda33-supply = <&vreg_l9a>; status = "okay"; }; &usb_0_qmpphy { vdda-phy-supply = <&vreg_l1c>; vdda-pll-supply = <&vreg_l7a>; status = "okay"; }; &usb_1 { pinctrl-names = "default"; pinctrl-0 = <&usb1_en_state>; status = "okay"; }; &usb_1_dwc3 { dr_mode = "host"; }; &usb_1_hsphy { vdda-pll-supply = <&vreg_l7a>; vdda18-supply = <&vreg_l6c>; vdda33-supply = <&vreg_l9a>; status = "okay"; }; &usb_1_qmpphy { vdda-phy-supply = <&vreg_l1c>; vdda-pll-supply = <&vreg_l7a>; status = "okay"; }; &usb_2 { pinctrl-names = "default"; pinctrl-0 = <&usb2_en_state>; status = "okay"; }; &usb_2_dwc3 { dr_mode = "host"; }; &usb_2_hsphy { vdda-pll-supply = <&vreg_l7a>; vdda18-supply = <&vreg_l6c>; vdda33-supply = <&vreg_l9a>; status = "okay"; }; &xo_board_clk { clock-frequency = <38400000>; };