xref: /rk3399_rockchip-uboot/arch/arm/dts/rk3128.dtsi (revision aee63dc84c1f5be59ea35ceb209a4ea937bdeb41)
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_DMAC2>;
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
230	nandc: nandc@10500000 {
231		compatible = "rockchip,rk-nandc";
232		reg = <0x10500000 0x4000>;
233		interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
234		pinctrl-names = "default";
235		pinctrl-0 = <&nandc_ale &nandc_cle &nandc_wrn &nandc_rdn &nandc_rdy &nandc_cs0 &nandc_data>;
236		nandc_id = <0>;
237		clocks = <&cru SCLK_NANDC>,
238			 <&cru HCLK_NANDC>,
239			 <&cru SRST_NANDC>;
240		clock-names = "clk_nandc", "g_clk_nandc", "hclk_nandc";
241	};
242
243	dmc: dmc@20004000 {
244		u-boot,dm-pre-reloc;
245		compatible = "rockchip,rk3128-dmc", "syscon";
246		reg = <0x0 0x20004000 0x0 0x1000>;
247	};
248
249	cru: clock-controller@20000000 {
250		u-boot,dm-pre-reloc;
251		compatible = "rockchip,rk3128-cru";
252		reg = <0x20000000 0x1000>;
253		rockchip,grf = <&grf>;
254		#clock-cells = <1>;
255		#reset-cells = <1>;
256		assigned-clocks = <&cru PLL_GPLL>;
257		assigned-clock-rates = <594000000>;
258	};
259
260	uart0: serial0@20060000 {
261		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
262		reg = <0x20060000 0x100>;
263		interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
264		reg-shift = <2>;
265		reg-io-width = <4>;
266		clock-frequency = <24000000>;
267		clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
268		clock-names = "baudclk", "apb_pclk";
269		pinctrl-names = "default";
270		pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
271		dmas = <&pdma 2>, <&pdma 3>;
272		#dma-cells = <2>;
273	};
274
275	uart1: serial1@20064000 {
276		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
277		reg = <0x20064000 0x100>;
278		interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
279		reg-shift = <2>;
280		reg-io-width = <4>;
281		clock-frequency = <24000000>;
282		clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
283		clock-names = "baudclk", "apb_pclk";
284		pinctrl-names = "default";
285		pinctrl-0 = <&uart1_xfer>;
286		dmas = <&pdma 4>, <&pdma 5>;
287		#dma-cells = <2>;
288	};
289
290	uart2: serial2@20068000 {
291		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
292		reg = <0x20068000 0x100>;
293		interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
294		reg-shift = <2>;
295		reg-io-width = <4>;
296		clock-frequency = <24000000>;
297		clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
298		clock-names = "baudclk", "apb_pclk";
299		pinctrl-names = "default";
300		pinctrl-0 = <&uart2_xfer>;
301		dmas = <&pdma 6>, <&pdma 7>;
302		#dma-cells = <2>;
303	};
304
305	saradc: saradc@2006c000 {
306		compatible = "rockchip,saradc";
307		reg = <0x2006c000 0x100>;
308		interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
309		#io-channel-cells = <1>;
310		clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
311		clock-names = "saradc", "apb_pclk";
312		resets = <&cru SRST_SARADC>;
313		reset-names = "saradc-apb";
314		status = "disabled";
315	};
316
317	pwm0: pwm0@20050000 {
318		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
319		reg = <0x20050000 0x10>;
320		#pwm-cells = <2>;
321		pinctrl-names = "default";
322		pinctrl-0 = <&pwm0_pin>;
323		clocks = <&cru PCLK_PWM>;
324		clock-names = "pwm";
325	};
326
327	pwm1: pwm1@20050010 {
328		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
329		reg = <0x20050010 0x10>;
330		#pwm-cells = <2>;
331		pinctrl-names = "default";
332		pinctrl-0 = <&pwm1_pin>;
333		clocks = <&cru PCLK_PWM>;
334		clock-names = "pwm";
335	};
336
337	pwm2: pwm2@20050020 {
338		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
339		reg = <0x20050020 0x10>;
340		#pwm-cells = <2>;
341		pinctrl-names = "default";
342		pinctrl-0 = <&pwm2_pin>;
343		clocks = <&cru PCLK_PWM>;
344		clock-names = "pwm";
345	};
346
347	pwm3: pwm3@20050030 {
348		compatible = "rockchip,rk3128-pwm", "rockchip,rk3288-pwm";
349		reg = <0x20050030 0x10>;
350		#pwm-cells = <2>;
351		pinctrl-names = "default";
352		pinctrl-0 = <&pwm3_pin>;
353		clocks = <&cru PCLK_PWM>;
354		clock-names = "pwm";
355	};
356
357	sram: sram@10080400 {
358		compatible = "rockchip,rk3128-smp-sram", "mmio-sram";
359		reg = <0x10080400 0x1C00>;
360		map-exec;
361		map-cacheable;
362	};
363
364	pmu: syscon@100a0000 {
365		compatible = "rockchip,rk3128-pmu", "syscon", "simple-mfd";
366		reg = <0x100a0000 0x1000>;
367		#address-cells = <1>;
368		#size-cells = <1>;
369	};
370
371	vop: vop@1010e000 {
372		u-boot,dm-pre-reloc;
373		compatible = "rockchip,rk3126-vop";
374		reg = <0x1010e000 0x100>, <0x1010ec00 0x400>;
375		reg-names = "regs", "gamma_lut";
376		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
377		clocks = <&cru ACLK_VIO0>, <&cru DCLK_LCDC>, <&cru HCLK_LCDC>;
378		clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
379		status = "disabled";
380
381		vop_out: port {
382			#address-cells = <1>;
383			#size-cells = <0>;
384
385			vop_out_lvds: endpoint@1 {
386				reg = <1>;
387				remote-endpoint = <&lvds_in_vop>;
388			};
389
390			vop_out_dsi: endpoint@2 {
391				reg = <1>;
392				remote-endpoint = <&dsi_in_vop>;
393			};
394		};
395	};
396
397	dsi: dsi@10110000 {
398		compatible = "rockchip,rk312x-mipi-dsi";
399		reg = <0x10110000 0x4000>;
400		interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
401		clocks = <&cru PCLK_MIPI>, <&cru HCLK_VIO_H2P>, <&mipi_dphy>;
402		clock-names = "pclk", "h2p", "hs_clk";
403		resets = <&cru SRST_VIO_MIPI_DSI>;
404		reset-names = "apb";
405		phys = <&mipi_dphy>;
406		phy-names = "mipi_dphy";
407		rockchip,grf = <&grf>;
408		#address-cells = <1>;
409		#size-cells = <0>;
410		status = "disabled";
411
412		ports {
413			port {
414				dsi_in_vop: endpoint {
415					remote-endpoint = <&vop_out_dsi>;
416				};
417			};
418		};
419	};
420
421	display_subsystem: display-subsystem {
422		u-boot,dm-pre-reloc;
423		compatible = "rockchip,display-subsystem";
424		ports = <&vop_out>;
425
426		route {
427			route_lvds: route-lvds {
428				logo,uboot = "logo.bmp";
429				logo,kernel = "logo_kernel.bmp";
430				logo,mode = "fullscreen";
431				charge_logo,mode = "center";
432				connect = <&vop_out_lvds>;
433			};
434
435			route_dsi: route-dsi {
436				logo,uboot = "logo.bmp";
437				logo,kernel = "logo_kernel.bmp";
438				logo,mode = "fullscreen";
439				charge_logo,mode = "center";
440				connect = <&vop_out_dsi>;
441			};
442		};
443	};
444
445	gic: interrupt-controller@10139000 {
446		compatible = "arm,gic-400";
447		interrupt-controller;
448		#interrupt-cells = <3>;
449		#address-cells = <0>;
450		reg = <0x10139000 0x1000>,
451		      <0x1013a000 0x1000>,
452		      <0x1013c000 0x2000>,
453		      <0x1013e000 0x2000>;
454		interrupts = <GIC_PPI 9 0xf04>;
455	};
456
457	u2phy: usb2-phy {
458		compatible = "rockchip,rk3128-usb2phy";
459		reg = <0x017c 0x0c>;
460		rockchip,grf = <&grf>;
461		clocks = <&cru SCLK_OTGPHY0>;
462		clock-names = "phyclk";
463		#clock-cells = <0>;
464		clock-output-names = "usb480m_phy";
465		#phy-cells = <1>;
466		status = "disabled";
467
468		u2phy_otg: otg-port {
469			#phy-cells = <0>;
470			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
471				     <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
472				     <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
473			interrupt-names = "otg-bvalid", "otg-id",
474					  "linestate";
475			status = "disabled";
476		};
477
478		u2phy_host: host-port {
479			#phy-cells = <0>;
480			interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
481			interrupt-names = "linestate";
482			status = "disabled";
483		};
484	};
485
486	usb_otg: usb@10180000 {
487		compatible = "rockchip,rk3128-usb", "rockchip,rk3288-usb",
488			     "snps,dwc2";
489		reg = <0x10180000 0x40000>;
490		interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
491		dr_mode = "otg";
492		g-use-dma;
493		hnp-srp-disable;
494		phys = <&u2phy 0>;
495		phy-names = "usb";
496		status = "disabled";
497	};
498
499	usb_host_ehci: usb@101c0000 {
500		compatible = "generic-ehci";
501		reg = <0x101c0000 0x20000>;
502		interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
503		phys = <&u2phy 1>;
504		phy-names = "usb";
505		status = "disabled";
506	};
507
508	usb_host_ohci: usb@101e0000 {
509		compatible = "generic-ohci";
510		reg = <0x101e0000 0x20000>;
511		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
512		phys = <&u2phy 1>;
513		phy-names = "usb";
514		status = "disabled";
515	};
516
517	sdmmc: dwmmc@10214000 {
518		compatible = "rockchip,rk312x-dw-mshc", "rockchip,rk3288-dw-mshc";
519		reg = <0x10214000 0x4000>;
520		max-frequency = <150000000>;
521		interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
522		clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
523			 <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
524		clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
525		fifo-depth = <0x100>;
526		pinctrl-names = "default";
527		pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
528		bus-width = <4>;
529		status = "disabled";
530	};
531
532	emmc: dwmmc@1021c000 {
533		compatible = "rockchip,rk3128-dw-mshc", "rockchip,rk3288-dw-mshc";
534		reg = <0x1021c000 0x4000>;
535		max-frequency = <150000000>;
536		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
537		clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
538			 <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
539		clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
540		bus-width = <8>;
541		default-sample-phase = <158>;
542		num-slots = <1>;
543		fifo-depth = <0x100>;
544		pinctrl-names = "default";
545		pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
546		resets = <&cru SRST_EMMC>;
547		reset-names = "reset";
548		status = "disabled";
549	};
550
551	mipi_dphy: mipi-dphy@20038000 {
552		compatible = "rockchip,rk312x-mipi-dphy";
553		reg = <0x20038000 0x4000>;
554		clocks = <&cru SCLK_MIPI_24M>, <&cru PCLK_MIPIPHY>, <&cru HCLK_VIO_H2P>;
555		clock-names = "ref", "pclk", "h2p";
556		clock-output-names = "mipi_dphy_pll";
557		#clock-cells = <0>;
558		resets = <&cru SRST_MIPIPHY_P>;
559		reset-names = "apb";
560		#phy-cells = <0>;
561		status = "disabled";
562	};
563
564	lvds: lvds@20038000 {
565		u-boot,dm-pre-reloc;
566		compatible = "rockchip,rk3126-lvds";
567		reg = <0x20038000 0x4000>, <0x10110000 0x100>;
568		reg-names = "mipi_lvds_phy", "mipi_lvds_ctl";
569		rockchip,grf = <&grf>;
570		status = "disabled";
571
572		ports {
573			#address-cells = <1>;
574			#size-cells = <0>;
575
576			lvds_in: port@0 {
577				reg = <0>;
578				lvds_in_vop: endpoint {
579					remote-endpoint = <&vop_out_lvds>;
580				};
581			};
582		};
583	};
584
585	i2c0: i2c0@20072000 {
586		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
587		reg = <0x20072000 0x1000>;
588		interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
589		#address-cells = <1>;
590		#size-cells = <0>;
591		clock-names = "i2c";
592		clocks = <&cru PCLK_I2C0>;
593		pinctrl-names = "default";
594		pinctrl-0 = <&i2c0_xfer>;
595	};
596
597	i2c1: i2c1@20056000 {
598		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
599		reg = <0x20056000 0x1000>;
600		interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
601		#address-cells = <1>;
602		#size-cells = <0>;
603		clock-names = "i2c";
604		clocks = <&cru PCLK_I2C1>;
605		pinctrl-names = "default";
606		pinctrl-0 = <&i2c1_xfer>;
607	};
608
609	i2c2: i2c2@2005a000 {
610		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
611		reg = <0x2005a000 0x1000>;
612		interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
613		#address-cells = <1>;
614		#size-cells = <0>;
615		clock-names = "i2c";
616		clocks = <&cru PCLK_I2C2>;
617		pinctrl-names = "default";
618		pinctrl-0 = <&i2c2_xfer>;
619	};
620
621	i2c3: i2c3@2005e000 {
622		compatible = "rockchip,rk3128-i2c", "rockchip,rk3288-i2c";
623		reg = <0x2005e000 0x1000>;
624		interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
625		#address-cells = <1>;
626		#size-cells = <0>;
627		clock-names = "i2c";
628		clocks = <&cru PCLK_I2C3>;
629		pinctrl-names = "default";
630		pinctrl-0 = <&i2c3_xfer>;
631	};
632
633	spi0: spi@20074000 {
634		compatible = "rockchip,rk3128-spi", "rockchip,rk3288-spi";
635		reg = <0x20074000 0x1000>;
636		interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
637		#address-cells = <1>;
638		#size-cells = <0>;
639		pinctrl-names = "default";
640		pinctrl-0 = <&spi0_txd_mux0 &spi0_rxd_mux0 &spi0_clk_mux0 &spi0_cs0_mux0 &spi0_cs1_mux0>;
641		rockchip,spi-src-clk = <0>;
642		num-cs = <2>;
643		clocks =<&cru SCLK_SPI>, <&cru PCLK_SPI>;
644		clock-names = "spi","pclk_spi0";
645		dmas = <&pdma 8>, <&pdma 9>;
646		#dma-cells = <2>;
647		dma-names = "tx", "rx";
648	};
649
650	grf: syscon@20008000 {
651		u-boot,dm-pre-reloc;
652		compatible = "rockchip,rk3128-grf", "syscon";
653		reg = <0x20008000 0x1000>;
654	};
655
656	pinctrl: pinctrl@20008000 {
657		compatible = "rockchip,rk3128-pinctrl";
658		reg = <0x20008000 0xA8>,
659		      <0x200080A8 0x4C>,
660		      <0x20008118 0x20>,
661		      <0x20008100 0x04>;
662		reg-names = "base", "mux", "pull", "drv";
663		rockchip,grf = <&grf>;
664		#address-cells = <1>;
665		#size-cells = <1>;
666		ranges;
667
668		gpio0: gpio0@2007c000 {
669			compatible = "rockchip,gpio-bank";
670			reg = <0x2007c000 0x100>;
671			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
672			clocks = <&cru PCLK_GPIO0>;
673			gpio-controller;
674			#gpio-cells = <2>;
675			interrupt-controller;
676			#interrupt-cells = <2>;
677		};
678
679		gpio1: gpio1@20080000 {
680			compatible = "rockchip,gpio-bank";
681			reg = <0x20080000 0x100>;
682			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
683			clocks = <&cru PCLK_GPIO1>;
684			gpio-controller;
685			#gpio-cells = <2>;
686			interrupt-controller;
687			#interrupt-cells = <2>;
688		};
689
690		gpio2: gpio2@20084000 {
691			compatible = "rockchip,gpio-bank";
692			reg = <0x20084000 0x100>;
693			interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
694			clocks = <&cru PCLK_GPIO2>;
695			gpio-controller;
696			#gpio-cells = <2>;
697			interrupt-controller;
698			#interrupt-cells = <2>;
699		};
700
701		gpio3: gpio2@20088000 {
702			compatible = "rockchip,gpio-bank";
703			reg = <0x20088000 0x100>;
704			interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
705			clocks = <&cru PCLK_GPIO3>;
706			gpio-controller;
707			#gpio-cells = <2>;
708			interrupt-controller;
709			#interrupt-cells = <2>;
710		};
711
712		pcfg_pull_up: pcfg-pull-up {
713			bias-pull-up;
714		};
715
716		pcfg_pull_down: pcfg-pull-down {
717			bias-pull-down;
718		};
719
720		pcfg_pull_none: pcfg-pull-none {
721			bias-disable;
722		};
723
724		emmc {
725			/*
726			 * We run eMMC at max speed; bump up drive strength.
727			 * We also have external pulls, so disable the internal ones.
728			 */
729
730			emmc_clk: emmc-clk {
731				rockchip,pins = <2 7 RK_FUNC_2 &pcfg_pull_none>;
732			};
733
734			emmc_cmd: emmc-cmd {
735				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
736			};
737
738			emmc_pwren: emmc-pwren {
739				rockchip,pins = <2 5 RK_FUNC_2 &pcfg_pull_none>;
740			};
741
742			emmc_bus8: emmc-bus8 {
743				rockchip,pins = <1 24 RK_FUNC_2 &pcfg_pull_none>,
744						<1 25 RK_FUNC_2 &pcfg_pull_none>,
745						<1 26 RK_FUNC_2 &pcfg_pull_none>,
746						<1 27 RK_FUNC_2 &pcfg_pull_none>,
747						<1 28 RK_FUNC_2 &pcfg_pull_none>,
748						<1 29 RK_FUNC_2 &pcfg_pull_none>,
749						<1 30 RK_FUNC_2 &pcfg_pull_none>,
750						<1 31 RK_FUNC_2 &pcfg_pull_none>;
751			};
752		};
753
754		nandc{
755			nandc_ale:nandc-ale {
756				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
757			};
758
759			nandc_cle:nandc-cle {
760				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
761			};
762
763			nandc_wrn:nandc-wrn {
764				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
765			};
766
767			nandc_rdn:nandc-rdn {
768				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
769			};
770
771			nandc_rdy:nandc-rdy {
772				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
773			};
774
775			nandc_cs0:nandc-cs0 {
776				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
777			};
778
779			nandc_data: nandc-data {
780				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
781			};
782		};
783
784
785		uart0 {
786			uart0_xfer: uart0-xfer {
787				rockchip,pins = <0 16 RK_FUNC_1 &pcfg_pull_none>,
788						<0 17 RK_FUNC_1 &pcfg_pull_none>;
789			};
790
791			uart0_cts: uart0-cts {
792				rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
793			};
794
795			uart0_rts: uart0-rts {
796				rockchip,pins = <0 19 RK_FUNC_1 &pcfg_pull_none>;
797			};
798		};
799
800		uart1 {
801			uart1_xfer: uart1-xfer {
802				rockchip,pins = <2 22 RK_FUNC_1 &pcfg_pull_none>,
803						<2 23 RK_FUNC_1 &pcfg_pull_none>;
804			};
805		};
806
807                uart2 {
808                        uart2_xfer: uart2-xfer {
809                                rockchip,pins = <1 18 RK_FUNC_2 &pcfg_pull_none>,
810                                                <1 19 RK_FUNC_2 &pcfg_pull_none>;
811                        };
812                };
813
814		sdmmc {
815			sdmmc_clk: sdmmc-clk {
816				rockchip,pins = <1 RK_PC0 1 &pcfg_pull_none>;
817			};
818
819			sdmmc_cmd: sdmmc-cmd {
820				rockchip,pins = <1 RK_PC1 1 &pcfg_pull_up>;
821			};
822
823			sdmmc_wp: sdmmc-wp {
824				rockchip,pins = <1 RK_PA7 1 &pcfg_pull_up>;
825			};
826
827			sdmmc_pwren: sdmmc-pwren {
828				rockchip,pins = <1 RK_PB6 1 &pcfg_pull_up>;
829			};
830
831			sdmmc_bus4: sdmmc-bus4 {
832				rockchip,pins = <1 RK_PC2 1 &pcfg_pull_up>,
833						<1 RK_PC3 1 &pcfg_pull_up>,
834						<1 RK_PC4 1 &pcfg_pull_up>,
835						<1 RK_PC5 1 &pcfg_pull_up>;
836			};
837		};
838
839		pwm0 {
840			pwm0_pin: pwm0-pin {
841				rockchip,pins = <0 0 RK_FUNC_2 &pcfg_pull_none>;
842			};
843		};
844
845		pwm1 {
846			pwm1_pin: pwm1-pin {
847				rockchip,pins = <0 1 RK_FUNC_2 &pcfg_pull_none>;
848			};
849		};
850
851		pwm2 {
852			pwm2_pin: pwm2-pin {
853				rockchip,pins = <0 1 2 &pcfg_pull_none>;
854			};
855		};
856
857		pwm3 {
858			pwm3_pin: pwm3-pin {
859				rockchip,pins = <0 27 1 &pcfg_pull_none>;
860			};
861		};
862
863		i2c0 {
864			i2c0_xfer: i2c0-xfer {
865				rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>,
866						<0 1 RK_FUNC_1 &pcfg_pull_none>;
867			};
868		};
869
870		i2c1 {
871			i2c1_xfer: i2c1-xfer {
872				rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_none>,
873						<0 3 RK_FUNC_1 &pcfg_pull_none>;
874			};
875		};
876
877		i2c2 {
878			i2c2_xfer: i2c2-xfer {
879				rockchip,pins = <2 20 3 &pcfg_pull_none>,
880						<2 21 3 &pcfg_pull_none>;
881			};
882		};
883
884		i2c3 {
885			i2c3_xfer: i2c3-xfer {
886				rockchip,pins = <0 6 RK_FUNC_1 &pcfg_pull_none>,
887						<0 7 RK_FUNC_1 &pcfg_pull_none>;
888			};
889		};
890
891		spi0 {
892			spi0_txd_mux0:spi0-txd-mux0 {
893				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
894			};
895
896			spi0_rxd_mux0:spi0-rxd-mux0 {
897				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
898			};
899
900			spi0_clk_mux0:spi0-clk-mux0 {
901				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
902			};
903
904			spi0_cs0_mux0:spi0-cs0-mux0 {
905				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
906			};
907
908			spi0_cs1_mux0:spi0-cs1-mux0 {
909				rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
910			};
911		};
912
913	};
914};
915