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