| // SPDX-License-Identifier: BSD-3-Clause |
| /* |
| * Copyright (c) 2021, The Linux Foundation. All rights reserved. |
| * Copyright (c) 2022, Linaro Limited |
| */ |
| |
| /dts-v1/; |
| |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/regulator/qcom,rpmh-regulator.h> |
| |
| #include "sa8540p.dtsi" |
| #include "sa8540p-pmics.dtsi" |
| |
| / { |
| model = "Qualcomm SA8540P Ride"; |
| compatible = "qcom,sa8540p-ride", "qcom,sa8540p"; |
| |
| aliases { |
| i2c0 = &i2c0; |
| i2c1 = &i2c1; |
| i2c12 = &i2c12; |
| i2c15 = &i2c15; |
| i2c18 = &i2c18; |
| serial0 = &uart17; |
| }; |
| |
| chosen { |
| stdout-path = "serial0:115200n8"; |
| }; |
| }; |
| |
| &apps_rsc { |
| regulators-0 { |
| compatible = "qcom,pm8150-rpmh-regulators"; |
| qcom,pmic-id = "a"; |
| |
| vreg_l3a: ldo3 { |
| regulator-name = "vreg_l3a"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1208000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| |
| vreg_l5a: ldo5 { |
| regulator-name = "vreg_l5a"; |
| regulator-min-microvolt = <912000>; |
| regulator-max-microvolt = <912000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| |
| vreg_l7a: ldo7 { |
| regulator-name = "vreg_l7a"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| |
| vreg_l11a: ldo11 { |
| regulator-name = "vreg_l11a"; |
| regulator-min-microvolt = <880000>; |
| regulator-max-microvolt = <880000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| |
| vreg_l13a: ldo13 { |
| regulator-name = "vreg_l13a"; |
| regulator-min-microvolt = <3072000>; |
| regulator-max-microvolt = <3072000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| }; |
| |
| regulators-1 { |
| compatible = "qcom,pm8150-rpmh-regulators"; |
| qcom,pmic-id = "c"; |
| |
| vreg_l1c: ldo1 { |
| regulator-name = "vreg_l1c"; |
| regulator-min-microvolt = <912000>; |
| regulator-max-microvolt = <912000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| |
| vreg_l2c: ldo2 { |
| regulator-name = "vreg_l2c"; |
| regulator-min-microvolt = <3072000>; |
| regulator-max-microvolt = <3072000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| |
| vreg_l4c: ldo4 { |
| regulator-name = "vreg_l4c"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1208000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| |
| vreg_l6c: ldo6 { |
| regulator-name = "vreg_l6c"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM |
| RPMH_REGULATOR_MODE_HPM>; |
| regulator-allow-set-load; |
| }; |
| |
| vreg_l7c: ldo7 { |
| regulator-name = "vreg_l7c"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| |
| vreg_l17c: ldo17 { |
| regulator-name = "vreg_l17c"; |
| regulator-min-microvolt = <2504000>; |
| regulator-max-microvolt = <2504000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM |
| RPMH_REGULATOR_MODE_HPM>; |
| regulator-allow-set-load; |
| }; |
| }; |
| |
| regulators-2 { |
| compatible = "qcom,pm8150-rpmh-regulators"; |
| qcom,pmic-id = "g"; |
| |
| vreg_l3g: ldo3 { |
| regulator-name = "vreg_l3g"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| |
| vreg_l7g: ldo7 { |
| regulator-name = "vreg_l7g"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| |
| vreg_l8g: ldo8 { |
| regulator-name = "vreg_l8g"; |
| regulator-min-microvolt = <880000>; |
| regulator-max-microvolt = <880000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| }; |
| }; |
| }; |
| |
| ðernet0 { |
| snps,mtl-rx-config = <ðernet0_mtl_rx_setup>; |
| snps,mtl-tx-config = <ðernet0_mtl_tx_setup>; |
| |
| max-speed = <1000>; |
| phy-handle = <&rgmii_phy>; |
| phy-mode = "rgmii-txid"; |
| |
| pinctrl-names = "default"; |
| pinctrl-0 = <ðernet0_default>; |
| |
| status = "okay"; |
| |
| mdio { |
| compatible = "snps,dwmac-mdio"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| /* Marvell 88EA1512 */ |
| rgmii_phy: phy@8 { |
| compatible = "ethernet-phy-id0141.0dd4"; |
| reg = <0x8>; |
| |
| interrupts-extended = <&tlmm 127 IRQ_TYPE_EDGE_FALLING>; |
| |
| reset-gpios = <&pmm8540c_gpios 1 GPIO_ACTIVE_LOW>; |
| reset-assert-us = <11000>; |
| reset-deassert-us = <70000>; |
| |
| device_type = "ethernet-phy"; |
| |
| /* Set to RGMII_SGMII mode and soft reset. Turn off auto-negotiation |
| * from userspace to talk to the switch on the SGMII side of things |
| */ |
| marvell,reg-init = |
| /* Set MODE[2:0] to RGMII_SGMII */ |
| <0x12 0x14 0xfff8 0x4>, |
| /* Soft reset required after changing MODE[2:0] */ |
| <0x12 0x14 0x7fff 0x8000>; |
| }; |
| }; |
| |
| ethernet0_mtl_rx_setup: rx-queues-config { |
| snps,rx-queues-to-use = <1>; |
| 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>; |
| }; |
| }; |
| |
| ethernet0_mtl_tx_setup: tx-queues-config { |
| snps,tx-queues-to-use = <1>; |
| 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 { |
| snps,mtl-rx-config = <ðernet1_mtl_rx_setup>; |
| snps,mtl-tx-config = <ðernet1_mtl_tx_setup>; |
| |
| max-speed = <1000>; |
| phy-mode = "rgmii-txid"; |
| |
| pinctrl-names = "default"; |
| pinctrl-0 = <ðernet1_default>; |
| |
| status = "okay"; |
| |
| fixed-link { |
| speed = <1000>; |
| full-duplex; |
| }; |
| |
| ethernet1_mtl_rx_setup: rx-queues-config { |
| snps,rx-queues-to-use = <1>; |
| 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>; |
| }; |
| }; |
| |
| ethernet1_mtl_tx_setup: tx-queues-config { |
| snps,tx-queues-to-use = <1>; |
| 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>; |
| }; |
| }; |
| }; |
| |
| &i2c0 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c0_default>; |
| |
| status = "okay"; |
| }; |
| |
| &i2c1 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c1_default>; |
| |
| status = "okay"; |
| }; |
| |
| &i2c12 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c12_default>; |
| |
| status = "okay"; |
| }; |
| |
| &i2c15 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c15_default>; |
| |
| status = "okay"; |
| }; |
| |
| &i2c18 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&i2c18_default>; |
| |
| status = "okay"; |
| }; |
| |
| &pcie2a { |
| ranges = <0x01000000 0x0 0x3c200000 0x0 0x3c200000 0x0 0x100000>, |
| <0x02000000 0x0 0x3c300000 0x0 0x3c300000 0x0 0x1d00000>, |
| <0x03000000 0x5 0x00000000 0x5 0x00000000 0x1 0x00000000>; |
| |
| perst-gpios = <&tlmm 143 GPIO_ACTIVE_LOW>; |
| wake-gpios = <&tlmm 145 GPIO_ACTIVE_HIGH>; |
| |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pcie2a_default>; |
| |
| status = "disabled"; |
| }; |
| |
| &pcie2a_phy { |
| vdda-phy-supply = <&vreg_l11a>; |
| vdda-pll-supply = <&vreg_l3a>; |
| |
| status = "disabled"; |
| }; |
| |
| &pcie3a { |
| ranges = <0x01000000 0x0 0x40200000 0x0 0x40200000 0x0 0x100000>, |
| <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x20000000>, |
| <0x03000000 0x6 0x00000000 0x6 0x00000000 0x2 0x00000000>; |
| |
| perst-gpios = <&tlmm 151 GPIO_ACTIVE_LOW>; |
| wake-gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>; |
| |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pcie3a_default>; |
| |
| status = "okay"; |
| }; |
| |
| &pcie3a_phy { |
| vdda-phy-supply = <&vreg_l11a>; |
| vdda-pll-supply = <&vreg_l3a>; |
| |
| status = "okay"; |
| }; |
| |
| &pmm8540a_rtc { |
| nvmem-cells = <&rtc_offset>; |
| nvmem-cell-names = "offset"; |
| |
| status = "okay"; |
| }; |
| |
| &pmm8540c_sdam_2 { |
| status = "okay"; |
| |
| rtc_offset: rtc-offset@a0 { |
| reg = <0xa0 0x4>; |
| }; |
| }; |
| |
| &qup0 { |
| status = "okay"; |
| }; |
| |
| &qup1 { |
| status = "okay"; |
| }; |
| |
| &qup2 { |
| status = "okay"; |
| }; |
| |
| &remoteproc_nsp0 { |
| firmware-name = "qcom/sa8540p/cdsp0.mbn"; |
| status = "okay"; |
| }; |
| |
| &remoteproc_nsp1 { |
| firmware-name = "qcom/sa8540p/cdsp1.mbn"; |
| status = "okay"; |
| }; |
| |
| &uart17 { |
| compatible = "qcom,geni-debug-uart"; |
| status = "okay"; |
| }; |
| |
| &ufs_mem_hc { |
| reset-gpios = <&tlmm 228 GPIO_ACTIVE_LOW>; |
| |
| vcc-supply = <&vreg_l17c>; |
| vccq-supply = <&vreg_l6c>; |
| |
| status = "okay"; |
| }; |
| |
| &ufs_mem_phy { |
| vdda-phy-supply = <&vreg_l8g>; |
| vdda-pll-supply = <&vreg_l3g>; |
| |
| status = "okay"; |
| }; |
| |
| &usb_0 { |
| status = "okay"; |
| }; |
| |
| &usb_0_dwc3 { |
| dr_mode = "peripheral"; |
| }; |
| |
| &usb_0_hsphy { |
| vdda-pll-supply = <&vreg_l5a>; |
| vdda18-supply = <&vreg_l7a>; |
| vdda33-supply = <&vreg_l13a>; |
| |
| status = "okay"; |
| }; |
| |
| &usb_0_qmpphy { |
| vdda-phy-supply = <&vreg_l3a>; |
| vdda-pll-supply = <&vreg_l5a>; |
| |
| status = "okay"; |
| }; |
| |
| &usb_2_hsphy0 { |
| vdda-pll-supply = <&vreg_l5a>; |
| vdda18-supply = <&vreg_l7g>; |
| vdda33-supply = <&vreg_l13a>; |
| |
| status = "okay"; |
| }; |
| |
| &usb_2_qmpphy0 { |
| vdda-phy-supply = <&vreg_l3a>; |
| vdda-pll-supply = <&vreg_l5a>; |
| |
| status = "okay"; |
| }; |
| |
| &xo_board_clk { |
| clock-frequency = <38400000>; |
| }; |
| |
| /* PINCTRL */ |
| |
| &tlmm { |
| ethernet0_default: ethernet0-default-state { |
| mdc-pins { |
| pins = "gpio175"; |
| function = "rgmii_0"; |
| drive-strength = <16>; |
| bias-pull-up; |
| }; |
| |
| mdio-pins { |
| pins = "gpio176"; |
| function = "rgmii_0"; |
| drive-strength = <16>; |
| bias-pull-up; |
| }; |
| |
| rgmii-tx-pins { |
| pins = "gpio183", "gpio184", "gpio185", "gpio186", "gpio187", "gpio188"; |
| function = "rgmii_0"; |
| drive-strength = <16>; |
| bias-pull-up; |
| }; |
| |
| rgmii-rx-pins { |
| pins = "gpio177", "gpio178", "gpio179", "gpio180", "gpio181", "gpio182"; |
| function = "rgmii_0"; |
| drive-strength = <16>; |
| bias-disable; |
| }; |
| }; |
| |
| ethernet1_default: ethernet1-default-state { |
| mdc-pins { |
| pins = "gpio97"; |
| function = "rgmii_1"; |
| drive-strength = <16>; |
| bias-pull-up; |
| }; |
| |
| mdio-pins { |
| pins = "gpio98"; |
| function = "rgmii_1"; |
| drive-strength = <16>; |
| bias-pull-up; |
| }; |
| |
| rgmii-tx-pins { |
| pins = "gpio105", "gpio106", "gpio107", "gpio108", "gpio109", "gpio110"; |
| function = "rgmii_1"; |
| drive-strength = <16>; |
| bias-pull-up; |
| }; |
| |
| rgmii-rx-pins { |
| pins = "gpio99", "gpio100", "gpio101", "gpio102", "gpio103", "gpio104"; |
| function = "rgmii_1"; |
| drive-strength = <16>; |
| bias-disable; |
| }; |
| }; |
| |
| i2c0_default: i2c0-default-state { |
| /* To USB7002T-I/KDXVA0 USB hub (SIP1 only) */ |
| pins = "gpio135", "gpio136"; |
| function = "qup0"; |
| drive-strength = <2>; |
| bias-pull-up; |
| }; |
| |
| i2c1_default: i2c1-default-state { |
| /* To PM40028B-F3EI PCIe switch */ |
| pins = "gpio158", "gpio159"; |
| function = "qup1"; |
| drive-strength = <2>; |
| bias-pull-up; |
| }; |
| |
| i2c12_default: i2c12-default-state { |
| /* To Maxim max20411 */ |
| pins = "gpio0", "gpio1"; |
| function = "qup12"; |
| drive-strength = <2>; |
| bias-pull-up; |
| }; |
| |
| i2c15_default: i2c15-default-state { |
| /* To display connector (SIP1 only) */ |
| pins = "gpio36", "gpio37"; |
| function = "qup15"; |
| drive-strength = <2>; |
| bias-pull-up; |
| }; |
| |
| i2c18_default: i2c18-default-state { |
| /* To ASM330LHH IMU (SIP1 only) */ |
| pins = "gpio66", "gpio67"; |
| function = "qup18"; |
| drive-strength = <2>; |
| bias-pull-up; |
| }; |
| |
| pcie2a_default: pcie2a-default-state { |
| perst-pins { |
| pins = "gpio143"; |
| function = "gpio"; |
| drive-strength = <2>; |
| bias-pull-down; |
| }; |
| |
| clkreq-pins { |
| pins = "gpio142"; |
| function = "pcie2a_clkreq"; |
| drive-strength = <2>; |
| bias-pull-up; |
| }; |
| |
| wake-pins { |
| pins = "gpio145"; |
| function = "gpio"; |
| drive-strength = <2>; |
| bias-pull-up; |
| }; |
| }; |
| |
| pcie3a_default: pcie3a-default-state { |
| perst-pins { |
| pins = "gpio151"; |
| function = "gpio"; |
| drive-strength = <2>; |
| bias-pull-down; |
| }; |
| |
| clkreq-pins { |
| pins = "gpio150"; |
| function = "pcie3a_clkreq"; |
| drive-strength = <2>; |
| bias-pull-up; |
| }; |
| |
| wake-pins { |
| pins = "gpio56"; |
| function = "gpio"; |
| drive-strength = <2>; |
| bias-pull-up; |
| }; |
| }; |
| }; |