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