xref: /rk3399_rockchip-uboot/arch/arm/dts/rk3128.dtsi (revision 5ce558eee1d84a2b85f2bbc4c4547c8ea1c1dae4)
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 "skeleton.dtsi"
13
14/ {
15	compatible = "rockchip,rk3128";
16	rockchip,sram = <&sram>;
17	interrupt-parent = <&gic>;
18	#address-cells = <1>;
19	#size-cells = <1>;
20
21	aliases {
22		gpio0 = &gpio0;
23		gpio1 = &gpio1;
24		gpio2 = &gpio2;
25		gpio3 = &gpio3;
26		i2c0 = &i2c0;
27		i2c1 = &i2c1;
28		i2c2 = &i2c2;
29		i2c3 = &i2c3;
30		spi0 = &spi0;
31		serial0 = &uart0;
32		serial1 = &uart1;
33		serial2 = &uart2;
34		mmc0 = &emmc;
35		mmc1 = &sdmmc;
36	};
37
38	memory {
39		device_type = "memory";
40		reg = <0x60000000 0x40000000>;
41	};
42
43        arm-pmu {
44                compatible = "arm,cortex-a7-pmu";
45                interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
46                             <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
47			     <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
48			     <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
49        };
50
51	cpus {
52		#address-cells = <1>;
53		#size-cells = <0>;
54		enable-method = "rockchip,rk3128-smp";
55
56		cpu0:cpu@0x000 {
57			device_type = "cpu";
58			compatible = "arm,cortex-a7";
59			reg = <0x000>;
60			operating-points = <
61				/* KHz    uV */
62				 816000 1000000
63			>;
64			#cooling-cells = <2>; /* min followed by max */
65			clock-latency = <40000>;
66			clocks = <&cru ARMCLK>;
67		};
68
69		cpu1:cpu@0x001 {
70			device_type = "cpu";
71			compatible = "arm,cortex-a7";
72			reg = <0x001>;
73		};
74
75		cpu2:cpu@0x002 {
76			device_type = "cpu";
77			compatible = "arm,cortex-a7";
78			reg = <0x002>;
79		};
80
81		cpu3:cpu@0x003 {
82			device_type = "cpu";
83			compatible = "arm,cortex-a7";
84			reg = <0x003>;
85		};
86	};
87
88	cpu_axi_bus: cpu_axi_bus {
89		compatible = "rockchip,cpu_axi_bus";
90		#address-cells = <1>;
91		#size-cells = <1>;
92		ranges;
93
94		qos {
95			#address-cells = <1>;
96			#size-cells = <1>;
97			ranges;
98
99			crypto {
100				reg = <0x10128080 0x20>;
101			};
102
103			core {
104				reg = <0x1012a000 0x20>;
105			};
106
107			peri {
108				reg = <0x1012c000 0x20>;
109			};
110
111			gpu {
112				reg = <0x1012d000 0x20>;
113			};
114
115			vpu {
116				reg = <0x1012e000 0x20>;
117			};
118
119			rga {
120				reg = <0x1012f000 0x20>;
121			};
122			ebc {
123				reg = <0x1012f080 0x20>;
124			};
125
126			iep {
127				reg = <0x1012f100 0x20>;
128			};
129
130			lcdc {
131				reg = <0x1012f180 0x20>;
132				rockchip,priority = <3 3>;
133			};
134
135			vip {
136				reg = <0x1012f200 0x20>;
137				rockchip,priority = <3 3>;
138			};
139		};
140
141		msch {
142			#address-cells = <1>;
143			#size-cells = <1>;
144			ranges;
145
146			msch@10128000 {
147				reg = <0x10128000 0x20>;
148				rockchip,read-latency = <0x3f>;
149			};
150		};
151	};
152
153	psci {
154		compatible      = "arm,psci";
155		method          = "smc";
156		cpu_suspend     = <0x84000001>;
157		cpu_off         = <0x84000002>;
158		cpu_on          = <0x84000003>;
159		migrate         = <0x84000005>;
160	};
161
162	amba {
163		compatible = "arm,amba-bus";
164		#address-cells = <1>;
165		#size-cells = <1>;
166		interrupt-parent = <&gic>;
167		ranges;
168
169                pdma: pdma@20078000 {
170                        compatible = "arm,pl330", "arm,primecell";
171                        reg = <0x20078000 0x4000>;
172                        arm,pl330-broken-no-flushp;//2
173                        interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
174                                     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
175                        #dma-cells = <1>;
176                        clocks = <&cru ACLK_DMAC2>;
177                        clock-names = "apb_pclk";
178                };
179	};
180
181	xin24m: xin24m {
182		compatible = "fixed-clock";
183		clock-frequency = <24000000>;
184		clock-output-names = "xin24m";
185		#clock-cells = <0>;
186	};
187
188	xin12m: xin12m {
189		compatible = "fixed-clock";
190		clocks = <&xin24m>;
191		clock-frequency = <12000000>;
192		clock-output-names = "xin12m";
193		#clock-cells = <0>;
194	};
195
196
197	timer {
198		compatible = "arm,armv7-timer";
199		arm,cpu-registers-not-fw-configured;
200		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
201			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
202		clock-frequency = <24000000>;
203	};
204
205	timer@20044000 {
206		compatible = "arm,armv7-timer";
207		reg = <0x20044000 0xb8>;
208		interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
209		rockchip,broadcast = <1>;
210	};
211
212	watchdog: wdt@2004c000 {
213		compatible = "rockchip,watch dog";
214		reg = <0x2004c000 0x100>;
215		clock-names = "pclk_wdt";
216		interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
217		rockchip,irq = <1>;
218		rockchip,timeout = <60>;
219		rockchip,atboot = <1>;
220		rockchip,debug = <0>;
221	};
222
223	reset: reset@20000110 {
224		compatible = "rockchip,reset";
225		reg = <0x20000110 0x24>;
226		#reset-cells = <1>;
227	};
228
229	nandc: nandc@10500000 {
230		compatible = "rockchip,rk-nandc";
231		reg = <0x10500000 0x4000>;
232		interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
233		pinctrl-names = "default";
234		pinctrl-0 = <&nandc_ale &nandc_cle &nandc_wrn &nandc_rdn &nandc_rdy &nandc_cs0 &nandc_data>;
235		nandc_id = <0>;
236		clocks = <&cru SCLK_NANDC>,
237			 <&cru HCLK_NANDC>,
238			 <&cru SRST_NANDC>;
239		clock-names = "clk_nandc", "g_clk_nandc", "hclk_nandc";
240	};
241
242	dmc: dmc@20004000 {
243		u-boot,dm-pre-reloc;
244		compatible = "rockchip,rk3128-dmc", "syscon";
245		reg = <0x0 0x20004000 0x0 0x1000>;
246	};
247
248	cru: clock-controller@20000000 {
249		u-boot,dm-pre-reloc;
250		compatible = "rockchip,rk3128-cru";
251		reg = <0x20000000 0x1000>;
252		rockchip,grf = <&grf>;
253		#clock-cells = <1>;
254		#reset-cells = <1>;
255		assigned-clocks = <&cru PLL_GPLL>;
256		assigned-clock-rates = <594000000>;
257	};
258
259	uart0: serial0@20060000 {
260		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
261		reg = <0x20060000 0x100>;
262		interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
263		reg-shift = <2>;
264		reg-io-width = <4>;
265		clock-frequency = <24000000>;
266		clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
267		clock-names = "baudclk", "apb_pclk";
268		pinctrl-names = "default";
269		pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
270		dmas = <&pdma 2>, <&pdma 3>;
271		#dma-cells = <2>;
272	};
273
274	uart1: serial1@20064000 {
275		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
276		reg = <0x20064000 0x100>;
277		interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
278		reg-shift = <2>;
279		reg-io-width = <4>;
280		clock-frequency = <24000000>;
281		clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
282		clock-names = "baudclk", "apb_pclk";
283		pinctrl-names = "default";
284		pinctrl-0 = <&uart1_xfer>;
285		dmas = <&pdma 4>, <&pdma 5>;
286		#dma-cells = <2>;
287	};
288
289	uart2: serial2@20068000 {
290		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
291		reg = <0x20068000 0x100>;
292		interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
293		reg-shift = <2>;
294		reg-io-width = <4>;
295		clock-frequency = <24000000>;
296		clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
297		clock-names = "baudclk", "apb_pclk";
298		pinctrl-names = "default";
299		pinctrl-0 = <&uart2_xfer>;
300		dmas = <&pdma 6>, <&pdma 7>;
301		#dma-cells = <2>;
302	};
303
304	saradc: saradc@2006c000 {
305		compatible = "rockchip,saradc";
306		reg = <0x2006c000 0x100>;
307		interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
308		#io-channel-cells = <1>;
309		clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
310		clock-names = "saradc", "apb_pclk";
311		resets = <&cru SRST_SARADC>;
312		reset-names = "saradc-apb";
313		status = "disabled";
314	};
315
316	pwm0: pwm0@20050000 {
317		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
318		reg = <0x20050000 0x10>;
319		#pwm-cells = <2>;
320		pinctrl-names = "default";
321		pinctrl-0 = <&pwm0_pin>;
322		clocks = <&cru PCLK_PWM>;
323		clock-names = "pwm";
324	};
325
326	pwm1: pwm1@20050010 {
327		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
328		reg = <0x20050010 0x10>;
329		#pwm-cells = <2>;
330		pinctrl-names = "default";
331		pinctrl-0 = <&pwm1_pin>;
332		clocks = <&cru PCLK_PWM>;
333		clock-names = "pwm";
334	};
335
336	pwm2: pwm2@20050020 {
337		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
338		reg = <0x20050020 0x10>;
339		#pwm-cells = <2>;
340		pinctrl-names = "default";
341		pinctrl-0 = <&pwm2_pin>;
342		clocks = <&cru PCLK_PWM>;
343		clock-names = "pwm";
344	};
345
346	pwm3: pwm3@20050030 {
347		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
348		reg = <0x20050030 0x10>;
349		#pwm-cells = <2>;
350		pinctrl-names = "default";
351		pinctrl-0 = <&pwm3_pin>;
352		clocks = <&cru PCLK_PWM>;
353		clock-names = "pwm";
354	};
355
356	sram: sram@10080400 {
357		compatible = "rockchip,rk3128-smp-sram", "mmio-sram";
358		reg = <0x10080400 0x1C00>;
359		map-exec;
360		map-cacheable;
361	};
362
363	pmu: syscon@100a0000 {
364		compatible = "rockchip,rk3128-pmu", "syscon", "simple-mfd";
365		reg = <0x100a0000 0x1000>;
366		#address-cells = <1>;
367		#size-cells = <1>;
368	};
369
370	vop: vop@1010e000 {
371		u-boot,dm-pre-reloc;
372		compatible = "rockchip,rk3126-vop";
373		reg = <0x1010e000 0x100>, <0x1010ec00 0x400>;
374		reg-names = "regs", "gamma_lut";
375		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
376		clocks = <&cru ACLK_VIO0>, <&cru DCLK_LCDC>, <&cru HCLK_LCDC>;
377		clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
378		status = "disabled";
379
380		vop_out: port {
381			#address-cells = <1>;
382			#size-cells = <0>;
383
384			vop_out_lvds: endpoint@1 {
385				reg = <1>;
386				remote-endpoint = <&lvds_in_vop>;
387			};
388		};
389	};
390
391	display_subsystem: display-subsystem {
392		u-boot,dm-pre-reloc;
393		compatible = "rockchip,display-subsystem";
394		ports = <&vop_out>;
395
396		route {
397			route_lvds: route-lvds {
398				logo,uboot = "logo.bmp";
399				logo,kernel = "logo_kernel.bmp";
400				logo,mode = "fullscreen";
401				charge_logo,mode = "center";
402				connect = <&vop_out_lvds>;
403			};
404		};
405	};
406
407	gic: interrupt-controller@10139000 {
408		compatible = "arm,gic-400";
409		interrupt-controller;
410		#interrupt-cells = <3>;
411		#address-cells = <0>;
412		reg = <0x10139000 0x1000>,
413		      <0x1013a000 0x1000>,
414		      <0x1013c000 0x2000>,
415		      <0x1013e000 0x2000>;
416		interrupts = <GIC_PPI 9 0xf04>;
417	};
418
419	u2phy: usb2-phy {
420		compatible = "rockchip,rk3128-usb2phy";
421		reg = <0x017c 0x0c>;
422		rockchip,grf = <&grf>;
423		clocks = <&cru SCLK_OTGPHY0>;
424		clock-names = "phyclk";
425		#clock-cells = <0>;
426		clock-output-names = "usb480m_phy";
427		#phy-cells = <1>;
428		status = "disabled";
429
430		u2phy_otg: otg-port {
431			#phy-cells = <0>;
432			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
433				     <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
434				     <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
435			interrupt-names = "otg-bvalid", "otg-id",
436					  "linestate";
437			status = "disabled";
438		};
439
440		u2phy_host: host-port {
441			#phy-cells = <0>;
442			interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
443			interrupt-names = "linestate";
444			status = "disabled";
445		};
446	};
447
448	usb_otg: usb@10180000 {
449		compatible = "rockchip,rk3128-usb", "rockchip,rk3288-usb",
450			     "snps,dwc2";
451		reg = <0x10180000 0x40000>;
452		interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
453		dr_mode = "otg";
454		g-use-dma;
455		hnp-srp-disable;
456		phys = <&u2phy 0>;
457		phy-names = "usb";
458		status = "disabled";
459	};
460
461	usb_host_ehci: usb@101c0000 {
462		compatible = "generic-ehci";
463		reg = <0x101c0000 0x20000>;
464		interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
465		phys = <&u2phy 1>;
466		phy-names = "usb";
467		status = "disabled";
468	};
469
470	usb_host_ohci: usb@101e0000 {
471		compatible = "generic-ohci";
472		reg = <0x101e0000 0x20000>;
473		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
474		phys = <&u2phy 1>;
475		phy-names = "usb";
476		status = "disabled";
477	};
478
479	sdmmc: dwmmc@10214000 {
480		compatible = "rockchip,rk312x-dw-mshc", "rockchip,rk3288-dw-mshc";
481		reg = <0x10214000 0x4000>;
482		max-frequency = <150000000>;
483		interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
484		clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
485			 <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
486		clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
487		fifo-depth = <0x100>;
488		pinctrl-names = "default";
489		pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
490		bus-width = <4>;
491		status = "disabled";
492	};
493
494	emmc: dwmmc@1021c000 {
495		compatible = "rockchip,rk3128-dw-mshc", "rockchip,rk3288-dw-mshc";
496		reg = <0x1021c000 0x4000>;
497		max-frequency = <150000000>;
498		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
499		clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
500			 <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
501		clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
502		bus-width = <8>;
503		default-sample-phase = <158>;
504		num-slots = <1>;
505		fifo-depth = <0x100>;
506		pinctrl-names = "default";
507		pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
508		resets = <&cru SRST_EMMC>;
509		reset-names = "reset";
510		status = "disabled";
511	};
512
513	lvds: lvds@20038000 {
514		u-boot,dm-pre-reloc;
515		compatible = "rockchip,rk3126-lvds";
516		reg = <0x20038000 0x4000>, <0x10110000 0x100>;
517		reg-names = "mipi_lvds_phy", "mipi_lvds_ctl";
518		rockchip,grf = <&grf>;
519		status = "disabled";
520
521		ports {
522			#address-cells = <1>;
523			#size-cells = <0>;
524
525			lvds_in: port@0 {
526				reg = <0>;
527				lvds_in_vop: endpoint {
528					remote-endpoint = <&vop_out_lvds>;
529				};
530			};
531		};
532	};
533
534	i2c0: i2c0@20072000 {
535		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
536		reg = <0x20072000 0x1000>;
537		interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
538		#address-cells = <1>;
539		#size-cells = <0>;
540		clock-names = "i2c";
541		clocks = <&cru PCLK_I2C0>;
542		pinctrl-names = "default";
543		pinctrl-0 = <&i2c0_xfer>;
544	};
545
546	i2c1: i2c1@20056000 {
547		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
548		reg = <0x20056000 0x1000>;
549		interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
550		#address-cells = <1>;
551		#size-cells = <0>;
552		clock-names = "i2c";
553		clocks = <&cru PCLK_I2C1>;
554		pinctrl-names = "default";
555		pinctrl-0 = <&i2c1_xfer>;
556	};
557
558	i2c2: i2c2@2005a000 {
559		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
560		reg = <0x2005a000 0x1000>;
561		interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
562		#address-cells = <1>;
563		#size-cells = <0>;
564		clock-names = "i2c";
565		clocks = <&cru PCLK_I2C2>;
566		pinctrl-names = "default";
567		pinctrl-0 = <&i2c2_xfer>;
568	};
569
570	i2c3: i2c3@2005e000 {
571		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
572		reg = <0x2005e000 0x1000>;
573		interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
574		#address-cells = <1>;
575		#size-cells = <0>;
576		clock-names = "i2c";
577		clocks = <&cru PCLK_I2C3>;
578		pinctrl-names = "default";
579		pinctrl-0 = <&i2c3_xfer>;
580	};
581
582	spi0: spi@20074000 {
583		compatible = "rockchip,rk3128-spi", "rockchip,rk3288-spi";
584		reg = <0x20074000 0x1000>;
585		interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
586		#address-cells = <1>;
587		#size-cells = <0>;
588		pinctrl-names = "default";
589		pinctrl-0 = <&spi0_txd_mux0 &spi0_rxd_mux0 &spi0_clk_mux0 &spi0_cs0_mux0 &spi0_cs1_mux0>;
590		rockchip,spi-src-clk = <0>;
591		num-cs = <2>;
592		clocks =<&cru SCLK_SPI>, <&cru PCLK_SPI>;
593		clock-names = "spi","pclk_spi0";
594		dmas = <&pdma 8>, <&pdma 9>;
595		#dma-cells = <2>;
596		dma-names = "tx", "rx";
597	};
598
599	grf: syscon@20008000 {
600		u-boot,dm-pre-reloc;
601		compatible = "rockchip,rk3128-grf", "syscon";
602		reg = <0x20008000 0x1000>;
603	};
604
605	pinctrl: pinctrl@20008000 {
606		compatible = "rockchip,rk3128-pinctrl";
607		reg = <0x20008000 0xA8>,
608		      <0x200080A8 0x4C>,
609		      <0x20008118 0x20>,
610		      <0x20008100 0x04>;
611		reg-names = "base", "mux", "pull", "drv";
612		rockchip,grf = <&grf>;
613		#address-cells = <1>;
614		#size-cells = <1>;
615		ranges;
616
617		gpio0: gpio0@2007c000 {
618			compatible = "rockchip,gpio-bank";
619			reg = <0x2007c000 0x100>;
620			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
621			clocks = <&cru PCLK_GPIO0>;
622			gpio-controller;
623			#gpio-cells = <2>;
624			interrupt-controller;
625			#interrupt-cells = <2>;
626		};
627
628		gpio1: gpio1@20080000 {
629			compatible = "rockchip,gpio-bank";
630			reg = <0x20080000 0x100>;
631			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
632			clocks = <&cru PCLK_GPIO1>;
633			gpio-controller;
634			#gpio-cells = <2>;
635			interrupt-controller;
636			#interrupt-cells = <2>;
637		};
638
639		gpio2: gpio2@20084000 {
640			compatible = "rockchip,gpio-bank";
641			reg = <0x20084000 0x100>;
642			interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
643			clocks = <&cru PCLK_GPIO2>;
644			gpio-controller;
645			#gpio-cells = <2>;
646			interrupt-controller;
647			#interrupt-cells = <2>;
648		};
649
650		gpio3: gpio2@20088000 {
651			compatible = "rockchip,gpio-bank";
652			reg = <0x20088000 0x100>;
653			interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
654			clocks = <&cru PCLK_GPIO3>;
655			gpio-controller;
656			#gpio-cells = <2>;
657			interrupt-controller;
658			#interrupt-cells = <2>;
659		};
660
661		pcfg_pull_up: pcfg-pull-up {
662			bias-pull-up;
663		};
664
665		pcfg_pull_down: pcfg-pull-down {
666			bias-pull-down;
667		};
668
669		pcfg_pull_none: pcfg-pull-none {
670			bias-disable;
671		};
672
673		emmc {
674			/*
675			 * We run eMMC at max speed; bump up drive strength.
676			 * We also have external pulls, so disable the internal ones.
677			 */
678
679			emmc_clk: emmc-clk {
680				rockchip,pins = <2 7 RK_FUNC_2 &pcfg_pull_none>;
681			};
682
683			emmc_cmd: emmc-cmd {
684				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
685			};
686
687			emmc_pwren: emmc-pwren {
688				rockchip,pins = <2 5 RK_FUNC_2 &pcfg_pull_none>;
689			};
690
691			emmc_bus8: emmc-bus8 {
692				rockchip,pins = <1 24 RK_FUNC_2 &pcfg_pull_none>,
693						<1 25 RK_FUNC_2 &pcfg_pull_none>,
694						<1 26 RK_FUNC_2 &pcfg_pull_none>,
695						<1 27 RK_FUNC_2 &pcfg_pull_none>,
696						<1 28 RK_FUNC_2 &pcfg_pull_none>,
697						<1 29 RK_FUNC_2 &pcfg_pull_none>,
698						<1 30 RK_FUNC_2 &pcfg_pull_none>,
699						<1 31 RK_FUNC_2 &pcfg_pull_none>;
700			};
701		};
702
703		nandc{
704			nandc_ale:nandc-ale {
705				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
706			};
707
708			nandc_cle:nandc-cle {
709				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
710			};
711
712			nandc_wrn:nandc-wrn {
713				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
714			};
715
716			nandc_rdn:nandc-rdn {
717				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
718			};
719
720			nandc_rdy:nandc-rdy {
721				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
722			};
723
724			nandc_cs0:nandc-cs0 {
725				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
726			};
727
728			nandc_data: nandc-data {
729				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
730			};
731		};
732
733
734		uart0 {
735			uart0_xfer: uart0-xfer {
736				rockchip,pins = <0 16 RK_FUNC_1 &pcfg_pull_none>,
737						<0 17 RK_FUNC_1 &pcfg_pull_none>;
738			};
739
740			uart0_cts: uart0-cts {
741				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
742			};
743
744			uart0_rts: uart0-rts {
745				rockchip,pins = <0 19 RK_FUNC_1 &pcfg_pull_none>;
746			};
747		};
748
749		uart1 {
750			uart1_xfer: uart1-xfer {
751				rockchip,pins = <2 22 RK_FUNC_1 &pcfg_pull_none>,
752						<2 23 RK_FUNC_1 &pcfg_pull_none>;
753			};
754		};
755
756                uart2 {
757                        uart2_xfer: uart2-xfer {
758                                rockchip,pins = <1 18 RK_FUNC_2 &pcfg_pull_none>,
759                                                <1 19 RK_FUNC_2 &pcfg_pull_none>;
760                        };
761                };
762
763		sdmmc {
764			sdmmc_clk: sdmmc-clk {
765				rockchip,pins = <1 RK_PC0 1 &pcfg_pull_none>;
766			};
767
768			sdmmc_cmd: sdmmc-cmd {
769				rockchip,pins = <1 RK_PC1 1 &pcfg_pull_up>;
770			};
771
772			sdmmc_wp: sdmmc-wp {
773				rockchip,pins = <1 RK_PA7 1 &pcfg_pull_up>;
774			};
775
776			sdmmc_pwren: sdmmc-pwren {
777				rockchip,pins = <1 RK_PB6 1 &pcfg_pull_up>;
778			};
779
780			sdmmc_bus4: sdmmc-bus4 {
781				rockchip,pins = <1 RK_PC2 1 &pcfg_pull_up>,
782						<1 RK_PC3 1 &pcfg_pull_up>,
783						<1 RK_PC4 1 &pcfg_pull_up>,
784						<1 RK_PC5 1 &pcfg_pull_up>;
785			};
786		};
787
788		pwm0 {
789			pwm0_pin: pwm0-pin {
790				rockchip,pins = <0 0 RK_FUNC_2 &pcfg_pull_none>;
791			};
792		};
793
794		pwm1 {
795			pwm1_pin: pwm1-pin {
796				rockchip,pins = <0 1 RK_FUNC_2 &pcfg_pull_none>;
797			};
798		};
799
800		pwm2 {
801			pwm2_pin: pwm2-pin {
802				rockchip,pins = <0 1 2 &pcfg_pull_none>;
803			};
804		};
805
806		pwm3 {
807			pwm3_pin: pwm3-pin {
808				rockchip,pins = <0 27 1 &pcfg_pull_none>;
809			};
810		};
811
812		i2c0 {
813			i2c0_xfer: i2c0-xfer {
814				rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>,
815						<0 1 RK_FUNC_1 &pcfg_pull_none>;
816			};
817		};
818
819		i2c1 {
820			i2c1_xfer: i2c1-xfer {
821				rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_none>,
822						<0 3 RK_FUNC_1 &pcfg_pull_none>;
823			};
824		};
825
826		i2c2 {
827			i2c2_xfer: i2c2-xfer {
828				rockchip,pins = <2 20 3 &pcfg_pull_none>,
829						<2 21 3 &pcfg_pull_none>;
830			};
831		};
832
833		i2c3 {
834			i2c3_xfer: i2c3-xfer {
835				rockchip,pins = <0 6 RK_FUNC_1 &pcfg_pull_none>,
836						<0 7 RK_FUNC_1 &pcfg_pull_none>;
837			};
838		};
839
840		spi0 {
841			spi0_txd_mux0:spi0-txd-mux0 {
842				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
843			};
844
845			spi0_rxd_mux0:spi0-rxd-mux0 {
846				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
847			};
848
849			spi0_clk_mux0:spi0-clk-mux0 {
850				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
851			};
852
853			spi0_cs0_mux0:spi0-cs0-mux0 {
854				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
855			};
856
857			spi0_cs1_mux0:spi0-cs1-mux0 {
858				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
859			};
860		};
861
862	};
863};
864