// 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 { polling-delay-passive = <0>; polling-delay = <0>; 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 = <&_en>; sdmode-gpios = <&tlmm 23 GPIO_ACTIVE_HIGH>; #sound-dai-cells = <0>; }; pwmleds { compatible = "pwm-leds"; keyboard_backlight: led-0 { status = "disabled"; label = "cros_ec::kbd_backlight"; function = LED_FUNCTION_KBD_BACKLIGHT; pwms = <&cros_ec_pwm 0>; max-brightness = <1023>; }; }; sound: sound { compatible = "google,sc7180-trogdor"; model = "sc7180-rt5682-max98357a-1mic"; 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>; 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>; alc5682: codec@1a { compatible = "realtek,rt5682i"; reg = <0x1a>; pinctrl-names = "default"; pinctrl-0 = <&hp_irq>; #sound-dai-cells = <1>; interrupt-parent = <&tlmm>; /* * This will get ignored because the interrupt type * is set in rt5682.c. */ interrupts = <28 IRQ_TYPE_EDGE_BOTH>; AVDD-supply = <&pp1800_alc5682>; DBVDD-supply = <&pp1800_alc5682>; LDO1-IN-supply = <&pp1800_alc5682>; MICVDD-supply = <&pp3300_codec>; VBAT-supply = <&pp3300_audio>; realtek,dmic1-data-pin = <1>; realtek,dmic1-clk-pin = <1>; realtek,jd-src = <1>; }; }; &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>; }; }; &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 { 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; }; };