1c66ec88fSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2c66ec88fSEmmanuel Vadot/* 3c66ec88fSEmmanuel Vadot * Google Gru (and derivatives) board device tree source 4c66ec88fSEmmanuel Vadot * 5c66ec88fSEmmanuel Vadot * Copyright 2016-2017 Google, Inc 6c66ec88fSEmmanuel Vadot */ 7c66ec88fSEmmanuel Vadot 8c66ec88fSEmmanuel Vadot#include <dt-bindings/input/input.h> 9c66ec88fSEmmanuel Vadot#include "rk3399.dtsi" 10c66ec88fSEmmanuel Vadot#include "rk3399-op1-opp.dtsi" 11c66ec88fSEmmanuel Vadot 12c66ec88fSEmmanuel Vadot/ { 132eb4d8dcSEmmanuel Vadot aliases { 142eb4d8dcSEmmanuel Vadot mmc0 = &sdmmc; 152eb4d8dcSEmmanuel Vadot mmc1 = &sdhci; 162eb4d8dcSEmmanuel Vadot }; 172eb4d8dcSEmmanuel Vadot 18c66ec88fSEmmanuel Vadot chosen { 19c66ec88fSEmmanuel Vadot stdout-path = "serial2:115200n8"; 20c66ec88fSEmmanuel Vadot }; 21c66ec88fSEmmanuel Vadot 22c66ec88fSEmmanuel Vadot /* 23c66ec88fSEmmanuel Vadot * Power Tree 24c66ec88fSEmmanuel Vadot * 25c66ec88fSEmmanuel Vadot * In general an attempt is made to include all rails called out by 26c66ec88fSEmmanuel Vadot * the schematic as long as those rails interact in some way with 27c66ec88fSEmmanuel Vadot * the AP. AKA: 28c66ec88fSEmmanuel Vadot * - Rails that only connect to the EC (or devices that the EC talks to) 29c66ec88fSEmmanuel Vadot * are not included. 30c66ec88fSEmmanuel Vadot * - Rails _are_ included if the rails go to the AP even if the AP 31c66ec88fSEmmanuel Vadot * doesn't currently care about them / they are always on. The idea 32c66ec88fSEmmanuel Vadot * here is that it makes it easier to map to the schematic or extend 33c66ec88fSEmmanuel Vadot * later. 34c66ec88fSEmmanuel Vadot * 35c66ec88fSEmmanuel Vadot * If two rails are substantially the same from the AP's point of 36c66ec88fSEmmanuel Vadot * view, though, we won't create a full fixed regulator. We'll just 37c66ec88fSEmmanuel Vadot * put the child rail as an alias of the parent rail. Sometimes rails 38c66ec88fSEmmanuel Vadot * look the same to the AP because one of these is true: 39c66ec88fSEmmanuel Vadot * - The EC controls the enable and the EC always enables a rail as 40c66ec88fSEmmanuel Vadot * long as the AP is running. 41c66ec88fSEmmanuel Vadot * - The rails are actually connected to each other by a jumper and 42c66ec88fSEmmanuel Vadot * the distinction is just there to add clarity/flexibility to the 43c66ec88fSEmmanuel Vadot * schematic. 44c66ec88fSEmmanuel Vadot */ 45c66ec88fSEmmanuel Vadot 46c66ec88fSEmmanuel Vadot ppvar_sys: ppvar-sys { 47c66ec88fSEmmanuel Vadot compatible = "regulator-fixed"; 48c66ec88fSEmmanuel Vadot regulator-name = "ppvar_sys"; 49c66ec88fSEmmanuel Vadot regulator-always-on; 50c66ec88fSEmmanuel Vadot regulator-boot-on; 51c66ec88fSEmmanuel Vadot }; 52c66ec88fSEmmanuel Vadot 53c66ec88fSEmmanuel Vadot pp1200_lpddr: pp1200-lpddr { 54c66ec88fSEmmanuel Vadot compatible = "regulator-fixed"; 55c66ec88fSEmmanuel Vadot regulator-name = "pp1200_lpddr"; 56c66ec88fSEmmanuel Vadot 57c66ec88fSEmmanuel Vadot /* EC turns on w/ lpddr_pwr_en; always on for AP */ 58c66ec88fSEmmanuel Vadot regulator-always-on; 59c66ec88fSEmmanuel Vadot regulator-boot-on; 60c66ec88fSEmmanuel Vadot regulator-min-microvolt = <1200000>; 61c66ec88fSEmmanuel Vadot regulator-max-microvolt = <1200000>; 62c66ec88fSEmmanuel Vadot 63c66ec88fSEmmanuel Vadot vin-supply = <&ppvar_sys>; 64c66ec88fSEmmanuel Vadot }; 65c66ec88fSEmmanuel Vadot 66c66ec88fSEmmanuel Vadot pp1800: pp1800 { 67c66ec88fSEmmanuel Vadot compatible = "regulator-fixed"; 68c66ec88fSEmmanuel Vadot regulator-name = "pp1800"; 69c66ec88fSEmmanuel Vadot 70c66ec88fSEmmanuel Vadot /* Always on when ppvar_sys shows power good */ 71c66ec88fSEmmanuel Vadot regulator-always-on; 72c66ec88fSEmmanuel Vadot regulator-boot-on; 73c66ec88fSEmmanuel Vadot regulator-min-microvolt = <1800000>; 74c66ec88fSEmmanuel Vadot regulator-max-microvolt = <1800000>; 75c66ec88fSEmmanuel Vadot 76c66ec88fSEmmanuel Vadot vin-supply = <&ppvar_sys>; 77c66ec88fSEmmanuel Vadot }; 78c66ec88fSEmmanuel Vadot 79c66ec88fSEmmanuel Vadot pp3300: pp3300 { 80c66ec88fSEmmanuel Vadot compatible = "regulator-fixed"; 81c66ec88fSEmmanuel Vadot regulator-name = "pp3300"; 82c66ec88fSEmmanuel Vadot 83c66ec88fSEmmanuel Vadot /* Always on; plain and simple */ 84c66ec88fSEmmanuel Vadot regulator-always-on; 85c66ec88fSEmmanuel Vadot regulator-boot-on; 86c66ec88fSEmmanuel Vadot regulator-min-microvolt = <3300000>; 87c66ec88fSEmmanuel Vadot regulator-max-microvolt = <3300000>; 88c66ec88fSEmmanuel Vadot 89c66ec88fSEmmanuel Vadot vin-supply = <&ppvar_sys>; 90c66ec88fSEmmanuel Vadot }; 91c66ec88fSEmmanuel Vadot 92c66ec88fSEmmanuel Vadot pp5000: pp5000 { 93c66ec88fSEmmanuel Vadot compatible = "regulator-fixed"; 94c66ec88fSEmmanuel Vadot regulator-name = "pp5000"; 95c66ec88fSEmmanuel Vadot 96c66ec88fSEmmanuel Vadot /* EC turns on w/ pp5000_en; always on for AP */ 97c66ec88fSEmmanuel Vadot regulator-always-on; 98c66ec88fSEmmanuel Vadot regulator-boot-on; 99c66ec88fSEmmanuel Vadot regulator-min-microvolt = <5000000>; 100c66ec88fSEmmanuel Vadot regulator-max-microvolt = <5000000>; 101c66ec88fSEmmanuel Vadot 102c66ec88fSEmmanuel Vadot vin-supply = <&ppvar_sys>; 103c66ec88fSEmmanuel Vadot }; 104c66ec88fSEmmanuel Vadot 105c66ec88fSEmmanuel Vadot ppvar_bigcpu_pwm: ppvar-bigcpu-pwm { 106c66ec88fSEmmanuel Vadot compatible = "pwm-regulator"; 107c66ec88fSEmmanuel Vadot regulator-name = "ppvar_bigcpu_pwm"; 108c66ec88fSEmmanuel Vadot 109c66ec88fSEmmanuel Vadot pwms = <&pwm1 0 3337 0>; 110c66ec88fSEmmanuel Vadot pwm-supply = <&ppvar_sys>; 111c66ec88fSEmmanuel Vadot pwm-dutycycle-range = <100 0>; 112c66ec88fSEmmanuel Vadot pwm-dutycycle-unit = <100>; 113c66ec88fSEmmanuel Vadot 114c66ec88fSEmmanuel Vadot /* EC turns on w/ ap_core_en; always on for AP */ 115c66ec88fSEmmanuel Vadot regulator-always-on; 116c66ec88fSEmmanuel Vadot regulator-boot-on; 117c66ec88fSEmmanuel Vadot regulator-min-microvolt = <800107>; 118c66ec88fSEmmanuel Vadot regulator-max-microvolt = <1302232>; 119c66ec88fSEmmanuel Vadot }; 120c66ec88fSEmmanuel Vadot 121c66ec88fSEmmanuel Vadot ppvar_bigcpu: ppvar-bigcpu { 122c66ec88fSEmmanuel Vadot compatible = "vctrl-regulator"; 123c66ec88fSEmmanuel Vadot regulator-name = "ppvar_bigcpu"; 124c66ec88fSEmmanuel Vadot 125c66ec88fSEmmanuel Vadot regulator-min-microvolt = <800107>; 126c66ec88fSEmmanuel Vadot regulator-max-microvolt = <1302232>; 127c66ec88fSEmmanuel Vadot 128c66ec88fSEmmanuel Vadot ctrl-supply = <&ppvar_bigcpu_pwm>; 129c66ec88fSEmmanuel Vadot ctrl-voltage-range = <800107 1302232>; 130c66ec88fSEmmanuel Vadot 131c66ec88fSEmmanuel Vadot regulator-settling-time-up-us = <322>; 132c66ec88fSEmmanuel Vadot }; 133c66ec88fSEmmanuel Vadot 134c66ec88fSEmmanuel Vadot ppvar_litcpu_pwm: ppvar-litcpu-pwm { 135c66ec88fSEmmanuel Vadot compatible = "pwm-regulator"; 136c66ec88fSEmmanuel Vadot regulator-name = "ppvar_litcpu_pwm"; 137c66ec88fSEmmanuel Vadot 138c66ec88fSEmmanuel Vadot pwms = <&pwm2 0 3337 0>; 139c66ec88fSEmmanuel Vadot pwm-supply = <&ppvar_sys>; 140c66ec88fSEmmanuel Vadot pwm-dutycycle-range = <100 0>; 141c66ec88fSEmmanuel Vadot pwm-dutycycle-unit = <100>; 142c66ec88fSEmmanuel Vadot 143c66ec88fSEmmanuel Vadot /* EC turns on w/ ap_core_en; always on for AP */ 144c66ec88fSEmmanuel Vadot regulator-always-on; 145c66ec88fSEmmanuel Vadot regulator-boot-on; 146c66ec88fSEmmanuel Vadot regulator-min-microvolt = <797743>; 147c66ec88fSEmmanuel Vadot regulator-max-microvolt = <1307837>; 148c66ec88fSEmmanuel Vadot }; 149c66ec88fSEmmanuel Vadot 150c66ec88fSEmmanuel Vadot ppvar_litcpu: ppvar-litcpu { 151c66ec88fSEmmanuel Vadot compatible = "vctrl-regulator"; 152c66ec88fSEmmanuel Vadot regulator-name = "ppvar_litcpu"; 153c66ec88fSEmmanuel Vadot 154c66ec88fSEmmanuel Vadot regulator-min-microvolt = <797743>; 155c66ec88fSEmmanuel Vadot regulator-max-microvolt = <1307837>; 156c66ec88fSEmmanuel Vadot 157c66ec88fSEmmanuel Vadot ctrl-supply = <&ppvar_litcpu_pwm>; 158c66ec88fSEmmanuel Vadot ctrl-voltage-range = <797743 1307837>; 159c66ec88fSEmmanuel Vadot 160c66ec88fSEmmanuel Vadot regulator-settling-time-up-us = <384>; 161c66ec88fSEmmanuel Vadot }; 162c66ec88fSEmmanuel Vadot 163c66ec88fSEmmanuel Vadot ppvar_gpu_pwm: ppvar-gpu-pwm { 164c66ec88fSEmmanuel Vadot compatible = "pwm-regulator"; 165c66ec88fSEmmanuel Vadot regulator-name = "ppvar_gpu_pwm"; 166c66ec88fSEmmanuel Vadot 167c66ec88fSEmmanuel Vadot pwms = <&pwm0 0 3337 0>; 168c66ec88fSEmmanuel Vadot pwm-supply = <&ppvar_sys>; 169c66ec88fSEmmanuel Vadot pwm-dutycycle-range = <100 0>; 170c66ec88fSEmmanuel Vadot pwm-dutycycle-unit = <100>; 171c66ec88fSEmmanuel Vadot 172c66ec88fSEmmanuel Vadot /* EC turns on w/ ap_core_en; always on for AP */ 173c66ec88fSEmmanuel Vadot regulator-always-on; 174c66ec88fSEmmanuel Vadot regulator-boot-on; 175c66ec88fSEmmanuel Vadot regulator-min-microvolt = <786384>; 176c66ec88fSEmmanuel Vadot regulator-max-microvolt = <1217747>; 177c66ec88fSEmmanuel Vadot }; 178c66ec88fSEmmanuel Vadot 179c66ec88fSEmmanuel Vadot ppvar_gpu: ppvar-gpu { 180c66ec88fSEmmanuel Vadot compatible = "vctrl-regulator"; 181c66ec88fSEmmanuel Vadot regulator-name = "ppvar_gpu"; 182c66ec88fSEmmanuel Vadot 183c66ec88fSEmmanuel Vadot regulator-min-microvolt = <786384>; 184c66ec88fSEmmanuel Vadot regulator-max-microvolt = <1217747>; 185c66ec88fSEmmanuel Vadot 186c66ec88fSEmmanuel Vadot ctrl-supply = <&ppvar_gpu_pwm>; 187c66ec88fSEmmanuel Vadot ctrl-voltage-range = <786384 1217747>; 188c66ec88fSEmmanuel Vadot 189c66ec88fSEmmanuel Vadot regulator-settling-time-up-us = <390>; 190c66ec88fSEmmanuel Vadot }; 191c66ec88fSEmmanuel Vadot 192c66ec88fSEmmanuel Vadot /* EC turns on w/ pp900_ddrpll_en */ 193c66ec88fSEmmanuel Vadot pp900_ddrpll: pp900-ap { 194c66ec88fSEmmanuel Vadot }; 195c66ec88fSEmmanuel Vadot 196c66ec88fSEmmanuel Vadot /* EC turns on w/ pp900_pll_en */ 197c66ec88fSEmmanuel Vadot pp900_pll: pp900-ap { 198c66ec88fSEmmanuel Vadot }; 199c66ec88fSEmmanuel Vadot 200c66ec88fSEmmanuel Vadot /* EC turns on w/ pp900_pmu_en */ 201c66ec88fSEmmanuel Vadot pp900_pmu: pp900-ap { 202c66ec88fSEmmanuel Vadot }; 203c66ec88fSEmmanuel Vadot 204c66ec88fSEmmanuel Vadot /* EC turns on w/ pp1800_s0_en_l */ 205c66ec88fSEmmanuel Vadot pp1800_ap_io: pp1800_emmc: pp1800_nfc: pp1800_s0: pp1800 { 206c66ec88fSEmmanuel Vadot }; 207c66ec88fSEmmanuel Vadot 208c66ec88fSEmmanuel Vadot /* EC turns on w/ pp1800_avdd_en_l */ 209c66ec88fSEmmanuel Vadot pp1800_avdd: pp1800 { 210c66ec88fSEmmanuel Vadot }; 211c66ec88fSEmmanuel Vadot 212c66ec88fSEmmanuel Vadot /* EC turns on w/ pp1800_lid_en_l */ 213c66ec88fSEmmanuel Vadot pp1800_lid: pp1800_mic: pp1800 { 214c66ec88fSEmmanuel Vadot }; 215c66ec88fSEmmanuel Vadot 216c66ec88fSEmmanuel Vadot /* EC turns on w/ lpddr_pwr_en */ 217c66ec88fSEmmanuel Vadot pp1800_lpddr: pp1800 { 218c66ec88fSEmmanuel Vadot }; 219c66ec88fSEmmanuel Vadot 220c66ec88fSEmmanuel Vadot /* EC turns on w/ pp1800_pmu_en_l */ 221c66ec88fSEmmanuel Vadot pp1800_pmu: pp1800 { 222c66ec88fSEmmanuel Vadot }; 223c66ec88fSEmmanuel Vadot 224c66ec88fSEmmanuel Vadot /* EC turns on w/ pp1800_usb_en_l */ 225c66ec88fSEmmanuel Vadot pp1800_usb: pp1800 { 226c66ec88fSEmmanuel Vadot }; 227c66ec88fSEmmanuel Vadot 228c66ec88fSEmmanuel Vadot pp3000_sd_slot: pp3000-sd-slot { 229c66ec88fSEmmanuel Vadot compatible = "regulator-fixed"; 230c66ec88fSEmmanuel Vadot regulator-name = "pp3000_sd_slot"; 231c66ec88fSEmmanuel Vadot pinctrl-names = "default"; 232c66ec88fSEmmanuel Vadot pinctrl-0 = <&sd_slot_pwr_en>; 233c66ec88fSEmmanuel Vadot 234c66ec88fSEmmanuel Vadot enable-active-high; 235c66ec88fSEmmanuel Vadot gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>; 236c66ec88fSEmmanuel Vadot 237c66ec88fSEmmanuel Vadot vin-supply = <&pp3000>; 238c66ec88fSEmmanuel Vadot }; 239c66ec88fSEmmanuel Vadot 240c66ec88fSEmmanuel Vadot /* 241c66ec88fSEmmanuel Vadot * Technically, this is a small abuse of 'regulator-gpio'; this 242c66ec88fSEmmanuel Vadot * regulator is a mux between pp1800 and pp3300. pp1800 and pp3300 are 243c66ec88fSEmmanuel Vadot * always on though, so it is sufficient to simply control the mux 244c66ec88fSEmmanuel Vadot * here. 245c66ec88fSEmmanuel Vadot */ 246c66ec88fSEmmanuel Vadot ppvar_sd_card_io: ppvar-sd-card-io { 247c66ec88fSEmmanuel Vadot compatible = "regulator-gpio"; 248c66ec88fSEmmanuel Vadot regulator-name = "ppvar_sd_card_io"; 249c66ec88fSEmmanuel Vadot pinctrl-names = "default"; 250c66ec88fSEmmanuel Vadot pinctrl-0 = <&sd_io_pwr_en &sd_pwr_1800_sel>; 251c66ec88fSEmmanuel Vadot 252c66ec88fSEmmanuel Vadot enable-active-high; 253aa1a8ff2SEmmanuel Vadot enable-gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>; 254c66ec88fSEmmanuel Vadot gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>; 2555956d97fSEmmanuel Vadot states = <1800000 0x1>, 2565956d97fSEmmanuel Vadot <3000000 0x0>; 257c66ec88fSEmmanuel Vadot 258c66ec88fSEmmanuel Vadot regulator-min-microvolt = <1800000>; 259c66ec88fSEmmanuel Vadot regulator-max-microvolt = <3000000>; 260c66ec88fSEmmanuel Vadot }; 261c66ec88fSEmmanuel Vadot 262c66ec88fSEmmanuel Vadot /* EC turns on w/ pp3300_trackpad_en_l */ 263c66ec88fSEmmanuel Vadot pp3300_trackpad: pp3300-trackpad { 264c66ec88fSEmmanuel Vadot }; 265c66ec88fSEmmanuel Vadot 266c66ec88fSEmmanuel Vadot /* EC turns on w/ usb_a_en */ 267c66ec88fSEmmanuel Vadot pp5000_usb_a_vbus: pp5000 { 268c66ec88fSEmmanuel Vadot }; 269c66ec88fSEmmanuel Vadot 270c66ec88fSEmmanuel Vadot ap_rtc_clk: ap-rtc-clk { 271c66ec88fSEmmanuel Vadot compatible = "fixed-clock"; 272c66ec88fSEmmanuel Vadot clock-frequency = <32768>; 273c66ec88fSEmmanuel Vadot clock-output-names = "xin32k"; 274c66ec88fSEmmanuel Vadot #clock-cells = <0>; 275c66ec88fSEmmanuel Vadot }; 276c66ec88fSEmmanuel Vadot 277c66ec88fSEmmanuel Vadot max98357a: max98357a { 278c66ec88fSEmmanuel Vadot compatible = "maxim,max98357a"; 279c66ec88fSEmmanuel Vadot pinctrl-names = "default"; 280c66ec88fSEmmanuel Vadot pinctrl-0 = <&sdmode_en>; 281c66ec88fSEmmanuel Vadot sdmode-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>; 282c66ec88fSEmmanuel Vadot sdmode-delay = <2>; 283c66ec88fSEmmanuel Vadot #sound-dai-cells = <0>; 284c66ec88fSEmmanuel Vadot status = "okay"; 285c66ec88fSEmmanuel Vadot }; 286c66ec88fSEmmanuel Vadot 287c66ec88fSEmmanuel Vadot sound: sound { 288c66ec88fSEmmanuel Vadot compatible = "rockchip,rk3399-gru-sound"; 289e67e8565SEmmanuel Vadot rockchip,cpu = <&i2s0 &spdif>; 290c66ec88fSEmmanuel Vadot }; 291c66ec88fSEmmanuel Vadot}; 292c66ec88fSEmmanuel Vadot 293c66ec88fSEmmanuel Vadot&cdn_dp { 294c66ec88fSEmmanuel Vadot status = "okay"; 295c66ec88fSEmmanuel Vadot}; 296c66ec88fSEmmanuel Vadot 297c66ec88fSEmmanuel Vadot/* 298c66ec88fSEmmanuel Vadot * Set some suspend operating points to avoid OVP in suspend 299c66ec88fSEmmanuel Vadot * 300c66ec88fSEmmanuel Vadot * When we go into S3 ARM Trusted Firmware will transition our PWM regulators 301c66ec88fSEmmanuel Vadot * from wherever they're at back to the "default" operating point (whatever 302c66ec88fSEmmanuel Vadot * voltage we get when we set the PWM pins to "input"). 303c66ec88fSEmmanuel Vadot * 304c66ec88fSEmmanuel Vadot * This quick transition under light load has the possibility to trigger the 305c66ec88fSEmmanuel Vadot * regulator "over voltage protection" (OVP). 306c66ec88fSEmmanuel Vadot * 307c66ec88fSEmmanuel Vadot * To make extra certain that we don't hit this OVP at suspend time, we'll 308c66ec88fSEmmanuel Vadot * transition to a voltage that's much closer to the default (~1.0 V) so that 309c66ec88fSEmmanuel Vadot * there will not be a big jump. Technically we only need to get within 200 mV 310c66ec88fSEmmanuel Vadot * of the default voltage, but the speed here should be fast enough and we need 311c66ec88fSEmmanuel Vadot * suspend/resume to be rock solid. 312c66ec88fSEmmanuel Vadot */ 313c66ec88fSEmmanuel Vadot 314c66ec88fSEmmanuel Vadot&cluster0_opp { 315c66ec88fSEmmanuel Vadot opp05 { 316c66ec88fSEmmanuel Vadot opp-suspend; 317c66ec88fSEmmanuel Vadot }; 318c66ec88fSEmmanuel Vadot}; 319c66ec88fSEmmanuel Vadot 320c66ec88fSEmmanuel Vadot&cluster1_opp { 321c66ec88fSEmmanuel Vadot opp06 { 322c66ec88fSEmmanuel Vadot opp-suspend; 323c66ec88fSEmmanuel Vadot }; 324c66ec88fSEmmanuel Vadot}; 325c66ec88fSEmmanuel Vadot 326c66ec88fSEmmanuel Vadot&cpu_l0 { 327c66ec88fSEmmanuel Vadot cpu-supply = <&ppvar_litcpu>; 328c66ec88fSEmmanuel Vadot}; 329c66ec88fSEmmanuel Vadot 330c66ec88fSEmmanuel Vadot&cpu_l1 { 331c66ec88fSEmmanuel Vadot cpu-supply = <&ppvar_litcpu>; 332c66ec88fSEmmanuel Vadot}; 333c66ec88fSEmmanuel Vadot 334c66ec88fSEmmanuel Vadot&cpu_l2 { 335c66ec88fSEmmanuel Vadot cpu-supply = <&ppvar_litcpu>; 336c66ec88fSEmmanuel Vadot}; 337c66ec88fSEmmanuel Vadot 338c66ec88fSEmmanuel Vadot&cpu_l3 { 339c66ec88fSEmmanuel Vadot cpu-supply = <&ppvar_litcpu>; 340c66ec88fSEmmanuel Vadot}; 341c66ec88fSEmmanuel Vadot 342c66ec88fSEmmanuel Vadot&cpu_b0 { 343c66ec88fSEmmanuel Vadot cpu-supply = <&ppvar_bigcpu>; 344c66ec88fSEmmanuel Vadot}; 345c66ec88fSEmmanuel Vadot 346c66ec88fSEmmanuel Vadot&cpu_b1 { 347c66ec88fSEmmanuel Vadot cpu-supply = <&ppvar_bigcpu>; 348c66ec88fSEmmanuel Vadot}; 349c66ec88fSEmmanuel Vadot 350c66ec88fSEmmanuel Vadot 351c66ec88fSEmmanuel Vadot&cru { 352c66ec88fSEmmanuel Vadot assigned-clocks = 353c66ec88fSEmmanuel Vadot <&cru PLL_GPLL>, <&cru PLL_CPLL>, 354c66ec88fSEmmanuel Vadot <&cru PLL_NPLL>, 355c66ec88fSEmmanuel Vadot <&cru ACLK_PERIHP>, <&cru HCLK_PERIHP>, 356c66ec88fSEmmanuel Vadot <&cru PCLK_PERIHP>, 357c66ec88fSEmmanuel Vadot <&cru ACLK_PERILP0>, <&cru HCLK_PERILP0>, 358c66ec88fSEmmanuel Vadot <&cru PCLK_PERILP0>, <&cru ACLK_CCI>, 359c66ec88fSEmmanuel Vadot <&cru HCLK_PERILP1>, <&cru PCLK_PERILP1>, 360c66ec88fSEmmanuel Vadot <&cru ACLK_VIO>, <&cru ACLK_HDCP>, 361c66ec88fSEmmanuel Vadot <&cru ACLK_GIC_PRE>, 362c66ec88fSEmmanuel Vadot <&cru PCLK_DDR>; 363c66ec88fSEmmanuel Vadot assigned-clock-rates = 364c66ec88fSEmmanuel Vadot <600000000>, <800000000>, 365c66ec88fSEmmanuel Vadot <1000000000>, 366c66ec88fSEmmanuel Vadot <150000000>, <75000000>, 367c66ec88fSEmmanuel Vadot <37500000>, 368c66ec88fSEmmanuel Vadot <100000000>, <100000000>, 369c66ec88fSEmmanuel Vadot <50000000>, <800000000>, 370c66ec88fSEmmanuel Vadot <100000000>, <50000000>, 371c66ec88fSEmmanuel Vadot <400000000>, <400000000>, 372c66ec88fSEmmanuel Vadot <200000000>, 373c66ec88fSEmmanuel Vadot <200000000>; 374c66ec88fSEmmanuel Vadot}; 375c66ec88fSEmmanuel Vadot 376d5b0e70fSEmmanuel Vadot&dfi { 377d5b0e70fSEmmanuel Vadot status = "okay"; 378d5b0e70fSEmmanuel Vadot}; 379d5b0e70fSEmmanuel Vadot 380d5b0e70fSEmmanuel Vadot&dmc { 381d5b0e70fSEmmanuel Vadot status = "okay"; 382d5b0e70fSEmmanuel Vadot 383d5b0e70fSEmmanuel Vadot rockchip,pd-idle-ns = <160>; 384d5b0e70fSEmmanuel Vadot rockchip,sr-idle-ns = <10240>; 385d5b0e70fSEmmanuel Vadot rockchip,sr-mc-gate-idle-ns = <40960>; 386d5b0e70fSEmmanuel Vadot rockchip,srpd-lite-idle-ns = <61440>; 387d5b0e70fSEmmanuel Vadot rockchip,standby-idle-ns = <81920>; 388d5b0e70fSEmmanuel Vadot 389d5b0e70fSEmmanuel Vadot rockchip,ddr3_odt_dis_freq = <666000000>; 390d5b0e70fSEmmanuel Vadot rockchip,lpddr3_odt_dis_freq = <666000000>; 391d5b0e70fSEmmanuel Vadot rockchip,lpddr4_odt_dis_freq = <666000000>; 392d5b0e70fSEmmanuel Vadot 393d5b0e70fSEmmanuel Vadot rockchip,sr-mc-gate-idle-dis-freq-hz = <1000000000>; 394d5b0e70fSEmmanuel Vadot rockchip,srpd-lite-idle-dis-freq-hz = <0>; 395d5b0e70fSEmmanuel Vadot rockchip,standby-idle-dis-freq-hz = <928000000>; 396d5b0e70fSEmmanuel Vadot}; 397d5b0e70fSEmmanuel Vadot 398d5b0e70fSEmmanuel Vadot&dmc_opp_table { 399d5b0e70fSEmmanuel Vadot opp03 { 400d5b0e70fSEmmanuel Vadot opp-suspend; 401d5b0e70fSEmmanuel Vadot }; 402d5b0e70fSEmmanuel Vadot}; 403d5b0e70fSEmmanuel Vadot 404c66ec88fSEmmanuel Vadot&emmc_phy { 405c66ec88fSEmmanuel Vadot status = "okay"; 406c66ec88fSEmmanuel Vadot}; 407c66ec88fSEmmanuel Vadot 408c66ec88fSEmmanuel Vadot&gpu { 409c66ec88fSEmmanuel Vadot mali-supply = <&ppvar_gpu>; 410c66ec88fSEmmanuel Vadot status = "okay"; 411c66ec88fSEmmanuel Vadot}; 412c66ec88fSEmmanuel Vadot 413c66ec88fSEmmanuel Vadotap_i2c_ts: &i2c3 { 414c66ec88fSEmmanuel Vadot status = "okay"; 415c66ec88fSEmmanuel Vadot 416c66ec88fSEmmanuel Vadot clock-frequency = <400000>; 417c66ec88fSEmmanuel Vadot 418c66ec88fSEmmanuel Vadot /* These are relatively safe rise/fall times */ 419c66ec88fSEmmanuel Vadot i2c-scl-falling-time-ns = <50>; 420c66ec88fSEmmanuel Vadot i2c-scl-rising-time-ns = <300>; 421c66ec88fSEmmanuel Vadot}; 422c66ec88fSEmmanuel Vadot 423c66ec88fSEmmanuel Vadotap_i2c_audio: &i2c8 { 424c66ec88fSEmmanuel Vadot status = "okay"; 425c66ec88fSEmmanuel Vadot 426c66ec88fSEmmanuel Vadot clock-frequency = <400000>; 427c66ec88fSEmmanuel Vadot 428c66ec88fSEmmanuel Vadot /* These are relatively safe rise/fall times */ 429c66ec88fSEmmanuel Vadot i2c-scl-falling-time-ns = <50>; 430c66ec88fSEmmanuel Vadot i2c-scl-rising-time-ns = <300>; 431c66ec88fSEmmanuel Vadot 432c66ec88fSEmmanuel Vadot codec: da7219@1a { 433c66ec88fSEmmanuel Vadot compatible = "dlg,da7219"; 434c66ec88fSEmmanuel Vadot reg = <0x1a>; 435c66ec88fSEmmanuel Vadot interrupt-parent = <&gpio1>; 436c66ec88fSEmmanuel Vadot interrupts = <23 IRQ_TYPE_LEVEL_LOW>; 437c66ec88fSEmmanuel Vadot clocks = <&cru SCLK_I2S_8CH_OUT>; 438c66ec88fSEmmanuel Vadot clock-names = "mclk"; 439c66ec88fSEmmanuel Vadot dlg,micbias-lvl = <2600>; 440c66ec88fSEmmanuel Vadot dlg,mic-amp-in-sel = "diff"; 441c66ec88fSEmmanuel Vadot pinctrl-names = "default"; 442c66ec88fSEmmanuel Vadot pinctrl-0 = <&headset_int_l>; 443c66ec88fSEmmanuel Vadot VDD-supply = <&pp1800>; 444c66ec88fSEmmanuel Vadot VDDMIC-supply = <&pp3300>; 445c66ec88fSEmmanuel Vadot VDDIO-supply = <&pp1800>; 446c66ec88fSEmmanuel Vadot 447c66ec88fSEmmanuel Vadot da7219_aad { 448c66ec88fSEmmanuel Vadot dlg,adc-1bit-rpt = <1>; 449c66ec88fSEmmanuel Vadot dlg,btn-avg = <4>; 450c66ec88fSEmmanuel Vadot dlg,btn-cfg = <50>; 451c66ec88fSEmmanuel Vadot dlg,mic-det-thr = <500>; 452c66ec88fSEmmanuel Vadot dlg,jack-ins-deb = <20>; 453c66ec88fSEmmanuel Vadot dlg,jack-det-rate = "32ms_64ms"; 454c66ec88fSEmmanuel Vadot dlg,jack-rem-deb = <1>; 455c66ec88fSEmmanuel Vadot 456c66ec88fSEmmanuel Vadot dlg,a-d-btn-thr = <0xa>; 457c66ec88fSEmmanuel Vadot dlg,d-b-btn-thr = <0x16>; 458c66ec88fSEmmanuel Vadot dlg,b-c-btn-thr = <0x21>; 459c66ec88fSEmmanuel Vadot dlg,c-mic-btn-thr = <0x3E>; 460c66ec88fSEmmanuel Vadot }; 461c66ec88fSEmmanuel Vadot }; 462c66ec88fSEmmanuel Vadot}; 463c66ec88fSEmmanuel Vadot 464c66ec88fSEmmanuel Vadot&i2s0 { 465c66ec88fSEmmanuel Vadot status = "okay"; 466c66ec88fSEmmanuel Vadot}; 467c66ec88fSEmmanuel Vadot 468c66ec88fSEmmanuel Vadot&io_domains { 469c66ec88fSEmmanuel Vadot status = "okay"; 470c66ec88fSEmmanuel Vadot 471c66ec88fSEmmanuel Vadot audio-supply = <&pp1800_audio>; /* APIO5_VDD; 3d 4a */ 472c66ec88fSEmmanuel Vadot bt656-supply = <&pp1800_ap_io>; /* APIO2_VDD; 2a 2b */ 473c66ec88fSEmmanuel Vadot gpio1830-supply = <&pp3000_ap>; /* APIO4_VDD; 4c 4d */ 474c66ec88fSEmmanuel Vadot sdmmc-supply = <&ppvar_sd_card_io>; /* SDMMC0_VDD; 4b */ 475c66ec88fSEmmanuel Vadot}; 476c66ec88fSEmmanuel Vadot 477c66ec88fSEmmanuel Vadot&pcie0 { 478c66ec88fSEmmanuel Vadot status = "okay"; 479c66ec88fSEmmanuel Vadot 480c66ec88fSEmmanuel Vadot ep-gpios = <&gpio2 27 GPIO_ACTIVE_HIGH>; 481c66ec88fSEmmanuel Vadot pinctrl-names = "default"; 482c66ec88fSEmmanuel Vadot pinctrl-0 = <&pcie_clkreqn_cpm>, <&wifi_perst_l>; 483c66ec88fSEmmanuel Vadot vpcie3v3-supply = <&pp3300_wifi_bt>; 484c66ec88fSEmmanuel Vadot vpcie1v8-supply = <&wlan_pd_n>; /* HACK: see &wlan_pd_n */ 485c66ec88fSEmmanuel Vadot vpcie0v9-supply = <&pp900_pcie>; 486c66ec88fSEmmanuel Vadot 487c66ec88fSEmmanuel Vadot pci_rootport: pcie@0,0 { 4888cc087a1SEmmanuel Vadot reg = <0x0000 0 0 0 0>; 489c66ec88fSEmmanuel Vadot #address-cells = <3>; 490c66ec88fSEmmanuel Vadot #size-cells = <2>; 491c66ec88fSEmmanuel Vadot ranges; 492*84943d6fSEmmanuel Vadot device_type = "pci"; 493c66ec88fSEmmanuel Vadot }; 494c66ec88fSEmmanuel Vadot}; 495c66ec88fSEmmanuel Vadot 496c66ec88fSEmmanuel Vadot&pcie_phy { 497c66ec88fSEmmanuel Vadot status = "okay"; 498c66ec88fSEmmanuel Vadot}; 499c66ec88fSEmmanuel Vadot 500c66ec88fSEmmanuel Vadot&pmu_io_domains { 501c66ec88fSEmmanuel Vadot status = "okay"; 502c66ec88fSEmmanuel Vadot 503c66ec88fSEmmanuel Vadot pmu1830-supply = <&pp1800_pmu>; /* PMUIO2_VDD */ 504c66ec88fSEmmanuel Vadot}; 505c66ec88fSEmmanuel Vadot 506c66ec88fSEmmanuel Vadot&pwm0 { 507c66ec88fSEmmanuel Vadot status = "okay"; 508c66ec88fSEmmanuel Vadot}; 509c66ec88fSEmmanuel Vadot 510c66ec88fSEmmanuel Vadot&pwm1 { 511c66ec88fSEmmanuel Vadot status = "okay"; 512c66ec88fSEmmanuel Vadot}; 513c66ec88fSEmmanuel Vadot 514c66ec88fSEmmanuel Vadot&pwm2 { 515c66ec88fSEmmanuel Vadot status = "okay"; 516c66ec88fSEmmanuel Vadot}; 517c66ec88fSEmmanuel Vadot 518c66ec88fSEmmanuel Vadot&pwm3 { 519c66ec88fSEmmanuel Vadot status = "okay"; 520c66ec88fSEmmanuel Vadot}; 521c66ec88fSEmmanuel Vadot 522c66ec88fSEmmanuel Vadot&sdhci { 523c66ec88fSEmmanuel Vadot /* 524c66ec88fSEmmanuel Vadot * Signal integrity isn't great at 200 MHz and 150 MHz (DDR) gives the 525c66ec88fSEmmanuel Vadot * same (or nearly the same) performance for all eMMC that are intended 526c66ec88fSEmmanuel Vadot * to be used. 527c66ec88fSEmmanuel Vadot */ 528c66ec88fSEmmanuel Vadot assigned-clock-rates = <150000000>; 529c66ec88fSEmmanuel Vadot 530c66ec88fSEmmanuel Vadot bus-width = <8>; 531c66ec88fSEmmanuel Vadot mmc-hs400-1_8v; 532c66ec88fSEmmanuel Vadot mmc-hs400-enhanced-strobe; 533c66ec88fSEmmanuel Vadot non-removable; 534c66ec88fSEmmanuel Vadot status = "okay"; 535c66ec88fSEmmanuel Vadot}; 536c66ec88fSEmmanuel Vadot 537c66ec88fSEmmanuel Vadot&sdmmc { 538c66ec88fSEmmanuel Vadot status = "okay"; 539c66ec88fSEmmanuel Vadot 540c66ec88fSEmmanuel Vadot /* 541c66ec88fSEmmanuel Vadot * Note: configure "sdmmc_cd" as card detect even though it's actually 542c66ec88fSEmmanuel Vadot * hooked to ground. Because we specified "cd-gpios" below dw_mmc 543c66ec88fSEmmanuel Vadot * should be ignoring card detect anyway. Specifying the pin as 544c66ec88fSEmmanuel Vadot * sdmmc_cd means that even if you've got GRF_SOC_CON7[12] (force_jtag) 545c66ec88fSEmmanuel Vadot * turned on that the system will still make sure the port is 546c66ec88fSEmmanuel Vadot * configured as SDMMC and not JTAG. 547c66ec88fSEmmanuel Vadot */ 548c66ec88fSEmmanuel Vadot pinctrl-names = "default"; 549c66ec88fSEmmanuel Vadot pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_cd_pin 550c66ec88fSEmmanuel Vadot &sdmmc_bus4>; 551c66ec88fSEmmanuel Vadot 552c66ec88fSEmmanuel Vadot bus-width = <4>; 553c66ec88fSEmmanuel Vadot cap-mmc-highspeed; 554c66ec88fSEmmanuel Vadot cap-sd-highspeed; 555c66ec88fSEmmanuel Vadot cd-gpios = <&gpio4 24 GPIO_ACTIVE_LOW>; 556c66ec88fSEmmanuel Vadot disable-wp; 557c66ec88fSEmmanuel Vadot sd-uhs-sdr12; 558c66ec88fSEmmanuel Vadot sd-uhs-sdr25; 559c66ec88fSEmmanuel Vadot sd-uhs-sdr50; 560c66ec88fSEmmanuel Vadot sd-uhs-sdr104; 561c66ec88fSEmmanuel Vadot vmmc-supply = <&pp3000_sd_slot>; 562c66ec88fSEmmanuel Vadot vqmmc-supply = <&ppvar_sd_card_io>; 563c66ec88fSEmmanuel Vadot}; 564c66ec88fSEmmanuel Vadot 565e67e8565SEmmanuel Vadot&spdif { 566e67e8565SEmmanuel Vadot status = "okay"; 567e67e8565SEmmanuel Vadot 568e67e8565SEmmanuel Vadot /* 569e67e8565SEmmanuel Vadot * SPDIF is routed internally to DP; we either don't use these pins, or 570e67e8565SEmmanuel Vadot * mux them to something else. 571e67e8565SEmmanuel Vadot */ 572e67e8565SEmmanuel Vadot /delete-property/ pinctrl-0; 573e67e8565SEmmanuel Vadot /delete-property/ pinctrl-names; 574e67e8565SEmmanuel Vadot}; 575e67e8565SEmmanuel Vadot 576c66ec88fSEmmanuel Vadot&spi1 { 577c66ec88fSEmmanuel Vadot status = "okay"; 578c66ec88fSEmmanuel Vadot 579c66ec88fSEmmanuel Vadot pinctrl-names = "default", "sleep"; 580c66ec88fSEmmanuel Vadot pinctrl-1 = <&spi1_sleep>; 581c66ec88fSEmmanuel Vadot 5828cc087a1SEmmanuel Vadot flash@0 { 583c66ec88fSEmmanuel Vadot compatible = "jedec,spi-nor"; 584c66ec88fSEmmanuel Vadot reg = <0>; 585c66ec88fSEmmanuel Vadot 586c66ec88fSEmmanuel Vadot /* May run faster once verified. */ 587c66ec88fSEmmanuel Vadot spi-max-frequency = <10000000>; 588c66ec88fSEmmanuel Vadot }; 589c66ec88fSEmmanuel Vadot}; 590c66ec88fSEmmanuel Vadot 591c66ec88fSEmmanuel Vadot&spi2 { 592c66ec88fSEmmanuel Vadot status = "okay"; 593c66ec88fSEmmanuel Vadot}; 594c66ec88fSEmmanuel Vadot 595c66ec88fSEmmanuel Vadot&spi5 { 596c66ec88fSEmmanuel Vadot status = "okay"; 597c66ec88fSEmmanuel Vadot 598c66ec88fSEmmanuel Vadot cros_ec: ec@0 { 599c66ec88fSEmmanuel Vadot compatible = "google,cros-ec-spi"; 600c66ec88fSEmmanuel Vadot reg = <0>; 601c66ec88fSEmmanuel Vadot interrupt-parent = <&gpio0>; 602c66ec88fSEmmanuel Vadot interrupts = <1 IRQ_TYPE_LEVEL_LOW>; 603c66ec88fSEmmanuel Vadot pinctrl-names = "default"; 604c66ec88fSEmmanuel Vadot pinctrl-0 = <&ec_ap_int_l>; 605c66ec88fSEmmanuel Vadot spi-max-frequency = <3000000>; 606c66ec88fSEmmanuel Vadot 607c66ec88fSEmmanuel Vadot i2c_tunnel: i2c-tunnel { 608c66ec88fSEmmanuel Vadot compatible = "google,cros-ec-i2c-tunnel"; 609c66ec88fSEmmanuel Vadot google,remote-bus = <4>; 610c66ec88fSEmmanuel Vadot #address-cells = <1>; 611c66ec88fSEmmanuel Vadot #size-cells = <0>; 612c66ec88fSEmmanuel Vadot }; 613c66ec88fSEmmanuel Vadot 614c66ec88fSEmmanuel Vadot usbc_extcon0: extcon0 { 615c66ec88fSEmmanuel Vadot compatible = "google,extcon-usbc-cros-ec"; 616c66ec88fSEmmanuel Vadot google,usb-port-id = <0>; 617c66ec88fSEmmanuel Vadot }; 618c66ec88fSEmmanuel Vadot }; 619c66ec88fSEmmanuel Vadot}; 620c66ec88fSEmmanuel Vadot 621c66ec88fSEmmanuel Vadot&tsadc { 622c66ec88fSEmmanuel Vadot status = "okay"; 623c66ec88fSEmmanuel Vadot 624c66ec88fSEmmanuel Vadot rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */ 625c66ec88fSEmmanuel Vadot rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */ 626c66ec88fSEmmanuel Vadot}; 627c66ec88fSEmmanuel Vadot 628c66ec88fSEmmanuel Vadot&tcphy0 { 629c66ec88fSEmmanuel Vadot status = "okay"; 630c66ec88fSEmmanuel Vadot extcon = <&usbc_extcon0>; 631c66ec88fSEmmanuel Vadot}; 632c66ec88fSEmmanuel Vadot 633c66ec88fSEmmanuel Vadot&u2phy0 { 634c66ec88fSEmmanuel Vadot status = "okay"; 635c66ec88fSEmmanuel Vadot}; 636c66ec88fSEmmanuel Vadot 637c66ec88fSEmmanuel Vadot&u2phy0_host { 638c66ec88fSEmmanuel Vadot status = "okay"; 639c66ec88fSEmmanuel Vadot}; 640c66ec88fSEmmanuel Vadot 641c66ec88fSEmmanuel Vadot&u2phy1_host { 642c66ec88fSEmmanuel Vadot status = "okay"; 643c66ec88fSEmmanuel Vadot}; 644c66ec88fSEmmanuel Vadot 645c66ec88fSEmmanuel Vadot&u2phy0_otg { 646c66ec88fSEmmanuel Vadot status = "okay"; 647c66ec88fSEmmanuel Vadot}; 648c66ec88fSEmmanuel Vadot 649c66ec88fSEmmanuel Vadot&u2phy1_otg { 650c66ec88fSEmmanuel Vadot status = "okay"; 651c66ec88fSEmmanuel Vadot}; 652c66ec88fSEmmanuel Vadot 653c66ec88fSEmmanuel Vadot&uart2 { 654c66ec88fSEmmanuel Vadot status = "okay"; 655c66ec88fSEmmanuel Vadot}; 656c66ec88fSEmmanuel Vadot 657c66ec88fSEmmanuel Vadot&usb_host0_ohci { 658c66ec88fSEmmanuel Vadot status = "okay"; 659c66ec88fSEmmanuel Vadot}; 660c66ec88fSEmmanuel Vadot 661c66ec88fSEmmanuel Vadot&usbdrd3_0 { 662c66ec88fSEmmanuel Vadot status = "okay"; 663c66ec88fSEmmanuel Vadot extcon = <&usbc_extcon0>; 664c66ec88fSEmmanuel Vadot}; 665c66ec88fSEmmanuel Vadot 666c66ec88fSEmmanuel Vadot&usbdrd_dwc3_0 { 667c66ec88fSEmmanuel Vadot status = "okay"; 668c66ec88fSEmmanuel Vadot dr_mode = "host"; 669c66ec88fSEmmanuel Vadot}; 670c66ec88fSEmmanuel Vadot 671c66ec88fSEmmanuel Vadot&vopb { 672c66ec88fSEmmanuel Vadot status = "okay"; 673c66ec88fSEmmanuel Vadot}; 674c66ec88fSEmmanuel Vadot 675c66ec88fSEmmanuel Vadot&vopb_mmu { 676c66ec88fSEmmanuel Vadot status = "okay"; 677c66ec88fSEmmanuel Vadot}; 678c66ec88fSEmmanuel Vadot 679c66ec88fSEmmanuel Vadot&vopl { 680c66ec88fSEmmanuel Vadot status = "okay"; 681c66ec88fSEmmanuel Vadot}; 682c66ec88fSEmmanuel Vadot 683c66ec88fSEmmanuel Vadot&vopl_mmu { 684c66ec88fSEmmanuel Vadot status = "okay"; 685c66ec88fSEmmanuel Vadot}; 686c66ec88fSEmmanuel Vadot 687c66ec88fSEmmanuel Vadot#include <arm/cros-ec-keyboard.dtsi> 688c66ec88fSEmmanuel Vadot#include <arm/cros-ec-sbs.dtsi> 689c66ec88fSEmmanuel Vadot 690c66ec88fSEmmanuel Vadot&pinctrl { 691c66ec88fSEmmanuel Vadot /* 692c66ec88fSEmmanuel Vadot * pinctrl settings for pins that have no real owners. 693c66ec88fSEmmanuel Vadot * 694c66ec88fSEmmanuel Vadot * At the moment settings are identical for S0 and S3, but if we later 695c66ec88fSEmmanuel Vadot * need to configure things differently for S3 we'll adjust here. 696c66ec88fSEmmanuel Vadot */ 697c66ec88fSEmmanuel Vadot pinctrl-names = "default"; 698c66ec88fSEmmanuel Vadot pinctrl-0 = < 699c66ec88fSEmmanuel Vadot &ap_pwroff /* AP will auto-assert this when in S3 */ 700c66ec88fSEmmanuel Vadot &clk_32k /* This pin is always 32k on gru boards */ 701c66ec88fSEmmanuel Vadot >; 702c66ec88fSEmmanuel Vadot 703c66ec88fSEmmanuel Vadot pcfg_output_low: pcfg-output-low { 704c66ec88fSEmmanuel Vadot output-low; 705c66ec88fSEmmanuel Vadot }; 706c66ec88fSEmmanuel Vadot 707c66ec88fSEmmanuel Vadot pcfg_output_high: pcfg-output-high { 708c66ec88fSEmmanuel Vadot output-high; 709c66ec88fSEmmanuel Vadot }; 710c66ec88fSEmmanuel Vadot 711c66ec88fSEmmanuel Vadot pcfg_pull_none_8ma: pcfg-pull-none-8ma { 712c66ec88fSEmmanuel Vadot bias-disable; 713c66ec88fSEmmanuel Vadot drive-strength = <8>; 714c66ec88fSEmmanuel Vadot }; 715c66ec88fSEmmanuel Vadot 716c66ec88fSEmmanuel Vadot backlight-enable { 717c66ec88fSEmmanuel Vadot bl_en: bl-en { 718c66ec88fSEmmanuel Vadot rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>; 719c66ec88fSEmmanuel Vadot }; 720c66ec88fSEmmanuel Vadot }; 721c66ec88fSEmmanuel Vadot 722c66ec88fSEmmanuel Vadot cros-ec { 723c66ec88fSEmmanuel Vadot ec_ap_int_l: ec-ap-int-l { 724c66ec88fSEmmanuel Vadot rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; 725c66ec88fSEmmanuel Vadot }; 726c66ec88fSEmmanuel Vadot }; 727c66ec88fSEmmanuel Vadot 728c66ec88fSEmmanuel Vadot discrete-regulators { 729c66ec88fSEmmanuel Vadot sd_io_pwr_en: sd-io-pwr-en { 730c66ec88fSEmmanuel Vadot rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO 731c66ec88fSEmmanuel Vadot &pcfg_pull_none>; 732c66ec88fSEmmanuel Vadot }; 733c66ec88fSEmmanuel Vadot 734c66ec88fSEmmanuel Vadot sd_pwr_1800_sel: sd-pwr-1800-sel { 735c66ec88fSEmmanuel Vadot rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO 736c66ec88fSEmmanuel Vadot &pcfg_pull_none>; 737c66ec88fSEmmanuel Vadot }; 738c66ec88fSEmmanuel Vadot 739c66ec88fSEmmanuel Vadot sd_slot_pwr_en: sd-slot-pwr-en { 740c66ec88fSEmmanuel Vadot rockchip,pins = <4 RK_PD5 RK_FUNC_GPIO 741c66ec88fSEmmanuel Vadot &pcfg_pull_none>; 742c66ec88fSEmmanuel Vadot }; 743c66ec88fSEmmanuel Vadot }; 744c66ec88fSEmmanuel Vadot 745c66ec88fSEmmanuel Vadot codec { 746c66ec88fSEmmanuel Vadot /* Has external pullup */ 747c66ec88fSEmmanuel Vadot headset_int_l: headset-int-l { 748c66ec88fSEmmanuel Vadot rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>; 749c66ec88fSEmmanuel Vadot }; 750c66ec88fSEmmanuel Vadot 751c66ec88fSEmmanuel Vadot mic_int: mic-int { 752c66ec88fSEmmanuel Vadot rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>; 753c66ec88fSEmmanuel Vadot }; 754c66ec88fSEmmanuel Vadot }; 755c66ec88fSEmmanuel Vadot 756c66ec88fSEmmanuel Vadot max98357a { 757c66ec88fSEmmanuel Vadot sdmode_en: sdmode-en { 758c66ec88fSEmmanuel Vadot rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_down>; 759c66ec88fSEmmanuel Vadot }; 760c66ec88fSEmmanuel Vadot }; 761c66ec88fSEmmanuel Vadot 762c66ec88fSEmmanuel Vadot pcie { 763c66ec88fSEmmanuel Vadot pcie_clkreqn_cpm: pci-clkreqn-cpm { 764c66ec88fSEmmanuel Vadot /* 765c66ec88fSEmmanuel Vadot * Since our pcie doesn't support ClockPM(CPM), we want 766c66ec88fSEmmanuel Vadot * to hack this as gpio, so the EP could be able to 767c66ec88fSEmmanuel Vadot * de-assert it along and make ClockPM(CPM) work. 768c66ec88fSEmmanuel Vadot */ 769c66ec88fSEmmanuel Vadot rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; 770c66ec88fSEmmanuel Vadot }; 771c66ec88fSEmmanuel Vadot }; 772c66ec88fSEmmanuel Vadot 773c66ec88fSEmmanuel Vadot sdmmc { 774c66ec88fSEmmanuel Vadot /* 775c66ec88fSEmmanuel Vadot * We run sdmmc at max speed; bump up drive strength. 776c66ec88fSEmmanuel Vadot * We also have external pulls, so disable the internal ones. 777c66ec88fSEmmanuel Vadot */ 778c66ec88fSEmmanuel Vadot sdmmc_bus4: sdmmc-bus4 { 779c66ec88fSEmmanuel Vadot rockchip,pins = 780c66ec88fSEmmanuel Vadot <4 RK_PB0 1 &pcfg_pull_none_8ma>, 781c66ec88fSEmmanuel Vadot <4 RK_PB1 1 &pcfg_pull_none_8ma>, 782c66ec88fSEmmanuel Vadot <4 RK_PB2 1 &pcfg_pull_none_8ma>, 783c66ec88fSEmmanuel Vadot <4 RK_PB3 1 &pcfg_pull_none_8ma>; 784c66ec88fSEmmanuel Vadot }; 785c66ec88fSEmmanuel Vadot 786c66ec88fSEmmanuel Vadot sdmmc_clk: sdmmc-clk { 787c66ec88fSEmmanuel Vadot rockchip,pins = 788c66ec88fSEmmanuel Vadot <4 RK_PB4 1 &pcfg_pull_none_8ma>; 789c66ec88fSEmmanuel Vadot }; 790c66ec88fSEmmanuel Vadot 791c66ec88fSEmmanuel Vadot sdmmc_cmd: sdmmc-cmd { 792c66ec88fSEmmanuel Vadot rockchip,pins = 793c66ec88fSEmmanuel Vadot <4 RK_PB5 1 &pcfg_pull_none_8ma>; 794c66ec88fSEmmanuel Vadot }; 795c66ec88fSEmmanuel Vadot 796c66ec88fSEmmanuel Vadot /* 797c66ec88fSEmmanuel Vadot * In our case the official card detect is hooked to ground 798c66ec88fSEmmanuel Vadot * to avoid getting access to JTAG just by sticking something 799c66ec88fSEmmanuel Vadot * in the SD card slot (see the force_jtag bit in the TRM). 800c66ec88fSEmmanuel Vadot * 801c66ec88fSEmmanuel Vadot * We still configure it as card detect because it doesn't 802c66ec88fSEmmanuel Vadot * hurt and dw_mmc will ignore it. We make sure to disable 803c66ec88fSEmmanuel Vadot * the pull though so we don't burn needless power. 804c66ec88fSEmmanuel Vadot */ 805c66ec88fSEmmanuel Vadot sdmmc_cd: sdmmc-cd { 806c66ec88fSEmmanuel Vadot rockchip,pins = 807c66ec88fSEmmanuel Vadot <0 RK_PA7 1 &pcfg_pull_none>; 808c66ec88fSEmmanuel Vadot }; 809c66ec88fSEmmanuel Vadot 810c66ec88fSEmmanuel Vadot /* This is where we actually hook up CD; has external pull */ 811c66ec88fSEmmanuel Vadot sdmmc_cd_pin: sdmmc-cd-pin { 812c66ec88fSEmmanuel Vadot rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; 813c66ec88fSEmmanuel Vadot }; 814c66ec88fSEmmanuel Vadot }; 815c66ec88fSEmmanuel Vadot 816c66ec88fSEmmanuel Vadot spi1 { 817c66ec88fSEmmanuel Vadot spi1_sleep: spi1-sleep { 818c66ec88fSEmmanuel Vadot /* 819c66ec88fSEmmanuel Vadot * Pull down SPI1 CLK/CS/RX/TX during suspend, to 820c66ec88fSEmmanuel Vadot * prevent leakage. 821c66ec88fSEmmanuel Vadot */ 822c66ec88fSEmmanuel Vadot rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>, 823c66ec88fSEmmanuel Vadot <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_down>, 824c66ec88fSEmmanuel Vadot <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_down>, 825c66ec88fSEmmanuel Vadot <1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; 826c66ec88fSEmmanuel Vadot }; 827c66ec88fSEmmanuel Vadot }; 828c66ec88fSEmmanuel Vadot 829c66ec88fSEmmanuel Vadot touchscreen { 830c66ec88fSEmmanuel Vadot touch_int_l: touch-int-l { 831c66ec88fSEmmanuel Vadot rockchip,pins = <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>; 832c66ec88fSEmmanuel Vadot }; 833c66ec88fSEmmanuel Vadot 834c66ec88fSEmmanuel Vadot touch_reset_l: touch-reset-l { 835c66ec88fSEmmanuel Vadot rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; 836c66ec88fSEmmanuel Vadot }; 837c66ec88fSEmmanuel Vadot }; 838c66ec88fSEmmanuel Vadot 839c66ec88fSEmmanuel Vadot trackpad { 840c66ec88fSEmmanuel Vadot ap_i2c_tp_pu_en: ap-i2c-tp-pu-en { 841c66ec88fSEmmanuel Vadot rockchip,pins = <3 RK_PB4 RK_FUNC_GPIO &pcfg_output_high>; 842c66ec88fSEmmanuel Vadot }; 843c66ec88fSEmmanuel Vadot 844c66ec88fSEmmanuel Vadot trackpad_int_l: trackpad-int-l { 845c66ec88fSEmmanuel Vadot rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>; 846c66ec88fSEmmanuel Vadot }; 847c66ec88fSEmmanuel Vadot }; 848c66ec88fSEmmanuel Vadot 849c66ec88fSEmmanuel Vadot wifi: wifi { 850c66ec88fSEmmanuel Vadot wlan_module_reset_l: wlan-module-reset-l { 851c66ec88fSEmmanuel Vadot rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; 852c66ec88fSEmmanuel Vadot }; 853c66ec88fSEmmanuel Vadot 854c66ec88fSEmmanuel Vadot bt_host_wake_l: bt-host-wake-l { 855c66ec88fSEmmanuel Vadot /* Kevin has an external pull up, but Gru does not */ 856c66ec88fSEmmanuel Vadot rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; 857c66ec88fSEmmanuel Vadot }; 858c66ec88fSEmmanuel Vadot }; 859c66ec88fSEmmanuel Vadot 860c66ec88fSEmmanuel Vadot write-protect { 861c66ec88fSEmmanuel Vadot ap_fw_wp: ap-fw-wp { 862c66ec88fSEmmanuel Vadot rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>; 863c66ec88fSEmmanuel Vadot }; 864c66ec88fSEmmanuel Vadot }; 865c66ec88fSEmmanuel Vadot}; 866