162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Google Gru (and derivatives) board device tree source 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright 2016-2017 Google, Inc 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include <dt-bindings/input/input.h> 962306a36Sopenharmony_ci#include "rk3399.dtsi" 1062306a36Sopenharmony_ci#include "rk3399-op1-opp.dtsi" 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci/ { 1362306a36Sopenharmony_ci aliases { 1462306a36Sopenharmony_ci mmc0 = &sdmmc; 1562306a36Sopenharmony_ci mmc1 = &sdhci; 1662306a36Sopenharmony_ci }; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci chosen { 1962306a36Sopenharmony_ci stdout-path = "serial2:115200n8"; 2062306a36Sopenharmony_ci }; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci /* 2362306a36Sopenharmony_ci * Power Tree 2462306a36Sopenharmony_ci * 2562306a36Sopenharmony_ci * In general an attempt is made to include all rails called out by 2662306a36Sopenharmony_ci * the schematic as long as those rails interact in some way with 2762306a36Sopenharmony_ci * the AP. AKA: 2862306a36Sopenharmony_ci * - Rails that only connect to the EC (or devices that the EC talks to) 2962306a36Sopenharmony_ci * are not included. 3062306a36Sopenharmony_ci * - Rails _are_ included if the rails go to the AP even if the AP 3162306a36Sopenharmony_ci * doesn't currently care about them / they are always on. The idea 3262306a36Sopenharmony_ci * here is that it makes it easier to map to the schematic or extend 3362306a36Sopenharmony_ci * later. 3462306a36Sopenharmony_ci * 3562306a36Sopenharmony_ci * If two rails are substantially the same from the AP's point of 3662306a36Sopenharmony_ci * view, though, we won't create a full fixed regulator. We'll just 3762306a36Sopenharmony_ci * put the child rail as an alias of the parent rail. Sometimes rails 3862306a36Sopenharmony_ci * look the same to the AP because one of these is true: 3962306a36Sopenharmony_ci * - The EC controls the enable and the EC always enables a rail as 4062306a36Sopenharmony_ci * long as the AP is running. 4162306a36Sopenharmony_ci * - The rails are actually connected to each other by a jumper and 4262306a36Sopenharmony_ci * the distinction is just there to add clarity/flexibility to the 4362306a36Sopenharmony_ci * schematic. 4462306a36Sopenharmony_ci */ 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci ppvar_sys: ppvar-sys { 4762306a36Sopenharmony_ci compatible = "regulator-fixed"; 4862306a36Sopenharmony_ci regulator-name = "ppvar_sys"; 4962306a36Sopenharmony_ci regulator-always-on; 5062306a36Sopenharmony_ci regulator-boot-on; 5162306a36Sopenharmony_ci }; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci pp1200_lpddr: pp1200-lpddr { 5462306a36Sopenharmony_ci compatible = "regulator-fixed"; 5562306a36Sopenharmony_ci regulator-name = "pp1200_lpddr"; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci /* EC turns on w/ lpddr_pwr_en; always on for AP */ 5862306a36Sopenharmony_ci regulator-always-on; 5962306a36Sopenharmony_ci regulator-boot-on; 6062306a36Sopenharmony_ci regulator-min-microvolt = <1200000>; 6162306a36Sopenharmony_ci regulator-max-microvolt = <1200000>; 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci vin-supply = <&ppvar_sys>; 6462306a36Sopenharmony_ci }; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci pp1800: pp1800 { 6762306a36Sopenharmony_ci compatible = "regulator-fixed"; 6862306a36Sopenharmony_ci regulator-name = "pp1800"; 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci /* Always on when ppvar_sys shows power good */ 7162306a36Sopenharmony_ci regulator-always-on; 7262306a36Sopenharmony_ci regulator-boot-on; 7362306a36Sopenharmony_ci regulator-min-microvolt = <1800000>; 7462306a36Sopenharmony_ci regulator-max-microvolt = <1800000>; 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci vin-supply = <&ppvar_sys>; 7762306a36Sopenharmony_ci }; 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci pp3300: pp3300 { 8062306a36Sopenharmony_ci compatible = "regulator-fixed"; 8162306a36Sopenharmony_ci regulator-name = "pp3300"; 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci /* Always on; plain and simple */ 8462306a36Sopenharmony_ci regulator-always-on; 8562306a36Sopenharmony_ci regulator-boot-on; 8662306a36Sopenharmony_ci regulator-min-microvolt = <3300000>; 8762306a36Sopenharmony_ci regulator-max-microvolt = <3300000>; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci vin-supply = <&ppvar_sys>; 9062306a36Sopenharmony_ci }; 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci pp5000: pp5000 { 9362306a36Sopenharmony_ci compatible = "regulator-fixed"; 9462306a36Sopenharmony_ci regulator-name = "pp5000"; 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci /* EC turns on w/ pp5000_en; always on for AP */ 9762306a36Sopenharmony_ci regulator-always-on; 9862306a36Sopenharmony_ci regulator-boot-on; 9962306a36Sopenharmony_ci regulator-min-microvolt = <5000000>; 10062306a36Sopenharmony_ci regulator-max-microvolt = <5000000>; 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci vin-supply = <&ppvar_sys>; 10362306a36Sopenharmony_ci }; 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci ppvar_bigcpu_pwm: ppvar-bigcpu-pwm { 10662306a36Sopenharmony_ci compatible = "pwm-regulator"; 10762306a36Sopenharmony_ci regulator-name = "ppvar_bigcpu_pwm"; 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci pwms = <&pwm1 0 3337 0>; 11062306a36Sopenharmony_ci pwm-supply = <&ppvar_sys>; 11162306a36Sopenharmony_ci pwm-dutycycle-range = <100 0>; 11262306a36Sopenharmony_ci pwm-dutycycle-unit = <100>; 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci /* EC turns on w/ ap_core_en; always on for AP */ 11562306a36Sopenharmony_ci regulator-always-on; 11662306a36Sopenharmony_ci regulator-boot-on; 11762306a36Sopenharmony_ci regulator-min-microvolt = <800107>; 11862306a36Sopenharmony_ci regulator-max-microvolt = <1302232>; 11962306a36Sopenharmony_ci }; 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci ppvar_bigcpu: ppvar-bigcpu { 12262306a36Sopenharmony_ci compatible = "vctrl-regulator"; 12362306a36Sopenharmony_ci regulator-name = "ppvar_bigcpu"; 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci regulator-min-microvolt = <800107>; 12662306a36Sopenharmony_ci regulator-max-microvolt = <1302232>; 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci ctrl-supply = <&ppvar_bigcpu_pwm>; 12962306a36Sopenharmony_ci ctrl-voltage-range = <800107 1302232>; 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci regulator-settling-time-up-us = <322>; 13262306a36Sopenharmony_ci }; 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci ppvar_litcpu_pwm: ppvar-litcpu-pwm { 13562306a36Sopenharmony_ci compatible = "pwm-regulator"; 13662306a36Sopenharmony_ci regulator-name = "ppvar_litcpu_pwm"; 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci pwms = <&pwm2 0 3337 0>; 13962306a36Sopenharmony_ci pwm-supply = <&ppvar_sys>; 14062306a36Sopenharmony_ci pwm-dutycycle-range = <100 0>; 14162306a36Sopenharmony_ci pwm-dutycycle-unit = <100>; 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci /* EC turns on w/ ap_core_en; always on for AP */ 14462306a36Sopenharmony_ci regulator-always-on; 14562306a36Sopenharmony_ci regulator-boot-on; 14662306a36Sopenharmony_ci regulator-min-microvolt = <797743>; 14762306a36Sopenharmony_ci regulator-max-microvolt = <1307837>; 14862306a36Sopenharmony_ci }; 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci ppvar_litcpu: ppvar-litcpu { 15162306a36Sopenharmony_ci compatible = "vctrl-regulator"; 15262306a36Sopenharmony_ci regulator-name = "ppvar_litcpu"; 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci regulator-min-microvolt = <797743>; 15562306a36Sopenharmony_ci regulator-max-microvolt = <1307837>; 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ci ctrl-supply = <&ppvar_litcpu_pwm>; 15862306a36Sopenharmony_ci ctrl-voltage-range = <797743 1307837>; 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci regulator-settling-time-up-us = <384>; 16162306a36Sopenharmony_ci }; 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci ppvar_gpu_pwm: ppvar-gpu-pwm { 16462306a36Sopenharmony_ci compatible = "pwm-regulator"; 16562306a36Sopenharmony_ci regulator-name = "ppvar_gpu_pwm"; 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci pwms = <&pwm0 0 3337 0>; 16862306a36Sopenharmony_ci pwm-supply = <&ppvar_sys>; 16962306a36Sopenharmony_ci pwm-dutycycle-range = <100 0>; 17062306a36Sopenharmony_ci pwm-dutycycle-unit = <100>; 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci /* EC turns on w/ ap_core_en; always on for AP */ 17362306a36Sopenharmony_ci regulator-always-on; 17462306a36Sopenharmony_ci regulator-boot-on; 17562306a36Sopenharmony_ci regulator-min-microvolt = <786384>; 17662306a36Sopenharmony_ci regulator-max-microvolt = <1217747>; 17762306a36Sopenharmony_ci }; 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci ppvar_gpu: ppvar-gpu { 18062306a36Sopenharmony_ci compatible = "vctrl-regulator"; 18162306a36Sopenharmony_ci regulator-name = "ppvar_gpu"; 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci regulator-min-microvolt = <786384>; 18462306a36Sopenharmony_ci regulator-max-microvolt = <1217747>; 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci ctrl-supply = <&ppvar_gpu_pwm>; 18762306a36Sopenharmony_ci ctrl-voltage-range = <786384 1217747>; 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci regulator-settling-time-up-us = <390>; 19062306a36Sopenharmony_ci }; 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_ci /* EC turns on w/ pp900_ddrpll_en */ 19362306a36Sopenharmony_ci pp900_ddrpll: pp900-ap { 19462306a36Sopenharmony_ci }; 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ci /* EC turns on w/ pp900_pll_en */ 19762306a36Sopenharmony_ci pp900_pll: pp900-ap { 19862306a36Sopenharmony_ci }; 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci /* EC turns on w/ pp900_pmu_en */ 20162306a36Sopenharmony_ci pp900_pmu: pp900-ap { 20262306a36Sopenharmony_ci }; 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci /* EC turns on w/ pp1800_s0_en_l */ 20562306a36Sopenharmony_ci pp1800_ap_io: pp1800_emmc: pp1800_nfc: pp1800_s0: pp1800 { 20662306a36Sopenharmony_ci }; 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci /* EC turns on w/ pp1800_avdd_en_l */ 20962306a36Sopenharmony_ci pp1800_avdd: pp1800 { 21062306a36Sopenharmony_ci }; 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci /* EC turns on w/ pp1800_lid_en_l */ 21362306a36Sopenharmony_ci pp1800_lid: pp1800_mic: pp1800 { 21462306a36Sopenharmony_ci }; 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci /* EC turns on w/ lpddr_pwr_en */ 21762306a36Sopenharmony_ci pp1800_lpddr: pp1800 { 21862306a36Sopenharmony_ci }; 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci /* EC turns on w/ pp1800_pmu_en_l */ 22162306a36Sopenharmony_ci pp1800_pmu: pp1800 { 22262306a36Sopenharmony_ci }; 22362306a36Sopenharmony_ci 22462306a36Sopenharmony_ci /* EC turns on w/ pp1800_usb_en_l */ 22562306a36Sopenharmony_ci pp1800_usb: pp1800 { 22662306a36Sopenharmony_ci }; 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci pp3000_sd_slot: pp3000-sd-slot { 22962306a36Sopenharmony_ci compatible = "regulator-fixed"; 23062306a36Sopenharmony_ci regulator-name = "pp3000_sd_slot"; 23162306a36Sopenharmony_ci pinctrl-names = "default"; 23262306a36Sopenharmony_ci pinctrl-0 = <&sd_slot_pwr_en>; 23362306a36Sopenharmony_ci 23462306a36Sopenharmony_ci enable-active-high; 23562306a36Sopenharmony_ci gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>; 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci vin-supply = <&pp3000>; 23862306a36Sopenharmony_ci }; 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ci /* 24162306a36Sopenharmony_ci * Technically, this is a small abuse of 'regulator-gpio'; this 24262306a36Sopenharmony_ci * regulator is a mux between pp1800 and pp3300. pp1800 and pp3300 are 24362306a36Sopenharmony_ci * always on though, so it is sufficient to simply control the mux 24462306a36Sopenharmony_ci * here. 24562306a36Sopenharmony_ci */ 24662306a36Sopenharmony_ci ppvar_sd_card_io: ppvar-sd-card-io { 24762306a36Sopenharmony_ci compatible = "regulator-gpio"; 24862306a36Sopenharmony_ci regulator-name = "ppvar_sd_card_io"; 24962306a36Sopenharmony_ci pinctrl-names = "default"; 25062306a36Sopenharmony_ci pinctrl-0 = <&sd_io_pwr_en &sd_pwr_1800_sel>; 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ci enable-active-high; 25362306a36Sopenharmony_ci enable-gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>; 25462306a36Sopenharmony_ci gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>; 25562306a36Sopenharmony_ci states = <1800000 0x1>, 25662306a36Sopenharmony_ci <3000000 0x0>; 25762306a36Sopenharmony_ci 25862306a36Sopenharmony_ci regulator-min-microvolt = <1800000>; 25962306a36Sopenharmony_ci regulator-max-microvolt = <3000000>; 26062306a36Sopenharmony_ci }; 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci /* EC turns on w/ pp3300_trackpad_en_l */ 26362306a36Sopenharmony_ci pp3300_trackpad: pp3300-trackpad { 26462306a36Sopenharmony_ci }; 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ci /* EC turns on w/ usb_a_en */ 26762306a36Sopenharmony_ci pp5000_usb_a_vbus: pp5000 { 26862306a36Sopenharmony_ci }; 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_ci ap_rtc_clk: ap-rtc-clk { 27162306a36Sopenharmony_ci compatible = "fixed-clock"; 27262306a36Sopenharmony_ci clock-frequency = <32768>; 27362306a36Sopenharmony_ci clock-output-names = "xin32k"; 27462306a36Sopenharmony_ci #clock-cells = <0>; 27562306a36Sopenharmony_ci }; 27662306a36Sopenharmony_ci 27762306a36Sopenharmony_ci max98357a: max98357a { 27862306a36Sopenharmony_ci compatible = "maxim,max98357a"; 27962306a36Sopenharmony_ci pinctrl-names = "default"; 28062306a36Sopenharmony_ci pinctrl-0 = <&sdmode_en>; 28162306a36Sopenharmony_ci sdmode-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>; 28262306a36Sopenharmony_ci sdmode-delay = <2>; 28362306a36Sopenharmony_ci #sound-dai-cells = <0>; 28462306a36Sopenharmony_ci status = "okay"; 28562306a36Sopenharmony_ci }; 28662306a36Sopenharmony_ci 28762306a36Sopenharmony_ci sound: sound { 28862306a36Sopenharmony_ci compatible = "rockchip,rk3399-gru-sound"; 28962306a36Sopenharmony_ci rockchip,cpu = <&i2s0 &spdif>; 29062306a36Sopenharmony_ci }; 29162306a36Sopenharmony_ci}; 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_ci&cdn_dp { 29462306a36Sopenharmony_ci status = "okay"; 29562306a36Sopenharmony_ci}; 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_ci/* 29862306a36Sopenharmony_ci * Set some suspend operating points to avoid OVP in suspend 29962306a36Sopenharmony_ci * 30062306a36Sopenharmony_ci * When we go into S3 ARM Trusted Firmware will transition our PWM regulators 30162306a36Sopenharmony_ci * from wherever they're at back to the "default" operating point (whatever 30262306a36Sopenharmony_ci * voltage we get when we set the PWM pins to "input"). 30362306a36Sopenharmony_ci * 30462306a36Sopenharmony_ci * This quick transition under light load has the possibility to trigger the 30562306a36Sopenharmony_ci * regulator "over voltage protection" (OVP). 30662306a36Sopenharmony_ci * 30762306a36Sopenharmony_ci * To make extra certain that we don't hit this OVP at suspend time, we'll 30862306a36Sopenharmony_ci * transition to a voltage that's much closer to the default (~1.0 V) so that 30962306a36Sopenharmony_ci * there will not be a big jump. Technically we only need to get within 200 mV 31062306a36Sopenharmony_ci * of the default voltage, but the speed here should be fast enough and we need 31162306a36Sopenharmony_ci * suspend/resume to be rock solid. 31262306a36Sopenharmony_ci */ 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_ci&cluster0_opp { 31562306a36Sopenharmony_ci opp05 { 31662306a36Sopenharmony_ci opp-suspend; 31762306a36Sopenharmony_ci }; 31862306a36Sopenharmony_ci}; 31962306a36Sopenharmony_ci 32062306a36Sopenharmony_ci&cluster1_opp { 32162306a36Sopenharmony_ci opp06 { 32262306a36Sopenharmony_ci opp-suspend; 32362306a36Sopenharmony_ci }; 32462306a36Sopenharmony_ci}; 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ci&cpu_l0 { 32762306a36Sopenharmony_ci cpu-supply = <&ppvar_litcpu>; 32862306a36Sopenharmony_ci}; 32962306a36Sopenharmony_ci 33062306a36Sopenharmony_ci&cpu_l1 { 33162306a36Sopenharmony_ci cpu-supply = <&ppvar_litcpu>; 33262306a36Sopenharmony_ci}; 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_ci&cpu_l2 { 33562306a36Sopenharmony_ci cpu-supply = <&ppvar_litcpu>; 33662306a36Sopenharmony_ci}; 33762306a36Sopenharmony_ci 33862306a36Sopenharmony_ci&cpu_l3 { 33962306a36Sopenharmony_ci cpu-supply = <&ppvar_litcpu>; 34062306a36Sopenharmony_ci}; 34162306a36Sopenharmony_ci 34262306a36Sopenharmony_ci&cpu_b0 { 34362306a36Sopenharmony_ci cpu-supply = <&ppvar_bigcpu>; 34462306a36Sopenharmony_ci}; 34562306a36Sopenharmony_ci 34662306a36Sopenharmony_ci&cpu_b1 { 34762306a36Sopenharmony_ci cpu-supply = <&ppvar_bigcpu>; 34862306a36Sopenharmony_ci}; 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_ci&cru { 35262306a36Sopenharmony_ci assigned-clocks = 35362306a36Sopenharmony_ci <&cru PLL_GPLL>, <&cru PLL_CPLL>, 35462306a36Sopenharmony_ci <&cru PLL_NPLL>, 35562306a36Sopenharmony_ci <&cru ACLK_PERIHP>, <&cru HCLK_PERIHP>, 35662306a36Sopenharmony_ci <&cru PCLK_PERIHP>, 35762306a36Sopenharmony_ci <&cru ACLK_PERILP0>, <&cru HCLK_PERILP0>, 35862306a36Sopenharmony_ci <&cru PCLK_PERILP0>, <&cru ACLK_CCI>, 35962306a36Sopenharmony_ci <&cru HCLK_PERILP1>, <&cru PCLK_PERILP1>, 36062306a36Sopenharmony_ci <&cru ACLK_VIO>, <&cru ACLK_HDCP>, 36162306a36Sopenharmony_ci <&cru ACLK_GIC_PRE>, 36262306a36Sopenharmony_ci <&cru PCLK_DDR>; 36362306a36Sopenharmony_ci assigned-clock-rates = 36462306a36Sopenharmony_ci <600000000>, <800000000>, 36562306a36Sopenharmony_ci <1000000000>, 36662306a36Sopenharmony_ci <150000000>, <75000000>, 36762306a36Sopenharmony_ci <37500000>, 36862306a36Sopenharmony_ci <100000000>, <100000000>, 36962306a36Sopenharmony_ci <50000000>, <800000000>, 37062306a36Sopenharmony_ci <100000000>, <50000000>, 37162306a36Sopenharmony_ci <400000000>, <400000000>, 37262306a36Sopenharmony_ci <200000000>, 37362306a36Sopenharmony_ci <200000000>; 37462306a36Sopenharmony_ci}; 37562306a36Sopenharmony_ci 37662306a36Sopenharmony_ci&dfi { 37762306a36Sopenharmony_ci status = "okay"; 37862306a36Sopenharmony_ci}; 37962306a36Sopenharmony_ci 38062306a36Sopenharmony_ci&dmc { 38162306a36Sopenharmony_ci status = "okay"; 38262306a36Sopenharmony_ci 38362306a36Sopenharmony_ci rockchip,pd-idle-ns = <160>; 38462306a36Sopenharmony_ci rockchip,sr-idle-ns = <10240>; 38562306a36Sopenharmony_ci rockchip,sr-mc-gate-idle-ns = <40960>; 38662306a36Sopenharmony_ci rockchip,srpd-lite-idle-ns = <61440>; 38762306a36Sopenharmony_ci rockchip,standby-idle-ns = <81920>; 38862306a36Sopenharmony_ci 38962306a36Sopenharmony_ci rockchip,ddr3_odt_dis_freq = <666000000>; 39062306a36Sopenharmony_ci rockchip,lpddr3_odt_dis_freq = <666000000>; 39162306a36Sopenharmony_ci rockchip,lpddr4_odt_dis_freq = <666000000>; 39262306a36Sopenharmony_ci 39362306a36Sopenharmony_ci rockchip,sr-mc-gate-idle-dis-freq-hz = <1000000000>; 39462306a36Sopenharmony_ci rockchip,srpd-lite-idle-dis-freq-hz = <0>; 39562306a36Sopenharmony_ci rockchip,standby-idle-dis-freq-hz = <928000000>; 39662306a36Sopenharmony_ci}; 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ci&dmc_opp_table { 39962306a36Sopenharmony_ci opp03 { 40062306a36Sopenharmony_ci opp-suspend; 40162306a36Sopenharmony_ci }; 40262306a36Sopenharmony_ci}; 40362306a36Sopenharmony_ci 40462306a36Sopenharmony_ci&emmc_phy { 40562306a36Sopenharmony_ci status = "okay"; 40662306a36Sopenharmony_ci}; 40762306a36Sopenharmony_ci 40862306a36Sopenharmony_ci&gpu { 40962306a36Sopenharmony_ci mali-supply = <&ppvar_gpu>; 41062306a36Sopenharmony_ci status = "okay"; 41162306a36Sopenharmony_ci}; 41262306a36Sopenharmony_ci 41362306a36Sopenharmony_ciap_i2c_ts: &i2c3 { 41462306a36Sopenharmony_ci status = "okay"; 41562306a36Sopenharmony_ci 41662306a36Sopenharmony_ci clock-frequency = <400000>; 41762306a36Sopenharmony_ci 41862306a36Sopenharmony_ci /* These are relatively safe rise/fall times */ 41962306a36Sopenharmony_ci i2c-scl-falling-time-ns = <50>; 42062306a36Sopenharmony_ci i2c-scl-rising-time-ns = <300>; 42162306a36Sopenharmony_ci}; 42262306a36Sopenharmony_ci 42362306a36Sopenharmony_ciap_i2c_audio: &i2c8 { 42462306a36Sopenharmony_ci status = "okay"; 42562306a36Sopenharmony_ci 42662306a36Sopenharmony_ci clock-frequency = <400000>; 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_ci /* These are relatively safe rise/fall times */ 42962306a36Sopenharmony_ci i2c-scl-falling-time-ns = <50>; 43062306a36Sopenharmony_ci i2c-scl-rising-time-ns = <300>; 43162306a36Sopenharmony_ci 43262306a36Sopenharmony_ci codec: da7219@1a { 43362306a36Sopenharmony_ci compatible = "dlg,da7219"; 43462306a36Sopenharmony_ci reg = <0x1a>; 43562306a36Sopenharmony_ci interrupt-parent = <&gpio1>; 43662306a36Sopenharmony_ci interrupts = <23 IRQ_TYPE_LEVEL_LOW>; 43762306a36Sopenharmony_ci clocks = <&cru SCLK_I2S_8CH_OUT>; 43862306a36Sopenharmony_ci clock-names = "mclk"; 43962306a36Sopenharmony_ci dlg,micbias-lvl = <2600>; 44062306a36Sopenharmony_ci dlg,mic-amp-in-sel = "diff"; 44162306a36Sopenharmony_ci pinctrl-names = "default"; 44262306a36Sopenharmony_ci pinctrl-0 = <&headset_int_l>; 44362306a36Sopenharmony_ci VDD-supply = <&pp1800>; 44462306a36Sopenharmony_ci VDDMIC-supply = <&pp3300>; 44562306a36Sopenharmony_ci VDDIO-supply = <&pp1800>; 44662306a36Sopenharmony_ci 44762306a36Sopenharmony_ci da7219_aad { 44862306a36Sopenharmony_ci dlg,adc-1bit-rpt = <1>; 44962306a36Sopenharmony_ci dlg,btn-avg = <4>; 45062306a36Sopenharmony_ci dlg,btn-cfg = <50>; 45162306a36Sopenharmony_ci dlg,mic-det-thr = <500>; 45262306a36Sopenharmony_ci dlg,jack-ins-deb = <20>; 45362306a36Sopenharmony_ci dlg,jack-det-rate = "32ms_64ms"; 45462306a36Sopenharmony_ci dlg,jack-rem-deb = <1>; 45562306a36Sopenharmony_ci 45662306a36Sopenharmony_ci dlg,a-d-btn-thr = <0xa>; 45762306a36Sopenharmony_ci dlg,d-b-btn-thr = <0x16>; 45862306a36Sopenharmony_ci dlg,b-c-btn-thr = <0x21>; 45962306a36Sopenharmony_ci dlg,c-mic-btn-thr = <0x3E>; 46062306a36Sopenharmony_ci }; 46162306a36Sopenharmony_ci }; 46262306a36Sopenharmony_ci}; 46362306a36Sopenharmony_ci 46462306a36Sopenharmony_ci&i2s0 { 46562306a36Sopenharmony_ci status = "okay"; 46662306a36Sopenharmony_ci}; 46762306a36Sopenharmony_ci 46862306a36Sopenharmony_ci&io_domains { 46962306a36Sopenharmony_ci status = "okay"; 47062306a36Sopenharmony_ci 47162306a36Sopenharmony_ci audio-supply = <&pp1800_audio>; /* APIO5_VDD; 3d 4a */ 47262306a36Sopenharmony_ci bt656-supply = <&pp1800_ap_io>; /* APIO2_VDD; 2a 2b */ 47362306a36Sopenharmony_ci gpio1830-supply = <&pp3000_ap>; /* APIO4_VDD; 4c 4d */ 47462306a36Sopenharmony_ci sdmmc-supply = <&ppvar_sd_card_io>; /* SDMMC0_VDD; 4b */ 47562306a36Sopenharmony_ci}; 47662306a36Sopenharmony_ci 47762306a36Sopenharmony_ci&pcie0 { 47862306a36Sopenharmony_ci status = "okay"; 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ci ep-gpios = <&gpio2 27 GPIO_ACTIVE_HIGH>; 48162306a36Sopenharmony_ci pinctrl-names = "default"; 48262306a36Sopenharmony_ci pinctrl-0 = <&pcie_clkreqn_cpm>, <&wifi_perst_l>; 48362306a36Sopenharmony_ci vpcie3v3-supply = <&pp3300_wifi_bt>; 48462306a36Sopenharmony_ci vpcie1v8-supply = <&wlan_pd_n>; /* HACK: see &wlan_pd_n */ 48562306a36Sopenharmony_ci vpcie0v9-supply = <&pp900_pcie>; 48662306a36Sopenharmony_ci 48762306a36Sopenharmony_ci pci_rootport: pcie@0,0 { 48862306a36Sopenharmony_ci reg = <0x0000 0 0 0 0>; 48962306a36Sopenharmony_ci #address-cells = <3>; 49062306a36Sopenharmony_ci #size-cells = <2>; 49162306a36Sopenharmony_ci ranges; 49262306a36Sopenharmony_ci device_type = "pci"; 49362306a36Sopenharmony_ci }; 49462306a36Sopenharmony_ci}; 49562306a36Sopenharmony_ci 49662306a36Sopenharmony_ci&pcie_phy { 49762306a36Sopenharmony_ci status = "okay"; 49862306a36Sopenharmony_ci}; 49962306a36Sopenharmony_ci 50062306a36Sopenharmony_ci&pmu_io_domains { 50162306a36Sopenharmony_ci status = "okay"; 50262306a36Sopenharmony_ci 50362306a36Sopenharmony_ci pmu1830-supply = <&pp1800_pmu>; /* PMUIO2_VDD */ 50462306a36Sopenharmony_ci}; 50562306a36Sopenharmony_ci 50662306a36Sopenharmony_ci&pwm0 { 50762306a36Sopenharmony_ci status = "okay"; 50862306a36Sopenharmony_ci}; 50962306a36Sopenharmony_ci 51062306a36Sopenharmony_ci&pwm1 { 51162306a36Sopenharmony_ci status = "okay"; 51262306a36Sopenharmony_ci}; 51362306a36Sopenharmony_ci 51462306a36Sopenharmony_ci&pwm2 { 51562306a36Sopenharmony_ci status = "okay"; 51662306a36Sopenharmony_ci}; 51762306a36Sopenharmony_ci 51862306a36Sopenharmony_ci&pwm3 { 51962306a36Sopenharmony_ci status = "okay"; 52062306a36Sopenharmony_ci}; 52162306a36Sopenharmony_ci 52262306a36Sopenharmony_ci&sdhci { 52362306a36Sopenharmony_ci /* 52462306a36Sopenharmony_ci * Signal integrity isn't great at 200 MHz and 150 MHz (DDR) gives the 52562306a36Sopenharmony_ci * same (or nearly the same) performance for all eMMC that are intended 52662306a36Sopenharmony_ci * to be used. 52762306a36Sopenharmony_ci */ 52862306a36Sopenharmony_ci assigned-clock-rates = <150000000>; 52962306a36Sopenharmony_ci 53062306a36Sopenharmony_ci bus-width = <8>; 53162306a36Sopenharmony_ci mmc-hs400-1_8v; 53262306a36Sopenharmony_ci mmc-hs400-enhanced-strobe; 53362306a36Sopenharmony_ci non-removable; 53462306a36Sopenharmony_ci status = "okay"; 53562306a36Sopenharmony_ci}; 53662306a36Sopenharmony_ci 53762306a36Sopenharmony_ci&sdmmc { 53862306a36Sopenharmony_ci status = "okay"; 53962306a36Sopenharmony_ci 54062306a36Sopenharmony_ci /* 54162306a36Sopenharmony_ci * Note: configure "sdmmc_cd" as card detect even though it's actually 54262306a36Sopenharmony_ci * hooked to ground. Because we specified "cd-gpios" below dw_mmc 54362306a36Sopenharmony_ci * should be ignoring card detect anyway. Specifying the pin as 54462306a36Sopenharmony_ci * sdmmc_cd means that even if you've got GRF_SOC_CON7[12] (force_jtag) 54562306a36Sopenharmony_ci * turned on that the system will still make sure the port is 54662306a36Sopenharmony_ci * configured as SDMMC and not JTAG. 54762306a36Sopenharmony_ci */ 54862306a36Sopenharmony_ci pinctrl-names = "default"; 54962306a36Sopenharmony_ci pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_cd_pin 55062306a36Sopenharmony_ci &sdmmc_bus4>; 55162306a36Sopenharmony_ci 55262306a36Sopenharmony_ci bus-width = <4>; 55362306a36Sopenharmony_ci cap-mmc-highspeed; 55462306a36Sopenharmony_ci cap-sd-highspeed; 55562306a36Sopenharmony_ci cd-gpios = <&gpio4 24 GPIO_ACTIVE_LOW>; 55662306a36Sopenharmony_ci disable-wp; 55762306a36Sopenharmony_ci sd-uhs-sdr12; 55862306a36Sopenharmony_ci sd-uhs-sdr25; 55962306a36Sopenharmony_ci sd-uhs-sdr50; 56062306a36Sopenharmony_ci sd-uhs-sdr104; 56162306a36Sopenharmony_ci vmmc-supply = <&pp3000_sd_slot>; 56262306a36Sopenharmony_ci vqmmc-supply = <&ppvar_sd_card_io>; 56362306a36Sopenharmony_ci}; 56462306a36Sopenharmony_ci 56562306a36Sopenharmony_ci&spdif { 56662306a36Sopenharmony_ci status = "okay"; 56762306a36Sopenharmony_ci 56862306a36Sopenharmony_ci /* 56962306a36Sopenharmony_ci * SPDIF is routed internally to DP; we either don't use these pins, or 57062306a36Sopenharmony_ci * mux them to something else. 57162306a36Sopenharmony_ci */ 57262306a36Sopenharmony_ci /delete-property/ pinctrl-0; 57362306a36Sopenharmony_ci /delete-property/ pinctrl-names; 57462306a36Sopenharmony_ci}; 57562306a36Sopenharmony_ci 57662306a36Sopenharmony_ci&spi1 { 57762306a36Sopenharmony_ci status = "okay"; 57862306a36Sopenharmony_ci 57962306a36Sopenharmony_ci pinctrl-names = "default", "sleep"; 58062306a36Sopenharmony_ci pinctrl-1 = <&spi1_sleep>; 58162306a36Sopenharmony_ci 58262306a36Sopenharmony_ci flash@0 { 58362306a36Sopenharmony_ci compatible = "jedec,spi-nor"; 58462306a36Sopenharmony_ci reg = <0>; 58562306a36Sopenharmony_ci 58662306a36Sopenharmony_ci /* May run faster once verified. */ 58762306a36Sopenharmony_ci spi-max-frequency = <10000000>; 58862306a36Sopenharmony_ci }; 58962306a36Sopenharmony_ci}; 59062306a36Sopenharmony_ci 59162306a36Sopenharmony_ci&spi2 { 59262306a36Sopenharmony_ci status = "okay"; 59362306a36Sopenharmony_ci}; 59462306a36Sopenharmony_ci 59562306a36Sopenharmony_ci&spi5 { 59662306a36Sopenharmony_ci status = "okay"; 59762306a36Sopenharmony_ci 59862306a36Sopenharmony_ci cros_ec: ec@0 { 59962306a36Sopenharmony_ci compatible = "google,cros-ec-spi"; 60062306a36Sopenharmony_ci reg = <0>; 60162306a36Sopenharmony_ci interrupt-parent = <&gpio0>; 60262306a36Sopenharmony_ci interrupts = <1 IRQ_TYPE_LEVEL_LOW>; 60362306a36Sopenharmony_ci pinctrl-names = "default"; 60462306a36Sopenharmony_ci pinctrl-0 = <&ec_ap_int_l>; 60562306a36Sopenharmony_ci spi-max-frequency = <3000000>; 60662306a36Sopenharmony_ci 60762306a36Sopenharmony_ci i2c_tunnel: i2c-tunnel { 60862306a36Sopenharmony_ci compatible = "google,cros-ec-i2c-tunnel"; 60962306a36Sopenharmony_ci google,remote-bus = <4>; 61062306a36Sopenharmony_ci #address-cells = <1>; 61162306a36Sopenharmony_ci #size-cells = <0>; 61262306a36Sopenharmony_ci }; 61362306a36Sopenharmony_ci 61462306a36Sopenharmony_ci usbc_extcon0: extcon0 { 61562306a36Sopenharmony_ci compatible = "google,extcon-usbc-cros-ec"; 61662306a36Sopenharmony_ci google,usb-port-id = <0>; 61762306a36Sopenharmony_ci }; 61862306a36Sopenharmony_ci }; 61962306a36Sopenharmony_ci}; 62062306a36Sopenharmony_ci 62162306a36Sopenharmony_ci&tsadc { 62262306a36Sopenharmony_ci status = "okay"; 62362306a36Sopenharmony_ci 62462306a36Sopenharmony_ci rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */ 62562306a36Sopenharmony_ci rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */ 62662306a36Sopenharmony_ci}; 62762306a36Sopenharmony_ci 62862306a36Sopenharmony_ci&tcphy0 { 62962306a36Sopenharmony_ci status = "okay"; 63062306a36Sopenharmony_ci extcon = <&usbc_extcon0>; 63162306a36Sopenharmony_ci}; 63262306a36Sopenharmony_ci 63362306a36Sopenharmony_ci&u2phy0 { 63462306a36Sopenharmony_ci status = "okay"; 63562306a36Sopenharmony_ci}; 63662306a36Sopenharmony_ci 63762306a36Sopenharmony_ci&u2phy0_host { 63862306a36Sopenharmony_ci status = "okay"; 63962306a36Sopenharmony_ci}; 64062306a36Sopenharmony_ci 64162306a36Sopenharmony_ci&u2phy1_host { 64262306a36Sopenharmony_ci status = "okay"; 64362306a36Sopenharmony_ci}; 64462306a36Sopenharmony_ci 64562306a36Sopenharmony_ci&u2phy0_otg { 64662306a36Sopenharmony_ci status = "okay"; 64762306a36Sopenharmony_ci}; 64862306a36Sopenharmony_ci 64962306a36Sopenharmony_ci&u2phy1_otg { 65062306a36Sopenharmony_ci status = "okay"; 65162306a36Sopenharmony_ci}; 65262306a36Sopenharmony_ci 65362306a36Sopenharmony_ci&uart2 { 65462306a36Sopenharmony_ci status = "okay"; 65562306a36Sopenharmony_ci}; 65662306a36Sopenharmony_ci 65762306a36Sopenharmony_ci&usb_host0_ohci { 65862306a36Sopenharmony_ci status = "okay"; 65962306a36Sopenharmony_ci}; 66062306a36Sopenharmony_ci 66162306a36Sopenharmony_ci&usbdrd3_0 { 66262306a36Sopenharmony_ci status = "okay"; 66362306a36Sopenharmony_ci extcon = <&usbc_extcon0>; 66462306a36Sopenharmony_ci}; 66562306a36Sopenharmony_ci 66662306a36Sopenharmony_ci&usbdrd_dwc3_0 { 66762306a36Sopenharmony_ci status = "okay"; 66862306a36Sopenharmony_ci dr_mode = "host"; 66962306a36Sopenharmony_ci}; 67062306a36Sopenharmony_ci 67162306a36Sopenharmony_ci&vopb { 67262306a36Sopenharmony_ci status = "okay"; 67362306a36Sopenharmony_ci}; 67462306a36Sopenharmony_ci 67562306a36Sopenharmony_ci&vopb_mmu { 67662306a36Sopenharmony_ci status = "okay"; 67762306a36Sopenharmony_ci}; 67862306a36Sopenharmony_ci 67962306a36Sopenharmony_ci&vopl { 68062306a36Sopenharmony_ci status = "okay"; 68162306a36Sopenharmony_ci}; 68262306a36Sopenharmony_ci 68362306a36Sopenharmony_ci&vopl_mmu { 68462306a36Sopenharmony_ci status = "okay"; 68562306a36Sopenharmony_ci}; 68662306a36Sopenharmony_ci 68762306a36Sopenharmony_ci#include <arm/cros-ec-keyboard.dtsi> 68862306a36Sopenharmony_ci#include <arm/cros-ec-sbs.dtsi> 68962306a36Sopenharmony_ci 69062306a36Sopenharmony_ci&pinctrl { 69162306a36Sopenharmony_ci /* 69262306a36Sopenharmony_ci * pinctrl settings for pins that have no real owners. 69362306a36Sopenharmony_ci * 69462306a36Sopenharmony_ci * At the moment settings are identical for S0 and S3, but if we later 69562306a36Sopenharmony_ci * need to configure things differently for S3 we'll adjust here. 69662306a36Sopenharmony_ci */ 69762306a36Sopenharmony_ci pinctrl-names = "default"; 69862306a36Sopenharmony_ci pinctrl-0 = < 69962306a36Sopenharmony_ci &ap_pwroff /* AP will auto-assert this when in S3 */ 70062306a36Sopenharmony_ci &clk_32k /* This pin is always 32k on gru boards */ 70162306a36Sopenharmony_ci >; 70262306a36Sopenharmony_ci 70362306a36Sopenharmony_ci pcfg_output_low: pcfg-output-low { 70462306a36Sopenharmony_ci output-low; 70562306a36Sopenharmony_ci }; 70662306a36Sopenharmony_ci 70762306a36Sopenharmony_ci pcfg_output_high: pcfg-output-high { 70862306a36Sopenharmony_ci output-high; 70962306a36Sopenharmony_ci }; 71062306a36Sopenharmony_ci 71162306a36Sopenharmony_ci pcfg_pull_none_8ma: pcfg-pull-none-8ma { 71262306a36Sopenharmony_ci bias-disable; 71362306a36Sopenharmony_ci drive-strength = <8>; 71462306a36Sopenharmony_ci }; 71562306a36Sopenharmony_ci 71662306a36Sopenharmony_ci backlight-enable { 71762306a36Sopenharmony_ci bl_en: bl-en { 71862306a36Sopenharmony_ci rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>; 71962306a36Sopenharmony_ci }; 72062306a36Sopenharmony_ci }; 72162306a36Sopenharmony_ci 72262306a36Sopenharmony_ci cros-ec { 72362306a36Sopenharmony_ci ec_ap_int_l: ec-ap-int-l { 72462306a36Sopenharmony_ci rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; 72562306a36Sopenharmony_ci }; 72662306a36Sopenharmony_ci }; 72762306a36Sopenharmony_ci 72862306a36Sopenharmony_ci discrete-regulators { 72962306a36Sopenharmony_ci sd_io_pwr_en: sd-io-pwr-en { 73062306a36Sopenharmony_ci rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO 73162306a36Sopenharmony_ci &pcfg_pull_none>; 73262306a36Sopenharmony_ci }; 73362306a36Sopenharmony_ci 73462306a36Sopenharmony_ci sd_pwr_1800_sel: sd-pwr-1800-sel { 73562306a36Sopenharmony_ci rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO 73662306a36Sopenharmony_ci &pcfg_pull_none>; 73762306a36Sopenharmony_ci }; 73862306a36Sopenharmony_ci 73962306a36Sopenharmony_ci sd_slot_pwr_en: sd-slot-pwr-en { 74062306a36Sopenharmony_ci rockchip,pins = <4 RK_PD5 RK_FUNC_GPIO 74162306a36Sopenharmony_ci &pcfg_pull_none>; 74262306a36Sopenharmony_ci }; 74362306a36Sopenharmony_ci }; 74462306a36Sopenharmony_ci 74562306a36Sopenharmony_ci codec { 74662306a36Sopenharmony_ci /* Has external pullup */ 74762306a36Sopenharmony_ci headset_int_l: headset-int-l { 74862306a36Sopenharmony_ci rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; 74962306a36Sopenharmony_ci }; 75062306a36Sopenharmony_ci 75162306a36Sopenharmony_ci mic_int: mic-int { 75262306a36Sopenharmony_ci rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>; 75362306a36Sopenharmony_ci }; 75462306a36Sopenharmony_ci }; 75562306a36Sopenharmony_ci 75662306a36Sopenharmony_ci max98357a { 75762306a36Sopenharmony_ci sdmode_en: sdmode-en { 75862306a36Sopenharmony_ci rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_down>; 75962306a36Sopenharmony_ci }; 76062306a36Sopenharmony_ci }; 76162306a36Sopenharmony_ci 76262306a36Sopenharmony_ci pcie { 76362306a36Sopenharmony_ci pcie_clkreqn_cpm: pci-clkreqn-cpm { 76462306a36Sopenharmony_ci /* 76562306a36Sopenharmony_ci * Since our pcie doesn't support ClockPM(CPM), we want 76662306a36Sopenharmony_ci * to hack this as gpio, so the EP could be able to 76762306a36Sopenharmony_ci * de-assert it along and make ClockPM(CPM) work. 76862306a36Sopenharmony_ci */ 76962306a36Sopenharmony_ci rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; 77062306a36Sopenharmony_ci }; 77162306a36Sopenharmony_ci }; 77262306a36Sopenharmony_ci 77362306a36Sopenharmony_ci sdmmc { 77462306a36Sopenharmony_ci /* 77562306a36Sopenharmony_ci * We run sdmmc at max speed; bump up drive strength. 77662306a36Sopenharmony_ci * We also have external pulls, so disable the internal ones. 77762306a36Sopenharmony_ci */ 77862306a36Sopenharmony_ci sdmmc_bus4: sdmmc-bus4 { 77962306a36Sopenharmony_ci rockchip,pins = 78062306a36Sopenharmony_ci <4 RK_PB0 1 &pcfg_pull_none_8ma>, 78162306a36Sopenharmony_ci <4 RK_PB1 1 &pcfg_pull_none_8ma>, 78262306a36Sopenharmony_ci <4 RK_PB2 1 &pcfg_pull_none_8ma>, 78362306a36Sopenharmony_ci <4 RK_PB3 1 &pcfg_pull_none_8ma>; 78462306a36Sopenharmony_ci }; 78562306a36Sopenharmony_ci 78662306a36Sopenharmony_ci sdmmc_clk: sdmmc-clk { 78762306a36Sopenharmony_ci rockchip,pins = 78862306a36Sopenharmony_ci <4 RK_PB4 1 &pcfg_pull_none_8ma>; 78962306a36Sopenharmony_ci }; 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_ci sdmmc_cmd: sdmmc-cmd { 79262306a36Sopenharmony_ci rockchip,pins = 79362306a36Sopenharmony_ci <4 RK_PB5 1 &pcfg_pull_none_8ma>; 79462306a36Sopenharmony_ci }; 79562306a36Sopenharmony_ci 79662306a36Sopenharmony_ci /* 79762306a36Sopenharmony_ci * In our case the official card detect is hooked to ground 79862306a36Sopenharmony_ci * to avoid getting access to JTAG just by sticking something 79962306a36Sopenharmony_ci * in the SD card slot (see the force_jtag bit in the TRM). 80062306a36Sopenharmony_ci * 80162306a36Sopenharmony_ci * We still configure it as card detect because it doesn't 80262306a36Sopenharmony_ci * hurt and dw_mmc will ignore it. We make sure to disable 80362306a36Sopenharmony_ci * the pull though so we don't burn needless power. 80462306a36Sopenharmony_ci */ 80562306a36Sopenharmony_ci sdmmc_cd: sdmmc-cd { 80662306a36Sopenharmony_ci rockchip,pins = 80762306a36Sopenharmony_ci <0 RK_PA7 1 &pcfg_pull_none>; 80862306a36Sopenharmony_ci }; 80962306a36Sopenharmony_ci 81062306a36Sopenharmony_ci /* This is where we actually hook up CD; has external pull */ 81162306a36Sopenharmony_ci sdmmc_cd_pin: sdmmc-cd-pin { 81262306a36Sopenharmony_ci rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; 81362306a36Sopenharmony_ci }; 81462306a36Sopenharmony_ci }; 81562306a36Sopenharmony_ci 81662306a36Sopenharmony_ci spi1 { 81762306a36Sopenharmony_ci spi1_sleep: spi1-sleep { 81862306a36Sopenharmony_ci /* 81962306a36Sopenharmony_ci * Pull down SPI1 CLK/CS/RX/TX during suspend, to 82062306a36Sopenharmony_ci * prevent leakage. 82162306a36Sopenharmony_ci */ 82262306a36Sopenharmony_ci rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>, 82362306a36Sopenharmony_ci <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_down>, 82462306a36Sopenharmony_ci <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_down>, 82562306a36Sopenharmony_ci <1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; 82662306a36Sopenharmony_ci }; 82762306a36Sopenharmony_ci }; 82862306a36Sopenharmony_ci 82962306a36Sopenharmony_ci touchscreen { 83062306a36Sopenharmony_ci touch_int_l: touch-int-l { 83162306a36Sopenharmony_ci rockchip,pins = <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>; 83262306a36Sopenharmony_ci }; 83362306a36Sopenharmony_ci 83462306a36Sopenharmony_ci touch_reset_l: touch-reset-l { 83562306a36Sopenharmony_ci rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; 83662306a36Sopenharmony_ci }; 83762306a36Sopenharmony_ci }; 83862306a36Sopenharmony_ci 83962306a36Sopenharmony_ci trackpad { 84062306a36Sopenharmony_ci ap_i2c_tp_pu_en: ap-i2c-tp-pu-en { 84162306a36Sopenharmony_ci rockchip,pins = <3 RK_PB4 RK_FUNC_GPIO &pcfg_output_high>; 84262306a36Sopenharmony_ci }; 84362306a36Sopenharmony_ci 84462306a36Sopenharmony_ci trackpad_int_l: trackpad-int-l { 84562306a36Sopenharmony_ci rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>; 84662306a36Sopenharmony_ci }; 84762306a36Sopenharmony_ci }; 84862306a36Sopenharmony_ci 84962306a36Sopenharmony_ci wifi: wifi { 85062306a36Sopenharmony_ci wlan_module_reset_l: wlan-module-reset-l { 85162306a36Sopenharmony_ci rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; 85262306a36Sopenharmony_ci }; 85362306a36Sopenharmony_ci 85462306a36Sopenharmony_ci bt_host_wake_l: bt-host-wake-l { 85562306a36Sopenharmony_ci /* Kevin has an external pull up, but Gru does not */ 85662306a36Sopenharmony_ci rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; 85762306a36Sopenharmony_ci }; 85862306a36Sopenharmony_ci }; 85962306a36Sopenharmony_ci 86062306a36Sopenharmony_ci write-protect { 86162306a36Sopenharmony_ci ap_fw_wp: ap-fw-wp { 86262306a36Sopenharmony_ci rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>; 86362306a36Sopenharmony_ci }; 86462306a36Sopenharmony_ci }; 86562306a36Sopenharmony_ci}; 866