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