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