1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Google Gru-Kevin Rev 6+ board device tree source 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright 2016-2017 Google, Inc 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun/dts-v1/; 9*4882a593Smuzhiyun#include "rk3399-gru-chromebook.dtsi" 10*4882a593Smuzhiyun#include <dt-bindings/input/linux-event-codes.h> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun/* 13*4882a593Smuzhiyun * Kevin-specific things 14*4882a593Smuzhiyun * 15*4882a593Smuzhiyun * Things in this section should use names from Kevin schematic since no 16*4882a593Smuzhiyun * equivalent exists in Gru schematic. If referring to signals that exist 17*4882a593Smuzhiyun * in Gru we use the Gru names, though. Confusing enough for you? 18*4882a593Smuzhiyun */ 19*4882a593Smuzhiyun/ { 20*4882a593Smuzhiyun model = "Google Kevin"; 21*4882a593Smuzhiyun compatible = "google,kevin-rev15", "google,kevin-rev14", 22*4882a593Smuzhiyun "google,kevin-rev13", "google,kevin-rev12", 23*4882a593Smuzhiyun "google,kevin-rev11", "google,kevin-rev10", 24*4882a593Smuzhiyun "google,kevin-rev9", "google,kevin-rev8", 25*4882a593Smuzhiyun "google,kevin-rev7", "google,kevin-rev6", 26*4882a593Smuzhiyun "google,kevin", "google,gru", "rockchip,rk3399"; 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun /* Power tree */ 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun p3_3v_dig: p3-3v-dig { 31*4882a593Smuzhiyun compatible = "regulator-fixed"; 32*4882a593Smuzhiyun regulator-name = "p3.3v_dig"; 33*4882a593Smuzhiyun pinctrl-names = "default"; 34*4882a593Smuzhiyun pinctrl-0 = <&cpu3_pen_pwr_en>; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun enable-active-high; 37*4882a593Smuzhiyun gpio = <&gpio4 30 GPIO_ACTIVE_HIGH>; 38*4882a593Smuzhiyun vin-supply = <&pp3300>; 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun edp_panel: edp-panel { 42*4882a593Smuzhiyun compatible = "sharp,lq123p1jx31"; 43*4882a593Smuzhiyun backlight = <&backlight>; 44*4882a593Smuzhiyun power-supply = <&pp3300_disp>; 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun panel-timing { 47*4882a593Smuzhiyun clock-frequency = <266666667>; 48*4882a593Smuzhiyun hactive = <2400>; 49*4882a593Smuzhiyun hfront-porch = <48>; 50*4882a593Smuzhiyun hback-porch = <84>; 51*4882a593Smuzhiyun hsync-len = <32>; 52*4882a593Smuzhiyun hsync-active = <0>; 53*4882a593Smuzhiyun vactive = <1600>; 54*4882a593Smuzhiyun vfront-porch = <3>; 55*4882a593Smuzhiyun vback-porch = <120>; 56*4882a593Smuzhiyun vsync-len = <10>; 57*4882a593Smuzhiyun vsync-active = <0>; 58*4882a593Smuzhiyun }; 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun port { 61*4882a593Smuzhiyun panel_in_edp: endpoint { 62*4882a593Smuzhiyun remote-endpoint = <&edp_out_panel>; 63*4882a593Smuzhiyun }; 64*4882a593Smuzhiyun }; 65*4882a593Smuzhiyun }; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun thermistor_ppvar_bigcpu: thermistor-ppvar-bigcpu { 68*4882a593Smuzhiyun compatible = "murata,ncp15wb473"; 69*4882a593Smuzhiyun pullup-uv = <1800000>; 70*4882a593Smuzhiyun pullup-ohm = <25500>; 71*4882a593Smuzhiyun pulldown-ohm = <0>; 72*4882a593Smuzhiyun io-channels = <&saradc 2>; 73*4882a593Smuzhiyun #thermal-sensor-cells = <0>; 74*4882a593Smuzhiyun }; 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun thermistor_ppvar_litcpu: thermistor-ppvar-litcpu { 77*4882a593Smuzhiyun compatible = "murata,ncp15wb473"; 78*4882a593Smuzhiyun pullup-uv = <1800000>; 79*4882a593Smuzhiyun pullup-ohm = <25500>; 80*4882a593Smuzhiyun pulldown-ohm = <0>; 81*4882a593Smuzhiyun io-channels = <&saradc 3>; 82*4882a593Smuzhiyun #thermal-sensor-cells = <0>; 83*4882a593Smuzhiyun }; 84*4882a593Smuzhiyun}; 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun&backlight { 87*4882a593Smuzhiyun pwms = <&cros_ec_pwm 1>; 88*4882a593Smuzhiyun}; 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun&gpio_keys { 91*4882a593Smuzhiyun pinctrl-names = "default"; 92*4882a593Smuzhiyun pinctrl-0 = <&bt_host_wake_l>, <&cpu1_pen_eject>; 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun pen-insert { 95*4882a593Smuzhiyun label = "Pen Insert"; 96*4882a593Smuzhiyun /* Insert = low, eject = high */ 97*4882a593Smuzhiyun gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; 98*4882a593Smuzhiyun linux,code = <SW_PEN_INSERTED>; 99*4882a593Smuzhiyun linux,input-type = <EV_SW>; 100*4882a593Smuzhiyun wakeup-source; 101*4882a593Smuzhiyun }; 102*4882a593Smuzhiyun}; 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun&thermal_zones { 105*4882a593Smuzhiyun bigcpu_reg_thermal: bigcpu-reg-thermal { 106*4882a593Smuzhiyun polling-delay-passive = <100>; /* milliseconds */ 107*4882a593Smuzhiyun polling-delay = <1000>; /* milliseconds */ 108*4882a593Smuzhiyun thermal-sensors = <&thermistor_ppvar_bigcpu 0>; 109*4882a593Smuzhiyun sustainable-power = <4000>; 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun ppvar_bigcpu_trips: trips { 112*4882a593Smuzhiyun ppvar_bigcpu_on: ppvar-bigcpu-on { 113*4882a593Smuzhiyun temperature = <40000>; /* millicelsius */ 114*4882a593Smuzhiyun hysteresis = <2000>; /* millicelsius */ 115*4882a593Smuzhiyun type = "passive"; 116*4882a593Smuzhiyun }; 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun ppvar_bigcpu_alert: ppvar-bigcpu-alert { 119*4882a593Smuzhiyun temperature = <50000>; /* millicelsius */ 120*4882a593Smuzhiyun hysteresis = <2000>; /* millicelsius */ 121*4882a593Smuzhiyun type = "passive"; 122*4882a593Smuzhiyun }; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun ppvar_bigcpu_crit: ppvar-bigcpu-crit { 125*4882a593Smuzhiyun temperature = <90000>; /* millicelsius */ 126*4882a593Smuzhiyun hysteresis = <0>; /* millicelsius */ 127*4882a593Smuzhiyun type = "critical"; 128*4882a593Smuzhiyun }; 129*4882a593Smuzhiyun }; 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun cooling-maps { 132*4882a593Smuzhiyun map0 { 133*4882a593Smuzhiyun trip = <&ppvar_bigcpu_alert>; 134*4882a593Smuzhiyun cooling-device = 135*4882a593Smuzhiyun <&cpu_l0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, 136*4882a593Smuzhiyun <&cpu_l1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, 137*4882a593Smuzhiyun <&cpu_l2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, 138*4882a593Smuzhiyun <&cpu_l3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 139*4882a593Smuzhiyun contribution = <4096>; 140*4882a593Smuzhiyun }; 141*4882a593Smuzhiyun map1 { 142*4882a593Smuzhiyun trip = <&ppvar_bigcpu_alert>; 143*4882a593Smuzhiyun cooling-device = 144*4882a593Smuzhiyun <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, 145*4882a593Smuzhiyun <&cpu_b1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 146*4882a593Smuzhiyun contribution = <1024>; 147*4882a593Smuzhiyun }; 148*4882a593Smuzhiyun }; 149*4882a593Smuzhiyun }; 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun litcpu_reg_thermal: litcpu-reg-thermal { 152*4882a593Smuzhiyun polling-delay-passive = <100>; /* milliseconds */ 153*4882a593Smuzhiyun polling-delay = <1000>; /* milliseconds */ 154*4882a593Smuzhiyun thermal-sensors = <&thermistor_ppvar_litcpu 0>; 155*4882a593Smuzhiyun sustainable-power = <4000>; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun ppvar_litcpu_trips: trips { 158*4882a593Smuzhiyun ppvar_litcpu_on: ppvar-litcpu-on { 159*4882a593Smuzhiyun temperature = <40000>; /* millicelsius */ 160*4882a593Smuzhiyun hysteresis = <2000>; /* millicelsius */ 161*4882a593Smuzhiyun type = "passive"; 162*4882a593Smuzhiyun }; 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun ppvar_litcpu_alert: ppvar-litcpu-alert { 165*4882a593Smuzhiyun temperature = <50000>; /* millicelsius */ 166*4882a593Smuzhiyun hysteresis = <2000>; /* millicelsius */ 167*4882a593Smuzhiyun type = "passive"; 168*4882a593Smuzhiyun }; 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun ppvar_litcpu_crit: ppvar-litcpu-crit { 171*4882a593Smuzhiyun temperature = <90000>; /* millicelsius */ 172*4882a593Smuzhiyun hysteresis = <0>; /* millicelsius */ 173*4882a593Smuzhiyun type = "critical"; 174*4882a593Smuzhiyun }; 175*4882a593Smuzhiyun }; 176*4882a593Smuzhiyun }; 177*4882a593Smuzhiyun}; 178*4882a593Smuzhiyun 179*4882a593Smuzhiyunap_i2c_tpm: &i2c0 { 180*4882a593Smuzhiyun status = "okay"; 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun clock-frequency = <400000>; 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun /* These are relatively safe rise/fall times. */ 185*4882a593Smuzhiyun i2c-scl-falling-time-ns = <50>; 186*4882a593Smuzhiyun i2c-scl-rising-time-ns = <300>; 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun tpm: tpm@20 { 189*4882a593Smuzhiyun compatible = "infineon,slb9645tt"; 190*4882a593Smuzhiyun reg = <0x20>; 191*4882a593Smuzhiyun powered-while-suspended; 192*4882a593Smuzhiyun }; 193*4882a593Smuzhiyun}; 194*4882a593Smuzhiyun 195*4882a593Smuzhiyunap_i2c_dig: &i2c2 { 196*4882a593Smuzhiyun status = "okay"; 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun clock-frequency = <400000>; 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun /* These are relatively safe rise/fall times. */ 201*4882a593Smuzhiyun i2c-scl-falling-time-ns = <50>; 202*4882a593Smuzhiyun i2c-scl-rising-time-ns = <300>; 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun digitizer: digitizer@9 { 205*4882a593Smuzhiyun /* wacom,w9013 */ 206*4882a593Smuzhiyun compatible = "hid-over-i2c"; 207*4882a593Smuzhiyun reg = <0x9>; 208*4882a593Smuzhiyun pinctrl-names = "default"; 209*4882a593Smuzhiyun pinctrl-0 = <&cpu1_dig_irq_l &cpu1_dig_pdct_l>; 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun vdd-supply = <&p3_3v_dig>; 212*4882a593Smuzhiyun post-power-on-delay-ms = <100>; 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun interrupt-parent = <&gpio2>; 215*4882a593Smuzhiyun interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun hid-descr-addr = <0x1>; 218*4882a593Smuzhiyun }; 219*4882a593Smuzhiyun}; 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun/* Adjustments to things in the gru baseboard */ 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun&ap_i2c_tp { 224*4882a593Smuzhiyun trackpad@4a { 225*4882a593Smuzhiyun compatible = "atmel,maxtouch"; 226*4882a593Smuzhiyun reg = <0x4a>; 227*4882a593Smuzhiyun pinctrl-names = "default"; 228*4882a593Smuzhiyun pinctrl-0 = <&trackpad_int_l>; 229*4882a593Smuzhiyun interrupt-parent = <&gpio1>; 230*4882a593Smuzhiyun interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 231*4882a593Smuzhiyun linux,gpio-keymap = <KEY_RESERVED 232*4882a593Smuzhiyun KEY_RESERVED 233*4882a593Smuzhiyun KEY_RESERVED 234*4882a593Smuzhiyun BTN_LEFT>; 235*4882a593Smuzhiyun wakeup-source; 236*4882a593Smuzhiyun }; 237*4882a593Smuzhiyun}; 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun&ap_i2c_ts { 240*4882a593Smuzhiyun touchscreen@4b { 241*4882a593Smuzhiyun compatible = "atmel,maxtouch"; 242*4882a593Smuzhiyun reg = <0x4b>; 243*4882a593Smuzhiyun pinctrl-names = "default"; 244*4882a593Smuzhiyun pinctrl-0 = <&touch_int_l>; 245*4882a593Smuzhiyun interrupt-parent = <&gpio3>; 246*4882a593Smuzhiyun interrupts = <13 IRQ_TYPE_LEVEL_LOW>; 247*4882a593Smuzhiyun }; 248*4882a593Smuzhiyun}; 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun&ppvar_bigcpu_pwm { 251*4882a593Smuzhiyun regulator-min-microvolt = <798674>; 252*4882a593Smuzhiyun regulator-max-microvolt = <1302172>; 253*4882a593Smuzhiyun}; 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun&ppvar_bigcpu { 256*4882a593Smuzhiyun regulator-min-microvolt = <798674>; 257*4882a593Smuzhiyun regulator-max-microvolt = <1302172>; 258*4882a593Smuzhiyun ctrl-voltage-range = <798674 1302172>; 259*4882a593Smuzhiyun}; 260*4882a593Smuzhiyun 261*4882a593Smuzhiyun&ppvar_litcpu_pwm { 262*4882a593Smuzhiyun regulator-min-microvolt = <799065>; 263*4882a593Smuzhiyun regulator-max-microvolt = <1303738>; 264*4882a593Smuzhiyun}; 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun&ppvar_litcpu { 267*4882a593Smuzhiyun regulator-min-microvolt = <799065>; 268*4882a593Smuzhiyun regulator-max-microvolt = <1303738>; 269*4882a593Smuzhiyun ctrl-voltage-range = <799065 1303738>; 270*4882a593Smuzhiyun}; 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun&ppvar_gpu_pwm { 273*4882a593Smuzhiyun regulator-min-microvolt = <785782>; 274*4882a593Smuzhiyun regulator-max-microvolt = <1217729>; 275*4882a593Smuzhiyun}; 276*4882a593Smuzhiyun 277*4882a593Smuzhiyun&ppvar_gpu { 278*4882a593Smuzhiyun regulator-min-microvolt = <785782>; 279*4882a593Smuzhiyun regulator-max-microvolt = <1217729>; 280*4882a593Smuzhiyun ctrl-voltage-range = <785782 1217729>; 281*4882a593Smuzhiyun}; 282*4882a593Smuzhiyun 283*4882a593Smuzhiyun&ppvar_centerlogic_pwm { 284*4882a593Smuzhiyun regulator-min-microvolt = <800069>; 285*4882a593Smuzhiyun regulator-max-microvolt = <1049692>; 286*4882a593Smuzhiyun}; 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun&ppvar_centerlogic { 289*4882a593Smuzhiyun regulator-min-microvolt = <800069>; 290*4882a593Smuzhiyun regulator-max-microvolt = <1049692>; 291*4882a593Smuzhiyun ctrl-voltage-range = <800069 1049692>; 292*4882a593Smuzhiyun}; 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun&saradc { 295*4882a593Smuzhiyun status = "okay"; 296*4882a593Smuzhiyun vref-supply = <&pp1800_ap_io>; 297*4882a593Smuzhiyun}; 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun&mvl_wifi { 300*4882a593Smuzhiyun marvell,wakeup-pin = <14>; /* GPIO_14 on Marvell */ 301*4882a593Smuzhiyun}; 302*4882a593Smuzhiyun 303*4882a593Smuzhiyun&pinctrl { 304*4882a593Smuzhiyun digitizer { 305*4882a593Smuzhiyun /* Has external pullup */ 306*4882a593Smuzhiyun cpu1_dig_irq_l: cpu1-dig-irq-l { 307*4882a593Smuzhiyun rockchip,pins = <2 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; 308*4882a593Smuzhiyun }; 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun /* Has external pullup */ 311*4882a593Smuzhiyun cpu1_dig_pdct_l: cpu1-dig-pdct-l { 312*4882a593Smuzhiyun rockchip,pins = <2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; 313*4882a593Smuzhiyun }; 314*4882a593Smuzhiyun }; 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun discrete-regulators { 317*4882a593Smuzhiyun cpu3_pen_pwr_en: cpu3-pen-pwr-en { 318*4882a593Smuzhiyun rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>; 319*4882a593Smuzhiyun }; 320*4882a593Smuzhiyun }; 321*4882a593Smuzhiyun 322*4882a593Smuzhiyun pen { 323*4882a593Smuzhiyun cpu1_pen_eject: cpu1-pen-eject { 324*4882a593Smuzhiyun rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>; 325*4882a593Smuzhiyun }; 326*4882a593Smuzhiyun }; 327*4882a593Smuzhiyun}; 328