• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 * GNU General Public License for more details.
11 */
12
13#include <dt-bindings/gpio/gpio.h>
14#include <dt-bindings/interrupt-controller/irq.h>
15#include <dt-bindings/interrupt-controller/arm-gic.h>
16#include <dt-bindings/pinctrl/rockchip.h>
17#include <dt-bindings/clock/rk3288-cru.h>
18#include "skeleton.dtsi"
19
20/ {
21	compatible = "rockchip,rk3288";
22
23	interrupt-parent = <&gic>;
24
25	aliases {
26		i2c0 = &i2c0;
27		i2c1 = &i2c1;
28		i2c2 = &i2c2;
29		i2c3 = &i2c3;
30		i2c4 = &i2c4;
31		i2c5 = &i2c5;
32		mshc0 = &emmc;
33		mshc1 = &sdmmc;
34		mshc2 = &sdio0;
35		mshc3 = &sdio1;
36		serial0 = &uart0;
37		serial1 = &uart1;
38		serial2 = &uart2;
39		serial3 = &uart3;
40		serial4 = &uart4;
41		spi0 = &spi0;
42		spi1 = &spi1;
43		spi2 = &spi2;
44	};
45
46	cpus {
47		#address-cells = <1>;
48		#size-cells = <0>;
49
50		cpu@500 {
51			device_type = "cpu";
52			compatible = "arm,cortex-a12";
53			reg = <0x500>;
54		};
55		cpu@501 {
56			device_type = "cpu";
57			compatible = "arm,cortex-a12";
58			reg = <0x501>;
59		};
60		cpu@502 {
61			device_type = "cpu";
62			compatible = "arm,cortex-a12";
63			reg = <0x502>;
64		};
65		cpu@503 {
66			device_type = "cpu";
67			compatible = "arm,cortex-a12";
68			reg = <0x503>;
69		};
70	};
71
72	amba {
73		compatible = "arm,amba-bus";
74		#address-cells = <1>;
75		#size-cells = <1>;
76		ranges;
77
78		dmac_peri: dma-controller@ff250000 {
79			compatible = "arm,pl330", "arm,primecell";
80			reg = <0xff250000 0x4000>;
81			interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
82				     <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
83			#dma-cells = <1>;
84			clocks = <&cru ACLK_DMAC2>;
85			clock-names = "apb_pclk";
86		};
87
88		dmac_bus_ns: dma-controller@ff600000 {
89			compatible = "arm,pl330", "arm,primecell";
90			reg = <0xff600000 0x4000>;
91			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
92				     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
93			#dma-cells = <1>;
94			clocks = <&cru ACLK_DMAC1>;
95			clock-names = "apb_pclk";
96			status = "disabled";
97		};
98
99		dmac_bus_s: dma-controller@ffb20000 {
100			compatible = "arm,pl330", "arm,primecell";
101			reg = <0xffb20000 0x4000>;
102			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
103				     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
104			#dma-cells = <1>;
105			clocks = <&cru ACLK_DMAC1>;
106			clock-names = "apb_pclk";
107		};
108	};
109
110	xin24m: oscillator {
111		compatible = "fixed-clock";
112		clock-frequency = <24000000>;
113		clock-output-names = "xin24m";
114		#clock-cells = <0>;
115	};
116
117	timer {
118		compatible = "arm,armv7-timer";
119		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
120			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
121			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
122			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
123		clock-frequency = <24000000>;
124	};
125
126	sdmmc: dwmmc@ff0c0000 {
127		compatible = "rockchip,rk3288-dw-mshc";
128		clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
129		clock-names = "biu", "ciu";
130		fifo-depth = <0x100>;
131		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
132		reg = <0xff0c0000 0x4000>;
133		status = "disabled";
134	};
135
136	sdio0: dwmmc@ff0d0000 {
137		compatible = "rockchip,rk3288-dw-mshc";
138		clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>;
139		clock-names = "biu", "ciu";
140		fifo-depth = <0x100>;
141		interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
142		reg = <0xff0d0000 0x4000>;
143		status = "disabled";
144	};
145
146	sdio1: dwmmc@ff0e0000 {
147		compatible = "rockchip,rk3288-dw-mshc";
148		clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>;
149		clock-names = "biu", "ciu";
150		fifo-depth = <0x100>;
151		interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
152		reg = <0xff0e0000 0x4000>;
153		status = "disabled";
154	};
155
156	emmc: dwmmc@ff0f0000 {
157		compatible = "rockchip,rk3288-dw-mshc";
158		clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
159		clock-names = "biu", "ciu";
160		fifo-depth = <0x100>;
161		interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
162		reg = <0xff0f0000 0x4000>;
163		status = "disabled";
164	};
165
166	saradc: saradc@ff100000 {
167		compatible = "rockchip,saradc";
168		reg = <0xff100000 0x100>;
169		interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
170		#io-channel-cells = <1>;
171		clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
172		clock-names = "saradc", "apb_pclk";
173		status = "disabled";
174	};
175
176	spi0: spi@ff110000 {
177		compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
178		clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
179		clock-names = "spiclk", "apb_pclk";
180		interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
181		pinctrl-names = "default";
182		pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
183		reg = <0xff110000 0x1000>;
184		#address-cells = <1>;
185		#size-cells = <0>;
186		status = "disabled";
187	};
188
189	spi1: spi@ff120000 {
190		compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
191		clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
192		clock-names = "spiclk", "apb_pclk";
193		interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
194		pinctrl-names = "default";
195		pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
196		reg = <0xff120000 0x1000>;
197		#address-cells = <1>;
198		#size-cells = <0>;
199		status = "disabled";
200	};
201
202	spi2: spi@ff130000 {
203		compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
204		clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
205		clock-names = "spiclk", "apb_pclk";
206		interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
207		pinctrl-names = "default";
208		pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
209		reg = <0xff130000 0x1000>;
210		#address-cells = <1>;
211		#size-cells = <0>;
212		status = "disabled";
213	};
214
215	i2c1: i2c@ff140000 {
216		compatible = "rockchip,rk3288-i2c";
217		reg = <0xff140000 0x1000>;
218		interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
219		#address-cells = <1>;
220		#size-cells = <0>;
221		clock-names = "i2c";
222		clocks = <&cru PCLK_I2C1>;
223		pinctrl-names = "default";
224		pinctrl-0 = <&i2c1_xfer>;
225		status = "disabled";
226	};
227
228	i2c3: i2c@ff150000 {
229		compatible = "rockchip,rk3288-i2c";
230		reg = <0xff150000 0x1000>;
231		interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
232		#address-cells = <1>;
233		#size-cells = <0>;
234		clock-names = "i2c";
235		clocks = <&cru PCLK_I2C3>;
236		pinctrl-names = "default";
237		pinctrl-0 = <&i2c3_xfer>;
238		status = "disabled";
239	};
240
241	i2c4: i2c@ff160000 {
242		compatible = "rockchip,rk3288-i2c";
243		reg = <0xff160000 0x1000>;
244		interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
245		#address-cells = <1>;
246		#size-cells = <0>;
247		clock-names = "i2c";
248		clocks = <&cru PCLK_I2C4>;
249		pinctrl-names = "default";
250		pinctrl-0 = <&i2c4_xfer>;
251		status = "disabled";
252	};
253
254	i2c5: i2c@ff170000 {
255		compatible = "rockchip,rk3288-i2c";
256		reg = <0xff170000 0x1000>;
257		interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
258		#address-cells = <1>;
259		#size-cells = <0>;
260		clock-names = "i2c";
261		clocks = <&cru PCLK_I2C5>;
262		pinctrl-names = "default";
263		pinctrl-0 = <&i2c5_xfer>;
264		status = "disabled";
265	};
266
267	uart0: serial@ff180000 {
268		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
269		reg = <0xff180000 0x100>;
270		interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
271		reg-shift = <2>;
272		reg-io-width = <4>;
273		clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
274		clock-names = "baudclk", "apb_pclk";
275		pinctrl-names = "default";
276		pinctrl-0 = <&uart0_xfer>;
277		status = "disabled";
278	};
279
280	uart1: serial@ff190000 {
281		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
282		reg = <0xff190000 0x100>;
283		interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
284		reg-shift = <2>;
285		reg-io-width = <4>;
286		clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
287		clock-names = "baudclk", "apb_pclk";
288		pinctrl-names = "default";
289		pinctrl-0 = <&uart1_xfer>;
290		status = "disabled";
291	};
292
293	uart2: serial@ff690000 {
294		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
295		reg = <0xff690000 0x100>;
296		interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
297		reg-shift = <2>;
298		reg-io-width = <4>;
299		clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
300		clock-names = "baudclk", "apb_pclk";
301		pinctrl-names = "default";
302		pinctrl-0 = <&uart2_xfer>;
303		status = "disabled";
304	};
305
306	uart3: serial@ff1b0000 {
307		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
308		reg = <0xff1b0000 0x100>;
309		interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
310		reg-shift = <2>;
311		reg-io-width = <4>;
312		clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
313		clock-names = "baudclk", "apb_pclk";
314		pinctrl-names = "default";
315		pinctrl-0 = <&uart3_xfer>;
316		status = "disabled";
317	};
318
319	uart4: serial@ff1c0000 {
320		compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
321		reg = <0xff1c0000 0x100>;
322		interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
323		reg-shift = <2>;
324		reg-io-width = <4>;
325		clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
326		clock-names = "baudclk", "apb_pclk";
327		pinctrl-names = "default";
328		pinctrl-0 = <&uart4_xfer>;
329		status = "disabled";
330	};
331
332	usb_host0_ehci: usb@ff500000 {
333		compatible = "generic-ehci";
334		reg = <0xff500000 0x100>;
335		interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
336		clocks = <&cru HCLK_USBHOST0>;
337		clock-names = "usbhost";
338		status = "disabled";
339	};
340
341	/* NOTE: ohci@ff520000 doesn't actually work on hardware */
342
343	usb_host1: usb@ff540000 {
344		compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
345				"snps,dwc2";
346		reg = <0xff540000 0x40000>;
347		interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
348		clocks = <&cru HCLK_USBHOST1>;
349		clock-names = "otg";
350		status = "disabled";
351	};
352
353	usb_otg: usb@ff580000 {
354		compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
355				"snps,dwc2";
356		reg = <0xff580000 0x40000>;
357		interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
358		clocks = <&cru HCLK_OTG0>;
359		clock-names = "otg";
360		status = "disabled";
361	};
362
363	usb_hsic: usb@ff5c0000 {
364		compatible = "generic-ehci";
365		reg = <0xff5c0000 0x100>;
366		interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
367		clocks = <&cru HCLK_HSIC>;
368		clock-names = "usbhost";
369		status = "disabled";
370	};
371
372	i2c0: i2c@ff650000 {
373		compatible = "rockchip,rk3288-i2c";
374		reg = <0xff650000 0x1000>;
375		interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
376		#address-cells = <1>;
377		#size-cells = <0>;
378		clock-names = "i2c";
379		clocks = <&cru PCLK_I2C0>;
380		pinctrl-names = "default";
381		pinctrl-0 = <&i2c0_xfer>;
382		status = "disabled";
383	};
384
385	i2c2: i2c@ff660000 {
386		compatible = "rockchip,rk3288-i2c";
387		reg = <0xff660000 0x1000>;
388		interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
389		#address-cells = <1>;
390		#size-cells = <0>;
391		clock-names = "i2c";
392		clocks = <&cru PCLK_I2C2>;
393		pinctrl-names = "default";
394		pinctrl-0 = <&i2c2_xfer>;
395		status = "disabled";
396	};
397
398	pwm0: pwm@ff680000 {
399		compatible = "rockchip,rk3288-pwm";
400		reg = <0xff680000 0x10>;
401		#pwm-cells = <3>;
402		pinctrl-names = "default";
403		pinctrl-0 = <&pwm0_pin>;
404		clocks = <&cru PCLK_PWM>;
405		clock-names = "pwm";
406		status = "disabled";
407	};
408
409	pwm1: pwm@ff680010 {
410		compatible = "rockchip,rk3288-pwm";
411		reg = <0xff680010 0x10>;
412		#pwm-cells = <3>;
413		pinctrl-names = "default";
414		pinctrl-0 = <&pwm1_pin>;
415		clocks = <&cru PCLK_PWM>;
416		clock-names = "pwm";
417		status = "disabled";
418	};
419
420	pwm2: pwm@ff680020 {
421		compatible = "rockchip,rk3288-pwm";
422		reg = <0xff680020 0x10>;
423		#pwm-cells = <3>;
424		pinctrl-names = "default";
425		pinctrl-0 = <&pwm2_pin>;
426		clocks = <&cru PCLK_PWM>;
427		clock-names = "pwm";
428		status = "disabled";
429	};
430
431	pwm3: pwm@ff680030 {
432		compatible = "rockchip,rk3288-pwm";
433		reg = <0xff680030 0x10>;
434		#pwm-cells = <2>;
435		pinctrl-names = "default";
436		pinctrl-0 = <&pwm3_pin>;
437		clocks = <&cru PCLK_PWM>;
438		clock-names = "pwm";
439		status = "disabled";
440	};
441
442	pmu: power-management@ff730000 {
443		compatible = "rockchip,rk3288-pmu", "syscon";
444		reg = <0xff730000 0x100>;
445	};
446
447	sgrf: syscon@ff740000 {
448		compatible = "rockchip,rk3288-sgrf", "syscon";
449		reg = <0xff740000 0x1000>;
450	};
451
452	cru: clock-controller@ff760000 {
453		compatible = "rockchip,rk3288-cru";
454		reg = <0xff760000 0x1000>;
455		rockchip,grf = <&grf>;
456		#clock-cells = <1>;
457		#reset-cells = <1>;
458	};
459
460	grf: syscon@ff770000 {
461		compatible = "rockchip,rk3288-grf", "syscon";
462		reg = <0xff770000 0x1000>;
463	};
464
465	wdt: watchdog@ff800000 {
466		compatible = "rockchip,rk3288-wdt", "snps,dw-wdt";
467		reg = <0xff800000 0x100>;
468		interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
469		status = "disabled";
470	};
471
472	i2s: i2s@ff890000 {
473		compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";
474		reg = <0xff890000 0x10000>;
475		interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
476		#address-cells = <1>;
477		#size-cells = <0>;
478		dmas = <&dmac_bus_s 0>, <&dmac_bus_s 1>;
479		dma-names = "tx", "rx";
480		clock-names = "i2s_hclk", "i2s_clk";
481		clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
482		pinctrl-names = "default";
483		pinctrl-0 = <&i2s0_bus>;
484		status = "disabled";
485	};
486
487	gic: interrupt-controller@ffc01000 {
488		compatible = "arm,gic-400";
489		interrupt-controller;
490		#interrupt-cells = <3>;
491		#address-cells = <0>;
492
493		reg = <0xffc01000 0x1000>,
494		      <0xffc02000 0x1000>,
495		      <0xffc04000 0x2000>,
496		      <0xffc06000 0x2000>;
497		interrupts = <GIC_PPI 9 0xf04>;
498	};
499
500	pinctrl: pinctrl {
501		compatible = "rockchip,rk3288-pinctrl";
502		rockchip,grf = <&grf>;
503		rockchip,pmu = <&pmu>;
504		#address-cells = <1>;
505		#size-cells = <1>;
506		ranges;
507
508		gpio0: gpio0@ff750000 {
509			compatible = "rockchip,gpio-bank";
510			reg =	<0xff750000 0x100>;
511			interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
512			clocks = <&cru PCLK_GPIO0>;
513
514			gpio-controller;
515			#gpio-cells = <2>;
516
517			interrupt-controller;
518			#interrupt-cells = <2>;
519		};
520
521		gpio1: gpio1@ff780000 {
522			compatible = "rockchip,gpio-bank";
523			reg = <0xff780000 0x100>;
524			interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
525			clocks = <&cru PCLK_GPIO1>;
526
527			gpio-controller;
528			#gpio-cells = <2>;
529
530			interrupt-controller;
531			#interrupt-cells = <2>;
532		};
533
534		gpio2: gpio2@ff790000 {
535			compatible = "rockchip,gpio-bank";
536			reg = <0xff790000 0x100>;
537			interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
538			clocks = <&cru PCLK_GPIO2>;
539
540			gpio-controller;
541			#gpio-cells = <2>;
542
543			interrupt-controller;
544			#interrupt-cells = <2>;
545		};
546
547		gpio3: gpio3@ff7a0000 {
548			compatible = "rockchip,gpio-bank";
549			reg = <0xff7a0000 0x100>;
550			interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
551			clocks = <&cru PCLK_GPIO3>;
552
553			gpio-controller;
554			#gpio-cells = <2>;
555
556			interrupt-controller;
557			#interrupt-cells = <2>;
558		};
559
560		gpio4: gpio4@ff7b0000 {
561			compatible = "rockchip,gpio-bank";
562			reg = <0xff7b0000 0x100>;
563			interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
564			clocks = <&cru PCLK_GPIO4>;
565
566			gpio-controller;
567			#gpio-cells = <2>;
568
569			interrupt-controller;
570			#interrupt-cells = <2>;
571		};
572
573		gpio5: gpio5@ff7c0000 {
574			compatible = "rockchip,gpio-bank";
575			reg = <0xff7c0000 0x100>;
576			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
577			clocks = <&cru PCLK_GPIO5>;
578
579			gpio-controller;
580			#gpio-cells = <2>;
581
582			interrupt-controller;
583			#interrupt-cells = <2>;
584		};
585
586		gpio6: gpio6@ff7d0000 {
587			compatible = "rockchip,gpio-bank";
588			reg = <0xff7d0000 0x100>;
589			interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
590			clocks = <&cru PCLK_GPIO6>;
591
592			gpio-controller;
593			#gpio-cells = <2>;
594
595			interrupt-controller;
596			#interrupt-cells = <2>;
597		};
598
599		gpio7: gpio7@ff7e0000 {
600			compatible = "rockchip,gpio-bank";
601			reg = <0xff7e0000 0x100>;
602			interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
603			clocks = <&cru PCLK_GPIO7>;
604
605			gpio-controller;
606			#gpio-cells = <2>;
607
608			interrupt-controller;
609			#interrupt-cells = <2>;
610		};
611
612		gpio8: gpio8@ff7f0000 {
613			compatible = "rockchip,gpio-bank";
614			reg = <0xff7f0000 0x100>;
615			interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
616			clocks = <&cru PCLK_GPIO8>;
617
618			gpio-controller;
619			#gpio-cells = <2>;
620
621			interrupt-controller;
622			#interrupt-cells = <2>;
623		};
624
625		pcfg_pull_up: pcfg-pull-up {
626			bias-pull-up;
627		};
628
629		pcfg_pull_down: pcfg-pull-down {
630			bias-pull-down;
631		};
632
633		pcfg_pull_none: pcfg-pull-none {
634			bias-disable;
635		};
636
637		i2c0 {
638			i2c0_xfer: i2c0-xfer {
639				rockchip,pins = <0 15 RK_FUNC_1 &pcfg_pull_none>,
640						<0 16 RK_FUNC_1 &pcfg_pull_none>;
641			};
642		};
643
644		i2c1 {
645			i2c1_xfer: i2c1-xfer {
646				rockchip,pins = <8 4 RK_FUNC_1 &pcfg_pull_none>,
647						<8 5 RK_FUNC_1 &pcfg_pull_none>;
648			};
649		};
650
651		i2c2 {
652			i2c2_xfer: i2c2-xfer {
653				rockchip,pins = <6 9 RK_FUNC_1 &pcfg_pull_none>,
654						<6 10 RK_FUNC_1 &pcfg_pull_none>;
655			};
656		};
657
658		i2c3 {
659			i2c3_xfer: i2c3-xfer {
660				rockchip,pins = <2 16 RK_FUNC_1 &pcfg_pull_none>,
661						<2 17 RK_FUNC_1 &pcfg_pull_none>;
662			};
663		};
664
665		i2c4 {
666			i2c4_xfer: i2c4-xfer {
667				rockchip,pins = <7 17 RK_FUNC_1 &pcfg_pull_none>,
668						<7 18 RK_FUNC_1 &pcfg_pull_none>;
669			};
670		};
671
672		i2c5 {
673			i2c5_xfer: i2c5-xfer {
674				rockchip,pins = <7 19 RK_FUNC_1 &pcfg_pull_none>,
675						<7 20 RK_FUNC_1 &pcfg_pull_none>;
676			};
677		};
678
679		i2s0 {
680			i2s0_bus: i2s0-bus {
681				rockchip,pins = <6 0 RK_FUNC_1 &pcfg_pull_none>,
682						<6 1 RK_FUNC_1 &pcfg_pull_none>,
683						<6 2 RK_FUNC_1 &pcfg_pull_none>,
684						<6 3 RK_FUNC_1 &pcfg_pull_none>,
685						<6 4 RK_FUNC_1 &pcfg_pull_none>,
686						<6 8 RK_FUNC_1 &pcfg_pull_none>;
687			};
688		};
689
690		sdmmc {
691			sdmmc_clk: sdmmc-clk {
692				rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none>;
693			};
694
695			sdmmc_cmd: sdmmc-cmd {
696				rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up>;
697			};
698
699			sdmmc_cd: sdmcc-cd {
700				rockchip,pins = <6 22 RK_FUNC_1 &pcfg_pull_up>;
701			};
702
703			sdmmc_bus1: sdmmc-bus1 {
704				rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>;
705			};
706
707			sdmmc_bus4: sdmmc-bus4 {
708				rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>,
709						<6 17 RK_FUNC_1 &pcfg_pull_up>,
710						<6 18 RK_FUNC_1 &pcfg_pull_up>,
711						<6 19 RK_FUNC_1 &pcfg_pull_up>;
712			};
713		};
714
715		sdio0 {
716			sdio0_bus1: sdio0-bus1 {
717				rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>;
718			};
719
720			sdio0_bus4: sdio0-bus4 {
721				rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>,
722						<4 21 RK_FUNC_1 &pcfg_pull_up>,
723						<4 22 RK_FUNC_1 &pcfg_pull_up>,
724						<4 23 RK_FUNC_1 &pcfg_pull_up>;
725			};
726
727			sdio0_cmd: sdio0-cmd {
728				rockchip,pins = <4 24 RK_FUNC_1 &pcfg_pull_up>;
729			};
730
731			sdio0_clk: sdio0-clk {
732				rockchip,pins = <4 25 RK_FUNC_1 &pcfg_pull_none>;
733			};
734
735			sdio0_cd: sdio0-cd {
736				rockchip,pins = <4 26 RK_FUNC_1 &pcfg_pull_up>;
737			};
738
739			sdio0_wp: sdio0-wp {
740				rockchip,pins = <4 27 RK_FUNC_1 &pcfg_pull_up>;
741			};
742
743			sdio0_pwr: sdio0-pwr {
744				rockchip,pins = <4 28 RK_FUNC_1 &pcfg_pull_up>;
745			};
746
747			sdio0_bkpwr: sdio0-bkpwr {
748				rockchip,pins = <4 29 RK_FUNC_1 &pcfg_pull_up>;
749			};
750
751			sdio0_int: sdio0-int {
752				rockchip,pins = <4 30 RK_FUNC_1 &pcfg_pull_up>;
753			};
754		};
755
756		sdio1 {
757			sdio1_bus1: sdio1-bus1 {
758				rockchip,pins = <3 24 4 &pcfg_pull_up>;
759			};
760
761			sdio1_bus4: sdio1-bus4 {
762				rockchip,pins = <3 24 4 &pcfg_pull_up>,
763						<3 25 4 &pcfg_pull_up>,
764						<3 26 4 &pcfg_pull_up>,
765						<3 27 4 &pcfg_pull_up>;
766			};
767
768			sdio1_cd: sdio1-cd {
769				rockchip,pins = <3 28 4 &pcfg_pull_up>;
770			};
771
772			sdio1_wp: sdio1-wp {
773				rockchip,pins = <3 29 4 &pcfg_pull_up>;
774			};
775
776			sdio1_bkpwr: sdio1-bkpwr {
777				rockchip,pins = <3 30 4 &pcfg_pull_up>;
778			};
779
780			sdio1_int: sdio1-int {
781				rockchip,pins = <3 31 4 &pcfg_pull_up>;
782			};
783
784			sdio1_cmd: sdio1-cmd {
785				rockchip,pins = <4 6 4 &pcfg_pull_up>;
786			};
787
788			sdio1_clk: sdio1-clk {
789				rockchip,pins = <4 7 4 &pcfg_pull_none>;
790			};
791
792			sdio1_pwr: sdio1-pwr {
793				rockchip,pins = <4 9 4 &pcfg_pull_up>;
794			};
795		};
796
797		emmc {
798			emmc_clk: emmc-clk {
799				rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none>;
800			};
801
802			emmc_cmd: emmc-cmd {
803				rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_up>;
804			};
805
806			emmc_pwr: emmc-pwr {
807				rockchip,pins = <3 9 RK_FUNC_2 &pcfg_pull_up>;
808			};
809
810			emmc_bus1: emmc-bus1 {
811				rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>;
812			};
813
814			emmc_bus4: emmc-bus4 {
815				rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
816						<3 1 RK_FUNC_2 &pcfg_pull_up>,
817						<3 2 RK_FUNC_2 &pcfg_pull_up>,
818						<3 3 RK_FUNC_2 &pcfg_pull_up>;
819			};
820
821			emmc_bus8: emmc-bus8 {
822				rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
823						<3 1 RK_FUNC_2 &pcfg_pull_up>,
824						<3 2 RK_FUNC_2 &pcfg_pull_up>,
825						<3 3 RK_FUNC_2 &pcfg_pull_up>,
826						<3 4 RK_FUNC_2 &pcfg_pull_up>,
827						<3 5 RK_FUNC_2 &pcfg_pull_up>,
828						<3 6 RK_FUNC_2 &pcfg_pull_up>,
829						<3 7 RK_FUNC_2 &pcfg_pull_up>;
830			};
831		};
832
833		spi0 {
834			spi0_clk: spi0-clk {
835				rockchip,pins = <5 12 RK_FUNC_1 &pcfg_pull_up>;
836			};
837			spi0_cs0: spi0-cs0 {
838				rockchip,pins = <5 13 RK_FUNC_1 &pcfg_pull_up>;
839			};
840			spi0_tx: spi0-tx {
841				rockchip,pins = <5 14 RK_FUNC_1 &pcfg_pull_up>;
842			};
843			spi0_rx: spi0-rx {
844				rockchip,pins = <5 15 RK_FUNC_1 &pcfg_pull_up>;
845			};
846			spi0_cs1: spi0-cs1 {
847				rockchip,pins = <5 16 RK_FUNC_1 &pcfg_pull_up>;
848			};
849		};
850		spi1 {
851			spi1_clk: spi1-clk {
852				rockchip,pins = <7 12 RK_FUNC_2 &pcfg_pull_up>;
853			};
854			spi1_cs0: spi1-cs0 {
855				rockchip,pins = <7 13 RK_FUNC_2 &pcfg_pull_up>;
856			};
857			spi1_rx: spi1-rx {
858				rockchip,pins = <7 14 RK_FUNC_2 &pcfg_pull_up>;
859			};
860			spi1_tx: spi1-tx {
861				rockchip,pins = <7 15 RK_FUNC_2 &pcfg_pull_up>;
862			};
863		};
864
865		spi2 {
866			spi2_cs1: spi2-cs1 {
867				rockchip,pins = <8 3 RK_FUNC_1 &pcfg_pull_up>;
868			};
869			spi2_clk: spi2-clk {
870				rockchip,pins = <8 6 RK_FUNC_1 &pcfg_pull_up>;
871			};
872			spi2_cs0: spi2-cs0 {
873				rockchip,pins = <8 7 RK_FUNC_1 &pcfg_pull_up>;
874			};
875			spi2_rx: spi2-rx {
876				rockchip,pins = <8 8 RK_FUNC_1 &pcfg_pull_up>;
877			};
878			spi2_tx: spi2-tx {
879				rockchip,pins = <8 9 RK_FUNC_1 &pcfg_pull_up>;
880			};
881		};
882
883		uart0 {
884			uart0_xfer: uart0-xfer {
885				rockchip,pins = <4 16 RK_FUNC_1 &pcfg_pull_up>,
886						<4 17 RK_FUNC_1 &pcfg_pull_none>;
887			};
888
889			uart0_cts: uart0-cts {
890				rockchip,pins = <4 18 RK_FUNC_1 &pcfg_pull_none>;
891			};
892
893			uart0_rts: uart0-rts {
894				rockchip,pins = <4 19 RK_FUNC_1 &pcfg_pull_none>;
895			};
896		};
897
898		uart1 {
899			uart1_xfer: uart1-xfer {
900				rockchip,pins = <5 8 RK_FUNC_1 &pcfg_pull_up>,
901						<5 9 RK_FUNC_1 &pcfg_pull_none>;
902			};
903
904			uart1_cts: uart1-cts {
905				rockchip,pins = <5 10 RK_FUNC_1 &pcfg_pull_none>;
906			};
907
908			uart1_rts: uart1-rts {
909				rockchip,pins = <5 11 RK_FUNC_1 &pcfg_pull_none>;
910			};
911		};
912
913		uart2 {
914			uart2_xfer: uart2-xfer {
915				rockchip,pins = <7 22 RK_FUNC_1 &pcfg_pull_up>,
916						<7 23 RK_FUNC_1 &pcfg_pull_none>;
917			};
918			/* no rts / cts for uart2 */
919		};
920
921		uart3 {
922			uart3_xfer: uart3-xfer {
923				rockchip,pins = <7 7 RK_FUNC_1 &pcfg_pull_up>,
924						<7 8 RK_FUNC_1 &pcfg_pull_none>;
925			};
926
927			uart3_cts: uart3-cts {
928				rockchip,pins = <7 9 RK_FUNC_1 &pcfg_pull_none>;
929			};
930
931			uart3_rts: uart3-rts {
932				rockchip,pins = <7 10 RK_FUNC_1 &pcfg_pull_none>;
933			};
934		};
935
936		uart4 {
937			uart4_xfer: uart4-xfer {
938				rockchip,pins = <5 12 3 &pcfg_pull_up>,
939						<5 13 3 &pcfg_pull_none>;
940			};
941
942			uart4_cts: uart4-cts {
943				rockchip,pins = <5 14 3 &pcfg_pull_none>;
944			};
945
946			uart4_rts: uart4-rts {
947				rockchip,pins = <5 15 3 &pcfg_pull_none>;
948			};
949		};
950
951		pwm0 {
952			pwm0_pin: pwm0-pin {
953				rockchip,pins = <7 0 RK_FUNC_1 &pcfg_pull_none>;
954			};
955		};
956
957		pwm1 {
958			pwm1_pin: pwm1-pin {
959				rockchip,pins = <7 1 RK_FUNC_1 &pcfg_pull_none>;
960			};
961		};
962
963		pwm2 {
964			pwm2_pin: pwm2-pin {
965				rockchip,pins = <7 22 3 &pcfg_pull_none>;
966			};
967		};
968
969		pwm3 {
970			pwm3_pin: pwm3-pin {
971				rockchip,pins = <7 23 3 &pcfg_pull_none>;
972			};
973		};
974	};
975};
976