xref: /rk3399_rockchip-uboot/arch/arm/dts/rk3288.dtsi (revision ed73b76733ce7cd243da2ebec965b0e1fca8924d)
1/*
2 * SPDX-License-Identifier:	GPL-2.0+
3 */
4
5#include <dt-bindings/gpio/gpio.h>
6#include <dt-bindings/interrupt-controller/irq.h>
7#include <dt-bindings/interrupt-controller/arm-gic.h>
8#include <dt-bindings/pinctrl/rockchip.h>
9#include <dt-bindings/clock/rk3288-cru.h>
10#include <dt-bindings/power-domain/rk3288.h>
11#include <dt-bindings/thermal/thermal.h>
12#include <dt-bindings/video/rk3288.h>
13#include "skeleton.dtsi"
14
15/ {
16	compatible = "rockchip,rk3288";
17
18	interrupt-parent = <&gic>;
19	aliases {
20		gpio0 = &gpio0;
21		gpio1 = &gpio1;
22		gpio2 = &gpio2;
23		gpio3 = &gpio3;
24		gpio4 = &gpio4;
25		gpio5 = &gpio5;
26		gpio6 = &gpio6;
27		gpio7 = &gpio7;
28		gpio8 = &gpio8;
29		i2c0 = &i2c0;
30		i2c1 = &i2c1;
31		i2c2 = &i2c2;
32		i2c3 = &i2c3;
33		i2c4 = &i2c4;
34		i2c5 = &i2c5;
35		mmc0 = &emmc;
36		mmc1 = &sdmmc;
37		mmc2 = &sdio0;
38		mmc3 = &sdio1;
39		mshc0 = &emmc;
40		mshc1 = &sdmmc;
41		mshc2 = &sdio0;
42		mshc3 = &sdio1;
43		serial0 = &uart0;
44		serial1 = &uart1;
45		serial2 = &uart2;
46		serial3 = &uart3;
47		serial4 = &uart4;
48		spi0 = &spi0;
49		spi1 = &spi1;
50		spi2 = &spi2;
51	};
52
53	cpus {
54		#address-cells = <1>;
55		#size-cells = <0>;
56		enable-method = "rockchip,rk3066-smp";
57		rockchip,pmu = <&pmu>;
58
59		cpu0: cpu@500 {
60			device_type = "cpu";
61			compatible = "arm,cortex-a12";
62			reg = <0x500>;
63			operating-points = <
64				/* KHz    uV */
65				1800000 1400000
66				1704000 1350000
67				1608000 1300000
68				1512000 1250000
69				1416000 1200000
70				1200000 1100000
71				1008000 1050000
72				 816000 1000000
73				 696000  950000
74				 600000  900000
75				 408000  900000
76				 216000  900000
77				 126000  900000
78			>;
79			#cooling-cells = <2>; /* min followed by max */
80			clock-latency = <40000>;
81			clocks = <&cru ARMCLK>;
82			resets = <&cru SRST_CORE0>;
83		};
84		cpu@501 {
85			device_type = "cpu";
86			compatible = "arm,cortex-a12";
87			reg = <0x501>;
88			resets = <&cru SRST_CORE1>;
89		};
90		cpu@502 {
91			device_type = "cpu";
92			compatible = "arm,cortex-a12";
93			reg = <0x502>;
94			resets = <&cru SRST_CORE2>;
95		};
96		cpu@503 {
97			device_type = "cpu";
98			compatible = "arm,cortex-a12";
99			reg = <0x503>;
100			resets = <&cru SRST_CORE3>;
101		};
102	};
103
104	amba {
105		compatible = "arm,amba-bus";
106		#address-cells = <1>;
107		#size-cells = <1>;
108		ranges;
109
110		dmac_peri: dma-controller@ff250000 {
111			compatible = "arm,pl330", "arm,primecell";
112			broken-no-flushp;
113			reg = <0xff250000 0x4000>;
114			interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
115				     <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
116			#dma-cells = <1>;
117			clocks = <&cru ACLK_DMAC2>;
118			clock-names = "apb_pclk";
119		};
120
121		dmac_bus_ns: dma-controller@ff600000 {
122			compatible = "arm,pl330", "arm,primecell";
123			broken-no-flushp;
124			reg = <0xff600000 0x4000>;
125			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
126				     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
127			#dma-cells = <1>;
128			clocks = <&cru ACLK_DMAC1>;
129			clock-names = "apb_pclk";
130			status = "disabled";
131		};
132
133		dmac_bus_s: dma-controller@ffb20000 {
134			compatible = "arm,pl330", "arm,primecell";
135			broken-no-flushp;
136			reg = <0xffb20000 0x4000>;
137			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
138				     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
139			#dma-cells = <1>;
140			clocks = <&cru ACLK_DMAC1>;
141			clock-names = "apb_pclk";
142		};
143	};
144
145	xin24m: oscillator {
146		compatible = "fixed-clock";
147		clock-frequency = <24000000>;
148		clock-output-names = "xin24m";
149		#clock-cells = <0>;
150	};
151
152	timer {
153	        arm,use-physical-timer;
154		compatible = "arm,armv7-timer";
155		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
156			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
157			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
158			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
159		clock-frequency = <24000000>;
160		always-on;
161	};
162
163	display_subsystem: display-subsystem {
164		compatible = "rockchip,display-subsystem";
165		ports = <&vopl_out>, <&vopb_out>;
166		status = "disabled";
167
168		route {
169			route_hdmi: route-hdmi {
170				status = "disabled";
171				logo,uboot = "logo.bmp";
172				logo,kernel = "logo_kernel.bmp";
173				logo,mode = "center";
174				charge_logo,mode = "center";
175				connect = <&vopb_out_hdmi>;
176			};
177
178			route_edp: route-edp {
179				status = "disabled";
180				logo,uboot = "logo.bmp";
181				logo,kernel = "logo_kernel.bmp";
182				logo,mode = "center";
183				charge_logo,mode = "center";
184				connect = <&vopl_out_edp>;
185			};
186
187			route_dsi0: route-dsi0 {
188				status = "disabled";
189				logo,uboot = "logo.bmp";
190				logo,kernel = "logo_kernel.bmp";
191				logo,mode = "center";
192				charge_logo,mode = "center";
193				connect = <&vopl_out_dsi0>;
194			};
195
196			route_lvds: route-lvds {
197				status = "disabled";
198				logo,uboot = "logo.bmp";
199				logo,kernel = "logo_kernel.bmp";
200				logo,mode = "center";
201				charge_logo,mode = "center";
202				connect = <&vopl_out_lvds>;
203			};
204		};
205	};
206
207	sdmmc: dwmmc@ff0c0000 {
208		compatible = "rockchip,rk3288-dw-mshc";
209		max-frequency = <150000000>;
210		clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
211			 <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
212		clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
213		fifo-depth = <0x100>;
214		cd-gpios = <&gpio6 RK_PC6 GPIO_ACTIVE_HIGH>;
215		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
216		reg = <0xff0c0000 0x4000>;
217		status = "disabled";
218	};
219
220	sdio0: dwmmc@ff0d0000 {
221		compatible = "rockchip,rk3288-dw-mshc";
222		max-frequency = <150000000>;
223		clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>,
224			 <&cru SCLK_SDIO0_DRV>, <&cru SCLK_SDIO0_SAMPLE>;
225		clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
226		fifo-depth = <0x100>;
227		interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
228		reg = <0xff0d0000 0x4000>;
229		status = "disabled";
230	};
231
232	sdio1: dwmmc@ff0e0000 {
233		compatible = "rockchip,rk3288-dw-mshc";
234		max-frequency = <150000000>;
235		clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>,
236			 <&cru SCLK_SDIO1_DRV>, <&cru SCLK_SDIO1_SAMPLE>;
237		clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
238		fifo-depth = <0x100>;
239		interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
240		reg = <0xff0e0000 0x4000>;
241		status = "disabled";
242	};
243
244	emmc: dwmmc@ff0f0000 {
245		compatible = "rockchip,rk3288-dw-mshc";
246		max-frequency = <150000000>;
247		clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
248			 <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
249		clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
250		fifo-depth = <0x100>;
251		interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
252		reg = <0xff0f0000 0x4000>;
253		status = "disabled";
254	};
255
256	saradc: saradc@ff100000 {
257		compatible = "rockchip,saradc";
258		reg = <0xff100000 0x100>;
259		interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
260		#io-channel-cells = <1>;
261		clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
262		clock-names = "saradc", "apb_pclk";
263		status = "disabled";
264	};
265
266	spi0: spi@ff110000 {
267		compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
268		clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
269		clock-names = "spiclk", "apb_pclk";
270		dmas = <&dmac_peri 11>, <&dmac_peri 12>;
271		dma-names = "tx", "rx";
272		interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
273		pinctrl-names = "default";
274		pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
275		reg = <0xff110000 0x1000>;
276		#address-cells = <1>;
277		#size-cells = <0>;
278		status = "disabled";
279	};
280
281	spi1: spi@ff120000 {
282		compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
283		clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
284		clock-names = "spiclk", "apb_pclk";
285		dmas = <&dmac_peri 13>, <&dmac_peri 14>;
286		dma-names = "tx", "rx";
287		interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
288		pinctrl-names = "default";
289		pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
290		reg = <0xff120000 0x1000>;
291		#address-cells = <1>;
292		#size-cells = <0>;
293		status = "disabled";
294	};
295
296	spi2: spi@ff130000 {
297		compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
298		clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
299		clock-names = "spiclk", "apb_pclk";
300		dmas = <&dmac_peri 15>, <&dmac_peri 16>;
301		dma-names = "tx", "rx";
302		interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
303		pinctrl-names = "default";
304		pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
305		reg = <0xff130000 0x1000>;
306		#address-cells = <1>;
307		#size-cells = <0>;
308		status = "disabled";
309	};
310
311	i2c1: i2c@ff140000 {
312		compatible = "rockchip,rk3288-i2c";
313		reg = <0xff140000 0x1000>;
314		interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
315		#address-cells = <1>;
316		#size-cells = <0>;
317		clock-names = "i2c";
318		clocks = <&cru PCLK_I2C1>;
319		pinctrl-names = "default";
320		pinctrl-0 = <&i2c1_xfer>;
321		status = "disabled";
322	};
323
324	i2c3: i2c@ff150000 {
325		compatible = "rockchip,rk3288-i2c";
326		reg = <0xff150000 0x1000>;
327		interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
328		#address-cells = <1>;
329		#size-cells = <0>;
330		clock-names = "i2c";
331		clocks = <&cru PCLK_I2C3>;
332		pinctrl-names = "default";
333		pinctrl-0 = <&i2c3_xfer>;
334		status = "disabled";
335	};
336
337	i2c4: i2c@ff160000 {
338		compatible = "rockchip,rk3288-i2c";
339		reg = <0xff160000 0x1000>;
340		interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
341		#address-cells = <1>;
342		#size-cells = <0>;
343		clock-names = "i2c";
344		clocks = <&cru PCLK_I2C4>;
345		pinctrl-names = "default";
346		pinctrl-0 = <&i2c4_xfer>;
347		status = "disabled";
348	};
349
350	i2c5: i2c@ff170000 {
351		compatible = "rockchip,rk3288-i2c";
352		reg = <0xff170000 0x1000>;
353		interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
354		#address-cells = <1>;
355		#size-cells = <0>;
356		clock-names = "i2c";
357		clocks = <&cru PCLK_I2C5>;
358		pinctrl-names = "default";
359		pinctrl-0 = <&i2c5_xfer>;
360		status = "disabled";
361	};
362
363	uart0: serial@ff180000 {
364		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
365		reg = <0xff180000 0x100>;
366		interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
367		reg-shift = <2>;
368		reg-io-width = <4>;
369		clock-frequency = <24000000>;
370		clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
371		clock-names = "baudclk", "apb_pclk";
372		pinctrl-names = "default";
373		pinctrl-0 = <&uart0_xfer>;
374		status = "disabled";
375	};
376
377	uart1: serial@ff190000 {
378		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
379		reg = <0xff190000 0x100>;
380		interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
381		reg-shift = <2>;
382		reg-io-width = <4>;
383		clock-frequency = <24000000>;
384		clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
385		clock-names = "baudclk", "apb_pclk";
386		pinctrl-names = "default";
387		pinctrl-0 = <&uart1_xfer>;
388		status = "disabled";
389	};
390
391	uart2: serial@ff690000 {
392		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
393		reg = <0xff690000 0x100>;
394		interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
395		reg-shift = <2>;
396		reg-io-width = <4>;
397		clock-frequency = <24000000>;
398		clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
399		clock-names = "baudclk", "apb_pclk";
400		pinctrl-names = "default";
401		pinctrl-0 = <&uart2_xfer>;
402		status = "disabled";
403	};
404	uart3: serial@ff1b0000 {
405		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
406		reg = <0xff1b0000 0x100>;
407		interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
408		reg-shift = <2>;
409		reg-io-width = <4>;
410		clock-frequency = <24000000>;
411		clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
412		clock-names = "baudclk", "apb_pclk";
413		pinctrl-names = "default";
414		pinctrl-0 = <&uart3_xfer>;
415		status = "disabled";
416	};
417
418	uart4: serial@ff1c0000 {
419		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
420		reg = <0xff1c0000 0x100>;
421		interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
422		reg-shift = <2>;
423		reg-io-width = <4>;
424		clock-frequency = <24000000>;
425		clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
426		clock-names = "baudclk", "apb_pclk";
427		pinctrl-names = "default";
428		pinctrl-0 = <&uart4_xfer>;
429		status = "disabled";
430	};
431
432	thermal: thermal-zones {
433		#include "rk3288-thermal.dtsi"
434	};
435
436	tsadc: tsadc@ff280000 {
437		compatible = "rockchip,rk3288-tsadc";
438		reg = <0xff280000 0x100>;
439		interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
440		clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
441		clock-names = "tsadc", "apb_pclk";
442		resets = <&cru SRST_TSADC>;
443		reset-names = "tsadc-apb";
444		pinctrl-names = "otp_out";
445		pinctrl-0 = <&otp_out>;
446		#thermal-sensor-cells = <1>;
447		hw-shut-temp = <125000>;
448		status = "disabled";
449	};
450
451	gmac: ethernet@ff290000 {
452		compatible = "rockchip,rk3288-gmac";
453		reg = <0xff290000 0x10000>;
454		interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
455		interrupt-names = "macirq";
456		rockchip,grf = <&grf>;
457		clocks = <&cru SCLK_MAC>,
458			<&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>,
459			<&cru SCLK_MACREF>, <&cru SCLK_MACREF_OUT>,
460			<&cru ACLK_GMAC>, <&cru PCLK_GMAC>;
461		clock-names = "stmmaceth",
462			"mac_clk_rx", "mac_clk_tx",
463			"clk_mac_ref", "clk_mac_refout",
464			"aclk_mac", "pclk_mac";
465	};
466
467	usb_host0_ehci: usb@ff500000 {
468		compatible = "generic-ehci";
469		reg = <0xff500000 0x100>;
470		interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
471		clocks = <&cru HCLK_USBHOST0>;
472		clock-names = "usbhost";
473		phys = <&usbphy1>;
474		phy-names = "usb";
475		status = "disabled";
476	};
477
478	/* NOTE: ohci@ff520000 doesn't actually work on hardware */
479
480	usb_host1: usb@ff540000 {
481		compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
482				"snps,dwc2";
483		reg = <0xff540000 0x40000>;
484		interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
485		clocks = <&cru HCLK_USBHOST1>;
486		clock-names = "otg";
487		phys = <&usbphy2>;
488		phy-names = "usb2-phy";
489		status = "disabled";
490	};
491
492	usb_otg: usb@ff580000 {
493		compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
494				"snps,dwc2";
495		reg = <0xff580000 0x40000>;
496		interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
497		clocks = <&cru HCLK_OTG0>;
498		clock-names = "otg";
499		dr_mode = "otg";
500		phys = <&usbphy0>;
501		phy-names = "usb2-phy";
502		status = "disabled";
503	};
504
505	usb_hsic: usb@ff5c0000 {
506		compatible = "generic-ehci";
507		reg = <0xff5c0000 0x100>;
508		interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
509		clocks = <&cru HCLK_HSIC>;
510		clock-names = "usbhost";
511		status = "disabled";
512	};
513
514	dmc: dmc@ff610000 {
515		compatible = "rockchip,rk3288-dmc", "syscon";
516		rockchip,cru = <&cru>;
517		rockchip,grf = <&grf>;
518		rockchip,pmu = <&pmu>;
519		rockchip,sgrf = <&sgrf>;
520		rockchip,noc = <&noc>;
521		reg = <0xff610000 0x3fc
522		       0xff620000 0x294
523		       0xff630000 0x3fc
524		       0xff640000 0x294>;
525		rockchip,sram = <&ddr_sram>;
526		clocks = <&cru PCLK_DDRUPCTL0>, <&cru PCLK_PUBL0>,
527			 <&cru PCLK_DDRUPCTL1>, <&cru PCLK_PUBL1>,
528			 <&cru ARMCLK>;
529		clock-names = "pclk_ddrupctl0", "pclk_publ0",
530			      "pclk_ddrupctl1", "pclk_publ1",
531			      "arm_clk";
532	};
533
534	i2c0: i2c@ff650000 {
535		compatible = "rockchip,rk3288-i2c";
536		reg = <0xff650000 0x1000>;
537		interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
538		#address-cells = <1>;
539		#size-cells = <0>;
540		clock-names = "i2c";
541		clocks = <&cru PCLK_I2C0>;
542		pinctrl-names = "default";
543		pinctrl-0 = <&i2c0_xfer>;
544		status = "disabled";
545	};
546
547	i2c2: i2c@ff660000 {
548		compatible = "rockchip,rk3288-i2c";
549		reg = <0xff660000 0x1000>;
550		interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
551		#address-cells = <1>;
552		#size-cells = <0>;
553		clock-names = "i2c";
554		clocks = <&cru PCLK_I2C2>;
555		pinctrl-names = "default";
556		pinctrl-0 = <&i2c2_xfer>;
557		status = "disabled";
558	};
559
560	pwm0: pwm@ff680000 {
561		compatible = "rockchip,rk3288-pwm";
562		reg = <0xff680000 0x10>;
563		#pwm-cells = <3>;
564		pinctrl-names = "active";
565		pinctrl-0 = <&pwm0_pin>;
566		clocks = <&cru PCLK_PWM>;
567		clock-names = "pwm";
568		rockchip,grf = <&grf>;
569		status = "disabled";
570	};
571
572	pwm1: pwm@ff680010 {
573		compatible = "rockchip,rk3288-pwm";
574		reg = <0xff680010 0x10>;
575		#pwm-cells = <3>;
576		pinctrl-names = "active";
577		pinctrl-0 = <&pwm1_pin>;
578		clocks = <&cru PCLK_PWM>;
579		clock-names = "pwm";
580		rockchip,grf = <&grf>;
581		status = "disabled";
582	};
583
584	pwm2: pwm@ff680020 {
585		compatible = "rockchip,rk3288-pwm";
586		reg = <0xff680020 0x10>;
587		#pwm-cells = <3>;
588		pinctrl-names = "active";
589		pinctrl-0 = <&pwm2_pin>;
590		clocks = <&cru PCLK_PWM>;
591		clock-names = "pwm";
592		rockchip,grf = <&grf>;
593		status = "disabled";
594	};
595
596	pwm3: pwm@ff680030 {
597		compatible = "rockchip,rk3288-pwm";
598		reg = <0xff680030 0x10>;
599		#pwm-cells = <2>;
600		pinctrl-names = "active";
601		pinctrl-0 = <&pwm3_pin>;
602		clocks = <&cru PCLK_PWM>;
603		clock-names = "pwm";
604		rockchip,grf = <&grf>;
605		status = "disabled";
606	};
607
608	bus_intmem@ff700000 {
609		compatible = "mmio-sram";
610		reg = <0xff700000 0x18000>;
611		#address-cells = <1>;
612		#size-cells = <1>;
613		ranges = <0 0xff700000 0x18000>;
614		smp-sram@0 {
615			compatible = "rockchip,rk3066-smp-sram";
616			reg = <0x00 0x10>;
617		};
618		ddr_sram: ddr-sram@1000 {
619			compatible = "rockchip,rk3288-ddr-sram";
620			reg = <0x1000 0x4000>;
621		};
622	};
623
624	sram@ff720000 {
625		compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
626		reg = <0xff720000 0x1000>;
627	};
628
629	pmu: power-management@ff730000 {
630		compatible = "rockchip,rk3288-pmu", "syscon";
631		reg = <0xff730000 0x100>;
632	};
633
634	sgrf: syscon@ff740000 {
635		compatible = "rockchip,rk3288-sgrf", "syscon";
636		reg = <0xff740000 0x1000>;
637	};
638
639	cru: clock-controller@ff760000 {
640		compatible = "rockchip,rk3288-cru";
641		reg = <0xff760000 0x1000>;
642		rockchip,grf = <&grf>;
643		#clock-cells = <1>;
644		#reset-cells = <1>;
645		assigned-clocks = <&cru PLL_GPLL>, <&cru PLL_CPLL>,
646				  <&cru PLL_NPLL>, <&cru ACLK_CPU>,
647				  <&cru HCLK_CPU>, <&cru PCLK_CPU>,
648				  <&cru ACLK_PERI>, <&cru HCLK_PERI>,
649				  <&cru PCLK_PERI>;
650		assigned-clock-rates = <594000000>, <400000000>,
651				       <500000000>, <300000000>,
652				       <150000000>, <75000000>,
653				       <300000000>, <150000000>,
654				       <75000000>;
655	};
656
657	grf: syscon@ff770000 {
658		compatible = "rockchip,rk3288-grf", "syscon";
659		reg = <0xff770000 0x1000>;
660	};
661
662	wdt: watchdog@ff800000 {
663		compatible = "rockchip,rk3288-wdt", "snps,dw-wdt";
664		reg = <0xff800000 0x100>;
665		clocks = <&cru PCLK_WDT>;
666		interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
667		status = "disabled";
668	};
669
670	spdif: sound@ff88b0000 {
671		compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
672		reg = <0xff8b0000 0x10000>;
673		#sound-dai-cells = <0>;
674		clock-names = "hclk", "mclk";
675		clocks = <&cru HCLK_SPDIF8CH>, <&cru SCLK_SPDIF8CH>;
676		dmas = <&dmac_bus_s 3>;
677		dma-names = "tx";
678		interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
679		pinctrl-names = "default";
680		pinctrl-0 = <&spdif_tx>;
681		rockchip,grf = <&grf>;
682		status = "disabled";
683	};
684
685	i2s: i2s@ff890000 {
686		compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";
687		reg = <0xff890000 0x10000>;
688		interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
689		#address-cells = <1>;
690		#size-cells = <0>;
691		dmas = <&dmac_bus_s 0>, <&dmac_bus_s 1>;
692		dma-names = "tx", "rx";
693		clock-names = "i2s_hclk", "i2s_clk";
694		clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
695		pinctrl-names = "default";
696		pinctrl-0 = <&i2s0_bus>;
697		status = "disabled";
698	};
699
700	vopb: vop@ff930000 {
701		compatible = "rockchip,rk3288-vop-big";
702		reg = <0xff930000 0x19c>;
703		interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
704		clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>;
705		clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
706		resets = <&cru SRST_LCDC0_AXI>, <&cru SRST_LCDC0_AHB>, <&cru SRST_LCDC0_DCLK>;
707		reset-names = "axi", "ahb", "dclk";
708		iommus = <&vopb_mmu>;
709		power-domains = <&power RK3288_PD_VIO>;
710		status = "disabled";
711		vopb_out: port {
712			#address-cells = <1>;
713			#size-cells = <0>;
714			vopb_out_edp: endpoint@0 {
715				reg = <0>;
716				remote-endpoint = <&edp_in_vopb>;
717			};
718			vopb_out_hdmi: endpoint@1 {
719				reg = <1>;
720				remote-endpoint = <&hdmi_in_vopb>;
721			};
722			vopb_out_lvds: endpoint@2 {
723				reg = <2>;
724				remote-endpoint = <&lvds_in_vopb>;
725			};
726			vopb_out_dsi0: endpoint@3 {
727				reg = <3>;
728				remote-endpoint = <&dsi0_in_vopb>;
729			};
730
731		};
732	};
733
734	vopb_mmu: iommu@ff930300 {
735		compatible = "rockchip,iommu";
736		reg = <0xff930300 0x100>;
737		interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
738		interrupt-names = "vopb_mmu";
739		power-domains = <&power RK3288_PD_VIO>;
740		#iommu-cells = <0>;
741		status = "disabled";
742	};
743
744	vopl: vop@ff940000 {
745		compatible = "rockchip,rk3288-vop-lit";
746		reg = <0xff940000 0x19c>;
747		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
748		clocks = <&cru ACLK_VOP1>, <&cru DCLK_VOP1>, <&cru HCLK_VOP1>;
749		clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
750		resets = <&cru SRST_LCDC1_AXI>, <&cru SRST_LCDC1_AHB>, <&cru SRST_LCDC1_DCLK>;
751		reset-names = "axi", "ahb", "dclk";
752		iommus = <&vopl_mmu>;
753		power-domains = <&power RK3288_PD_VIO>;
754		status = "disabled";
755		vopl_out: port {
756			#address-cells = <1>;
757			#size-cells = <0>;
758			vopl_out_edp: endpoint@0 {
759				reg = <0>;
760				remote-endpoint = <&edp_in_vopl>;
761			};
762			vopl_out_hdmi: endpoint@1 {
763				reg = <1>;
764				remote-endpoint = <&hdmi_in_vopl>;
765			};
766			vopl_out_lvds: endpoint@2 {
767				reg = <2>;
768				remote-endpoint = <&lvds_in_vopl>;
769			};
770			vopl_out_dsi0: endpoint@3 {
771				reg = <3>;
772				remote-endpoint = <&dsi0_in_vopl>;
773			};
774
775		};
776	};
777
778	vopl_mmu: iommu@ff940300 {
779		compatible = "rockchip,iommu";
780		reg = <0xff940300 0x100>;
781		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
782		interrupt-names = "vopl_mmu";
783		power-domains = <&power RK3288_PD_VIO>;
784		#iommu-cells = <0>;
785		status = "disabled";
786	};
787
788	edp: edp@ff970000 {
789		compatible = "rockchip,rk3288-dp";
790		reg = <0xff970000 0x4000>;
791		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
792		clocks = <&cru SCLK_EDP>, <&cru SCLK_EDP_24M>, <&cru PCLK_EDP_CTRL>;
793		rockchip,grf = <&grf>;
794		clock-names = "clk_edp", "clk_edp_24m", "pclk_edp";
795		resets = <&cru 111>;
796		reset-names = "edp";
797		power-domains = <&power RK3288_PD_VIO>;
798		status = "disabled";
799		ports {
800			#address-cells = <1>;
801			#size-cells = <0>;
802
803			edp_in: port {
804				#address-cells = <1>;
805				#size-cells = <0>;
806				edp_in_vopb: endpoint@0 {
807					reg = <0>;
808					remote-endpoint = <&vopb_out_edp>;
809				};
810				edp_in_vopl: endpoint@1 {
811					reg = <1>;
812					remote-endpoint = <&vopl_out_edp>;
813				};
814			};
815		};
816	};
817
818	hdmi: hdmi@ff980000 {
819		compatible = "rockchip,rk3288-dw-hdmi";
820		reg = <0xff980000 0x20000>;
821		reg-io-width = <4>;
822		rockchip,grf = <&grf>;
823		interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
824		clocks = <&cru  PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>;
825		clock-names = "iahb", "isfr";
826		pinctrl-names = "default";
827		pinctrl-0 = <&hdmi_ddc>;
828		status = "disabled";
829		ports {
830			hdmi_in: port {
831				#address-cells = <1>;
832				#size-cells = <0>;
833				hdmi_in_vopb: endpoint@0 {
834					reg = <0>;
835					remote-endpoint = <&vopb_out_hdmi>;
836				};
837				hdmi_in_vopl: endpoint@1 {
838					reg = <1>;
839					remote-endpoint = <&vopl_out_hdmi>;
840				};
841			};
842		};
843	};
844
845	lvds: lvds@ff96c000 {
846		compatible = "rockchip,rk3288-lvds";
847		reg = <0xff96c000 0x4000>;
848		clocks = <&cru PCLK_LVDS_PHY>;
849		clock-names = "pclk_lvds";
850		pinctrl-names = "default";
851		pinctrl-0 = <&lcdc0_ctl>;
852		rockchip,grf = <&grf>;
853		status = "disabled";
854		ports {
855			#address-cells = <1>;
856			#size-cells = <0>;
857			lvds_in: port@0 {
858				reg = <0>;
859				#address-cells = <1>;
860				#size-cells = <0>;
861				lvds_in_vopb: endpoint@0 {
862					reg = <0>;
863					remote-endpoint = <&vopb_out_lvds>;
864				};
865				lvds_in_vopl: endpoint@1 {
866					reg = <1>;
867					remote-endpoint = <&vopl_out_lvds>;
868				};
869			};
870		};
871	};
872
873	dsi0: mipi@ff960000 {
874		compatible = "rockchip,rk3288-mipi-dsi", "snps,dw-mipi-dsi";
875		reg = <0xff960000 0x4000>;
876		interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
877		clocks = <&cru SCLK_MIPIDSI_24M>, <&cru PCLK_MIPI_DSI0>;
878		clock-names = "ref", "pclk";
879		resets = <&cru SRST_MIPIDSI0>;
880		reset-names = "apb";
881		power-domains = <&power RK3288_PD_VIO>;
882		rockchip,grf = <&grf>;
883		#address-cells = <1>;
884		#size-cells = <0>;
885		status = "disabled";
886		ports {
887			#address-cells = <1>;
888			#size-cells = <0>;
889			reg = <1>;
890			mipi_in: port {
891				#address-cells = <1>;
892				#size-cells = <0>;
893				dsi0_in_vopb: endpoint@0 {
894					reg = <0>;
895					remote-endpoint = <&vopb_out_dsi0>;
896				};
897				dsi0_in_vopl: endpoint@1 {
898					reg = <1>;
899					remote-endpoint = <&vopl_out_dsi0>;
900				};
901			};
902		};
903	};
904
905	hdmi_audio: hdmi_audio {
906		compatible = "rockchip,rk3288-hdmi-audio";
907		i2s-controller = <&i2s>;
908		status = "disable";
909	};
910
911	vpu: video-codec@ff9a0000 {
912		compatible = "rockchip,rk3288-vpu";
913		reg = <0xff9a0000 0x800>;
914		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
915				<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
916		interrupt-names = "vepu", "vdpu";
917		clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
918		clock-names = "aclk_vcodec", "hclk_vcodec";
919		power-domains = <&power RK3288_PD_VIDEO>;
920		iommus = <&vpu_mmu>;
921	};
922
923	vpu_mmu: iommu@ff9a0800 {
924		compatible = "rockchip,iommu";
925		reg = <0xff9a0800 0x100>;
926		interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
927		interrupt-names = "vpu_mmu";
928		power-domains = <&power RK3288_PD_VIDEO>;
929		#iommu-cells = <0>;
930	};
931
932	gpu: gpu@ffa30000 {
933		compatible = "arm,malit764",
934			     "arm,malit76x",
935			     "arm,malit7xx",
936			     "arm,mali-midgard";
937		reg = <0xffa30000 0x10000>;
938		interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
939			     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
940			     <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
941		interrupt-names = "JOB", "MMU", "GPU";
942		clocks = <&cru ACLK_GPU>;
943		clock-names = "aclk_gpu";
944		operating-points = <
945			/* KHz uV */
946			100000 950000
947			200000 950000
948			300000 1000000
949			400000 1100000
950			/* 500000 1200000 - See crosbug.com/p/33857 */
951			600000 1250000
952		>;
953		power-domains = <&power RK3288_PD_GPU>;
954		status = "disabled";
955	};
956
957	noc: syscon@ffac0000 {
958		compatible = "rockchip,rk3288-noc", "syscon";
959		reg = <0xffac0000 0x2000>;
960	};
961
962	efuse: efuse@ffb40000 {
963		compatible = "rockchip,rk3288-efuse";
964		reg = <0xffb40000 0x10000>;
965		status = "disabled";
966	};
967
968	gic: interrupt-controller@ffc01000 {
969		compatible = "arm,gic-400";
970		interrupt-controller;
971		#interrupt-cells = <3>;
972		#address-cells = <0>;
973
974		reg = <0xffc01000 0x1000>,
975		      <0xffc02000 0x1000>,
976		      <0xffc04000 0x2000>,
977		      <0xffc06000 0x2000>;
978		interrupts = <GIC_PPI 9 0xf04>;
979	};
980
981	cpuidle: cpuidle {
982		compatible = "rockchip,rk3288-cpuidle";
983	};
984
985	usbphy: phy {
986		compatible = "rockchip,rk3288-usb-phy";
987		rockchip,grf = <&grf>;
988		#address-cells = <1>;
989		#size-cells = <0>;
990		status = "disabled";
991
992		usbphy0: usb-phy0 {
993			#phy-cells = <0>;
994			reg = <0x320>;
995			clocks = <&cru SCLK_OTGPHY0>;
996			clock-names = "phyclk";
997		};
998
999		usbphy1: usb-phy1 {
1000			#phy-cells = <0>;
1001			reg = <0x334>;
1002			clocks = <&cru SCLK_OTGPHY1>;
1003			clock-names = "phyclk";
1004		};
1005
1006		usbphy2: usb-phy2 {
1007			#phy-cells = <0>;
1008			reg = <0x348>;
1009			clocks = <&cru SCLK_OTGPHY2>;
1010			clock-names = "phyclk";
1011		};
1012	};
1013
1014	pinctrl: pinctrl {
1015		compatible = "rockchip,rk3288-pinctrl";
1016		rockchip,grf = <&grf>;
1017		rockchip,pmu = <&pmu>;
1018		#address-cells = <1>;
1019		#size-cells = <1>;
1020		ranges;
1021
1022		gpio0: gpio0@ff750000 {
1023			compatible = "rockchip,gpio-bank";
1024			reg =	<0xff750000 0x100>;
1025			interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
1026			clocks = <&cru PCLK_GPIO0>;
1027
1028			gpio-controller;
1029			#gpio-cells = <2>;
1030
1031			interrupt-controller;
1032			#interrupt-cells = <2>;
1033		};
1034
1035		gpio1: gpio1@ff780000 {
1036			compatible = "rockchip,gpio-bank";
1037			reg = <0xff780000 0x100>;
1038			interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
1039			clocks = <&cru PCLK_GPIO1>;
1040
1041			gpio-controller;
1042			#gpio-cells = <2>;
1043
1044			interrupt-controller;
1045			#interrupt-cells = <2>;
1046		};
1047
1048		gpio2: gpio2@ff790000 {
1049			compatible = "rockchip,gpio-bank";
1050			reg = <0xff790000 0x100>;
1051			interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
1052			clocks = <&cru PCLK_GPIO2>;
1053
1054			gpio-controller;
1055			#gpio-cells = <2>;
1056
1057			interrupt-controller;
1058			#interrupt-cells = <2>;
1059		};
1060
1061		gpio3: gpio3@ff7a0000 {
1062			compatible = "rockchip,gpio-bank";
1063			reg = <0xff7a0000 0x100>;
1064			interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
1065			clocks = <&cru PCLK_GPIO3>;
1066
1067			gpio-controller;
1068			#gpio-cells = <2>;
1069
1070			interrupt-controller;
1071			#interrupt-cells = <2>;
1072		};
1073
1074		gpio4: gpio4@ff7b0000 {
1075			compatible = "rockchip,gpio-bank";
1076			reg = <0xff7b0000 0x100>;
1077			interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
1078			clocks = <&cru PCLK_GPIO4>;
1079
1080			gpio-controller;
1081			#gpio-cells = <2>;
1082
1083			interrupt-controller;
1084			#interrupt-cells = <2>;
1085		};
1086
1087		gpio5: gpio5@ff7c0000 {
1088			compatible = "rockchip,gpio-bank";
1089			reg = <0xff7c0000 0x100>;
1090			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
1091			clocks = <&cru PCLK_GPIO5>;
1092
1093			gpio-controller;
1094			#gpio-cells = <2>;
1095
1096			interrupt-controller;
1097			#interrupt-cells = <2>;
1098		};
1099
1100		gpio6: gpio6@ff7d0000 {
1101			compatible = "rockchip,gpio-bank";
1102			reg = <0xff7d0000 0x100>;
1103			interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
1104			clocks = <&cru PCLK_GPIO6>;
1105
1106			gpio-controller;
1107			#gpio-cells = <2>;
1108
1109			interrupt-controller;
1110			#interrupt-cells = <2>;
1111		};
1112
1113		gpio7: gpio7@ff7e0000 {
1114			compatible = "rockchip,gpio-bank";
1115			reg = <0xff7e0000 0x100>;
1116			interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
1117			clocks = <&cru PCLK_GPIO7>;
1118
1119			gpio-controller;
1120			#gpio-cells = <2>;
1121
1122			interrupt-controller;
1123			#interrupt-cells = <2>;
1124		};
1125
1126		gpio8: gpio8@ff7f0000 {
1127			compatible = "rockchip,gpio-bank";
1128			reg = <0xff7f0000 0x100>;
1129			interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
1130			clocks = <&cru PCLK_GPIO8>;
1131
1132			gpio-controller;
1133			#gpio-cells = <2>;
1134
1135			interrupt-controller;
1136			#interrupt-cells = <2>;
1137		};
1138
1139		hdmi {
1140			hdmi_ddc: hdmi-ddc {
1141				rockchip,pins = <7 19 RK_FUNC_2 &pcfg_pull_none>,
1142						<7 20 RK_FUNC_2 &pcfg_pull_none>;
1143			};
1144		};
1145
1146		pcfg_pull_up: pcfg-pull-up {
1147			bias-pull-up;
1148		};
1149
1150		pcfg_pull_down: pcfg-pull-down {
1151			bias-pull-down;
1152		};
1153
1154		pcfg_pull_none: pcfg-pull-none {
1155			bias-disable;
1156		};
1157
1158		pcfg_pull_none_12ma: pcfg-pull-none-12ma {
1159			bias-disable;
1160			drive-strength = <12>;
1161		};
1162
1163		sleep {
1164			global_pwroff: global-pwroff {
1165				rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>;
1166			};
1167
1168			ddrio_pwroff: ddrio-pwroff {
1169				rockchip,pins = <0 1 RK_FUNC_1 &pcfg_pull_none>;
1170			};
1171
1172			ddr0_retention: ddr0-retention {
1173				rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_up>;
1174			};
1175
1176			ddr1_retention: ddr1-retention {
1177				rockchip,pins = <0 3 RK_FUNC_1 &pcfg_pull_up>;
1178			};
1179		};
1180
1181		i2c0 {
1182			i2c0_xfer: i2c0-xfer {
1183				rockchip,pins = <0 15 RK_FUNC_1 &pcfg_pull_none>,
1184						<0 16 RK_FUNC_1 &pcfg_pull_none>;
1185			};
1186		};
1187
1188		i2c1 {
1189			i2c1_xfer: i2c1-xfer {
1190				rockchip,pins = <8 4 RK_FUNC_1 &pcfg_pull_none>,
1191						<8 5 RK_FUNC_1 &pcfg_pull_none>;
1192			};
1193		};
1194
1195		i2c2 {
1196			i2c2_xfer: i2c2-xfer {
1197				rockchip,pins = <6 9 RK_FUNC_1 &pcfg_pull_none>,
1198						<6 10 RK_FUNC_1 &pcfg_pull_none>;
1199			};
1200		};
1201
1202		i2c3 {
1203			i2c3_xfer: i2c3-xfer {
1204				rockchip,pins = <2 16 RK_FUNC_1 &pcfg_pull_none>,
1205						<2 17 RK_FUNC_1 &pcfg_pull_none>;
1206			};
1207		};
1208
1209		i2c4 {
1210			i2c4_xfer: i2c4-xfer {
1211				rockchip,pins = <7 17 RK_FUNC_1 &pcfg_pull_none>,
1212						<7 18 RK_FUNC_1 &pcfg_pull_none>;
1213			};
1214		};
1215
1216		i2c5 {
1217			i2c5_xfer: i2c5-xfer {
1218				rockchip,pins = <7 19 RK_FUNC_1 &pcfg_pull_none>,
1219						<7 20 RK_FUNC_1 &pcfg_pull_none>;
1220			};
1221		};
1222
1223		i2s0 {
1224			i2s0_bus: i2s0-bus {
1225				rockchip,pins = <6 0 RK_FUNC_1 &pcfg_pull_none>,
1226						<6 1 RK_FUNC_1 &pcfg_pull_none>,
1227						<6 2 RK_FUNC_1 &pcfg_pull_none>,
1228						<6 3 RK_FUNC_1 &pcfg_pull_none>,
1229						<6 4 RK_FUNC_1 &pcfg_pull_none>,
1230						<6 8 RK_FUNC_1 &pcfg_pull_none>;
1231			};
1232		};
1233
1234		lcdc0 {
1235			lcdc0_ctl: lcdc0-ctl {
1236				rockchip,pins = <1 24 RK_FUNC_1 &pcfg_pull_none>,
1237						<1 25 RK_FUNC_1 &pcfg_pull_none>,
1238						<1 26 RK_FUNC_1 &pcfg_pull_none>,
1239						<1 27 RK_FUNC_1 &pcfg_pull_none>;
1240			};
1241		};
1242
1243		sdmmc {
1244			sdmmc_clk: sdmmc-clk {
1245				rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none>;
1246			};
1247
1248			sdmmc_cmd: sdmmc-cmd {
1249				rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up>;
1250			};
1251
1252			sdmmc_cd: sdmcc-cd {
1253				rockchip,pins = <6 22 RK_FUNC_1 &pcfg_pull_up>;
1254			};
1255
1256			sdmmc_bus1: sdmmc-bus1 {
1257				rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>;
1258			};
1259
1260			sdmmc_bus4: sdmmc-bus4 {
1261				rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>,
1262						<6 17 RK_FUNC_1 &pcfg_pull_up>,
1263						<6 18 RK_FUNC_1 &pcfg_pull_up>,
1264						<6 19 RK_FUNC_1 &pcfg_pull_up>;
1265			};
1266		};
1267
1268		sdio0 {
1269			sdio0_bus1: sdio0-bus1 {
1270				rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>;
1271			};
1272
1273			sdio0_bus4: sdio0-bus4 {
1274				rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>,
1275						<4 21 RK_FUNC_1 &pcfg_pull_up>,
1276						<4 22 RK_FUNC_1 &pcfg_pull_up>,
1277						<4 23 RK_FUNC_1 &pcfg_pull_up>;
1278			};
1279
1280			sdio0_cmd: sdio0-cmd {
1281				rockchip,pins = <4 24 RK_FUNC_1 &pcfg_pull_up>;
1282			};
1283
1284			sdio0_clk: sdio0-clk {
1285				rockchip,pins = <4 25 RK_FUNC_1 &pcfg_pull_none>;
1286			};
1287
1288			sdio0_cd: sdio0-cd {
1289				rockchip,pins = <4 26 RK_FUNC_1 &pcfg_pull_up>;
1290			};
1291
1292			sdio0_wp: sdio0-wp {
1293				rockchip,pins = <4 27 RK_FUNC_1 &pcfg_pull_up>;
1294			};
1295
1296			sdio0_pwr: sdio0-pwr {
1297				rockchip,pins = <4 28 RK_FUNC_1 &pcfg_pull_up>;
1298			};
1299
1300			sdio0_bkpwr: sdio0-bkpwr {
1301				rockchip,pins = <4 29 RK_FUNC_1 &pcfg_pull_up>;
1302			};
1303
1304			sdio0_int: sdio0-int {
1305				rockchip,pins = <4 30 RK_FUNC_1 &pcfg_pull_up>;
1306			};
1307		};
1308
1309		sdio1 {
1310			sdio1_bus1: sdio1-bus1 {
1311				rockchip,pins = <3 24 RK_FUNC_4 &pcfg_pull_up>;
1312			};
1313
1314			sdio1_bus4: sdio1-bus4 {
1315				rockchip,pins = <3 24 RK_FUNC_4 &pcfg_pull_up>,
1316						<3 25 RK_FUNC_4 &pcfg_pull_up>,
1317						<3 26 RK_FUNC_4 &pcfg_pull_up>,
1318						<3 27 RK_FUNC_4 &pcfg_pull_up>;
1319			};
1320
1321			sdio1_cd: sdio1-cd {
1322				rockchip,pins = <3 28 RK_FUNC_4 &pcfg_pull_up>;
1323			};
1324
1325			sdio1_wp: sdio1-wp {
1326				rockchip,pins = <3 29 RK_FUNC_4 &pcfg_pull_up>;
1327			};
1328
1329			sdio1_bkpwr: sdio1-bkpwr {
1330				rockchip,pins = <3 30 RK_FUNC_4 &pcfg_pull_up>;
1331			};
1332
1333			sdio1_int: sdio1-int {
1334				rockchip,pins = <3 31 RK_FUNC_4 &pcfg_pull_up>;
1335			};
1336
1337			sdio1_cmd: sdio1-cmd {
1338				rockchip,pins = <4 6 RK_FUNC_4 &pcfg_pull_up>;
1339			};
1340
1341			sdio1_clk: sdio1-clk {
1342				rockchip,pins = <4 7 RK_FUNC_4 &pcfg_pull_none>;
1343			};
1344
1345			sdio1_pwr: sdio1-pwr {
1346				rockchip,pins = <4 9 RK_FUNC_4 &pcfg_pull_up>;
1347			};
1348		};
1349
1350		emmc {
1351			emmc_clk: emmc-clk {
1352				rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none>;
1353			};
1354
1355			emmc_cmd: emmc-cmd {
1356				rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_up>;
1357			};
1358
1359			emmc_pwr: emmc-pwr {
1360				rockchip,pins = <3 9 RK_FUNC_2 &pcfg_pull_up>;
1361			};
1362
1363			emmc_bus1: emmc-bus1 {
1364				rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>;
1365			};
1366
1367			emmc_bus4: emmc-bus4 {
1368				rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
1369						<3 1 RK_FUNC_2 &pcfg_pull_up>,
1370						<3 2 RK_FUNC_2 &pcfg_pull_up>,
1371						<3 3 RK_FUNC_2 &pcfg_pull_up>;
1372			};
1373
1374			emmc_bus8: emmc-bus8 {
1375				rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
1376						<3 1 RK_FUNC_2 &pcfg_pull_up>,
1377						<3 2 RK_FUNC_2 &pcfg_pull_up>,
1378						<3 3 RK_FUNC_2 &pcfg_pull_up>,
1379						<3 4 RK_FUNC_2 &pcfg_pull_up>,
1380						<3 5 RK_FUNC_2 &pcfg_pull_up>,
1381						<3 6 RK_FUNC_2 &pcfg_pull_up>,
1382						<3 7 RK_FUNC_2 &pcfg_pull_up>;
1383			};
1384		};
1385
1386		spi0 {
1387			spi0_clk: spi0-clk {
1388				rockchip,pins = <5 12 RK_FUNC_1 &pcfg_pull_up>;
1389			};
1390			spi0_cs0: spi0-cs0 {
1391				rockchip,pins = <5 13 RK_FUNC_1 &pcfg_pull_up>;
1392			};
1393			spi0_tx: spi0-tx {
1394				rockchip,pins = <5 14 RK_FUNC_1 &pcfg_pull_up>;
1395			};
1396			spi0_rx: spi0-rx {
1397				rockchip,pins = <5 15 RK_FUNC_1 &pcfg_pull_up>;
1398			};
1399			spi0_cs1: spi0-cs1 {
1400				rockchip,pins = <5 16 RK_FUNC_1 &pcfg_pull_up>;
1401			};
1402		};
1403		spi1 {
1404			spi1_clk: spi1-clk {
1405				rockchip,pins = <7 12 RK_FUNC_2 &pcfg_pull_up>;
1406			};
1407			spi1_cs0: spi1-cs0 {
1408				rockchip,pins = <7 13 RK_FUNC_2 &pcfg_pull_up>;
1409			};
1410			spi1_rx: spi1-rx {
1411				rockchip,pins = <7 14 RK_FUNC_2 &pcfg_pull_up>;
1412			};
1413			spi1_tx: spi1-tx {
1414				rockchip,pins = <7 15 RK_FUNC_2 &pcfg_pull_up>;
1415			};
1416		};
1417
1418		spi2 {
1419			spi2_cs1: spi2-cs1 {
1420				rockchip,pins = <8 3 RK_FUNC_1 &pcfg_pull_up>;
1421			};
1422			spi2_clk: spi2-clk {
1423				rockchip,pins = <8 6 RK_FUNC_1 &pcfg_pull_up>;
1424			};
1425			spi2_cs0: spi2-cs0 {
1426				rockchip,pins = <8 7 RK_FUNC_1 &pcfg_pull_up>;
1427			};
1428			spi2_rx: spi2-rx {
1429				rockchip,pins = <8 8 RK_FUNC_1 &pcfg_pull_up>;
1430			};
1431			spi2_tx: spi2-tx {
1432				rockchip,pins = <8 9 RK_FUNC_1 &pcfg_pull_up>;
1433			};
1434		};
1435
1436		uart0 {
1437			uart0_xfer: uart0-xfer {
1438				rockchip,pins = <4 16 RK_FUNC_1 &pcfg_pull_up>,
1439						<4 17 RK_FUNC_1 &pcfg_pull_none>;
1440			};
1441
1442			uart0_cts: uart0-cts {
1443				rockchip,pins = <4 18 RK_FUNC_1 &pcfg_pull_none>;
1444			};
1445
1446			uart0_rts: uart0-rts {
1447				rockchip,pins = <4 19 RK_FUNC_1 &pcfg_pull_none>;
1448			};
1449		};
1450
1451		uart1 {
1452			uart1_xfer: uart1-xfer {
1453				rockchip,pins = <5 8 RK_FUNC_1 &pcfg_pull_up>,
1454						<5 9 RK_FUNC_1 &pcfg_pull_none>;
1455			};
1456
1457			uart1_cts: uart1-cts {
1458				rockchip,pins = <5 10 RK_FUNC_1 &pcfg_pull_none>;
1459			};
1460
1461			uart1_rts: uart1-rts {
1462				rockchip,pins = <5 11 RK_FUNC_1 &pcfg_pull_none>;
1463			};
1464		};
1465
1466		uart2 {
1467			uart2_xfer: uart2-xfer {
1468				rockchip,pins = <7 22 RK_FUNC_1 &pcfg_pull_up>,
1469						<7 23 RK_FUNC_1 &pcfg_pull_none>;
1470			};
1471			/* no rts / cts for uart2 */
1472		};
1473
1474		uart3 {
1475			uart3_xfer: uart3-xfer {
1476				rockchip,pins = <7 7 RK_FUNC_1 &pcfg_pull_up>,
1477						<7 8 RK_FUNC_1 &pcfg_pull_none>;
1478			};
1479
1480			uart3_cts: uart3-cts {
1481				rockchip,pins = <7 9 RK_FUNC_1 &pcfg_pull_none>;
1482			};
1483
1484			uart3_rts: uart3-rts {
1485				rockchip,pins = <7 10 RK_FUNC_1 &pcfg_pull_none>;
1486			};
1487		};
1488
1489		uart4 {
1490			uart4_xfer: uart4-xfer {
1491				rockchip,pins = <5 12 3 &pcfg_pull_up>,
1492						<5 13 3 &pcfg_pull_none>;
1493			};
1494
1495			uart4_cts: uart4-cts {
1496				rockchip,pins = <5 14 3 &pcfg_pull_none>;
1497			};
1498
1499			uart4_rts: uart4-rts {
1500				rockchip,pins = <5 15 3 &pcfg_pull_none>;
1501			};
1502		};
1503
1504		tsadc {
1505			otp_out: otp-out {
1506				rockchip,pins = <0 10 RK_FUNC_1 &pcfg_pull_none>;
1507			};
1508		};
1509
1510		pwm0 {
1511			pwm0_pin: pwm0-pin {
1512				rockchip,pins = <7 0 RK_FUNC_1 &pcfg_pull_none>;
1513			};
1514		};
1515
1516		pwm1 {
1517			pwm1_pin: pwm1-pin {
1518				rockchip,pins = <7 1 RK_FUNC_1 &pcfg_pull_none>;
1519			};
1520		};
1521
1522		pwm2 {
1523			pwm2_pin: pwm2-pin {
1524				rockchip,pins = <7 22 RK_FUNC_3 &pcfg_pull_none>;
1525			};
1526		};
1527
1528		pwm3 {
1529			pwm3_pin: pwm3-pin {
1530				rockchip,pins = <7 23 RK_FUNC_3 &pcfg_pull_none>;
1531			};
1532		};
1533
1534		gmac {
1535			rgmii_pins: rgmii-pins {
1536				rockchip,pins = <3 30 3 &pcfg_pull_none>,
1537						<3 31 3 &pcfg_pull_none>,
1538						<3 26 3 &pcfg_pull_none>,
1539						<3 27 3 &pcfg_pull_none>,
1540						<3 28 3 &pcfg_pull_none_12ma>,
1541						<3 29 3 &pcfg_pull_none_12ma>,
1542						<3 24 3 &pcfg_pull_none_12ma>,
1543						<3 25 3 &pcfg_pull_none_12ma>,
1544						<4 0 3 &pcfg_pull_none>,
1545						<4 5 3 &pcfg_pull_none>,
1546						<4 6 3 &pcfg_pull_none>,
1547						<4 9 3 &pcfg_pull_none_12ma>,
1548						<4 4 3 &pcfg_pull_none_12ma>,
1549						<4 1 3 &pcfg_pull_none>,
1550						<4 3 3 &pcfg_pull_none>;
1551			};
1552
1553			rmii_pins: rmii-pins {
1554				rockchip,pins = <3 30 3 &pcfg_pull_none>,
1555						<3 31 3 &pcfg_pull_none>,
1556						<3 28 3 &pcfg_pull_none>,
1557						<3 29 3 &pcfg_pull_none>,
1558						<4 0 3 &pcfg_pull_none>,
1559						<4 5 3 &pcfg_pull_none>,
1560						<4 4 3 &pcfg_pull_none>,
1561						<4 1 3 &pcfg_pull_none>,
1562						<4 2 3 &pcfg_pull_none>,
1563						<4 3 3 &pcfg_pull_none>;
1564			};
1565		};
1566
1567		spdif {
1568			spdif_tx: spdif-tx {
1569				rockchip,pins = <RK_GPIO6 11 RK_FUNC_1 &pcfg_pull_none>;
1570			};
1571		};
1572	};
1573
1574	power: power-controller {
1575		compatible = "rockchip,rk3288-power-controller";
1576		#power-domain-cells = <1>;
1577		rockchip,pmu = <&pmu>;
1578		#address-cells = <1>;
1579		#size-cells = <0>;
1580
1581		pd_gpu {
1582			reg = <RK3288_PD_GPU>;
1583			clocks = <&cru ACLK_GPU>;
1584		};
1585
1586		pd_hevc {
1587			reg = <RK3288_PD_HEVC>;
1588			clocks = <&cru ACLK_HEVC>,
1589				 <&cru SCLK_HEVC_CABAC>,
1590				 <&cru SCLK_HEVC_CORE>,
1591				 <&cru HCLK_HEVC>;
1592		};
1593
1594		pd_vio {
1595			reg = <RK3288_PD_VIO>;
1596			clocks = <&cru ACLK_IEP>,
1597				 <&cru ACLK_ISP>,
1598				 <&cru ACLK_RGA>,
1599				 <&cru ACLK_VIP>,
1600				 <&cru ACLK_VOP0>,
1601				 <&cru ACLK_VOP1>,
1602				 <&cru DCLK_VOP0>,
1603				 <&cru DCLK_VOP1>,
1604				 <&cru HCLK_IEP>,
1605				 <&cru HCLK_ISP>,
1606				 <&cru HCLK_RGA>,
1607				 <&cru HCLK_VIP>,
1608				 <&cru HCLK_VOP0>,
1609				 <&cru HCLK_VOP1>,
1610				 <&cru PCLK_EDP_CTRL>,
1611				 <&cru PCLK_HDMI_CTRL>,
1612				 <&cru PCLK_LVDS_PHY>,
1613				 <&cru PCLK_MIPI_CSI>,
1614				 <&cru PCLK_MIPI_DSI0>,
1615				 <&cru PCLK_MIPI_DSI1>,
1616				 <&cru SCLK_EDP_24M>,
1617				 <&cru SCLK_EDP>,
1618				 <&cru SCLK_HDMI_CEC>,
1619				 <&cru SCLK_HDMI_HDCP>,
1620				 <&cru SCLK_ISP_JPE>,
1621				 <&cru SCLK_ISP>,
1622				 <&cru SCLK_RGA>;
1623		};
1624
1625		pd_video {
1626			reg = <RK3288_PD_VIDEO>;
1627			clocks = <&cru ACLK_VCODEC>,
1628				 <&cru HCLK_VCODEC>;
1629		};
1630	};
1631};
1632