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