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