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