blob: 41215567b3aed7d4211a8a4c5ab94042d205b422 [file] [log] [blame]
// 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 "sc8280xp.dtsi"
#include "sc8280xp-pmics.dtsi"
/ {
model = "Qualcomm SC8280XP CRD";
compatible = "qcom,sc8280xp-crd", "qcom,sc8280xp";
aliases {
i2c4 = &i2c4;
i2c21 = &i2c21;
serial0 = &uart17;
};
backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pmc8280c_lpg 3 1000000>;
enable-gpios = <&pmc8280_1_gpios 8 GPIO_ACTIVE_HIGH>;
power-supply = <&vreg_edp_bl>;
pinctrl-names = "default";
pinctrl-0 = <&edp_bl_en>, <&edp_bl_pwm>;
};
chosen {
stdout-path = "serial0:115200n8";
};
pmic-glink {
compatible = "qcom,sc8280xp-pmic-glink", "qcom,pmic-glink";
#address-cells = <1>;
#size-cells = <0>;
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_con0_hs: endpoint {
remote-endpoint = <&usb_0_role_switch>;
};
};
port@1 {
reg = <1>;
pmic_glink_con0_ss: endpoint {
remote-endpoint = <&usb_0_qmpphy_out>;
};
};
port@2 {
reg = <2>;
pmic_glink_con0_sbu: endpoint {
remote-endpoint = <&usb0_sbu_mux>;
};
};
};
};
connector@1 {
compatible = "usb-c-connector";
reg = <1>;
power-role = "dual";
data-role = "dual";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
pmic_glink_con1_hs: endpoint {
remote-endpoint = <&usb_1_role_switch>;
};
};
port@1 {
reg = <1>;
pmic_glink_con1_ss: endpoint {
remote-endpoint = <&usb_1_qmpphy_out>;
};
};
port@2 {
reg = <2>;
pmic_glink_con1_sbu: endpoint {
remote-endpoint = <&usb1_sbu_mux>;
};
};
};
};
};
vreg_edp_3p3: regulator-edp-3p3 {
compatible = "regulator-fixed";
regulator-name = "VREG_EDP_3P3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&tlmm 25 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&edp_reg_en>;
regulator-boot-on;
};
vreg_edp_bl: regulator-edp-bl {
compatible = "regulator-fixed";
regulator-name = "VREG_EDP_BL";
regulator-min-microvolt = <3600000>;
regulator-max-microvolt = <3600000>;
gpio = <&pmc8280_1_gpios 9 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&edp_bl_reg_en>;
regulator-boot-on;
};
vreg_nvme: regulator-nvme {
compatible = "regulator-fixed";
regulator-name = "VREG_NVME_3P3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&tlmm 135 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&nvme_reg_en>;
};
vreg_misc_3p3: regulator-misc-3p3 {
compatible = "regulator-fixed";
regulator-name = "VREG_MISC_3P3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&pmc8280_1_gpios 2 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&misc_3p3_reg_en>;
regulator-boot-on;
regulator-always-on;
};
vreg_wlan: regulator-wlan {
compatible = "regulator-fixed";
regulator-name = "VPH_PWR_WLAN";
regulator-min-microvolt = <3900000>;
regulator-max-microvolt = <3900000>;
gpio = <&pmr735a_gpios 1 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&hastings_reg_en>;
regulator-boot-on;
};
vreg_wwan: regulator-wwan {
compatible = "regulator-fixed";
regulator-name = "SDX_VPH_PWR";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&pmc8280_2_gpios 1 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&wwan_sw_en>;
regulator-boot-on;
};
reserved-memory {
gpu_mem: gpu-mem@8bf00000 {
reg = <0 0x8bf00000 0 0x2000>;
no-map;
};
linux,cma {
compatible = "shared-dma-pool";
size = <0x0 0x8000000>;
reusable;
linux,cma-default;
};
};
usb0-sbu-mux {
compatible = "pericom,pi3usb102", "gpio-sbu-mux";
enable-gpios = <&tlmm 101 GPIO_ACTIVE_LOW>;
select-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&usb0_sbu_default>;
mode-switch;
orientation-switch;
port {
usb0_sbu_mux: endpoint {
remote-endpoint = <&pmic_glink_con0_sbu>;
};
};
};
usb1-sbu-mux {
compatible = "pericom,pi3usb102", "gpio-sbu-mux";
enable-gpios = <&tlmm 48 GPIO_ACTIVE_LOW>;
select-gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&usb1_sbu_default>;
mode-switch;
orientation-switch;
port {
usb1_sbu_mux: endpoint {
remote-endpoint = <&pmic_glink_con1_sbu>;
};
};
};
};
&apps_rsc {
regulators-0 {
compatible = "qcom,pm8350-rpmh-regulators";
qcom,pmic-id = "b";
vdd-l3-l5-supply = <&vreg_s11b>;
vreg_s11b: smps11 {
regulator-name = "vreg_s11b";
regulator-min-microvolt = <1272000>;
regulator-max-microvolt = <1272000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l3b: ldo3 {
regulator-name = "vreg_l3b";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-boot-on;
};
vreg_l4b: ldo4 {
regulator-name = "vreg_l4b";
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l6b: ldo6 {
regulator-name = "vreg_l6b";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <880000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-boot-on;
};
};
regulators-1 {
compatible = "qcom,pm8350c-rpmh-regulators";
qcom,pmic-id = "c";
vreg_l1c: ldo1 {
regulator-name = "vreg_l1c";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l6c: ldo6 {
regulator-name = "vreg_l6c";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2960000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l7c: ldo7 {
regulator-name = "vreg_l7c";
regulator-min-microvolt = <2504000>;
regulator-max-microvolt = <2504000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
RPMH_REGULATOR_MODE_HPM>;
};
vreg_l9c: ldo9 {
regulator-name = "vreg_l9c";
regulator-min-microvolt = <2960000>;
regulator-max-microvolt = <2960000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l13c: ldo13 {
regulator-name = "vreg_l13c";
regulator-min-microvolt = <3072000>;
regulator-max-microvolt = <3072000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};
regulators-2 {
compatible = "qcom,pm8350-rpmh-regulators";
qcom,pmic-id = "d";
vdd-l1-l4-supply = <&vreg_s11b>;
vreg_l3d: ldo3 {
regulator-name = "vreg_l3d";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-allow-set-load;
regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
RPMH_REGULATOR_MODE_HPM>;
};
vreg_l4d: ldo4 {
regulator-name = "vreg_l4d";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l6d: ldo6 {
regulator-name = "vreg_l6d";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <880000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l7d: ldo7 {
regulator-name = "vreg_l7d";
regulator-min-microvolt = <3072000>;
regulator-max-microvolt = <3072000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vreg_l9d: ldo9 {
regulator-name = "vreg_l9d";
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};
};
&dispcc0 {
status = "okay";
};
&gpu {
status = "okay";
zap-shader {
memory-region = <&gpu_mem>;
firmware-name = "qcom/sc8280xp/qcdxkmsuc8280.mbn";
};
};
&mdss0 {
status = "okay";
};
&mdss0_dp0 {
status = "okay";
};
&mdss0_dp0_out {
data-lanes = <0 1>;
remote-endpoint = <&usb_0_qmpphy_dp_in>;
};
&mdss0_dp1 {
status = "okay";
};
&mdss0_dp1_out {
data-lanes = <0 1>;
remote-endpoint = <&usb_1_qmpphy_dp_in>;
};
&mdss0_dp3 {
compatible = "qcom,sc8280xp-edp";
/delete-property/ #sound-dai-cells;
data-lanes = <0 1 2 3>;
status = "okay";
aux-bus {
panel {
compatible = "edp-panel";
power-supply = <&vreg_edp_3p3>;
backlight = <&backlight>;
port {
edp_panel_in: endpoint {
remote-endpoint = <&mdss0_dp3_out>;
};
};
};
};
ports {
port@1 {
reg = <1>;
mdss0_dp3_out: endpoint {
remote-endpoint = <&edp_panel_in>;
};
};
};
};
&mdss0_dp3_phy {
compatible = "qcom,sc8280xp-edp-phy";
vdda-phy-supply = <&vreg_l6b>;
vdda-pll-supply = <&vreg_l3b>;
status = "okay";
};
&i2c4 {
clock-frequency = <400000>;
pinctrl-names = "default";
pinctrl-0 = <&i2c4_default>;
status = "okay";
touchscreen@10 {
compatible = "hid-over-i2c";
reg = <0x10>;
hid-descr-addr = <0x1>;
interrupts-extended = <&tlmm 175 IRQ_TYPE_LEVEL_LOW>;
vdd-supply = <&vreg_misc_3p3>;
pinctrl-names = "default";
pinctrl-0 = <&ts0_default>;
};
};
&i2c21 {
clock-frequency = <400000>;
pinctrl-names = "default";
pinctrl-0 = <&i2c21_default>;
status = "okay";
touchpad@15 {
compatible = "hid-over-i2c";
reg = <0x15>;
hid-descr-addr = <0x1>;
interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
vdd-supply = <&vreg_misc_3p3>;
pinctrl-names = "default";
pinctrl-0 = <&tpad_default>;
wakeup-source;
};
keyboard@68 {
compatible = "hid-over-i2c";
reg = <0x68>;
hid-descr-addr = <0x1>;
interrupts-extended = <&tlmm 104 IRQ_TYPE_LEVEL_LOW>;
vdd-supply = <&vreg_misc_3p3>;
pinctrl-names = "default";
pinctrl-0 = <&kybd_default>;
wakeup-source;
};
};
&pcie2a {
perst-gpios = <&tlmm 143 GPIO_ACTIVE_LOW>;
wake-gpios = <&tlmm 145 GPIO_ACTIVE_LOW>;
vddpe-3v3-supply = <&vreg_nvme>;
pinctrl-names = "default";
pinctrl-0 = <&pcie2a_default>;
status = "okay";
};
&pcie2a_phy {
vdda-phy-supply = <&vreg_l6d>;
vdda-pll-supply = <&vreg_l4d>;
status = "okay";
};
&pcie3a {
perst-gpios = <&tlmm 151 GPIO_ACTIVE_LOW>;
wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
vddpe-3v3-supply = <&vreg_wwan>;
pinctrl-names = "default";
pinctrl-0 = <&pcie3a_default>;
status = "okay";
};
&pcie3a_phy {
vdda-phy-supply = <&vreg_l6d>;
vdda-pll-supply = <&vreg_l4d>;
status = "okay";
};
&pcie4 {
max-link-speed = <2>;
perst-gpios = <&tlmm 141 GPIO_ACTIVE_LOW>;
wake-gpios = <&tlmm 139 GPIO_ACTIVE_LOW>;
vddpe-3v3-supply = <&vreg_wlan>;
pinctrl-names = "default";
pinctrl-0 = <&pcie4_default>;
status = "okay";
};
&pcie4_phy {
vdda-phy-supply = <&vreg_l6d>;
vdda-pll-supply = <&vreg_l4d>;
status = "okay";
};
&pmc8280c_lpg {
status = "okay";
};
&pmk8280_pon_pwrkey {
status = "okay";
};
&pmk8280_rtc {
nvmem-cells = <&rtc_offset>;
nvmem-cell-names = "offset";
status = "okay";
};
&pmk8280_sdam_6 {
status = "okay";
rtc_offset: rtc-offset@bc {
reg = <0xbc 0x4>;
};
};
&qup0 {
status = "okay";
};
&qup1 {
status = "okay";
};
&qup2 {
status = "okay";
};
&remoteproc_adsp {
firmware-name = "qcom/sc8280xp/qcadsp8280.mbn";
status = "okay";
};
&remoteproc_nsp0 {
firmware-name = "qcom/sc8280xp/qccdsp8280.mbn";
status = "okay";
};
&sdc2 {
pinctrl-0 = <&sdc2_default_state>;
pinctrl-1 = <&sdc2_sleep_state>;
pinctrl-names = "default", "sleep";
vmmc-supply = <&vreg_l9c>;
vqmmc-supply = <&vreg_l6c>;
cd-gpios = <&tlmm 131 GPIO_ACTIVE_LOW>;
status = "okay";
};
&uart17 {
compatible = "qcom,geni-debug-uart";
status = "okay";
};
&ufs_mem_hc {
reset-gpios = <&tlmm 228 GPIO_ACTIVE_LOW>;
vcc-supply = <&vreg_l7c>;
vcc-max-microamp = <800000>;
vccq-supply = <&vreg_l3d>;
vccq-max-microamp = <900000>;
status = "okay";
};
&ufs_mem_phy {
vdda-phy-supply = <&vreg_l6b>;
vdda-pll-supply = <&vreg_l3b>;
status = "okay";
};
&usb_0 {
status = "okay";
};
&usb_0_dwc3 {
dr_mode = "host";
};
&usb_0_hsphy {
vdda-pll-supply = <&vreg_l9d>;
vdda18-supply = <&vreg_l1c>;
vdda33-supply = <&vreg_l7d>;
status = "okay";
};
&usb_0_qmpphy {
vdda-phy-supply = <&vreg_l9d>;
vdda-pll-supply = <&vreg_l4d>;
orientation-switch;
status = "okay";
};
&usb_0_qmpphy_dp_in {
remote-endpoint = <&mdss0_dp0_out>;
};
&usb_0_qmpphy_out {
remote-endpoint = <&pmic_glink_con0_ss>;
};
&usb_0_role_switch {
remote-endpoint = <&pmic_glink_con0_hs>;
};
&usb_1 {
status = "okay";
};
&usb_1_dwc3 {
dr_mode = "host";
};
&usb_1_hsphy {
vdda-pll-supply = <&vreg_l4b>;
vdda18-supply = <&vreg_l1c>;
vdda33-supply = <&vreg_l13c>;
status = "okay";
};
&usb_1_qmpphy {
vdda-phy-supply = <&vreg_l4b>;
vdda-pll-supply = <&vreg_l3b>;
orientation-switch;
status = "okay";
};
&usb_1_qmpphy_dp_in {
remote-endpoint = <&mdss0_dp1_out>;
};
&usb_1_qmpphy_out {
remote-endpoint = <&pmic_glink_con1_ss>;
};
&usb_1_role_switch {
remote-endpoint = <&pmic_glink_con1_hs>;
};
&xo_board_clk {
clock-frequency = <38400000>;
};
/* PINCTRL - additions to nodes defined in sc8280xp.dtsi */
&pmc8280_1_gpios {
edp_bl_en: edp-bl-en-state {
pins = "gpio8";
function = "normal";
};
edp_bl_reg_en: edp-bl-reg-en-state {
pins = "gpio9";
function = "normal";
};
misc_3p3_reg_en: misc-3p3-reg-en-state {
pins = "gpio2";
function = "normal";
};
};
&pmc8280_2_gpios {
wwan_sw_en: wwan-sw-en-state {
pins = "gpio1";
function = "normal";
};
};
&pmc8280c_gpios {
edp_bl_pwm: edp-bl-pwm-state {
pins = "gpio8";
function = "func1";
};
};
&pmr735a_gpios {
hastings_reg_en: hastings-reg-en-state {
pins = "gpio1";
function = "normal";
};
};
&tlmm {
gpio-reserved-ranges = <74 6>, <83 4>, <125 2>, <128 2>, <154 7>;
edp_reg_en: edp-reg-en-state {
pins = "gpio25";
function = "gpio";
drive-strength = <16>;
bias-disable;
};
i2c4_default: i2c4-default-state {
pins = "gpio171", "gpio172";
function = "qup4";
drive-strength = <16>;
bias-disable;
};
i2c21_default: i2c21-default-state {
pins = "gpio81", "gpio82";
function = "qup21";
drive-strength = <16>;
bias-disable;
};
kybd_default: kybd-default-state {
disable-pins {
pins = "gpio102";
function = "gpio";
output-low;
};
int-n-pins {
pins = "gpio104";
function = "gpio";
bias-disable;
};
reset-pins {
pins = "gpio105";
function = "gpio";
bias-disable;
};
};
nvme_reg_en: nvme-reg-en-state {
pins = "gpio135";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
pcie2a_default: pcie2a-default-state {
clkreq-n-pins {
pins = "gpio142";
function = "pcie2a_clkreq";
drive-strength = <2>;
bias-pull-up;
};
perst-n-pins {
pins = "gpio143";
function = "gpio";
drive-strength = <2>;
bias-pull-down;
};
wake-n-pins {
pins = "gpio145";
function = "gpio";
drive-strength = <2>;
bias-pull-up;
};
};
pcie3a_default: pcie3a-default-state {
clkreq-n-pins {
pins = "gpio150";
function = "pcie3a_clkreq";
drive-strength = <2>;
bias-pull-up;
};
perst-n-pins {
pins = "gpio151";
function = "gpio";
drive-strength = <2>;
bias-pull-down;
};
wake-n-pins {
pins = "gpio148";
function = "gpio";
drive-strength = <2>;
bias-pull-up;
};
};
pcie4_default: pcie4-default-state {
clkreq-n-pins {
pins = "gpio140";
function = "pcie4_clkreq";
drive-strength = <2>;
bias-pull-up;
};
perst-n-pins {
pins = "gpio141";
function = "gpio";
drive-strength = <2>;
bias-pull-down;
};
wake-n-pins {
pins = "gpio139";
function = "gpio";
drive-strength = <2>;
bias-pull-up;
};
};
sdc2_default_state: sdc2-default-state {
clk-pins {
pins = "sdc2_clk";
drive-strength = <16>;
bias-disable;
};
cmd-pins {
pins = "sdc2_cmd";
drive-strength = <16>;
bias-pull-up;
};
data-pins {
pins = "sdc2_data";
drive-strength = <16>;
bias-pull-up;
};
card-detect-pins {
pins = "gpio131";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
};
sdc2_sleep_state: sdc2-sleep-state {
clk-pins {
pins = "sdc2_clk";
drive-strength = <2>;
bias-disable;
};
cmd-pins {
pins = "sdc2_cmd";
drive-strength = <2>;
bias-pull-up;
};
data-pins {
pins = "sdc2_data";
drive-strength = <2>;
bias-pull-up;
};
card-detect-pins {
pins = "gpio131";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
};
tpad_default: tpad-default-state {
int-n-pins {
pins = "gpio182";
function = "gpio";
bias-disable;
};
};
ts0_default: ts0-default-state {
int-n-pins {
pins = "gpio175";
function = "gpio";
bias-disable;
};
reset-n-pins {
pins = "gpio99";
function = "gpio";
output-high;
drive-strength = <16>;
};
};
usb0_sbu_default: usb0-sbu-state {
oe-n-pins {
pins = "gpio101";
function = "gpio";
bias-disable;
drive-strength = <16>;
output-high;
};
sel-pins {
pins = "gpio164";
function = "gpio";
bias-disable;
drive-strength = <16>;
};
mode-pins {
pins = "gpio167";
function = "gpio";
bias-disable;
drive-strength = <16>;
output-high;
};
};
usb1_sbu_default: usb1-sbu-state {
oe-n-pins {
pins = "gpio48";
function = "gpio";
bias-disable;
drive-strength = <16>;
output-high;
};
sel-pins {
pins = "gpio47";
function = "gpio";
bias-disable;
drive-strength = <16>;
};
mode-pins {
pins = "gpio50";
function = "gpio";
bias-disable;
drive-strength = <16>;
output-high;
};
};
};