xref: /OK3568_Linux_fs/kernel/arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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