1/*
2 * Copyright (c) 2015 Heiko Stuebner <heiko@sntech.de>
3 *
4 * This file is dual-licensed: you can use it either under the terms
5 * of the GPL or the X11 license, at your option. Note that this dual
6 * licensing only applies to this file, and not this project as a
7 * whole.
8 *
9 *  a) This file is free software; you can redistribute it and/or
10 *     modify it under the terms of the GNU General Public License as
11 *     published by the Free Software Foundation; either version 2 of the
12 *     License, or (at your option) any later version.
13 *
14 *     This file is distributed in the hope that it will be useful,
15 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 *     GNU General Public License for more details.
18 *
19 * Or, alternatively,
20 *
21 *  b) Permission is hereby granted, free of charge, to any person
22 *     obtaining a copy of this software and associated documentation
23 *     files (the "Software"), to deal in the Software without
24 *     restriction, including without limitation the rights to use,
25 *     copy, modify, merge, publish, distribute, sublicense, and/or
26 *     sell copies of the Software, and to permit persons to whom the
27 *     Software is furnished to do so, subject to the following
28 *     conditions:
29 *
30 *     The above copyright notice and this permission notice shall be
31 *     included in all copies or substantial portions of the Software.
32 *
33 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
35 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
37 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
39 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40 *     OTHER DEALINGS IN THE SOFTWARE.
41 */
42
43/dts-v1/;
44#include <dt-bindings/pwm/pwm.h>
45#include "rk3288.dtsi"
46
47/ {
48	compatible = "netxeon,r89", "rockchip,rk3288";
49
50	memory {
51		device_type = "memory";
52		reg = <0x0 0x80000000>;
53	};
54
55	ext_gmac: external-gmac-clock {
56		compatible = "fixed-clock";
57		clock-frequency = <125000000>;
58		clock-output-names = "ext_gmac";
59		#clock-cells = <0>;
60	};
61
62	gpio-keys {
63		compatible = "gpio-keys";
64		#address-cells = <1>;
65		#size-cells = <0>;
66		autorepeat;
67
68		pinctrl-names = "default";
69		pinctrl-0 = <&pwrbtn>;
70
71		button@0 {
72			gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
73			linux,code = <116>;
74			label = "GPIO Key Power";
75			linux,input-type = <1>;
76			gpio-key,wakeup = <1>;
77			debounce-interval = <100>;
78		};
79	};
80
81	vcc_host: vcc-host-regulator {
82		compatible = "regulator-fixed";
83		enable-active-high;
84		gpio = <&gpio0 14 GPIO_ACTIVE_HIGH>;
85		pinctrl-names = "default";
86		pinctrl-0 = <&host_vbus_drv>;
87		regulator-name = "vcc_host";
88		regulator-always-on;
89		regulator-boot-on;
90	};
91
92	vcc_otg: vcc-otg-regulator {
93		compatible = "regulator-fixed";
94		enable-active-high;
95		gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
96		pinctrl-names = "default";
97		pinctrl-0 = <&otg_vbus_drv>;
98		regulator-name = "vcc_otg";
99		regulator-always-on;
100		regulator-boot-on;
101	};
102
103	vcc_sdmmc: sdmmc-regulator {
104		compatible = "regulator-fixed";
105		regulator-name = "sdmmc-supply";
106		regulator-min-microvolt = <3300000>;
107		regulator-max-microvolt = <3300000>;
108		gpio = <&gpio7 11 GPIO_ACTIVE_LOW>;
109		startup-delay-us = <100000>;
110		vin-supply = <&vcc_io>;
111	};
112
113	vcc_sys: sys-regulator {
114		compatible = "regulator-fixed";
115		regulator-name = "sys-supply";
116		regulator-min-microvolt = <5000000>;
117		regulator-max-microvolt = <5000000>;
118		regulator-always-on;
119		regulator-boot-on;
120	};
121};
122
123&cpu0 {
124	cpu0-supply = <&vdd_cpu>;
125};
126
127&gmac {
128	phy-supply = <&vcc_lan>;
129	phy-mode = "rgmii";
130	clock_in_out = "input";
131	snps,reset-gpio = <&gpio4 7 0>;
132	snps,reset-active-low;
133	snps,reset-delays-us = <0 10000 1000000>;
134	assigned-clocks = <&cru SCLK_MAC>;
135	assigned-clock-parents = <&ext_gmac>;
136	pinctrl-names = "default";
137	pinctrl-0 = <&rgmii_pins>;
138	tx_delay = <0x30>;
139	rx_delay = <0x10>;
140	status = "ok";
141};
142
143&hdmi {
144	status = "okay";
145};
146
147&i2c0 {
148	status = "okay";
149
150	vdd_cpu: pmic@40 {
151		compatible = "silergy,syr827";
152		reg = <0x40>;
153		fcs,suspend-voltage-selector = <1>;
154		regulator-name = "VDD_CPU";
155		regulator-enable-ramp-delay = <300>;
156		regulator-min-microvolt = <850000>;
157		regulator-max-microvolt = <1350000>;
158		regulator-ramp-delay = <8000>;
159		regulator-always-on;
160		regulator-boot-on;
161		vin-supply = <&vcc_sys>;
162	};
163
164	vdd_gpu: pmic@41 {
165		compatible = "silergy,syr828";
166		reg = <0x41>;
167		fcs,suspend-voltage-selector = <1>;
168		regulator-name = "VDD_GPU";
169		regulator-enable-ramp-delay = <300>;
170		regulator-min-microvolt = <850000>;
171		regulator-max-microvolt = <1350000>;
172		regulator-ramp-delay = <8000>;
173		regulator-always-on;
174		regulator-boot-on;
175		vin-supply = <&vcc_sys>;
176	};
177
178	rtc@51 {
179		compatible = "haoyu,hym8563";
180		reg = <0x51>;
181		#clock-cells = <0>;
182		clock-output-names = "xin32k";
183		interrupt-parent = <&gpio0>;
184		interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
185		pinctrl-names = "default";
186		pinctrl-0 = <&pmic_int>;
187	};
188
189	act8846: pmic@5a {
190		compatible = "active-semi,act8846";
191		reg = <0x5a>;
192		pinctrl-names = "default";
193		pinctrl-0 = <&pmic_vsel>, <&pwr_hold>;
194		system-power-controller;
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			vcc_io: REG2 {
205				regulator-name = "VCC_IO";
206				regulator-min-microvolt = <3300000>;
207				regulator-max-microvolt = <3300000>;
208				regulator-always-on;
209			};
210
211			vdd_log: REG3 {
212				regulator-name = "VDD_LOG";
213				regulator-min-microvolt = <1000000>;
214				regulator-max-microvolt = <1000000>;
215				regulator-always-on;
216			};
217
218			vcc_20: REG4 {
219				regulator-name = "VCC_20";
220				regulator-min-microvolt = <2000000>;
221				regulator-max-microvolt = <2000000>;
222				regulator-always-on;
223			};
224
225			vccio_sd: REG5 {
226				regulator-name = "VCCIO_SD";
227				regulator-min-microvolt = <3300000>;
228				regulator-max-microvolt = <3300000>;
229				regulator-always-on;
230			};
231
232			vdd10_lcd: REG6 {
233				regulator-name = "VDD10_LCD";
234				regulator-min-microvolt = <1000000>;
235				regulator-max-microvolt = <1000000>;
236				regulator-always-on;
237			};
238
239			vcc_wl: REG7 {
240				regulator-name = "VCC_WL";
241				regulator-min-microvolt = <3300000>;
242				regulator-max-microvolt = <3300000>;
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_lan: REG9 {
254				regulator-name = "VCC_LAN";
255				regulator-min-microvolt = <3300000>;
256				regulator-max-microvolt = <3300000>;
257				regulator-always-on;
258			};
259
260			vdd_10: REG10 {
261				regulator-name = "VDD_10";
262				regulator-min-microvolt = <1000000>;
263				regulator-max-microvolt = <1000000>;
264				regulator-always-on;
265			};
266
267			vcc_18: REG11 {
268				regulator-name = "VCC_18";
269				regulator-min-microvolt = <1800000>;
270				regulator-max-microvolt = <1800000>;
271				regulator-always-on;
272			};
273
274			vcc18_lcd: REG12 {
275				regulator-name = "VCC18_LCD";
276				regulator-min-microvolt = <1800000>;
277				regulator-max-microvolt = <1800000>;
278				regulator-always-on;
279			};
280		};
281	};
282};
283
284&i2c5 {
285	status = "okay";
286};
287
288&pinctrl {
289	pcfg_output_high: pcfg-output-high {
290		output-high;
291	};
292
293	pcfg_output_low: pcfg-output-low {
294		output-low;
295	};
296
297	act8846 {
298		pmic_vsel: pmic-vsel {
299			rockchip,pins = <7 1 RK_FUNC_GPIO &pcfg_output_low>;
300		};
301
302		pwr_hold: pwr-hold {
303			rockchip,pins = <0 6 RK_FUNC_GPIO &pcfg_output_high>;
304		};
305	};
306
307	buttons {
308		pwrbtn: pwrbtn {
309			rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
310		};
311	};
312
313	pmic {
314		pmic_int: pmic-int {
315			rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>;
316		};
317	};
318
319	usb {
320		host_vbus_drv: host-vbus-drv {
321			rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
322		};
323
324		otg_vbus_drv: otg-vbus-drv {
325			rockchip,pins = <0 12 RK_FUNC_GPIO &pcfg_pull_none>;
326		};
327	};
328};
329
330&pwm0 {
331	status = "okay";
332};
333
334&saradc {
335	vref-supply = <&vcc_18>;
336	status = "okay";
337};
338
339&sdmmc {
340	bus-width = <4>;
341	cap-mmc-highspeed;
342	cap-sd-highspeed;
343	card-detect-delay = <200>;
344	disable-wp;
345	num-slots = <1>;
346	pinctrl-names = "default";
347	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
348	vmmc-supply = <&vcc_sdmmc>;
349	vqmmc-supply = <&vccio_sd>;
350	status = "okay";
351};
352
353&tsadc {
354	rockchip,hw-tshut-mode = <0>;
355	rockchip,hw-tshut-polarity = <0>;
356	status = "okay";
357};
358
359&uart0 {
360	status = "okay";
361};
362
363&uart1 {
364	status = "okay";
365};
366
367&uart2 {
368	status = "okay";
369};
370
371&uart3 {
372	status = "okay";
373};
374
375&uart4 {
376	status = "okay";
377};
378
379&usb_host0_ehci {
380	status = "okay";
381};
382
383&usb_host1 {
384	status = "okay";
385};
386
387&usb_otg {
388	status = "okay";
389};
390
391&usbphy {
392	status = "okay";
393};
394
395&vopb {
396	status = "okay";
397};
398
399&vopb_mmu {
400	status = "okay";
401};
402
403&vopl {
404	status = "okay";
405};
406
407&vopl_mmu {
408	status = "okay";
409};
410
411&wdt {
412	status = "okay";
413};
414