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