1/*
2 * Copyright (c) 2013 Heiko Stuebner <heiko@sntech.de>
3 *
4 * SPDX-License-Identifier:     GPL-2.0+ or X11
5 */
6
7/dts-v1/;
8#include <dt-bindings/input/input.h>
9#include "rk3188.dtsi"
10#include "rk3188-radxarock-u-boot.dtsi"
11
12/ {
13	model = "Radxa Rock";
14	compatible = "radxa,rock", "rockchip,rk3188";
15
16	chosen {
17/*		stdout-path = &uart2; */
18		stdout-path = "serial2:115200n8";
19	};
20
21	config {
22		u-boot,dm-pre-reloc;
23		u-boot,boot-led = "rock:red:power";
24	};
25
26	memory {
27		device_type = "memory";
28		reg = <0x60000000 0x80000000>;
29	};
30
31	gpio-keys {
32		compatible = "gpio-keys";
33		autorepeat;
34
35		power {
36			gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
37			linux,code = <KEY_POWER>;
38			label = "GPIO Key Power";
39			linux,input-type = <1>;
40			wakeup-source;
41			debounce-interval = <100>;
42		};
43	};
44
45	gpio-leds {
46		compatible = "gpio-leds";
47
48		green {
49			label = "rock:green:user1";
50			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
51			default-state = "off";
52		};
53
54		blue {
55			label = "rock:blue:user2";
56			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
57			default-state = "off";
58		};
59
60		sleep {
61			label = "rock:red:power";
62			gpios = <&gpio0 15 0>;
63			default-state = "off";
64		};
65	};
66
67	sound {
68		compatible = "simple-audio-card";
69		simple-audio-card,name = "SPDIF";
70
71		simple-audio-card,dai-link@1 {  /* S/PDIF - S/PDIF */
72			cpu { sound-dai = <&spdif>; };
73			codec { sound-dai = <&spdif_out>; };
74		};
75	};
76
77	spdif_out: spdif-out {
78		compatible = "linux,spdif-dit";
79		#sound-dai-cells = <0>;
80	};
81
82	ir_recv: gpio-ir-receiver {
83		compatible = "gpio-ir-receiver";
84		gpios = <&gpio0 10 1>;
85		pinctrl-names = "default";
86		pinctrl-0 = <&ir_recv_pin>;
87	};
88
89	vcc_otg: usb-otg-regulator {
90		compatible = "regulator-fixed";
91		enable-active-high;
92		gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
93		pinctrl-names = "default";
94		pinctrl-0 = <&otg_vbus_drv>;
95		regulator-name = "otg-vbus";
96		regulator-min-microvolt = <5000000>;
97		regulator-max-microvolt = <5000000>;
98		regulator-always-on;
99		regulator-boot-on;
100	};
101
102	vcc_sd0: sdmmc-regulator {
103		compatible = "regulator-fixed";
104		regulator-name = "sdmmc-supply";
105		regulator-min-microvolt = <3300000>;
106		regulator-max-microvolt = <3300000>;
107		gpio = <&gpio3 1 GPIO_ACTIVE_LOW>;
108		startup-delay-us = <100000>;
109		vin-supply = <&vcc_io>;
110	};
111
112	vcc_host: usb-host-regulator {
113		compatible = "regulator-fixed";
114		enable-active-high;
115		gpio = <&gpio0 3 GPIO_ACTIVE_HIGH>;
116		pinctrl-names = "default";
117		pinctrl-0 = <&host_vbus_drv>;
118		regulator-name = "host-pwr";
119		regulator-min-microvolt = <5000000>;
120		regulator-max-microvolt = <5000000>;
121		regulator-always-on;
122		regulator-boot-on;
123	};
124
125	vsys: vsys-regulator {
126		compatible = "regulator-fixed";
127		regulator-name = "vsys";
128		regulator-min-microvolt = <5000000>;
129		regulator-max-microvolt = <5000000>;
130		regulator-boot-on;
131	};
132};
133
134&dmc {
135	rockchip,pctl-timing = <0x12c 0xc8 0x1f4 0x1e 0x4e 0x4 0x69 0x6
136		0x3 0x0 0x6 0x5 0xc 0x10 0x6 0x4
137		0x4 0x5 0x4 0x200 0x3 0xa 0x40 0x0
138		0x1 0x5 0x5 0x3 0xc 0x1e 0x100 0x0
139		0x4 0x0>;
140	rockchip,phy-timing = <0x208c6690 0x690878 0x10022a00
141		0x220 0x40 0x0 0x0>;
142	rockchip,sdram-params = <0x24716310 0 2 300000000 3 9 0>;
143};
144
145&emac {
146	status = "okay";
147
148	pinctrl-names = "default";
149	pinctrl-0 = <&emac_xfer>, <&emac_mdio>, <&phy_int>;
150
151	phy = <&phy0>;
152	phy-supply = <&vcc_rmii>;
153
154	phy0: ethernet-phy@0 {
155		reg = <0>;
156		interrupt-parent = <&gpio3>;
157		interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
158	};
159};
160
161&cpu0 {
162	cpu0-supply = <&vdd_arm>;
163};
164
165&i2c1 {
166	status = "okay";
167	clock-frequency = <400000>;
168
169	rtc@51 {
170		compatible = "haoyu,hym8563";
171		reg = <0x51>;
172		interrupt-parent = <&gpio0>;
173		interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
174		pinctrl-names = "default";
175		pinctrl-0 = <&rtc_int>;
176		#clock-cells = <0>;
177		clock-output-names = "xin32k";
178	};
179
180	act8846: act8846@5a {
181		compatible = "active-semi,act8846";
182		reg = <0x5a>;
183		status = "okay";
184		system-power-controller;
185
186		pinctrl-names = "default";
187		pinctrl-0 = <&act8846_dvs0_ctl>;
188
189		vp1-supply = <&vsys>;
190		vp2-supply = <&vsys>;
191		vp3-supply = <&vsys>;
192		vp4-supply = <&vsys>;
193		inl1-supply = <&vcc_io>;
194		inl2-supply = <&vsys>;
195		inl3-supply = <&vsys>;
196
197		regulators {
198			vcc_ddr: REG1 {
199				regulator-name = "VCC_DDR";
200				regulator-min-microvolt = <1200000>;
201				regulator-max-microvolt = <1200000>;
202				regulator-always-on;
203			};
204
205			vdd_log: REG2 {
206				regulator-name = "VDD_LOG";
207				regulator-min-microvolt = <1000000>;
208				regulator-max-microvolt = <1000000>;
209				regulator-always-on;
210			};
211
212			vdd_arm: REG3 {
213				regulator-name = "VDD_ARM";
214				regulator-min-microvolt = <875000>;
215				regulator-max-microvolt = <1350000>;
216				regulator-always-on;
217			};
218
219			vcc_io: REG4 {
220				regulator-name = "VCC_IO";
221				regulator-min-microvolt = <3300000>;
222				regulator-max-microvolt = <3300000>;
223				regulator-always-on;
224			};
225
226			vdd_10: REG5 {
227				regulator-name = "VDD_10";
228				regulator-min-microvolt = <1000000>;
229				regulator-max-microvolt = <1000000>;
230				regulator-always-on;
231			};
232
233			vdd_hdmi: REG6 {
234				regulator-name = "VDD_HDMI";
235				regulator-min-microvolt = <2500000>;
236				regulator-max-microvolt = <2500000>;
237				regulator-always-on;
238			};
239
240			vcc18: REG7 {
241				regulator-name = "VCC_18";
242				regulator-min-microvolt = <1800000>;
243				regulator-max-microvolt = <1800000>;
244				regulator-always-on;
245			};
246
247			vcca_33: REG8 {
248				regulator-name = "VCCA_33";
249				regulator-min-microvolt = <3300000>;
250				regulator-max-microvolt = <3300000>;
251				regulator-always-on;
252			};
253
254			vcc_rmii: REG9 {
255				regulator-name = "VCC_RMII";
256				regulator-min-microvolt = <3300000>;
257				regulator-max-microvolt = <3300000>;
258			};
259
260			vccio_wl: REG10 {
261				regulator-name = "VCCIO_WL";
262				regulator-min-microvolt = <3300000>;
263				regulator-max-microvolt = <3300000>;
264				regulator-always-on;
265			};
266
267			vcc_18: REG11 {
268				regulator-name = "VCC18_IO";
269				regulator-min-microvolt = <1800000>;
270				regulator-max-microvolt = <1800000>;
271				regulator-always-on;
272			};
273
274			vcc28: REG12 {
275				regulator-name = "VCC_28";
276				regulator-min-microvolt = <2800000>;
277				regulator-max-microvolt = <2800000>;
278				regulator-always-on;
279			};
280		};
281	};
282};
283
284&mmc0 {
285	num-slots = <1>;
286	status = "okay";
287	pinctrl-names = "default";
288	pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
289	vmmc-supply = <&vcc_sd0>;
290
291	bus-width = <4>;
292	cap-mmc-highspeed;
293	cap-sd-highspeed;
294	disable-wp;
295};
296
297&pwm1 {
298	status = "okay";
299};
300
301&pwm2 {
302	status = "okay";
303};
304
305&pwm3 {
306	status = "okay";
307};
308
309&pinctrl {
310	pcfg_output_low: pcfg-output-low {
311		output-low;
312	};
313
314	act8846 {
315		act8846_dvs0_ctl: act8846-dvs0-ctl {
316			rockchip,pins = <RK_GPIO3 27 RK_FUNC_GPIO &pcfg_output_low>;
317		};
318	};
319
320	hym8563 {
321		rtc_int: rtc-int {
322			rockchip,pins = <RK_GPIO0 0 RK_FUNC_GPIO &pcfg_pull_up>;
323		};
324	};
325
326	lan8720a  {
327		phy_int: phy-int {
328			rockchip,pins = <RK_GPIO3 26 RK_FUNC_GPIO &pcfg_pull_up>;
329		};
330	};
331
332	ir-receiver {
333		ir_recv_pin: ir-recv-pin {
334			rockchip,pins = <RK_GPIO0 10 RK_FUNC_GPIO &pcfg_pull_none>;
335		};
336	};
337
338	usb {
339		host_vbus_drv: host-vbus-drv {
340			rockchip,pins = <0 3 RK_FUNC_GPIO &pcfg_pull_none>;
341		};
342		otg_vbus_drv: otg-vbus-drv {
343			rockchip,pins = <2 31 RK_FUNC_GPIO &pcfg_pull_none>;
344		};
345	};
346};
347
348&spdif {
349	status = "okay";
350};
351
352&uart0 {
353	status = "okay";
354};
355
356&uart1 {
357	status = "okay";
358};
359
360&uart3 {
361	status = "okay";
362};
363
364&usbphy {
365	status = "okay";
366};
367
368&usb_host {
369	status = "okay";
370};
371
372&usb_otg {
373	status = "okay";
374};
375
376&wdt {
377	status = "okay";
378};
379