xref: /rk3399_rockchip-uboot/arch/arm/dts/rk3128.dtsi (revision 629065bb1b7a3c9d2ec0d02d3cce4628f9416055)
1/*
2 * (C) Copyright 2017 Rockchip Electronics Co., Ltd
3 *
4 * SPDX-License-Identifier:     GPL-2.0+
5 */
6
7#include <dt-bindings/gpio/gpio.h>
8#include <dt-bindings/interrupt-controller/irq.h>
9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include <dt-bindings/pinctrl/rockchip.h>
11#include <dt-bindings/clock/rk3128-cru.h>
12#include <dt-bindings/media/rockchip_mipi_dsi.h>
13#include "skeleton.dtsi"
14
15/ {
16	compatible = "rockchip,rk3128";
17	rockchip,sram = <&sram>;
18	interrupt-parent = <&gic>;
19	#address-cells = <1>;
20	#size-cells = <1>;
21
22	aliases {
23		gpio0 = &gpio0;
24		gpio1 = &gpio1;
25		gpio2 = &gpio2;
26		gpio3 = &gpio3;
27		i2c0 = &i2c0;
28		i2c1 = &i2c1;
29		i2c2 = &i2c2;
30		i2c3 = &i2c3;
31		spi0 = &spi0;
32		serial0 = &uart0;
33		serial1 = &uart1;
34		serial2 = &uart2;
35		mmc0 = &emmc;
36		mmc1 = &sdmmc;
37	};
38
39	memory {
40		device_type = "memory";
41		reg = <0x60000000 0x40000000>;
42	};
43
44        arm-pmu {
45                compatible = "arm,cortex-a7-pmu";
46                interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
47                             <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
48			     <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
49			     <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
50        };
51
52	cpus {
53		#address-cells = <1>;
54		#size-cells = <0>;
55		enable-method = "rockchip,rk3128-smp";
56
57		cpu0:cpu@0x000 {
58			device_type = "cpu";
59			compatible = "arm,cortex-a7";
60			reg = <0x000>;
61			operating-points = <
62				/* KHz    uV */
63				 816000 1000000
64			>;
65			#cooling-cells = <2>; /* min followed by max */
66			clock-latency = <40000>;
67			clocks = <&cru ARMCLK>;
68		};
69
70		cpu1:cpu@0x001 {
71			device_type = "cpu";
72			compatible = "arm,cortex-a7";
73			reg = <0x001>;
74		};
75
76		cpu2:cpu@0x002 {
77			device_type = "cpu";
78			compatible = "arm,cortex-a7";
79			reg = <0x002>;
80		};
81
82		cpu3:cpu@0x003 {
83			device_type = "cpu";
84			compatible = "arm,cortex-a7";
85			reg = <0x003>;
86		};
87	};
88
89	cpu_axi_bus: cpu_axi_bus {
90		compatible = "rockchip,cpu_axi_bus";
91		#address-cells = <1>;
92		#size-cells = <1>;
93		ranges;
94
95		qos {
96			#address-cells = <1>;
97			#size-cells = <1>;
98			ranges;
99
100			crypto {
101				reg = <0x10128080 0x20>;
102			};
103
104			core {
105				reg = <0x1012a000 0x20>;
106			};
107
108			peri {
109				reg = <0x1012c000 0x20>;
110			};
111
112			gpu {
113				reg = <0x1012d000 0x20>;
114			};
115
116			vpu {
117				reg = <0x1012e000 0x20>;
118			};
119
120			rga {
121				reg = <0x1012f000 0x20>;
122			};
123			ebc {
124				reg = <0x1012f080 0x20>;
125			};
126
127			iep {
128				reg = <0x1012f100 0x20>;
129			};
130
131			lcdc {
132				reg = <0x1012f180 0x20>;
133				rockchip,priority = <3 3>;
134			};
135
136			vip {
137				reg = <0x1012f200 0x20>;
138				rockchip,priority = <3 3>;
139			};
140		};
141
142		msch {
143			#address-cells = <1>;
144			#size-cells = <1>;
145			ranges;
146
147			msch@10128000 {
148				reg = <0x10128000 0x20>;
149				rockchip,read-latency = <0x3f>;
150			};
151		};
152	};
153
154	psci: psci {
155		compatible      = "arm,psci-1.0";
156		method          = "smc";
157	};
158
159	amba {
160		compatible = "arm,amba-bus";
161		#address-cells = <1>;
162		#size-cells = <1>;
163		interrupt-parent = <&gic>;
164		ranges;
165
166                pdma: pdma@20078000 {
167                        compatible = "arm,pl330", "arm,primecell";
168                        reg = <0x20078000 0x4000>;
169                        arm,pl330-broken-no-flushp;//2
170                        interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
171                                     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
172                        #dma-cells = <1>;
173			clocks = <&cru ACLK_DMAC>;
174                        clock-names = "apb_pclk";
175                };
176	};
177
178	xin24m: xin24m {
179		compatible = "fixed-clock";
180		clock-frequency = <24000000>;
181		clock-output-names = "xin24m";
182		#clock-cells = <0>;
183	};
184
185	xin12m: xin12m {
186		compatible = "fixed-clock";
187		clocks = <&xin24m>;
188		clock-frequency = <12000000>;
189		clock-output-names = "xin12m";
190		#clock-cells = <0>;
191	};
192
193
194	timer {
195		compatible = "arm,armv7-timer";
196		arm,cpu-registers-not-fw-configured;
197		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
198			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
199		clock-frequency = <24000000>;
200	};
201
202	timer@20044000 {
203		compatible = "arm,armv7-timer";
204		reg = <0x20044000 0xb8>;
205		interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
206		rockchip,broadcast = <1>;
207	};
208
209	watchdog: wdt@2004c000 {
210		compatible = "rockchip,watch dog";
211		reg = <0x2004c000 0x100>;
212		clock-names = "pclk_wdt";
213		interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
214		rockchip,irq = <1>;
215		rockchip,timeout = <60>;
216		rockchip,atboot = <1>;
217		rockchip,debug = <0>;
218	};
219
220	reset: reset@20000110 {
221		compatible = "rockchip,reset";
222		reg = <0x20000110 0x24>;
223		#reset-cells = <1>;
224	};
225
226	sfc: sfc@1020c000 {
227		compatible ="rockchip,rksfc","rockchip,sfc";
228		reg = <0x1020c000 0x8000>;
229		interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
230		clocks = <&cru SCLK_SFC>, <&cru HCLK_SFC>;
231		clock-names = "clk_sfc", "hclk_sfc";
232		assigned-clocks = <&cru SCLK_SFC>;
233		assigned-clock-rates = <60000000>;
234		status = "disabled";
235	};
236
237	nandc: nandc@10500000 {
238		compatible = "rockchip,rk-nandc";
239		reg = <0x10500000 0x4000>;
240		interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
241		nandc_id = <0>;
242		clocks = <&cru SCLK_NANDC>, <&cru HCLK_NANDC>;
243		clock-names = "clk_nandc", "hclk_nandc";
244		status = "disabled";
245	};
246
247	dmc: dmc@20004000 {
248		compatible = "rockchip,rk3128-dmc", "syscon";
249		reg = <0x0 0x20004000 0x0 0x1000>;
250	};
251
252	cru: clock-controller@20000000 {
253		compatible = "rockchip,rk3128-cru";
254		reg = <0x20000000 0x1000>;
255		rockchip,grf = <&grf>;
256		#clock-cells = <1>;
257		#reset-cells = <1>;
258		assigned-clocks = <&cru PLL_GPLL>;
259		assigned-clock-rates = <594000000>;
260	};
261
262	uart0: serial0@20060000 {
263		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
264		reg = <0x20060000 0x100>;
265		interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
266		reg-shift = <2>;
267		reg-io-width = <4>;
268		clock-frequency = <24000000>;
269		clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
270		clock-names = "baudclk", "apb_pclk";
271		pinctrl-names = "default";
272		pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
273		dmas = <&pdma 2>, <&pdma 3>;
274		#dma-cells = <2>;
275	};
276
277	uart1: serial1@20064000 {
278		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
279		reg = <0x20064000 0x100>;
280		interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
281		reg-shift = <2>;
282		reg-io-width = <4>;
283		clock-frequency = <24000000>;
284		clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
285		clock-names = "baudclk", "apb_pclk";
286		pinctrl-names = "default";
287		pinctrl-0 = <&uart1_xfer>;
288		dmas = <&pdma 4>, <&pdma 5>;
289		#dma-cells = <2>;
290	};
291
292	uart2: serial2@20068000 {
293		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
294		reg = <0x20068000 0x100>;
295		interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
296		reg-shift = <2>;
297		reg-io-width = <4>;
298		clock-frequency = <24000000>;
299		clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
300		clock-names = "baudclk", "apb_pclk";
301		pinctrl-names = "default";
302		pinctrl-0 = <&uart2_xfer>;
303		dmas = <&pdma 6>, <&pdma 7>;
304		#dma-cells = <2>;
305	};
306
307	saradc: saradc@2006c000 {
308		compatible = "rockchip,saradc";
309		reg = <0x2006c000 0x100>;
310		interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
311		#io-channel-cells = <1>;
312		clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
313		clock-names = "saradc", "apb_pclk";
314		resets = <&cru SRST_SARADC>;
315		reset-names = "saradc-apb";
316		status = "disabled";
317	};
318
319	pwm0: pwm0@20050000 {
320		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
321		reg = <0x20050000 0x10>;
322		#pwm-cells = <3>;
323		pinctrl-names = "active";
324		pinctrl-0 = <&pwm0_pin>;
325		clocks = <&cru PCLK_PWM>;
326		clock-names = "pwm";
327	};
328
329	pwm1: pwm1@20050010 {
330		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
331		reg = <0x20050010 0x10>;
332		#pwm-cells = <2>;
333		pinctrl-names = "active";
334		pinctrl-0 = <&pwm1_pin>;
335		clocks = <&cru PCLK_PWM>;
336		clock-names = "pwm";
337	};
338
339	pwm2: pwm2@20050020 {
340		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
341		reg = <0x20050020 0x10>;
342		#pwm-cells = <2>;
343		pinctrl-names = "active";
344		pinctrl-0 = <&pwm2_pin>;
345		clocks = <&cru PCLK_PWM>;
346		clock-names = "pwm";
347	};
348
349	pwm3: pwm3@20050030 {
350		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
351		reg = <0x20050030 0x10>;
352		#pwm-cells = <2>;
353		pinctrl-names = "active";
354		pinctrl-0 = <&pwm3_pin>;
355		clocks = <&cru PCLK_PWM>;
356		clock-names = "pwm";
357	};
358
359	sram: sram@10080400 {
360		compatible = "rockchip,rk3128-smp-sram", "mmio-sram";
361		reg = <0x10080400 0x1C00>;
362		map-exec;
363		map-cacheable;
364	};
365
366	pmu: syscon@100a0000 {
367		compatible = "rockchip,rk3128-pmu", "syscon", "simple-mfd";
368		reg = <0x100a0000 0x1000>;
369		#address-cells = <1>;
370		#size-cells = <1>;
371	};
372
373	vop: vop@1010e000 {
374		compatible = "rockchip,rk3126-vop";
375		reg = <0x1010e000 0x100>, <0x1010ec00 0x400>;
376		reg-names = "regs", "gamma_lut";
377		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
378		clocks = <&cru ACLK_LCDC0>, <&cru DCLK_VOP>, <&cru HCLK_LCDC0>;
379		clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
380		status = "disabled";
381
382		vop_out: port {
383			#address-cells = <1>;
384			#size-cells = <0>;
385
386			vop_out_lvds: endpoint@0 {
387				reg = <0>;
388				remote-endpoint = <&lvds_in_vop>;
389			};
390
391			vop_out_dsi: endpoint@1 {
392				reg = <1>;
393				remote-endpoint = <&dsi_in_vop>;
394			};
395
396			vop_out_rgb: endpoint@2 {
397				reg = <2>;
398				remote-endpoint = <&rgb_in_vop>;
399			};
400		};
401	};
402
403	dsi: dsi@10110000 {
404		compatible = "rockchip,rk3128-mipi-dsi";
405		reg = <0x10110000 0x4000>;
406		interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
407		clocks = <&cru PCLK_MIPI>, <&cru HCLK_VIO_H2P>, <&video_phy>;
408		clock-names = "pclk", "h2p", "hs_clk";
409		resets = <&cru SRST_VIO_MIPI_DSI>;
410		reset-names = "apb";
411		phys = <&video_phy>;
412		phy-names = "mipi_dphy";
413		rockchip,grf = <&grf>;
414		#address-cells = <1>;
415		#size-cells = <0>;
416		status = "disabled";
417
418		ports {
419			port {
420				dsi_in_vop: endpoint {
421					remote-endpoint = <&vop_out_dsi>;
422				};
423			};
424		};
425	};
426
427	display_subsystem: display-subsystem {
428		compatible = "rockchip,display-subsystem";
429		ports = <&vop_out>;
430
431		route {
432			route_lvds: route-lvds {
433				logo,uboot = "logo.bmp";
434				logo,kernel = "logo_kernel.bmp";
435				logo,mode = "fullscreen";
436				charge_logo,mode = "center";
437				connect = <&vop_out_lvds>;
438			};
439
440			route_dsi: route-dsi {
441				logo,uboot = "logo.bmp";
442				logo,kernel = "logo_kernel.bmp";
443				logo,mode = "fullscreen";
444				charge_logo,mode = "center";
445				connect = <&vop_out_dsi>;
446			};
447		};
448	};
449
450	gic: interrupt-controller@10139000 {
451		compatible = "arm,gic-400";
452		interrupt-controller;
453		#interrupt-cells = <3>;
454		#address-cells = <0>;
455		reg = <0x10139000 0x1000>,
456		      <0x1013a000 0x1000>,
457		      <0x1013c000 0x2000>,
458		      <0x1013e000 0x2000>;
459		interrupts = <GIC_PPI 9 0xf04>;
460	};
461
462	usb_otg: usb@10180000 {
463		compatible = "rockchip,rk3128-usb", "rockchip,rk3288-usb",
464			     "snps,dwc2";
465		reg = <0x10180000 0x40000>;
466		interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
467		dr_mode = "otg";
468		g-use-dma;
469		hnp-srp-disable;
470		phys = <&u2phy_otg>;
471		phy-names = "usb";
472		status = "disabled";
473	};
474
475	usb_host_ehci: usb@101c0000 {
476		compatible = "generic-ehci";
477		reg = <0x101c0000 0x20000>;
478		interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
479		phys = <&u2phy_host>;
480		phy-names = "usb";
481		status = "disabled";
482	};
483
484	usb_host_ohci: usb@101e0000 {
485		compatible = "generic-ohci";
486		reg = <0x101e0000 0x20000>;
487		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
488		phys = <&u2phy_host>;
489		phy-names = "usb";
490		status = "disabled";
491	};
492
493	sdmmc: dwmmc@10214000 {
494		compatible = "rockchip,rk312x-dw-mshc", "rockchip,rk3288-dw-mshc";
495		reg = <0x10214000 0x4000>;
496		max-frequency = <150000000>;
497		interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
498		clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
499			 <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
500		clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
501		fifo-depth = <0x100>;
502		pinctrl-names = "default";
503		pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
504		bus-width = <4>;
505		status = "disabled";
506	};
507
508	emmc: dwmmc@1021c000 {
509		compatible = "rockchip,rk3128-dw-mshc", "rockchip,rk3288-dw-mshc";
510		reg = <0x1021c000 0x4000>;
511		max-frequency = <150000000>;
512		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
513		clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
514			 <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
515		clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
516		bus-width = <8>;
517		default-sample-phase = <158>;
518		num-slots = <1>;
519		fifo-depth = <0x100>;
520		pinctrl-names = "default";
521		pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
522		resets = <&cru SRST_EMMC>;
523		reset-names = "reset";
524		status = "disabled";
525	};
526
527	video_phy: video-phy@20038000 {
528		compatible = "rockchip,rk3128-video-phy";
529		reg = <0x20038000 0x4000>, <0x10110000 0x4000>;
530		clocks = <&cru SCLK_MIPI_24M>, <&cru PCLK_MIPIPHY>,
531			 <&cru PCLK_MIPI>;
532		clock-names = "ref", "pclk_phy", "pclk_host";
533		#clock-cells = <0>;
534		resets = <&cru SRST_MIPIPHY_P>;
535		reset-names = "rst";
536		#phy-cells = <0>;
537		status = "disabled";
538	};
539
540	i2c0: i2c0@20072000 {
541		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
542		reg = <0x20072000 0x1000>;
543		interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
544		#address-cells = <1>;
545		#size-cells = <0>;
546		clock-names = "i2c";
547		clocks = <&cru PCLK_I2C0>;
548		pinctrl-names = "default";
549		pinctrl-0 = <&i2c0_xfer>;
550	};
551
552	i2c1: i2c1@20056000 {
553		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
554		reg = <0x20056000 0x1000>;
555		interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
556		#address-cells = <1>;
557		#size-cells = <0>;
558		clock-names = "i2c";
559		clocks = <&cru PCLK_I2C1>;
560		pinctrl-names = "default";
561		pinctrl-0 = <&i2c1_xfer>;
562	};
563
564	i2c2: i2c2@2005a000 {
565		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
566		reg = <0x2005a000 0x1000>;
567		interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
568		#address-cells = <1>;
569		#size-cells = <0>;
570		clock-names = "i2c";
571		clocks = <&cru PCLK_I2C2>;
572		pinctrl-names = "default";
573		pinctrl-0 = <&i2c2_xfer>;
574	};
575
576	i2c3: i2c3@2005e000 {
577		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
578		reg = <0x2005e000 0x1000>;
579		interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
580		#address-cells = <1>;
581		#size-cells = <0>;
582		clock-names = "i2c";
583		clocks = <&cru PCLK_I2C3>;
584		pinctrl-names = "default";
585		pinctrl-0 = <&i2c3_xfer>;
586	};
587
588	spi0: spi@20074000 {
589		compatible = "rockchip,rk3128-spi", "rockchip,rk3288-spi";
590		reg = <0x20074000 0x1000>;
591		interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
592		pinctrl-names = "default";
593		pinctrl-0 = <&spi0_tx &spi0_rx &spi0_clk &spi0_cs0 &spi0_cs1>;
594		clock-names = "spiclk", "apb_pclk";
595		clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
596		dmas = <&pdma 8>, <&pdma 9>;
597		dma-names = "tx", "rx";
598		#address-cells = <1>;
599		#size-cells = <0>;
600		status = "disabled";
601	};
602
603	grf: syscon@20008000 {
604		compatible = "rockchip,rk3128-grf", "syscon";
605		reg = <0x20008000 0x1000>;
606		#address-cells = <1>;
607		#size-cells = <1>;
608
609		lvds: lvds {
610			compatible = "rockchip,rk3126-lvds";
611			phys = <&video_phy>;
612			phy-names = "phy";
613			status = "disabled";
614
615			ports {
616				#address-cells = <1>;
617				#size-cells = <0>;
618
619				port@0 {
620					reg = <0>;
621
622					lvds_in_vop: endpoint {
623						remote-endpoint = <&vop_out_lvds>;
624					};
625				};
626			};
627		};
628
629		rgb: rgb {
630			compatible = "rockchip,rk3128-rgb";
631			phys = <&video_phy>;
632			phy-names = "phy";
633			pinctrl-names = "default", "sleep";
634			pinctrl-0 = <&lcdc_rgb_pins>;
635			pinctrl-1 = <&lcdc_sleep_pins>;
636			status = "disabled";
637
638			ports {
639				#address-cells = <1>;
640				#size-cells = <0>;
641
642				port@0 {
643					reg = <0>;
644
645					rgb_in_vop: endpoint {
646						remote-endpoint = <&vop_out_rgb>;
647					};
648				};
649			};
650		};
651
652		u2phy: usb2-phy@17c {
653			compatible = "rockchip,rk3128-usb2phy";
654			reg = <0x017c 0x0c>;
655			clocks = <&cru SCLK_OTGPHY0>;
656			clock-names = "phyclk";
657			#clock-cells = <0>;
658			clock-output-names = "usb480m_phy";
659			assigned-clocks = <&cru SCLK_USB480M>;
660			assigned-clock-parents = <&u2phy>;
661			status = "disabled";
662
663			u2phy_otg: otg-port {
664				#phy-cells = <0>;
665				interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
666					     <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
667					     <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
668				interrupt-names = "otg-bvalid", "otg-id",
669						  "linestate";
670				status = "disabled";
671			};
672
673			u2phy_host: host-port {
674				#phy-cells = <0>;
675				interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
676				interrupt-names = "linestate";
677				status = "disabled";
678			};
679		};
680	};
681
682	pinctrl: pinctrl@20008000 {
683		compatible = "rockchip,rk3128-pinctrl";
684		reg = <0x20008000 0xA8>,
685		      <0x200080A8 0x4C>,
686		      <0x20008118 0x20>,
687		      <0x20008100 0x04>;
688		reg-names = "base", "mux", "pull", "drv";
689		rockchip,grf = <&grf>;
690		#address-cells = <1>;
691		#size-cells = <1>;
692		ranges;
693
694		gpio0: gpio0@2007c000 {
695			compatible = "rockchip,gpio-bank";
696			reg = <0x2007c000 0x100>;
697			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
698			clocks = <&cru PCLK_GPIO0>;
699			gpio-controller;
700			#gpio-cells = <2>;
701			interrupt-controller;
702			#interrupt-cells = <2>;
703		};
704
705		gpio1: gpio1@20080000 {
706			compatible = "rockchip,gpio-bank";
707			reg = <0x20080000 0x100>;
708			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
709			clocks = <&cru PCLK_GPIO1>;
710			gpio-controller;
711			#gpio-cells = <2>;
712			interrupt-controller;
713			#interrupt-cells = <2>;
714		};
715
716		gpio2: gpio2@20084000 {
717			compatible = "rockchip,gpio-bank";
718			reg = <0x20084000 0x100>;
719			interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
720			clocks = <&cru PCLK_GPIO2>;
721			gpio-controller;
722			#gpio-cells = <2>;
723			interrupt-controller;
724			#interrupt-cells = <2>;
725		};
726
727		gpio3: gpio2@20088000 {
728			compatible = "rockchip,gpio-bank";
729			reg = <0x20088000 0x100>;
730			interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
731			clocks = <&cru PCLK_GPIO3>;
732			gpio-controller;
733			#gpio-cells = <2>;
734			interrupt-controller;
735			#interrupt-cells = <2>;
736		};
737
738		pcfg_pull_default: pcfg_pull_default {
739			bias-pull-pin-default;
740		};
741
742		pcfg_pull_none: pcfg-pull-none {
743			bias-disable;
744		};
745
746		emmc {
747			emmc_clk: emmc-clk {
748				rockchip,pins = <2 RK_PA7 2 &pcfg_pull_none>;
749			};
750
751			emmc_cmd: emmc-cmd {
752				rockchip,pins = <1 RK_PC6 2 &pcfg_pull_default>;
753			};
754
755			emmc_cmd1: emmc-cmd1 {
756				rockchip,pins = <2 RK_PA4 2 &pcfg_pull_default>;
757			};
758
759			emmc_pwr: emmc-pwr {
760				rockchip,pins = <2 RK_PA5 2 &pcfg_pull_default>;
761			};
762
763			emmc_bus1: emmc-bus1 {
764				rockchip,pins = <1 RK_PD0 2 &pcfg_pull_default>;
765			};
766
767			emmc_bus4: emmc-bus4 {
768				rockchip,pins = <1 RK_PD0 2 &pcfg_pull_default>,
769						<1 RK_PD1 2 &pcfg_pull_default>,
770						<1 RK_PD2 2 &pcfg_pull_default>,
771						<1 RK_PD3 2 &pcfg_pull_default>;
772			};
773
774			emmc_bus8: emmc-bus8 {
775				rockchip,pins = <1 RK_PD0 2 &pcfg_pull_default>,
776						<1 RK_PD1 2 &pcfg_pull_default>,
777						<1 RK_PD2 2 &pcfg_pull_default>,
778						<1 RK_PD3 2 &pcfg_pull_default>,
779						<1 RK_PD4 2 &pcfg_pull_default>,
780						<1 RK_PD5 2 &pcfg_pull_default>,
781						<1 RK_PD6 2 &pcfg_pull_default>,
782						<1 RK_PD7 2 &pcfg_pull_default>;
783			};
784		};
785
786		i2c0 {
787			i2c0_xfer: i2c0-xfer {
788				rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>,
789						<0 RK_PA1 1 &pcfg_pull_none>;
790			};
791		};
792
793		i2c1 {
794			i2c1_xfer: i2c1-xfer {
795				rockchip,pins = <0 RK_PA2 1 &pcfg_pull_none>,
796						<0 RK_PA3 1 &pcfg_pull_none>;
797			};
798		};
799
800		i2c2 {
801			i2c2_xfer: i2c2-xfer {
802				rockchip,pins = <2 RK_PC4 3 &pcfg_pull_none>,
803						<2 RK_PC5 3 &pcfg_pull_none>;
804			};
805		};
806
807		i2c3 {
808			i2c3_xfer: i2c3-xfer {
809				rockchip,pins = <0 RK_PA6 1 &pcfg_pull_none>,
810						<0 RK_PA7 1 &pcfg_pull_none>;
811			};
812		};
813
814		lcdc {
815			lcdc_rgb_pins: lcdc-rgb-pins {
816				rockchip,pins =
817					<2 RK_PB0 1 &pcfg_pull_none>, /* LCDC_DCLK */
818					<2 RK_PB1 1 &pcfg_pull_none>, /* LCDC_HSYNC */
819					<2 RK_PB2 1 &pcfg_pull_none>, /* LCDC_VSYNC */
820					<2 RK_PB3 1 &pcfg_pull_none>, /* LCDC_DEN */
821					<2 RK_PB4 1 &pcfg_pull_none>, /* LCDC_DATA10 */
822					<2 RK_PB5 1 &pcfg_pull_none>, /* LCDC_DATA11 */
823					<2 RK_PB6 1 &pcfg_pull_none>, /* LCDC_DATA12 */
824					<2 RK_PB7 1 &pcfg_pull_none>, /* LCDC_DATA13 */
825					<2 RK_PC0 1 &pcfg_pull_none>, /* LCDC_DATA14 */
826					<2 RK_PC1 1 &pcfg_pull_none>, /* LCDC_DATA15 */
827					<2 RK_PC2 1 &pcfg_pull_none>, /* LCDC_DATA16 */
828					<2 RK_PC3 1 &pcfg_pull_none>, /* LCDC_DATA17 */
829					<2 RK_PC4 1 &pcfg_pull_none>, /* LCDC_DATA18 */
830					<2 RK_PC5 1 &pcfg_pull_none>, /* LCDC_DATA19 */
831					<2 RK_PC6 1 &pcfg_pull_none>, /* LCDC_DATA20 */
832					<2 RK_PC7 1 &pcfg_pull_none>, /* LCDC_DATA21 */
833					<2 RK_PD0 1 &pcfg_pull_none>, /* LCDC_DATA22 */
834					<2 RK_PD1 1 &pcfg_pull_none>; /* LCDC_DATA23 */
835			};
836
837			lcdc_sleep_pins: lcdc-sleep-pins {
838				rockchip,pins =
839					<2 RK_PB0 0 &pcfg_pull_none>, /* LCDC_DCLK */
840					<2 RK_PB1 0 &pcfg_pull_none>, /* LCDC_HSYNC */
841					<2 RK_PB2 0 &pcfg_pull_none>, /* LCDC_VSYNC */
842					<2 RK_PB3 0 &pcfg_pull_none>, /* LCDC_DEN */
843					<2 RK_PB4 0 &pcfg_pull_none>, /* LCDC_DATA10 */
844					<2 RK_PB5 0 &pcfg_pull_none>, /* LCDC_DATA11 */
845					<2 RK_PB6 0 &pcfg_pull_none>, /* LCDC_DATA12 */
846					<2 RK_PB7 0 &pcfg_pull_none>, /* LCDC_DATA13 */
847					<2 RK_PC0 0 &pcfg_pull_none>, /* LCDC_DATA14 */
848					<2 RK_PC1 0 &pcfg_pull_none>, /* LCDC_DATA15 */
849					<2 RK_PC2 0 &pcfg_pull_none>, /* LCDC_DATA16 */
850					<2 RK_PC3 0 &pcfg_pull_none>, /* LCDC_DATA17 */
851					<2 RK_PC4 0 &pcfg_pull_none>, /* LCDC_DATA18 */
852					<2 RK_PC5 0 &pcfg_pull_none>, /* LCDC_DATA19 */
853					<2 RK_PC6 0 &pcfg_pull_none>, /* LCDC_DATA20 */
854					<2 RK_PC7 0 &pcfg_pull_none>, /* LCDC_DATA21 */
855					<2 RK_PD0 0 &pcfg_pull_none>, /* LCDC_DATA22 */
856					<2 RK_PD1 0 &pcfg_pull_none>; /* LCDC_DATA23 */
857			};
858		};
859
860		uart0 {
861			uart0_xfer: uart0-xfer {
862				rockchip,pins = <2 RK_PD2 2 &pcfg_pull_default>,
863						<2 RK_PD3 2 &pcfg_pull_none>;
864			};
865
866			uart0_cts: uart0-cts {
867				rockchip,pins = <2 RK_PD5 2 &pcfg_pull_none>;
868			};
869
870			uart0_rts: uart0-rts {
871				rockchip,pins = <0 RK_PC1 2 &pcfg_pull_none>;
872			};
873		};
874
875		uart1 {
876			uart1_xfer: uart1-xfer {
877				rockchip,pins = <1 RK_PB1 2 &pcfg_pull_default>,
878						<1 RK_PB2 2 &pcfg_pull_default>;
879			};
880
881			uart1_cts: uart1-cts {
882				rockchip,pins = <1 RK_PB0 2 &pcfg_pull_none>;
883			};
884
885			uart1_rts: uart1-rts {
886				rockchip,pins = <1 RK_PB3 2 &pcfg_pull_none>;
887			};
888		};
889
890		uart2 {
891			uart2_xfer: uart2-xfer {
892				rockchip,pins = <1 RK_PC2 2 &pcfg_pull_default>,
893						<1 RK_PC3 2 &pcfg_pull_none>;
894			};
895
896			uart2_cts: uart2-cts {
897				rockchip,pins = <0 RK_PD1 1 &pcfg_pull_none>;
898			};
899
900			uart2_rts: uart2-rts {
901				rockchip,pins = <0 RK_PD0 1 &pcfg_pull_none>;
902			};
903		};
904
905		sdmmc {
906			sdmmc_clk: sdmmc-clk {
907				rockchip,pins = <1 RK_PC0 1 &pcfg_pull_none>;
908			};
909
910			sdmmc_cmd: sdmmc-cmd {
911				rockchip,pins = <1 RK_PB7 1 &pcfg_pull_default>;
912			};
913
914			sdmmc_wp: sdmmc-wp {
915				rockchip,pins = <1 RK_PA7 1 &pcfg_pull_default>;
916			};
917
918			sdmmc_pwren: sdmmc-pwren {
919				rockchip,pins = <1 RK_PB6 1 &pcfg_pull_default>;
920			};
921
922			sdmmc_bus4: sdmmc-bus4 {
923				rockchip,pins = <1 RK_PC2 1 &pcfg_pull_default>,
924						<1 RK_PC3 1 &pcfg_pull_default>,
925						<1 RK_PC4 1 &pcfg_pull_default>,
926						<1 RK_PC5 1 &pcfg_pull_default>;
927			};
928		};
929
930		sdio {
931			sdio_clk: sdio-clk {
932				rockchip,pins = <1 RK_PA0 2 &pcfg_pull_none>;
933			};
934
935			sdio_cmd: sdio-cmd {
936				rockchip,pins = <0 RK_PA3 2 &pcfg_pull_default>;
937			};
938
939			sdio_pwren: sdio-pwren {
940				rockchip,pins = <0 RK_PD6 1 &pcfg_pull_default>;
941			};
942
943			sdio_bus4: sdio-bus4 {
944				rockchip,pins = <1 RK_PA1 2 &pcfg_pull_default>,
945						<1 RK_PA2 2 &pcfg_pull_default>,
946						<1 RK_PA4 2 &pcfg_pull_default>,
947						<1 RK_PA5 2 &pcfg_pull_default>;
948			};
949		};
950
951		hdmi {
952			hdmii2c_xfer: hdmii2c-xfer {
953				rockchip,pins = <0 RK_PA6 2 &pcfg_pull_none>,
954						<0 RK_PA7 2 &pcfg_pull_none>;
955			};
956		};
957
958		i2s {
959			i2s_bus: i2s-bus {
960				rockchip,pins = <0 RK_PB0 1 &pcfg_pull_none>,
961						<0 RK_PB1 1 &pcfg_pull_none>,
962						<0 RK_PB3 1 &pcfg_pull_none>,
963						<0 RK_PB4 1 &pcfg_pull_none>,
964						<0 RK_PB5 1 &pcfg_pull_none>,
965						<0 RK_PB6 1 &pcfg_pull_none>;
966			};
967
968			i2s1_bus: i2s1-bus {
969				rockchip,pins = <1 RK_PA0 1 &pcfg_pull_none>,
970						<1 RK_PA1 1 &pcfg_pull_none>,
971						<1 RK_PA2 1 &pcfg_pull_none>,
972						<1 RK_PA3 1 &pcfg_pull_none>,
973						<1 RK_PA4 1 &pcfg_pull_none>,
974						<1 RK_PA5 1 &pcfg_pull_none>;
975			};
976		};
977
978		pwm0 {
979			pwm0_pin: pwm0-pin {
980				rockchip,pins = <0 RK_PD2 1 &pcfg_pull_none>;
981			};
982		};
983
984		pwm1 {
985			pwm1_pin: pwm1-pin {
986				rockchip,pins = <0 RK_PD3 1 &pcfg_pull_none>;
987			};
988		};
989
990		pwm2 {
991			pwm2_pin: pwm2-pin {
992				rockchip,pins = <0 RK_PD4 1 &pcfg_pull_none>;
993			};
994		};
995
996		pwm3 {
997			pwm3_pin: pwm3-pin {
998				rockchip,pins = <3 RK_PD2 1 &pcfg_pull_none>;
999			};
1000		};
1001
1002		gmac {
1003			rgmii_pins: rgmii-pins {
1004				rockchip,pins = <2 RK_PB0 3 &pcfg_pull_default>,
1005						<2 RK_PB1 3 &pcfg_pull_default>,
1006						<2 RK_PB3 3 &pcfg_pull_default>,
1007						<2 RK_PB4 3 &pcfg_pull_default>,
1008						<2 RK_PB5 3 &pcfg_pull_default>,
1009						<2 RK_PB6 3 &pcfg_pull_default>,
1010						<2 RK_PC0 3 &pcfg_pull_default>,
1011						<2 RK_PC1 3 &pcfg_pull_default>,
1012						<2 RK_PC2 3 &pcfg_pull_default>,
1013						<2 RK_PC3 3 &pcfg_pull_default>,
1014						<2 RK_PD1 3 &pcfg_pull_default>,
1015						<2 RK_PC4 4 &pcfg_pull_default>,
1016						<2 RK_PC5 4 &pcfg_pull_default>,
1017						<2 RK_PC6 4 &pcfg_pull_default>,
1018						<2 RK_PC7 4 &pcfg_pull_default>;
1019			};
1020
1021			rmii_pins: rmii-pins {
1022				rockchip,pins = <2 RK_PB0 3 &pcfg_pull_default>,
1023						<2 RK_PB4 3 &pcfg_pull_default>,
1024						<2 RK_PB5 3 &pcfg_pull_default>,
1025						<2 RK_PB6 3 &pcfg_pull_default>,
1026						<2 RK_PB7 3 &pcfg_pull_default>,
1027						<2 RK_PC0 3 &pcfg_pull_default>,
1028						<2 RK_PC1 3 &pcfg_pull_default>,
1029						<2 RK_PC3 3 &pcfg_pull_default>,
1030						<2 RK_PC4 3 &pcfg_pull_default>,
1031						<2 RK_PD1 3 &pcfg_pull_default>;
1032			};
1033		};
1034
1035		spdif {
1036			spdif_tx: spdif-tx {
1037				rockchip,pins = <3 RK_PD3 1 &pcfg_pull_none>;
1038			};
1039		};
1040
1041		spi {
1042			spi0_clk: spi0-clk {
1043				rockchip,pins = <1 RK_PB0 1 &pcfg_pull_default>;
1044			};
1045
1046			spi0_cs0: spi0-cs0 {
1047				rockchip,pins = <1 RK_PB3 1 &pcfg_pull_default>;
1048			};
1049
1050			spi0_tx: spi0-tx {
1051				rockchip,pins = <1 RK_PB1 1 &pcfg_pull_default>;
1052			};
1053
1054			spi0_rx: spi0-rx {
1055				rockchip,pins = <1 RK_PB2 1 &pcfg_pull_default>;
1056			};
1057
1058			spi0_cs1: spi0-cs1 {
1059				rockchip,pins = <1 RK_PB4 1 &pcfg_pull_default>;
1060			};
1061
1062			spi1_clk: spi1-clk {
1063				rockchip,pins = <2 RK_PA0 2 &pcfg_pull_default>;
1064			};
1065
1066			spi1_cs0: spi1-cs0 {
1067				rockchip,pins = <1 RK_PD6 3 &pcfg_pull_default>;
1068			};
1069
1070			spi1_tx: spi1-tx {
1071				rockchip,pins = <1 RK_PD5 3 &pcfg_pull_default>;
1072			};
1073
1074			spi1_rx: spi1-rx {
1075				rockchip,pins = <1 RK_PD4 3 &pcfg_pull_default>;
1076			};
1077
1078			spi1_cs1: spi1-cs1 {
1079				rockchip,pins = <1 RK_PD7 3 &pcfg_pull_default>;
1080			};
1081
1082			spi2_clk: spi2-clk {
1083				rockchip,pins = <0 RK_PB1 2 &pcfg_pull_default>;
1084			};
1085
1086			spi2_cs0: spi2-cs0 {
1087				rockchip,pins = <0 RK_PB6 2 &pcfg_pull_default>;
1088			};
1089
1090			spi2_tx: spi2-tx {
1091				rockchip,pins = <0 RK_PB3 2 &pcfg_pull_default>;
1092			};
1093
1094			spi2_rx: spi2-rx {
1095				rockchip,pins = <0 RK_PB5 2 &pcfg_pull_default>;
1096			};
1097		};
1098	};
1099};
1100