1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Google Gru-scarlet board device tree source 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright 2018 Google, Inc 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun#include "rk3399-gru.dtsi" 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun/{ 11*4882a593Smuzhiyun /* Power tree */ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* ppvar_sys children, sorted by name */ 14*4882a593Smuzhiyun pp1250_s3: pp1250-s3 { 15*4882a593Smuzhiyun compatible = "regulator-fixed"; 16*4882a593Smuzhiyun regulator-name = "pp1250_s3"; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun /* EC turns on w/ pp1250_s3_en; always on for AP */ 19*4882a593Smuzhiyun regulator-always-on; 20*4882a593Smuzhiyun regulator-boot-on; 21*4882a593Smuzhiyun regulator-min-microvolt = <1250000>; 22*4882a593Smuzhiyun regulator-max-microvolt = <1250000>; 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun vin-supply = <&ppvar_sys>; 25*4882a593Smuzhiyun }; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun pp1250_cam: pp1250-dvdd { 28*4882a593Smuzhiyun compatible = "regulator-fixed"; 29*4882a593Smuzhiyun regulator-name = "pp1250_dvdd"; 30*4882a593Smuzhiyun pinctrl-names = "default"; 31*4882a593Smuzhiyun pinctrl-0 = <&pp1250_cam_en>; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun enable-active-high; 34*4882a593Smuzhiyun gpio = <&gpio2 4 GPIO_ACTIVE_HIGH>; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun /* 740us delay from gpio output high to pp1250 stable, 37*4882a593Smuzhiyun * rounding up to 1ms for safety. 38*4882a593Smuzhiyun */ 39*4882a593Smuzhiyun startup-delay-us = <1000>; 40*4882a593Smuzhiyun vin-supply = <&pp1250_s3>; 41*4882a593Smuzhiyun }; 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun pp900_s0: pp900-s0 { 44*4882a593Smuzhiyun compatible = "regulator-fixed"; 45*4882a593Smuzhiyun regulator-name = "pp900_s0"; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun /* EC turns on w/ pp900_s0_en; always on for AP */ 48*4882a593Smuzhiyun regulator-always-on; 49*4882a593Smuzhiyun regulator-boot-on; 50*4882a593Smuzhiyun regulator-min-microvolt = <900000>; 51*4882a593Smuzhiyun regulator-max-microvolt = <900000>; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun vin-supply = <&ppvar_sys>; 54*4882a593Smuzhiyun }; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun ppvarn_lcd: ppvarn-lcd { 57*4882a593Smuzhiyun compatible = "regulator-fixed"; 58*4882a593Smuzhiyun regulator-name = "ppvarn_lcd"; 59*4882a593Smuzhiyun pinctrl-names = "default"; 60*4882a593Smuzhiyun pinctrl-0 = <&ppvarn_lcd_en>; 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun enable-active-high; 63*4882a593Smuzhiyun gpio = <&gpio4 28 GPIO_ACTIVE_HIGH>; 64*4882a593Smuzhiyun vin-supply = <&ppvar_sys>; 65*4882a593Smuzhiyun }; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun ppvarp_lcd: ppvarp-lcd { 68*4882a593Smuzhiyun compatible = "regulator-fixed"; 69*4882a593Smuzhiyun regulator-name = "ppvarp_lcd"; 70*4882a593Smuzhiyun pinctrl-names = "default"; 71*4882a593Smuzhiyun pinctrl-0 = <&ppvarp_lcd_en>; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun enable-active-high; 74*4882a593Smuzhiyun gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>; 75*4882a593Smuzhiyun vin-supply = <&ppvar_sys>; 76*4882a593Smuzhiyun }; 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun /* pp1800 children, sorted by name */ 79*4882a593Smuzhiyun pp900_s3: pp900-s3 { 80*4882a593Smuzhiyun compatible = "regulator-fixed"; 81*4882a593Smuzhiyun regulator-name = "pp900_s3"; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun /* EC turns on w/ pp900_s3_en; always on for AP */ 84*4882a593Smuzhiyun regulator-always-on; 85*4882a593Smuzhiyun regulator-boot-on; 86*4882a593Smuzhiyun regulator-min-microvolt = <900000>; 87*4882a593Smuzhiyun regulator-max-microvolt = <900000>; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun vin-supply = <&pp1800>; 90*4882a593Smuzhiyun }; 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun /* EC turns on pp1800_s3_en */ 93*4882a593Smuzhiyun pp1800_s3: pp1800 { 94*4882a593Smuzhiyun }; 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun /* pp3300 children, sorted by name */ 97*4882a593Smuzhiyun pp2800_cam: pp2800-avdd { 98*4882a593Smuzhiyun compatible = "regulator-fixed"; 99*4882a593Smuzhiyun regulator-name = "pp2800_avdd"; 100*4882a593Smuzhiyun pinctrl-names = "default"; 101*4882a593Smuzhiyun pinctrl-0 = <&pp2800_cam_en>; 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun enable-active-high; 104*4882a593Smuzhiyun gpio = <&gpio2 24 GPIO_ACTIVE_HIGH>; 105*4882a593Smuzhiyun startup-delay-us = <100>; 106*4882a593Smuzhiyun vin-supply = <&pp3300>; 107*4882a593Smuzhiyun }; 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun /* EC turns on pp3300_s0_en */ 110*4882a593Smuzhiyun pp3300_s0: pp3300 { 111*4882a593Smuzhiyun }; 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun /* EC turns on pp3300_s3_en */ 114*4882a593Smuzhiyun pp3300_s3: pp3300 { 115*4882a593Smuzhiyun }; 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun /* 118*4882a593Smuzhiyun * See b/66922012 119*4882a593Smuzhiyun * 120*4882a593Smuzhiyun * This is a hack to make sure the Bluetooth part of the QCA6174A 121*4882a593Smuzhiyun * is reset at boot by toggling BT_EN. At boot BT_EN is first set 122*4882a593Smuzhiyun * to low when the bt_3v3 regulator is registered (in disabled 123*4882a593Smuzhiyun * state). The fake regulator is configured as a supply of the 124*4882a593Smuzhiyun * wlan_3v3 regulator below. When wlan_3v3 is enabled early in 125*4882a593Smuzhiyun * the boot process it also enables its supply regulator bt_3v3, 126*4882a593Smuzhiyun * which changes BT_EN to high. 127*4882a593Smuzhiyun */ 128*4882a593Smuzhiyun bt_3v3: bt-3v3 { 129*4882a593Smuzhiyun compatible = "regulator-fixed"; 130*4882a593Smuzhiyun regulator-name = "bt_3v3"; 131*4882a593Smuzhiyun pinctrl-names = "default"; 132*4882a593Smuzhiyun pinctrl-0 = <&bt_en_1v8_l>; 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun enable-active-high; 135*4882a593Smuzhiyun gpio = <&gpio0 8 GPIO_ACTIVE_HIGH>; 136*4882a593Smuzhiyun vin-supply = <&pp3300_s3>; 137*4882a593Smuzhiyun }; 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun wlan_3v3: wlan-3v3 { 140*4882a593Smuzhiyun compatible = "regulator-fixed"; 141*4882a593Smuzhiyun regulator-name = "wlan_3v3"; 142*4882a593Smuzhiyun pinctrl-names = "default"; 143*4882a593Smuzhiyun pinctrl-0 = <&wlan_pd_1v8_l>; 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun /* 146*4882a593Smuzhiyun * The WL_EN pin is driven low when the regulator is 147*4882a593Smuzhiyun * registered, and transitions to high when the PCIe bus 148*4882a593Smuzhiyun * is powered up. 149*4882a593Smuzhiyun */ 150*4882a593Smuzhiyun enable-active-high; 151*4882a593Smuzhiyun gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>; 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun /* 154*4882a593Smuzhiyun * Require minimum 10ms from power-on (e.g., PD#) to init PCIe. 155*4882a593Smuzhiyun * TODO (b/64444991): how long to assert PD#? 156*4882a593Smuzhiyun */ 157*4882a593Smuzhiyun regulator-enable-ramp-delay = <10000>; 158*4882a593Smuzhiyun /* See bt_3v3 hack above */ 159*4882a593Smuzhiyun vin-supply = <&bt_3v3>; 160*4882a593Smuzhiyun }; 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun backlight: backlight { 163*4882a593Smuzhiyun compatible = "pwm-backlight"; 164*4882a593Smuzhiyun enable-gpios = <&gpio4 21 GPIO_ACTIVE_HIGH>; 165*4882a593Smuzhiyun pinctrl-names = "default"; 166*4882a593Smuzhiyun pinctrl-0 = <&bl_en>; 167*4882a593Smuzhiyun pwms = <&pwm1 0 1000000 0>; 168*4882a593Smuzhiyun pwm-delay-us = <10000>; 169*4882a593Smuzhiyun }; 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun dmic: dmic { 172*4882a593Smuzhiyun compatible = "dmic-codec"; 173*4882a593Smuzhiyun dmicen-gpios = <&gpio4 3 GPIO_ACTIVE_HIGH>; 174*4882a593Smuzhiyun pinctrl-names = "default"; 175*4882a593Smuzhiyun pinctrl-0 = <&dmic_en>; 176*4882a593Smuzhiyun wakeup-delay-ms = <250>; 177*4882a593Smuzhiyun }; 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun gpio_keys: gpio-keys { 180*4882a593Smuzhiyun compatible = "gpio-keys"; 181*4882a593Smuzhiyun pinctrl-names = "default"; 182*4882a593Smuzhiyun pinctrl-0 = <&pen_eject_odl>; 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun pen-insert { 185*4882a593Smuzhiyun label = "Pen Insert"; 186*4882a593Smuzhiyun /* Insert = low, eject = high */ 187*4882a593Smuzhiyun gpios = <&gpio1 1 GPIO_ACTIVE_LOW>; 188*4882a593Smuzhiyun linux,code = <SW_PEN_INSERTED>; 189*4882a593Smuzhiyun linux,input-type = <EV_SW>; 190*4882a593Smuzhiyun wakeup-source; 191*4882a593Smuzhiyun }; 192*4882a593Smuzhiyun }; 193*4882a593Smuzhiyun}; 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun/* pp900_s0 aliases */ 196*4882a593Smuzhiyunpp900_ddrpll_ap: &pp900_s0 { 197*4882a593Smuzhiyun}; 198*4882a593Smuzhiyunpp900_pcie: &pp900_s0 { 199*4882a593Smuzhiyun}; 200*4882a593Smuzhiyunpp900_usb: &pp900_s0 { 201*4882a593Smuzhiyun}; 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun/* pp900_s3 aliases */ 204*4882a593Smuzhiyunpp900_emmcpll: &pp900_s3 { 205*4882a593Smuzhiyun}; 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun/* EC turns on; alias for pp1800_s0 */ 208*4882a593Smuzhiyunpp1800_pcie: &pp1800_s0 { 209*4882a593Smuzhiyun}; 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun/* On scarlet PPVAR(big_cpu, lit_cpu, gpu) need to adjust voltage ranges */ 212*4882a593Smuzhiyun&ppvar_bigcpu { 213*4882a593Smuzhiyun ctrl-voltage-range = <800074 1299226>; 214*4882a593Smuzhiyun regulator-min-microvolt = <800074>; 215*4882a593Smuzhiyun regulator-max-microvolt = <1299226>; 216*4882a593Smuzhiyun}; 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun&ppvar_bigcpu_pwm { 219*4882a593Smuzhiyun /* On scarlet ppvar big cpu use pwm3 */ 220*4882a593Smuzhiyun pwms = <&pwm3 0 3337 0>; 221*4882a593Smuzhiyun regulator-min-microvolt = <800074>; 222*4882a593Smuzhiyun regulator-max-microvolt = <1299226>; 223*4882a593Smuzhiyun}; 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun&ppvar_litcpu { 226*4882a593Smuzhiyun ctrl-voltage-range = <802122 1199620>; 227*4882a593Smuzhiyun regulator-min-microvolt = <802122>; 228*4882a593Smuzhiyun regulator-max-microvolt = <1199620>; 229*4882a593Smuzhiyun}; 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun&ppvar_litcpu_pwm { 232*4882a593Smuzhiyun regulator-min-microvolt = <802122>; 233*4882a593Smuzhiyun regulator-max-microvolt = <1199620>; 234*4882a593Smuzhiyun}; 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun&ppvar_gpu { 237*4882a593Smuzhiyun ctrl-voltage-range = <799600 1099600>; 238*4882a593Smuzhiyun regulator-min-microvolt = <799600>; 239*4882a593Smuzhiyun regulator-max-microvolt = <1099600>; 240*4882a593Smuzhiyun}; 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun&ppvar_gpu_pwm { 243*4882a593Smuzhiyun regulator-min-microvolt = <799600>; 244*4882a593Smuzhiyun regulator-max-microvolt = <1099600>; 245*4882a593Smuzhiyun}; 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun&ppvar_sd_card_io { 248*4882a593Smuzhiyun states = <1800000 0x0>, <3300000 0x1>; 249*4882a593Smuzhiyun regulator-max-microvolt = <3300000>; 250*4882a593Smuzhiyun}; 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun&pp3000_sd_slot { 253*4882a593Smuzhiyun vin-supply = <&pp3300>; 254*4882a593Smuzhiyun}; 255*4882a593Smuzhiyun 256*4882a593Smuzhiyunap_i2c_dig: &i2c2 { 257*4882a593Smuzhiyun status = "okay"; 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun clock-frequency = <400000>; 260*4882a593Smuzhiyun 261*4882a593Smuzhiyun /* These are relatively safe rise/fall times. */ 262*4882a593Smuzhiyun i2c-scl-falling-time-ns = <50>; 263*4882a593Smuzhiyun i2c-scl-rising-time-ns = <300>; 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun digitizer: digitizer@9 { 266*4882a593Smuzhiyun compatible = "hid-over-i2c"; 267*4882a593Smuzhiyun reg = <0x9>; 268*4882a593Smuzhiyun interrupt-parent = <&gpio1>; 269*4882a593Smuzhiyun interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 270*4882a593Smuzhiyun hid-descr-addr = <0x1>; 271*4882a593Smuzhiyun pinctrl-names = "default"; 272*4882a593Smuzhiyun pinctrl-0 = <&pen_int_odl &pen_reset_l>; 273*4882a593Smuzhiyun }; 274*4882a593Smuzhiyun}; 275*4882a593Smuzhiyun 276*4882a593Smuzhiyun&ap_i2c_ts { 277*4882a593Smuzhiyun touchscreen: touchscreen@10 { 278*4882a593Smuzhiyun compatible = "elan,ekth3500"; 279*4882a593Smuzhiyun reg = <0x10>; 280*4882a593Smuzhiyun interrupt-parent = <&gpio1>; 281*4882a593Smuzhiyun interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 282*4882a593Smuzhiyun pinctrl-names = "default"; 283*4882a593Smuzhiyun pinctrl-0 = <&touch_int_l &touch_reset_l>; 284*4882a593Smuzhiyun reset-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; 285*4882a593Smuzhiyun }; 286*4882a593Smuzhiyun}; 287*4882a593Smuzhiyun 288*4882a593Smuzhiyuncamera: &i2c7 { 289*4882a593Smuzhiyun status = "okay"; 290*4882a593Smuzhiyun 291*4882a593Smuzhiyun clock-frequency = <400000>; 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun /* These are relatively safe rise/fall times; TODO: measure */ 294*4882a593Smuzhiyun i2c-scl-falling-time-ns = <50>; 295*4882a593Smuzhiyun i2c-scl-rising-time-ns = <300>; 296*4882a593Smuzhiyun 297*4882a593Smuzhiyun /* 24M mclk is shared between world and user cameras */ 298*4882a593Smuzhiyun pinctrl-0 = <&i2c7_xfer &test_clkout1>; 299*4882a593Smuzhiyun}; 300*4882a593Smuzhiyun 301*4882a593Smuzhiyun&cdn_dp { 302*4882a593Smuzhiyun extcon = <&usbc_extcon0>; 303*4882a593Smuzhiyun phys = <&tcphy0_dp>; 304*4882a593Smuzhiyun}; 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun&cpu_alert0 { 307*4882a593Smuzhiyun temperature = <66000>; 308*4882a593Smuzhiyun}; 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun&cpu_alert1 { 311*4882a593Smuzhiyun temperature = <71000>; 312*4882a593Smuzhiyun}; 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun&cros_ec { 315*4882a593Smuzhiyun interrupt-parent = <&gpio1>; 316*4882a593Smuzhiyun interrupts = <18 IRQ_TYPE_LEVEL_LOW>; 317*4882a593Smuzhiyun}; 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun&cru { 320*4882a593Smuzhiyun assigned-clocks = 321*4882a593Smuzhiyun <&cru PLL_GPLL>, <&cru PLL_CPLL>, 322*4882a593Smuzhiyun <&cru PLL_NPLL>, 323*4882a593Smuzhiyun <&cru ACLK_PERIHP>, <&cru HCLK_PERIHP>, 324*4882a593Smuzhiyun <&cru PCLK_PERIHP>, 325*4882a593Smuzhiyun <&cru ACLK_PERILP0>, <&cru HCLK_PERILP0>, 326*4882a593Smuzhiyun <&cru PCLK_PERILP0>, <&cru ACLK_CCI>, 327*4882a593Smuzhiyun <&cru HCLK_PERILP1>, <&cru PCLK_PERILP1>, 328*4882a593Smuzhiyun <&cru ACLK_VIO>, 329*4882a593Smuzhiyun <&cru ACLK_GIC_PRE>, 330*4882a593Smuzhiyun <&cru PCLK_DDR>, 331*4882a593Smuzhiyun <&cru ACLK_HDCP>; 332*4882a593Smuzhiyun assigned-clock-rates = 333*4882a593Smuzhiyun <600000000>, <1600000000>, 334*4882a593Smuzhiyun <1000000000>, 335*4882a593Smuzhiyun <150000000>, <75000000>, 336*4882a593Smuzhiyun <37500000>, 337*4882a593Smuzhiyun <100000000>, <100000000>, 338*4882a593Smuzhiyun <50000000>, <800000000>, 339*4882a593Smuzhiyun <100000000>, <50000000>, 340*4882a593Smuzhiyun <400000000>, 341*4882a593Smuzhiyun <200000000>, 342*4882a593Smuzhiyun <200000000>, 343*4882a593Smuzhiyun <400000000>; 344*4882a593Smuzhiyun}; 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun&i2c_tunnel { 347*4882a593Smuzhiyun google,remote-bus = <0>; 348*4882a593Smuzhiyun}; 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun&io_domains { 351*4882a593Smuzhiyun bt656-supply = <&pp1800_s0>; /* APIO2_VDD; 2a 2b */ 352*4882a593Smuzhiyun audio-supply = <&pp1800_s0>; /* APIO5_VDD; 3d 4a */ 353*4882a593Smuzhiyun gpio1830-supply = <&pp1800_s0>; /* APIO4_VDD; 4c 4d */ 354*4882a593Smuzhiyun}; 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun&max98357a { 357*4882a593Smuzhiyun sdmode-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>; 358*4882a593Smuzhiyun}; 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun&mipi_dsi { 361*4882a593Smuzhiyun status = "okay"; 362*4882a593Smuzhiyun clock-master; 363*4882a593Smuzhiyun 364*4882a593Smuzhiyun ports { 365*4882a593Smuzhiyun mipi_out: port@1 { 366*4882a593Smuzhiyun reg = <1>; 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun mipi_out_panel: endpoint { 369*4882a593Smuzhiyun remote-endpoint = <&mipi_in_panel>; 370*4882a593Smuzhiyun }; 371*4882a593Smuzhiyun }; 372*4882a593Smuzhiyun }; 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun mipi_panel: panel@0 { 375*4882a593Smuzhiyun /* 2 different panels are used, compatibles are in dts files */ 376*4882a593Smuzhiyun reg = <0>; 377*4882a593Smuzhiyun backlight = <&backlight>; 378*4882a593Smuzhiyun enable-gpios = <&gpio4 25 GPIO_ACTIVE_HIGH>; 379*4882a593Smuzhiyun pinctrl-names = "default"; 380*4882a593Smuzhiyun pinctrl-0 = <&display_rst_l>; 381*4882a593Smuzhiyun 382*4882a593Smuzhiyun ports { 383*4882a593Smuzhiyun #address-cells = <1>; 384*4882a593Smuzhiyun #size-cells = <0>; 385*4882a593Smuzhiyun 386*4882a593Smuzhiyun port@0 { 387*4882a593Smuzhiyun reg = <0>; 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun mipi_in_panel: endpoint { 390*4882a593Smuzhiyun remote-endpoint = <&mipi_out_panel>; 391*4882a593Smuzhiyun }; 392*4882a593Smuzhiyun }; 393*4882a593Smuzhiyun 394*4882a593Smuzhiyun port@1 { 395*4882a593Smuzhiyun reg = <1>; 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun mipi1_in_panel: endpoint@1 { 398*4882a593Smuzhiyun remote-endpoint = <&mipi1_out_panel>; 399*4882a593Smuzhiyun }; 400*4882a593Smuzhiyun }; 401*4882a593Smuzhiyun }; 402*4882a593Smuzhiyun }; 403*4882a593Smuzhiyun}; 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun&mipi_dsi1 { 406*4882a593Smuzhiyun status = "okay"; 407*4882a593Smuzhiyun 408*4882a593Smuzhiyun ports { 409*4882a593Smuzhiyun mipi1_out: port@1 { 410*4882a593Smuzhiyun reg = <1>; 411*4882a593Smuzhiyun 412*4882a593Smuzhiyun mipi1_out_panel: endpoint { 413*4882a593Smuzhiyun remote-endpoint = <&mipi1_in_panel>; 414*4882a593Smuzhiyun }; 415*4882a593Smuzhiyun }; 416*4882a593Smuzhiyun }; 417*4882a593Smuzhiyun}; 418*4882a593Smuzhiyun 419*4882a593Smuzhiyun&pcie0 { 420*4882a593Smuzhiyun ep-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>; 421*4882a593Smuzhiyun 422*4882a593Smuzhiyun /* PERST# asserted in S3 */ 423*4882a593Smuzhiyun pcie-reset-suspend = <1>; 424*4882a593Smuzhiyun 425*4882a593Smuzhiyun vpcie3v3-supply = <&wlan_3v3>; 426*4882a593Smuzhiyun vpcie1v8-supply = <&pp1800_pcie>; 427*4882a593Smuzhiyun}; 428*4882a593Smuzhiyun 429*4882a593Smuzhiyun&sdmmc { 430*4882a593Smuzhiyun cd-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>; 431*4882a593Smuzhiyun}; 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun&sound { 434*4882a593Smuzhiyun rockchip,codec = <&max98357a &dmic &codec &cdn_dp>; 435*4882a593Smuzhiyun}; 436*4882a593Smuzhiyun 437*4882a593Smuzhiyun&spi2 { 438*4882a593Smuzhiyun status = "okay"; 439*4882a593Smuzhiyun 440*4882a593Smuzhiyun cr50@0 { 441*4882a593Smuzhiyun compatible = "google,cr50"; 442*4882a593Smuzhiyun reg = <0>; 443*4882a593Smuzhiyun interrupt-parent = <&gpio1>; 444*4882a593Smuzhiyun interrupts = <17 IRQ_TYPE_EDGE_RISING>; 445*4882a593Smuzhiyun pinctrl-names = "default"; 446*4882a593Smuzhiyun pinctrl-0 = <&h1_int_od_l>; 447*4882a593Smuzhiyun spi-max-frequency = <800000>; 448*4882a593Smuzhiyun }; 449*4882a593Smuzhiyun}; 450*4882a593Smuzhiyun 451*4882a593Smuzhiyun&usb_host0_ohci { 452*4882a593Smuzhiyun #address-cells = <1>; 453*4882a593Smuzhiyun #size-cells = <0>; 454*4882a593Smuzhiyun 455*4882a593Smuzhiyun qca_bt: bluetooth@1 { 456*4882a593Smuzhiyun compatible = "usbcf3,e300", "usb4ca,301a"; 457*4882a593Smuzhiyun reg = <1>; 458*4882a593Smuzhiyun pinctrl-names = "default"; 459*4882a593Smuzhiyun pinctrl-0 = <&bt_host_wake_l>; 460*4882a593Smuzhiyun interrupt-parent = <&gpio1>; 461*4882a593Smuzhiyun interrupts = <2 IRQ_TYPE_LEVEL_HIGH>; 462*4882a593Smuzhiyun interrupt-names = "wakeup"; 463*4882a593Smuzhiyun }; 464*4882a593Smuzhiyun}; 465*4882a593Smuzhiyun 466*4882a593Smuzhiyun/* PINCTRL OVERRIDES */ 467*4882a593Smuzhiyun&ec_ap_int_l { 468*4882a593Smuzhiyun rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>; 469*4882a593Smuzhiyun}; 470*4882a593Smuzhiyun 471*4882a593Smuzhiyun&ap_fw_wp { 472*4882a593Smuzhiyun rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; 473*4882a593Smuzhiyun}; 474*4882a593Smuzhiyun 475*4882a593Smuzhiyun&bl_en { 476*4882a593Smuzhiyun rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>; 477*4882a593Smuzhiyun}; 478*4882a593Smuzhiyun 479*4882a593Smuzhiyun&bt_host_wake_l { 480*4882a593Smuzhiyun rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; 481*4882a593Smuzhiyun}; 482*4882a593Smuzhiyun 483*4882a593Smuzhiyun&ec_ap_int_l { 484*4882a593Smuzhiyun rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>; 485*4882a593Smuzhiyun}; 486*4882a593Smuzhiyun 487*4882a593Smuzhiyun&headset_int_l { 488*4882a593Smuzhiyun rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; 489*4882a593Smuzhiyun}; 490*4882a593Smuzhiyun 491*4882a593Smuzhiyun&i2s0_8ch_bus { 492*4882a593Smuzhiyun rockchip,pins = 493*4882a593Smuzhiyun <3 RK_PD0 1 &pcfg_pull_none_6ma>, 494*4882a593Smuzhiyun <3 RK_PD1 1 &pcfg_pull_none_6ma>, 495*4882a593Smuzhiyun <3 RK_PD2 1 &pcfg_pull_none_6ma>, 496*4882a593Smuzhiyun <3 RK_PD3 1 &pcfg_pull_none_6ma>, 497*4882a593Smuzhiyun <3 RK_PD7 1 &pcfg_pull_none_6ma>, 498*4882a593Smuzhiyun <4 RK_PA0 1 &pcfg_pull_none_6ma>; 499*4882a593Smuzhiyun}; 500*4882a593Smuzhiyun 501*4882a593Smuzhiyun/* there is no external pull up, so need to set this pin pull up */ 502*4882a593Smuzhiyun&sdmmc_cd_pin { 503*4882a593Smuzhiyun rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>; 504*4882a593Smuzhiyun}; 505*4882a593Smuzhiyun 506*4882a593Smuzhiyun&sd_pwr_1800_sel { 507*4882a593Smuzhiyun rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>; 508*4882a593Smuzhiyun}; 509*4882a593Smuzhiyun 510*4882a593Smuzhiyun&sdmode_en { 511*4882a593Smuzhiyun rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_down>; 512*4882a593Smuzhiyun}; 513*4882a593Smuzhiyun 514*4882a593Smuzhiyun&touch_reset_l { 515*4882a593Smuzhiyun rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_down>; 516*4882a593Smuzhiyun}; 517*4882a593Smuzhiyun 518*4882a593Smuzhiyun&touch_int_l { 519*4882a593Smuzhiyun rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>; 520*4882a593Smuzhiyun}; 521*4882a593Smuzhiyun 522*4882a593Smuzhiyun&pinctrl { 523*4882a593Smuzhiyun pinctrl-0 = < 524*4882a593Smuzhiyun &ap_pwroff /* AP will auto-assert this when in S3 */ 525*4882a593Smuzhiyun &clk_32k /* This pin is always 32k on gru boards */ 526*4882a593Smuzhiyun &wlan_rf_kill_1v8_l 527*4882a593Smuzhiyun >; 528*4882a593Smuzhiyun 529*4882a593Smuzhiyun pcfg_pull_none_6ma: pcfg-pull-none-6ma { 530*4882a593Smuzhiyun bias-disable; 531*4882a593Smuzhiyun drive-strength = <6>; 532*4882a593Smuzhiyun }; 533*4882a593Smuzhiyun 534*4882a593Smuzhiyun camera { 535*4882a593Smuzhiyun pp1250_cam_en: pp1250-dvdd { 536*4882a593Smuzhiyun rockchip,pins = <2 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; 537*4882a593Smuzhiyun }; 538*4882a593Smuzhiyun 539*4882a593Smuzhiyun pp2800_cam_en: pp2800-avdd { 540*4882a593Smuzhiyun rockchip,pins = <2 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; 541*4882a593Smuzhiyun }; 542*4882a593Smuzhiyun 543*4882a593Smuzhiyun ucam_rst: ucam_rst { 544*4882a593Smuzhiyun rockchip,pins = <2 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; 545*4882a593Smuzhiyun }; 546*4882a593Smuzhiyun 547*4882a593Smuzhiyun wcam_rst: wcam_rst { 548*4882a593Smuzhiyun rockchip,pins = <2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; 549*4882a593Smuzhiyun }; 550*4882a593Smuzhiyun }; 551*4882a593Smuzhiyun 552*4882a593Smuzhiyun digitizer { 553*4882a593Smuzhiyun pen_int_odl: pen-int-odl { 554*4882a593Smuzhiyun rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>; 555*4882a593Smuzhiyun }; 556*4882a593Smuzhiyun 557*4882a593Smuzhiyun pen_reset_l: pen-reset-l { 558*4882a593Smuzhiyun rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>; 559*4882a593Smuzhiyun }; 560*4882a593Smuzhiyun }; 561*4882a593Smuzhiyun 562*4882a593Smuzhiyun discrete-regulators { 563*4882a593Smuzhiyun display_rst_l: display-rst-l { 564*4882a593Smuzhiyun rockchip,pins = <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_down>; 565*4882a593Smuzhiyun }; 566*4882a593Smuzhiyun 567*4882a593Smuzhiyun ppvarp_lcd_en: ppvarp-lcd-en { 568*4882a593Smuzhiyun rockchip,pins = <4 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>; 569*4882a593Smuzhiyun }; 570*4882a593Smuzhiyun 571*4882a593Smuzhiyun ppvarn_lcd_en: ppvarn-lcd-en { 572*4882a593Smuzhiyun rockchip,pins = <4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>; 573*4882a593Smuzhiyun }; 574*4882a593Smuzhiyun }; 575*4882a593Smuzhiyun 576*4882a593Smuzhiyun dmic { 577*4882a593Smuzhiyun dmic_en: dmic-en { 578*4882a593Smuzhiyun rockchip,pins = <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; 579*4882a593Smuzhiyun }; 580*4882a593Smuzhiyun }; 581*4882a593Smuzhiyun 582*4882a593Smuzhiyun pen { 583*4882a593Smuzhiyun pen_eject_odl: pen-eject-odl { 584*4882a593Smuzhiyun rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; 585*4882a593Smuzhiyun }; 586*4882a593Smuzhiyun }; 587*4882a593Smuzhiyun 588*4882a593Smuzhiyun tpm { 589*4882a593Smuzhiyun h1_int_od_l: h1-int-od-l { 590*4882a593Smuzhiyun rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_up>; 591*4882a593Smuzhiyun }; 592*4882a593Smuzhiyun }; 593*4882a593Smuzhiyun}; 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun&wifi { 596*4882a593Smuzhiyun bt_en_1v8_l: bt-en-1v8-l { 597*4882a593Smuzhiyun rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; 598*4882a593Smuzhiyun }; 599*4882a593Smuzhiyun 600*4882a593Smuzhiyun wlan_pd_1v8_l: wlan-pd-1v8-l { 601*4882a593Smuzhiyun rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; 602*4882a593Smuzhiyun }; 603*4882a593Smuzhiyun 604*4882a593Smuzhiyun /* Default pull-up, but just to be clear */ 605*4882a593Smuzhiyun wlan_rf_kill_1v8_l: wlan-rf-kill-1v8-l { 606*4882a593Smuzhiyun rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; 607*4882a593Smuzhiyun }; 608*4882a593Smuzhiyun 609*4882a593Smuzhiyun wifi_perst_l: wifi-perst-l { 610*4882a593Smuzhiyun rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; 611*4882a593Smuzhiyun }; 612*4882a593Smuzhiyun 613*4882a593Smuzhiyun wlan_host_wake_l: wlan-host-wake-l { 614*4882a593Smuzhiyun rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; 615*4882a593Smuzhiyun }; 616*4882a593Smuzhiyun}; 617