linux-loongson/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
Nícolas F. R. A. Prado 99e94768c8 arm64: dts: qcom: sc7180-trogdor: Disable pwmleds node where unused
Currently the keyboard backlight is described in the common
sc7180-trogdor dtsi as an led node below a pwmleds node, and the led
node is set to disabled. Only the boards that have a keyboard backlight
enable it.

However, since the parent pwmleds node is still enabled everywhere, even
on boards that don't have keyboard backlight it is probed and fails,
resulting in an error:

  leds_pwm pwmleds: probe with driver leds_pwm failed with error -22

as well as a failure in the DT kselftest:

  not ok 45 /pwmleds

Fix this by controlling the status of the parent pwmleds node instead of
the child led, based on the presence of keyboard backlight. This is what
is done on sc7280 already.

While at it add a missing blank line before the child node to follow the
coding style.

Fixes: 7ec3e67307 ("arm64: dts: qcom: sc7180-trogdor: add initial trogdor and lazor dt")
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Link: https://lore.kernel.org/r/20240614-sc7180-pwmleds-probe-v1-1-e2c3f1b42a43@collabora.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
2024-06-21 00:38:24 -05:00

1543 lines
30 KiB
Plaintext

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Google Trogdor device tree source (common between revisions)
*
* Copyright 2019 Google LLC.
*/
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/gpio-keys.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include <dt-bindings/sound/sc7180-lpass.h>
#include "sc7180.dtsi"
#include "sc7180-firmware-tfa.dtsi"
/* PMICs depend on spmi_bus label and so must come after sc7180.dtsi */
#include "pm6150.dtsi"
#include "pm6150l.dtsi"
/ {
thermal-zones {
charger_thermal: charger-thermal {
thermal-sensors = <&pm6150_adc_tm 0>;
trips {
charger-crit {
temperature = <125000>;
hysteresis = <1000>;
type = "critical";
};
};
};
};
};
/*
* Reserved memory changes
*
* Delete all unused memory nodes and define the peripheral memory regions
* required by the board dts.
*/
/delete-node/ &hyp_mem;
/delete-node/ &ipa_fw_mem;
/delete-node/ &xbl_mem;
/delete-node/ &aop_mem;
/delete-node/ &sec_apps_mem;
/delete-node/ &tz_mem;
/* Increase the size from 2MB to 8MB */
&rmtfs_mem {
reg = <0x0 0x94600000 0x0 0x800000>;
};
/ {
reserved-memory {
atf_mem: memory@80b00000 {
reg = <0x0 0x80b00000 0x0 0x100000>;
no-map;
};
mpss_mem: memory@86000000 {
reg = <0x0 0x86000000 0x0 0x2000000>;
no-map;
};
venus_mem: memory@8f600000 {
reg = <0 0x8f600000 0 0x500000>;
no-map;
};
wlan_mem: memory@94100000 {
reg = <0x0 0x94100000 0x0 0x200000>;
no-map;
};
mba_mem: memory@94400000 {
reg = <0x0 0x94400000 0x0 0x200000>;
no-map;
};
mdata_mem: mpss-metadata {
alloc-ranges = <0x0 0xa0000000 0x0 0x20000000>;
size = <0x0 0x4000>;
no-map;
};
};
aliases {
bluetooth0 = &bluetooth;
hsuart0 = &uart3;
serial0 = &uart8;
wifi0 = &wifi;
};
chosen {
stdout-path = "serial0:115200n8";
};
/* FIXED REGULATORS - parents above children */
/* This is the top level supply and variable voltage */
ppvar_sys: ppvar-sys-regulator {
compatible = "regulator-fixed";
regulator-name = "ppvar_sys";
regulator-always-on;
regulator-boot-on;
};
/* This divides ppvar_sys by 2, so voltage is variable */
src_vph_pwr: src-vph-pwr-regulator {
compatible = "regulator-fixed";
regulator-name = "src_vph_pwr";
/* EC turns on with switchcap_on; always on for AP */
regulator-always-on;
regulator-boot-on;
vin-supply = <&ppvar_sys>;
};
pp5000_a: pp5000-a-regulator {
compatible = "regulator-fixed";
regulator-name = "pp5000_a";
/* EC turns on with en_pp5000_a; always on for AP */
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&ppvar_sys>;
};
pp3300_a: pp3300-a-regulator {
compatible = "regulator-fixed";
regulator-name = "pp3300_a";
/* EC turns on with en_pp3300_a; always on for AP */
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
/*
* Actually should be pp3300 but that's practically an alias for
* pp3300_a so we use pp3300's vin-supply here to avoid one more
* node.
*/
vin-supply = <&ppvar_sys>;
};
pp1800_ec:
pp1800_sensors:
pp1800_ldo: pp1800-ldo-regulator {
compatible = "regulator-fixed";
regulator-name = "pp1800_ldo";
/* EC turns on with hibernate_l; always on for AP */
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
/*
* Actually should be pp1800_h1 but we don't have any need to
* model that so we use the parent of pp1800_h1.
*/
vin-supply = <&pp3300_a>;
};
pp1800_uf_cam: pp1800-uf-cam-regulator {
compatible = "regulator-fixed";
regulator-name = "pp1800_uf_cam";
status = "disabled";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
gpio = <&tlmm 6 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&uf_cam_en>;
vin-supply = <&pp1800_ldo>;
regulator-enable-ramp-delay = <1000>;
};
pp1800_wf_cam: pp1800-wf-cam-regulator {
compatible = "regulator-fixed";
regulator-name = "pp1800_wf_cam";
status = "disabled";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
gpio = <&tlmm 7 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&wf_cam_en>;
vin-supply = <&pp1800_ldo>;
regulator-enable-ramp-delay = <1000>;
};
pp2800_uf_cam: pp2800-uf-cam-regulator {
compatible = "regulator-fixed";
regulator-name = "pp2800_uf_cam";
status = "disabled";
regulator-min-microvolt = <2850000>;
regulator-max-microvolt = <2850000>;
gpio = <&tlmm 6 GPIO_ACTIVE_HIGH>;
enable-active-high;
/*
* The pinconf can only be referenced once so we put it on the
* first regulator and comment it out here.
* pinctrl-names = "default";
* pinctrl-0 = <&uf_cam_en>;
*/
vin-supply = <&pp3300_a>;
};
pp2800_vcm_wf_cam:
pp2800_wf_cam: pp2800-wf-cam-regulator {
compatible = "regulator-fixed";
regulator-name = "pp2800_wf_cam";
status = "disabled";
regulator-min-microvolt = <2850000>;
regulator-max-microvolt = <2850000>;
gpio = <&tlmm 7 GPIO_ACTIVE_HIGH>;
enable-active-high;
/*
* The pinconf can only be referenced once so we put it on the
* first regulator and comment it out here.
* pinctrl-names = "default";
* pinctrl-0 = <&wf_cam_en>;
*/
vin-supply = <&pp3300_a>;
};
pp3300_audio:
pp3300_codec: pp3300-codec-regulator {
compatible = "regulator-fixed";
regulator-name = "pp3300_codec";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&tlmm 83 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&en_pp3300_codec>;
vin-supply = <&pp3300_a>;
};
pp3300_dx_edp:
pp3300_ts: pp3300-dx-edp-regulator {
compatible = "regulator-fixed";
regulator-name = "pp3300_dx_edp";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&tlmm 30 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&en_pp3300_dx_edp>;
vin-supply = <&pp3300_a>;
};
pp3300_fp_tp: pp3300-fp-tp-regulator {
compatible = "regulator-fixed";
regulator-name = "pp3300_fp_tp";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
/* AP turns on with PP1800_VIO_OUT; always on for AP */
regulator-always-on;
regulator-boot-on;
vin-supply = <&pp3300_a>;
};
pp3300_hub: pp3300-hub-regulator {
compatible = "regulator-fixed";
regulator-name = "pp3300_hub";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&tlmm 84 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
pinctrl-0 = <&en_pp3300_hub>;
/* The BIOS leaves this regulator on */
regulator-boot-on;
vin-supply = <&pp3300_a>;
};
/* BOARD-SPECIFIC TOP LEVEL NODES */
backlight: backlight {
compatible = "pwm-backlight";
/* The panels don't seem to like anything below ~ 5% */
brightness-levels = <
196 256 324 400 484 576 676 784 900 1024 1156 1296
1444 1600 1764 1936 2116 2304 2500 2704 2916 3136
3364 3600 3844 4096
>;
num-interpolated-steps = <64>;
default-brightness-level = <951>;
pwms = <&cros_ec_pwm 1>;
enable-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>;
power-supply = <&ppvar_sys>;
pinctrl-names = "default";
pinctrl-0 = <&ap_edp_bklten>;
};
gpio_keys: gpio-keys {
compatible = "gpio-keys";
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <&pen_pdct_l>;
pen_insert: switch-pen-insert {
label = "Pen Insert";
/* Insert = low, eject = high */
gpios = <&tlmm 52 GPIO_ACTIVE_LOW>;
linux,code = <SW_PEN_INSERTED>;
linux,input-type = <EV_SW>;
wakeup-event-action = <EV_ACT_DEASSERTED>;
wakeup-source;
};
};
max98360a: audio-codec-0 {
compatible = "maxim,max98360a";
pinctrl-names = "default";
pinctrl-0 = <&amp_en>;
sdmode-gpios = <&tlmm 23 GPIO_ACTIVE_HIGH>;
#sound-dai-cells = <0>;
};
pwmleds: pwmleds {
compatible = "pwm-leds";
status = "disabled";
keyboard_backlight: led-0 {
label = "cros_ec::kbd_backlight";
function = LED_FUNCTION_KBD_BACKLIGHT;
pwms = <&cros_ec_pwm 0>;
max-brightness = <1023>;
};
};
sound: sound {
compatible = "google,sc7180-trogdor";
audio-routing =
"Headphone Jack", "HPOL",
"Headphone Jack", "HPOR";
#address-cells = <1>;
#size-cells = <0>;
dai-link@0 {
link-name = "MultiMedia0";
reg = <MI2S_PRIMARY>;
cpu {
sound-dai = <&lpass_cpu MI2S_PRIMARY>;
};
sound_multimedia0_codec: codec {
sound-dai = <&alc5682 0 /* aif1 */>;
};
};
dai-link@1 {
link-name = "MultiMedia1";
reg = <MI2S_SECONDARY>;
cpu {
sound-dai = <&lpass_cpu MI2S_SECONDARY>;
};
sound_multimedia1_codec: codec {
sound-dai = <&max98360a>;
};
};
dai-link@5 {
link-name = "MultiMedia2";
reg = <LPASS_DP_RX>;
cpu {
sound-dai = <&lpass_cpu LPASS_DP_RX>;
};
codec {
sound-dai = <&mdss_dp>;
};
};
};
};
&qfprom {
vcc-supply = <&pp1800_l11a>;
};
&qspi {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data0>, <&qspi_data1>;
pinctrl-1 = <&qspi_sleep>;
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <37500000>;
spi-tx-bus-width = <2>;
spi-rx-bus-width = <2>;
};
};
&apps_rsc {
regulators-0 {
compatible = "qcom,pm6150-rpmh-regulators";
qcom,pmic-id = "a";
vddpx_1:
vdd2:
pp1125_s1a: smps1 {
regulator-min-microvolt = <1128000>;
regulator-max-microvolt = <1128000>;
};
vdd_qlink_lv:
vdd_qlink_lv_ck:
vdd_qusb_hs0_core:
vdd_ufs1_core:
vdda_mipi_csi0_0p9:
vdda_mipi_csi1_0p9:
vdda_mipi_csi2_0p9:
vdda_mipi_csi3_0p9:
vdda_mipi_dsi0_pll:
vdda_pll_cc_ebi01:
vdda_qrefs_0p9:
vdda_usb_ss_dp_core:
pp900_l4a: ldo4 {
regulator-min-microvolt = <824000>;
regulator-max-microvolt = <928000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vdd_cx_wlan:
pp800_l9a: ldo9 {
regulator-min-microvolt = <488000>;
regulator-max-microvolt = <800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vdd1:
vddpx_3:
vddpx_7:
vio_in:
pp1800_l10a: ldo10 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vdd_qfprom:
vdda_apc1_cs_1p8:
vdda_qrefs_1p8:
vdda_qusb_hs0_1p8:
vddpx_11:
vreg_bb_clk:
pp1800_l11a: ldo11 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
mcp_vccq:
pp1800_l12a_r: ldo12 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
/*
* On trogdor this needs to match l10a since we use it to
* give power to things like SPI flash which communicate back
* on lines powered by l10a. Thus we force to 1.8V.
*/
pp1800_l13a: ldo13 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
regulator-always-on;
regulator-boot-on;
};
pp1800_prox:
pp1800_l14a: ldo14 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pp1800_alc5682:
pp1800_l15a: ldo15 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vdda_qusb_hs0_3p1:
vdd_pdphy:
pp3100_l17a: ldo17 {
regulator-min-microvolt = <2920000>;
regulator-max-microvolt = <3232000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pp1800_pen:
pp1800_l18a: ldo18 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
mcp_vcc:
pp2850_l19a: ldo19 {
regulator-min-microvolt = <2960000>;
regulator-max-microvolt = <2960000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
};
regulators-1 {
compatible = "qcom,pm6150l-rpmh-regulators";
qcom,pmic-id = "c";
pp1300_s8c: smps8 {
regulator-min-microvolt = <1120000>;
regulator-max-microvolt = <1408000>;
};
pp1800_l1c: ldo1 {
regulator-min-microvolt = <1616000>;
regulator-max-microvolt = <1984000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vdd_wcss_adc_dac:
pp1300_l2c: ldo2 {
regulator-min-microvolt = <1168000>;
regulator-max-microvolt = <1304000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pp1200_brij:
vdd_ufs1_1p2:
vdda_csi0_1p25:
vdda_csi1_1p25:
vdda_csi2_1p25:
vdda_csi3_1p25:
vdda_hv_ebi0:
vdda_mipi_dsi0_1p2:
vdda_usb_ss_dp_1p2:
vddpx_10:
pp1200_l3c: ldo3 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
vddpx_2:
ppvar_l6c: ldo6 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2952000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pp3300_l7c: ldo7 {
regulator-min-microvolt = <3304000>;
regulator-max-microvolt = <3304000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pp1800_brij_vccio:
pp1800_edp_vpll:
pp1800_l8c: ldo8 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pp2950_l9c: ldo9 {
regulator-min-microvolt = <2952000>;
regulator-max-microvolt = <2952000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pp3300_l10c: ldo10 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3400000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pp3300_l11c: ldo11 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3400000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
src_vreg_bob: bob {
regulator-min-microvolt = <3008000>;
regulator-max-microvolt = <3960000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
};
};
};
ap_ec_spi: &spi6 {
status = "okay";
cros_ec: ec@0 {
compatible = "google,cros-ec-spi";
reg = <0>;
interrupt-parent = <&tlmm>;
interrupts = <94 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&ap_ec_int_l>;
spi-max-frequency = <3000000>;
wakeup-source;
cros_ec_pwm: pwm {
compatible = "google,cros-ec-pwm";
#pwm-cells = <1>;
};
i2c_tunnel: i2c-tunnel {
compatible = "google,cros-ec-i2c-tunnel";
google,remote-bus = <0>;
#address-cells = <1>;
#size-cells = <0>;
};
typec {
compatible = "google,cros-ec-typec";
#address-cells = <1>;
#size-cells = <0>;
usb_c0: connector@0 {
compatible = "usb-c-connector";
reg = <0>;
label = "left";
power-role = "dual";
data-role = "host";
try-power-role = "source";
};
usb_c1: connector@1 {
compatible = "usb-c-connector";
reg = <1>;
label = "right";
power-role = "dual";
data-role = "host";
try-power-role = "source";
};
};
};
};
ap_h1_spi: &spi0 {
status = "okay";
cr50: tpm@0 {
compatible = "google,cr50";
reg = <0>;
pinctrl-names = "default";
pinctrl-0 = <&h1_ap_int_odl>;
spi-max-frequency = <800000>;
interrupt-parent = <&tlmm>;
interrupts = <42 IRQ_TYPE_EDGE_RISING>;
};
};
&camcc {
status = "disabled";
};
ap_sar_sensor_i2c: &i2c5 {
clock-frequency = <400000>;
ap_sar_sensor: proximity@28 {
compatible = "semtech,sx9310";
reg = <0x28>;
#io-channel-cells = <1>;
pinctrl-names = "default";
pinctrl-0 = <&p_sensor_int_l>;
interrupt-parent = <&tlmm>;
interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
vdd-supply = <&pp3300_a>;
svdd-supply = <&pp1800_prox>;
label = "proximity-wifi";
};
};
ap_tp_i2c: &i2c7 {
clock-frequency = <400000>;
trackpad: trackpad@15 {
compatible = "elan,ekth3000";
reg = <0x15>;
pinctrl-names = "default";
pinctrl-0 = <&tp_int_odl>;
interrupt-parent = <&tlmm>;
interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
vcc-supply = <&pp3300_fp_tp>;
wakeup-source;
};
};
hp_i2c: &i2c9 {
status = "okay";
clock-frequency = <400000>;
};
&lpasscc {
status = "okay";
};
&lpass_cpu {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&sec_mi2s_active>, <&pri_mi2s_active>, <&pri_mi2s_mclk_active>;
#address-cells = <1>;
#size-cells = <0>;
dai-link@0 {
reg = <MI2S_PRIMARY>;
qcom,playback-sd-lines = <1>;
qcom,capture-sd-lines = <0>;
};
secondary_mi2s: dai-link@1 {
reg = <MI2S_SECONDARY>;
qcom,playback-sd-lines = <0>;
};
dai-link@5 {
reg = <LPASS_DP_RX>;
};
};
&lpass_hm {
status = "okay";
};
&mdss {
status = "okay";
};
&mdss_dp {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&dp_hot_plug_det>;
};
&mdss_dp_out {
data-lanes = <0 1>;
link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000>;
};
&mdss_dsi0 {
status = "okay";
vdda-supply = <&vdda_mipi_dsi0_1p2>;
};
&mdss_dsi0_out {
data-lanes = <0 1 2 3>;
};
&mdss_dsi0_phy {
status = "okay";
vdds-supply = <&vdda_mipi_dsi0_pll>;
};
&pm6150_adc {
channel@4f {
reg = <ADC5_AMUX_THM3_100K_PU>;
qcom,ratiometric;
qcom,hw-settle-time = <200>;
label = "charger_therm";
};
};
&pm6150_adc_tm {
status = "okay";
charger-thermistor@0 {
reg = <0>;
io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>;
qcom,ratiometric;
qcom,hw-settle-time-us = <200>;
};
};
&pm6150_pon {
status = "disabled";
};
&qupv3_id_0 {
status = "okay";
};
&qupv3_id_1 {
status = "okay";
};
&remoteproc_mpss {
status = "okay";
compatible = "qcom,sc7180-mss-pil";
reg = <0 0x04080000 0 0x4040>, <0 0x04180000 0 0x48>;
reg-names = "qdsp6", "rmb";
clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
<&gcc GCC_MSS_Q6_MEMNOC_AXI_CLK>,
<&gcc GCC_MSS_NAV_AXI_CLK>,
<&gcc GCC_MSS_SNOC_AXI_CLK>,
<&gcc GCC_MSS_MFAB_AXIS_CLK>,
<&rpmhcc RPMH_CXO_CLK>;
clock-names = "iface", "bus", "nav", "snoc_axi", "mnoc_axi", "xo";
iommus = <&apps_smmu 0x461 0x0>, <&apps_smmu 0x444 0x3>;
memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;
/* This gets overridden for SKUs with LTE support. */
firmware-name = "qcom/sc7180-trogdor/modem-nolte/mba.mbn",
"qcom/sc7180-trogdor/modem-nolte/qdsp6sw.mbn";
resets = <&aoss_reset AOSS_CC_MSS_RESTART>,
<&pdc_reset PDC_MODEM_SYNC_RESET>;
reset-names = "mss_restart", "pdc_reset";
qcom,halt-regs = <&tcsr_regs_1 0x3000 0x5000 0x4000>;
qcom,spare-regs = <&tcsr_regs_2 0xb3e4>;
};
&scm {
/* TF-A firmware maps memory cached so mark dma-coherent to match. */
dma-coherent;
};
&sdhc_1 {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&sdc1_on>;
pinctrl-1 = <&sdc1_off>;
vmmc-supply = <&mcp_vcc>;
vqmmc-supply = <&mcp_vccq>;
};
&sdhc_2 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&sdc2_on>;
pinctrl-1 = <&sdc2_off>;
vmmc-supply = <&pp2950_l9c>;
vqmmc-supply = <&ppvar_l6c>;
cd-gpios = <&tlmm 69 GPIO_ACTIVE_LOW>;
};
&spi0 {
pinctrl-0 = <&qup_spi0_spi>, <&qup_spi0_cs_gpio>;
cs-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;
};
&spi6 {
pinctrl-0 = <&qup_spi6_spi>, <&qup_spi6_cs_gpio>;
cs-gpios = <&tlmm 62 GPIO_ACTIVE_LOW>;
};
ap_spi_fp: &spi10 {
pinctrl-0 = <&qup_spi10_spi>, <&qup_spi10_cs_gpio>;
cs-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>;
cros_ec_fp: ec@0 {
compatible = "google,cros-ec-fp", "google,cros-ec-spi";
reg = <0>;
interrupt-parent = <&tlmm>;
interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&fp_to_ap_irq_l>, <&fp_rst_l>, <&fpmcu_boot0>;
boot0-gpios = <&tlmm 10 GPIO_ACTIVE_HIGH>;
reset-gpios = <&tlmm 22 GPIO_ACTIVE_LOW>;
spi-max-frequency = <3000000>;
vdd-supply = <&pp3300_fp_tp>;
};
};
#include <arm/cros-ec-sbs.dtsi>
&uart3 {
status = "okay";
/delete-property/interrupts;
interrupts-extended = <&intc GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
<&tlmm 41 IRQ_TYPE_EDGE_FALLING>;
pinctrl-names = "default", "sleep";
pinctrl-1 = <&qup_uart3_sleep>;
bluetooth: bluetooth {
compatible = "qcom,wcn3991-bt";
vddio-supply = <&pp1800_l10a>;
vddxo-supply = <&pp1800_l1c>;
vddrf-supply = <&pp1300_l2c>;
vddch0-supply = <&pp3300_l10c>;
max-speed = <3200000>;
qcom,local-bd-address-broken;
};
};
&uart8 {
status = "okay";
};
&usb_1 {
status = "okay";
};
&usb_1_dwc3 {
dr_mode = "host";
#address-cells = <1>;
#size-cells = <0>;
/* 2.x hub on port 1 */
usb_hub_2_x: hub@1 {
compatible = "usbbda,5411";
reg = <1>;
vdd-supply = <&pp3300_hub>;
peer-hub = <&usb_hub_3_x>;
};
/* 3.x hub on port 2 */
usb_hub_3_x: hub@2 {
compatible = "usbbda,411";
reg = <2>;
vdd-supply = <&pp3300_hub>;
peer-hub = <&usb_hub_2_x>;
};
};
&usb_1_hsphy {
status = "okay";
vdd-supply = <&vdd_qusb_hs0_core>;
vdda-pll-supply = <&vdda_qusb_hs0_1p8>;
vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>;
qcom,imp-res-offset-value = <8>;
qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_15_PERCENT>;
qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
qcom,bias-ctrl-value = <0x22>;
qcom,charge-ctrl-value = <3>;
qcom,hsdisc-trim-value = <0>;
};
&usb_1_qmpphy {
status = "okay";
vdda-phy-supply = <&vdda_usb_ss_dp_1p2>;
vdda-pll-supply = <&vdda_usb_ss_dp_core>;
};
&venus {
video-firmware {
iommus = <&apps_smmu 0x0c42 0x0>;
};
};
&wifi {
status = "okay";
vdd-0.8-cx-mx-supply = <&vdd_cx_wlan>;
vdd-1.8-xo-supply = <&pp1800_l1c>;
vdd-1.3-rfa-supply = <&pp1300_l2c>;
vdd-3.3-ch0-supply = <&pp3300_l10c>;
vdd-3.3-ch1-supply = <&pp3300_l11c>;
wifi-firmware {
iommus = <&apps_smmu 0xc2 0x1>;
};
};
/* PINCTRL - additions to nodes defined in sc7180.dtsi */
&dp_hot_plug_det {
bias-disable;
};
&pri_mi2s_active {
drive-strength = <2>;
bias-pull-down;
};
&pri_mi2s_mclk_active {
drive-strength = <2>;
bias-pull-down;
};
&qspi_cs0 {
bias-disable; /* External pullup */
};
&qspi_clk {
drive-strength = <8>;
bias-disable; /* Rely on Cr50 internal pulldown */
};
&qspi_data0 {
bias-disable; /* Rely on Cr50 internal pulldown */
};
&qspi_data1 {
bias-pull-down;
};
&qup_i2c2_default {
drive-strength = <2>;
/* Has external pullup */
bias-disable;
};
&qup_i2c4_default {
drive-strength = <2>;
/* Has external pullup */
bias-disable;
};
&qup_i2c5_default {
drive-strength = <2>;
/* Has external pullup */
bias-disable;
};
&qup_i2c7_default {
drive-strength = <2>;
/* Has external pullup */
bias-disable;
};
&qup_i2c9_default {
drive-strength = <2>;
/* Has external pullup */
bias-disable;
};
&qup_spi0_spi {
drive-strength = <2>;
bias-disable;
};
&qup_spi0_cs_gpio {
drive-strength = <2>;
bias-disable;
};
&qup_spi6_spi {
drive-strength = <2>;
bias-disable;
};
&qup_spi6_cs_gpio {
drive-strength = <2>;
bias-disable;
};
&qup_spi10_spi {
drive-strength = <2>;
bias-disable;
};
&qup_spi10_cs_gpio {
drive-strength = <2>;
bias-disable;
};
&qup_uart3_cts {
/*
* Configure a pull-down on CTS to match the pull of
* the Bluetooth module.
*/
bias-pull-down;
};
&qup_uart3_rts {
/* We'll drive RTS, so no pull */
drive-strength = <2>;
bias-disable;
};
&qup_uart3_tx {
/* We'll drive TX, so no pull */
drive-strength = <2>;
bias-disable;
};
&qup_uart3_rx {
/*
* Configure a pull-up on RX. This is needed to avoid
* garbage data when the TX pin of the Bluetooth module is
* in tri-state (module powered off or not driving the
* signal yet).
*/
bias-pull-up;
};
&qup_uart8_tx {
drive-strength = <2>;
bias-disable;
};
&qup_uart8_rx {
drive-strength = <2>;
bias-pull-up;
};
&sec_mi2s_active {
drive-strength = <2>;
bias-pull-down;
};
/* PINCTRL - board-specific pinctrl */
&pm6150_gpios {
status = "disabled"; /* No GPIOs are connected */
};
&pm6150l_gpios {
status = "disabled"; /* No GPIOs are consumed or configured */
gpio-line-names = "AP_SUSPEND",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"";
};
&tlmm {
/*
* pinctrl settings for pins that have no real owners.
*/
pinctrl-names = "default";
pinctrl-0 = <&bios_flash_wp_l>, <&ap_suspend_l_neuter>;
amp_en: amp-en-state {
pins = "gpio23";
function = "gpio";
bias-pull-down;
};
ap_ec_int_l: ap-ec-int-l-state {
pins = "gpio94";
function = "gpio";
bias-pull-up;
};
ap_edp_bklten: ap-edp-bklten-state {
pins = "gpio12";
function = "gpio";
drive-strength = <2>;
bias-disable;
/* Force backlight to be disabled to match state at boot. */
output-low;
};
ap_suspend_l_neuter: ap-suspend-l-neuter-state {
pins = "gpio27";
function = "gpio";
bias-disable;
};
bios_flash_wp_l: bios-flash-wp-l-state {
pins = "gpio66";
function = "gpio";
bias-disable;
};
edp_brij_en: edp-brij-en-state {
pins = "gpio104";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
en_pp3300_codec: en-pp3300-codec-state {
pins = "gpio83";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
en_pp3300_dx_edp: en-pp3300-dx-edp-state {
pins = "gpio30";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
en_pp3300_hub: en-pp3300-hub-state {
pins = "gpio84";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
fp_rst_l: fp-rst-l-state {
pins = "gpio22";
function = "gpio";
bias-disable;
drive-strength = <2>;
};
fp_to_ap_irq_l: fp-to-ap-irq-l-state {
pins = "gpio4";
function = "gpio";
/* Has external pullup */
bias-disable;
};
fpmcu_boot0: fpmcu-boot0-state {
pins = "gpio10";
function = "gpio";
bias-disable;
};
h1_ap_int_odl: h1-ap-int-odl-state {
pins = "gpio42";
function = "gpio";
bias-pull-up;
};
hp_irq: hp-irq-state {
pins = "gpio28";
function = "gpio";
bias-pull-up;
};
pen_irq_l: pen-irq-l-state {
pins = "gpio21";
function = "gpio";
/* Has external pullup */
bias-disable;
};
pen_pdct_l: pen-pdct-l-state-state {
pins = "gpio52";
function = "gpio";
/* Has external pullup */
bias-disable;
};
pen_rst_odl: pen-rst-odl-state {
pins = "gpio18";
function = "gpio";
bias-disable;
drive-strength = <2>;
/*
* The pen driver doesn't currently support
* driving this reset line. By specifying
* output-high here we're relying on the fact
* that this pin has a default pulldown at boot
* (which makes sure the pen was in reset if it
* was powered) and then we set it high here to
* take it out of reset. Better would be if the
* pen driver could control this and we could
* remove "output-high" here.
*/
output-high; /* TODO: Remove this? */
};
p_sensor_int_l: p-sensor-int-l-state {
pins = "gpio24";
function = "gpio";
/* Has external pullup */
bias-disable;
};
qspi_sleep: qspi-sleep-state {
pins = "gpio63", "gpio64", "gpio65", "gpio68";
/*
* When we're not actively transferring we want pins as GPIOs
* with output disabled so that the quad SPI IP block stops
* driving them. We rely on the normal pulls configured in
* the active state and don't redefine them here. Also note
* that we don't need the reverse (output-enable) in the
* normal mode since the "output-enable" only matters for
* GPIO function.
*/
function = "gpio";
output-disable;
};
qup_uart3_sleep: qup-uart3-sleep-state {
cts-pins {
/*
* Configure a pull-down on CTS to match the pull of
* the Bluetooth module.
*/
pins = "gpio38";
function = "gpio";
bias-pull-down;
};
rts-pins {
/*
* Configure pull-down on RTS. As RTS is active low
* signal, pull it low to indicate the BT SoC that it
* can wakeup the system anytime from suspend state by
* pulling RX low (by sending wakeup bytes).
*/
pins = "gpio39";
function = "gpio";
bias-pull-down;
};
tx-pins {
/*
* Configure pull-up on TX when it isn't actively driven
* to prevent BT SoC from receiving garbage during sleep.
*/
pins = "gpio40";
function = "gpio";
bias-pull-up;
};
rx-pins {
/*
* Configure a pull-up on RX. This is needed to avoid
* garbage data when the TX pin of the Bluetooth module
* is floating which may cause spurious wakeups.
*/
pins = "gpio41";
function = "gpio";
bias-pull-up;
};
};
/* Named trackpad_int_1v8_odl on earlier revision schematics */
trackpad_int_1v8_odl:
tp_int_odl: tp-int-odl-state {
pins = "gpio0";
function = "gpio";
/* Has external pullup */
bias-disable;
};
ts_int_l: ts-int-l-state {
pins = "gpio9";
function = "gpio";
bias-pull-up;
};
ts_reset_l: ts-reset-l-state {
pins = "gpio8";
function = "gpio";
bias-disable;
/*
* The reset GPIO to the touchscreen takes almost 2ms to drop
* at the default drive strength. When we bump it up to 8mA it
* falls in under 500us. We want this to be fast since the Elan
* datasheet (and any drivers written based on it) talk about using
* a 500 us reset pulse.
*/
drive-strength = <8>;
};
sdc1_on: sdc1-on-state {
clk-pins {
pins = "sdc1_clk";
bias-disable;
drive-strength = <16>;
};
cmd-pins {
pins = "sdc1_cmd";
bias-pull-up;
drive-strength = <16>;
};
data-pins {
pins = "sdc1_data";
bias-pull-up;
drive-strength = <16>;
};
rclk-pins {
pins = "sdc1_rclk";
bias-pull-down;
};
};
sdc1_off: sdc1-off-state {
clk-pins {
pins = "sdc1_clk";
bias-disable;
drive-strength = <2>;
};
cmd-pins {
pins = "sdc1_cmd";
bias-pull-up;
drive-strength = <2>;
};
data-pins {
pins = "sdc1_data";
bias-pull-up;
drive-strength = <2>;
};
rclk-pins {
pins = "sdc1_rclk";
bias-pull-down;
};
};
sdc2_on: sdc2-on-state {
clk-pins {
pins = "sdc2_clk";
bias-disable;
drive-strength = <16>;
};
cmd-pins {
pins = "sdc2_cmd";
bias-pull-up;
drive-strength = <10>;
};
data-pins {
pins = "sdc2_data";
bias-pull-up;
drive-strength = <10>;
};
sd-cd-pins {
pins = "gpio69";
function = "gpio";
bias-pull-up;
drive-strength = <2>;
};
};
sdc2_off: sdc2-off-state {
clk-pins {
pins = "sdc2_clk";
bias-disable;
drive-strength = <2>;
};
cmd-pins {
pins = "sdc2_cmd";
bias-pull-up;
drive-strength = <2>;
};
data-pins {
pins = "sdc2_data";
bias-pull-up;
drive-strength = <2>;
};
sd-cd-pins {
pins = "gpio69";
function = "gpio";
bias-pull-up;
drive-strength = <2>;
};
};
uf_cam_en: uf-cam-en-state {
pins = "gpio6";
function = "gpio";
drive-strength = <2>;
/* External pull down */
bias-disable;
};
wf_cam_en: wf-cam-en-state {
pins = "gpio7";
function = "gpio";
drive-strength = <2>;
/* External pull down */
bias-disable;
};
};