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.
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.
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"
21 compatible = "rockchip,rk3288";
23 interrupt-parent = <&gic>;
45 compatible = "arm,cortex-a12";
50 compatible = "arm,cortex-a12";
55 compatible = "arm,cortex-a12";
60 compatible = "arm,cortex-a12";
66 compatible = "fixed-clock";
67 clock-frequency = <24000000>;
68 clock-output-names = "xin24m";
73 compatible = "arm,armv7-timer";
74 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
75 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
76 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
77 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
78 clock-frequency = <24000000>;
81 sdmmc: dwmmc@ff0c0000 {
82 compatible = "rockchip,rk3288-dw-mshc";
83 clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
84 clock-names = "biu", "ciu";
86 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
87 reg = <0xff0c0000 0x4000>;
91 sdio0: dwmmc@ff0d0000 {
92 compatible = "rockchip,rk3288-dw-mshc";
93 clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>;
94 clock-names = "biu", "ciu";
96 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
97 reg = <0xff0d0000 0x4000>;
101 sdio1: dwmmc@ff0e0000 {
102 compatible = "rockchip,rk3288-dw-mshc";
103 clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>;
104 clock-names = "biu", "ciu";
105 fifo-depth = <0x100>;
106 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
107 reg = <0xff0e0000 0x4000>;
111 emmc: dwmmc@ff0f0000 {
112 compatible = "rockchip,rk3288-dw-mshc";
113 clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
114 clock-names = "biu", "ciu";
115 fifo-depth = <0x100>;
116 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
117 reg = <0xff0f0000 0x4000>;
121 saradc: saradc@ff100000 {
122 compatible = "rockchip,saradc";
123 reg = <0xff100000 0x100>;
124 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
125 #io-channel-cells = <1>;
126 clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
127 clock-names = "saradc", "apb_pclk";
132 compatible = "rockchip,rk3288-i2c";
133 reg = <0xff140000 0x1000>;
134 interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
135 #address-cells = <1>;
138 clocks = <&cru PCLK_I2C1>;
139 pinctrl-names = "default";
140 pinctrl-0 = <&i2c1_xfer>;
145 compatible = "rockchip,rk3288-i2c";
146 reg = <0xff150000 0x1000>;
147 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
148 #address-cells = <1>;
151 clocks = <&cru PCLK_I2C3>;
152 pinctrl-names = "default";
153 pinctrl-0 = <&i2c3_xfer>;
158 compatible = "rockchip,rk3288-i2c";
159 reg = <0xff160000 0x1000>;
160 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
161 #address-cells = <1>;
164 clocks = <&cru PCLK_I2C4>;
165 pinctrl-names = "default";
166 pinctrl-0 = <&i2c4_xfer>;
171 compatible = "rockchip,rk3288-i2c";
172 reg = <0xff170000 0x1000>;
173 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
174 #address-cells = <1>;
177 clocks = <&cru PCLK_I2C5>;
178 pinctrl-names = "default";
179 pinctrl-0 = <&i2c5_xfer>;
183 uart0: serial@ff180000 {
184 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
185 reg = <0xff180000 0x100>;
186 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
189 clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
190 clock-names = "baudclk", "apb_pclk";
191 pinctrl-names = "default";
192 pinctrl-0 = <&uart0_xfer>;
196 uart1: serial@ff190000 {
197 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
198 reg = <0xff190000 0x100>;
199 interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
202 clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
203 clock-names = "baudclk", "apb_pclk";
204 pinctrl-names = "default";
205 pinctrl-0 = <&uart1_xfer>;
209 uart2: serial@ff690000 {
210 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
211 reg = <0xff690000 0x100>;
212 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
215 clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
216 clock-names = "baudclk", "apb_pclk";
217 pinctrl-names = "default";
218 pinctrl-0 = <&uart2_xfer>;
222 uart3: serial@ff1b0000 {
223 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
224 reg = <0xff1b0000 0x100>;
225 interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
228 clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
229 clock-names = "baudclk", "apb_pclk";
230 pinctrl-names = "default";
231 pinctrl-0 = <&uart3_xfer>;
235 uart4: serial@ff1c0000 {
236 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
237 reg = <0xff1c0000 0x100>;
238 interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
241 clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
242 clock-names = "baudclk", "apb_pclk";
243 pinctrl-names = "default";
244 pinctrl-0 = <&uart4_xfer>;
248 usb_host0_ehci: usb@ff500000 {
249 compatible = "generic-ehci";
250 reg = <0xff500000 0x100>;
251 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
252 clocks = <&cru HCLK_USBHOST0>;
253 clock-names = "usbhost";
257 /* NOTE: ohci@ff520000 doesn't actually work on hardware */
259 usb_host1: usb@ff540000 {
260 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
262 reg = <0xff540000 0x40000>;
263 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
264 clocks = <&cru HCLK_USBHOST1>;
269 usb_otg: usb@ff580000 {
270 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
272 reg = <0xff580000 0x40000>;
273 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
274 clocks = <&cru HCLK_OTG0>;
279 usb_hsic: usb@ff5c0000 {
280 compatible = "generic-ehci";
281 reg = <0xff5c0000 0x100>;
282 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
283 clocks = <&cru HCLK_HSIC>;
284 clock-names = "usbhost";
289 compatible = "rockchip,rk3288-i2c";
290 reg = <0xff650000 0x1000>;
291 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
292 #address-cells = <1>;
295 clocks = <&cru PCLK_I2C0>;
296 pinctrl-names = "default";
297 pinctrl-0 = <&i2c0_xfer>;
302 compatible = "rockchip,rk3288-i2c";
303 reg = <0xff660000 0x1000>;
304 interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
305 #address-cells = <1>;
308 clocks = <&cru PCLK_I2C2>;
309 pinctrl-names = "default";
310 pinctrl-0 = <&i2c2_xfer>;
315 compatible = "rockchip,rk3288-pwm";
316 reg = <0xff680000 0x10>;
318 pinctrl-names = "default";
319 pinctrl-0 = <&pwm0_pin>;
320 clocks = <&cru PCLK_PWM>;
326 compatible = "rockchip,rk3288-pwm";
327 reg = <0xff680010 0x10>;
329 pinctrl-names = "default";
330 pinctrl-0 = <&pwm1_pin>;
331 clocks = <&cru PCLK_PWM>;
337 compatible = "rockchip,rk3288-pwm";
338 reg = <0xff680020 0x10>;
340 pinctrl-names = "default";
341 pinctrl-0 = <&pwm2_pin>;
342 clocks = <&cru PCLK_PWM>;
348 compatible = "rockchip,rk3288-pwm";
349 reg = <0xff680030 0x10>;
351 pinctrl-names = "default";
352 pinctrl-0 = <&pwm3_pin>;
353 clocks = <&cru PCLK_PWM>;
358 pmu: power-management@ff730000 {
359 compatible = "rockchip,rk3288-pmu", "syscon";
360 reg = <0xff730000 0x100>;
363 sgrf: syscon@ff740000 {
364 compatible = "rockchip,rk3288-sgrf", "syscon";
365 reg = <0xff740000 0x1000>;
368 cru: clock-controller@ff760000 {
369 compatible = "rockchip,rk3288-cru";
370 reg = <0xff760000 0x1000>;
371 rockchip,grf = <&grf>;
376 grf: syscon@ff770000 {
377 compatible = "rockchip,rk3288-grf", "syscon";
378 reg = <0xff770000 0x1000>;
381 wdt: watchdog@ff800000 {
382 compatible = "rockchip,rk3288-wdt", "snps,dw-wdt";
383 reg = <0xff800000 0x100>;
384 interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
388 gic: interrupt-controller@ffc01000 {
389 compatible = "arm,gic-400";
390 interrupt-controller;
391 #interrupt-cells = <3>;
392 #address-cells = <0>;
394 reg = <0xffc01000 0x1000>,
398 interrupts = <GIC_PPI 9 0xf04>;
402 compatible = "rockchip,rk3288-pinctrl";
403 rockchip,grf = <&grf>;
404 rockchip,pmu = <&pmu>;
405 #address-cells = <1>;
409 gpio0: gpio0@ff750000 {
410 compatible = "rockchip,gpio-bank";
411 reg = <0xff750000 0x100>;
412 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
413 clocks = <&cru PCLK_GPIO0>;
418 interrupt-controller;
419 #interrupt-cells = <2>;
422 gpio1: gpio1@ff780000 {
423 compatible = "rockchip,gpio-bank";
424 reg = <0xff780000 0x100>;
425 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
426 clocks = <&cru PCLK_GPIO1>;
431 interrupt-controller;
432 #interrupt-cells = <2>;
435 gpio2: gpio2@ff790000 {
436 compatible = "rockchip,gpio-bank";
437 reg = <0xff790000 0x100>;
438 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
439 clocks = <&cru PCLK_GPIO2>;
444 interrupt-controller;
445 #interrupt-cells = <2>;
448 gpio3: gpio3@ff7a0000 {
449 compatible = "rockchip,gpio-bank";
450 reg = <0xff7a0000 0x100>;
451 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
452 clocks = <&cru PCLK_GPIO3>;
457 interrupt-controller;
458 #interrupt-cells = <2>;
461 gpio4: gpio4@ff7b0000 {
462 compatible = "rockchip,gpio-bank";
463 reg = <0xff7b0000 0x100>;
464 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
465 clocks = <&cru PCLK_GPIO4>;
470 interrupt-controller;
471 #interrupt-cells = <2>;
474 gpio5: gpio5@ff7c0000 {
475 compatible = "rockchip,gpio-bank";
476 reg = <0xff7c0000 0x100>;
477 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
478 clocks = <&cru PCLK_GPIO5>;
483 interrupt-controller;
484 #interrupt-cells = <2>;
487 gpio6: gpio6@ff7d0000 {
488 compatible = "rockchip,gpio-bank";
489 reg = <0xff7d0000 0x100>;
490 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
491 clocks = <&cru PCLK_GPIO6>;
496 interrupt-controller;
497 #interrupt-cells = <2>;
500 gpio7: gpio7@ff7e0000 {
501 compatible = "rockchip,gpio-bank";
502 reg = <0xff7e0000 0x100>;
503 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
504 clocks = <&cru PCLK_GPIO7>;
509 interrupt-controller;
510 #interrupt-cells = <2>;
513 gpio8: gpio8@ff7f0000 {
514 compatible = "rockchip,gpio-bank";
515 reg = <0xff7f0000 0x100>;
516 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
517 clocks = <&cru PCLK_GPIO8>;
522 interrupt-controller;
523 #interrupt-cells = <2>;
526 pcfg_pull_up: pcfg-pull-up {
530 pcfg_pull_down: pcfg-pull-down {
534 pcfg_pull_none: pcfg-pull-none {
539 i2c0_xfer: i2c0-xfer {
540 rockchip,pins = <0 15 RK_FUNC_1 &pcfg_pull_none>,
541 <0 16 RK_FUNC_1 &pcfg_pull_none>;
546 i2c1_xfer: i2c1-xfer {
547 rockchip,pins = <8 4 RK_FUNC_1 &pcfg_pull_none>,
548 <8 5 RK_FUNC_1 &pcfg_pull_none>;
553 i2c2_xfer: i2c2-xfer {
554 rockchip,pins = <6 9 RK_FUNC_1 &pcfg_pull_none>,
555 <6 10 RK_FUNC_1 &pcfg_pull_none>;
560 i2c3_xfer: i2c3-xfer {
561 rockchip,pins = <2 16 RK_FUNC_1 &pcfg_pull_none>,
562 <2 17 RK_FUNC_1 &pcfg_pull_none>;
567 i2c4_xfer: i2c4-xfer {
568 rockchip,pins = <7 17 RK_FUNC_1 &pcfg_pull_none>,
569 <7 18 RK_FUNC_1 &pcfg_pull_none>;
574 i2c5_xfer: i2c5-xfer {
575 rockchip,pins = <7 19 RK_FUNC_1 &pcfg_pull_none>,
576 <7 20 RK_FUNC_1 &pcfg_pull_none>;
581 sdmmc_clk: sdmmc-clk {
582 rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none>;
585 sdmmc_cmd: sdmmc-cmd {
586 rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up>;
590 rockchip,pins = <6 22 RK_FUNC_1 &pcfg_pull_up>;
593 sdmmc_bus1: sdmmc-bus1 {
594 rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>;
597 sdmmc_bus4: sdmmc-bus4 {
598 rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>,
599 <6 17 RK_FUNC_1 &pcfg_pull_up>,
600 <6 18 RK_FUNC_1 &pcfg_pull_up>,
601 <6 19 RK_FUNC_1 &pcfg_pull_up>;
606 sdio0_bus1: sdio0-bus1 {
607 rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>;
610 sdio0_bus4: sdio0-bus4 {
611 rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>,
612 <4 21 RK_FUNC_1 &pcfg_pull_up>,
613 <4 22 RK_FUNC_1 &pcfg_pull_up>,
614 <4 23 RK_FUNC_1 &pcfg_pull_up>;
617 sdio0_cmd: sdio0-cmd {
618 rockchip,pins = <4 24 RK_FUNC_1 &pcfg_pull_up>;
621 sdio0_clk: sdio0-clk {
622 rockchip,pins = <4 25 RK_FUNC_1 &pcfg_pull_none>;
626 rockchip,pins = <4 26 RK_FUNC_1 &pcfg_pull_up>;
630 rockchip,pins = <4 27 RK_FUNC_1 &pcfg_pull_up>;
633 sdio0_pwr: sdio0-pwr {
634 rockchip,pins = <4 28 RK_FUNC_1 &pcfg_pull_up>;
637 sdio0_bkpwr: sdio0-bkpwr {
638 rockchip,pins = <4 29 RK_FUNC_1 &pcfg_pull_up>;
641 sdio0_int: sdio0-int {
642 rockchip,pins = <4 30 RK_FUNC_1 &pcfg_pull_up>;
647 sdio1_bus1: sdio1-bus1 {
648 rockchip,pins = <3 24 4 &pcfg_pull_up>;
651 sdio1_bus4: sdio1-bus4 {
652 rockchip,pins = <3 24 4 &pcfg_pull_up>,
653 <3 25 4 &pcfg_pull_up>,
654 <3 26 4 &pcfg_pull_up>,
655 <3 27 4 &pcfg_pull_up>;
659 rockchip,pins = <3 28 4 &pcfg_pull_up>;
663 rockchip,pins = <3 29 4 &pcfg_pull_up>;
666 sdio1_bkpwr: sdio1-bkpwr {
667 rockchip,pins = <3 30 4 &pcfg_pull_up>;
670 sdio1_int: sdio1-int {
671 rockchip,pins = <3 31 4 &pcfg_pull_up>;
674 sdio1_cmd: sdio1-cmd {
675 rockchip,pins = <4 6 4 &pcfg_pull_up>;
678 sdio1_clk: sdio1-clk {
679 rockchip,pins = <4 7 4 &pcfg_pull_none>;
682 sdio1_pwr: sdio1-pwr {
683 rockchip,pins = <4 9 4 &pcfg_pull_up>;
689 rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none>;
693 rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_up>;
697 rockchip,pins = <3 9 RK_FUNC_2 &pcfg_pull_up>;
700 emmc_bus1: emmc-bus1 {
701 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>;
704 emmc_bus4: emmc-bus4 {
705 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
706 <3 1 RK_FUNC_2 &pcfg_pull_up>,
707 <3 2 RK_FUNC_2 &pcfg_pull_up>,
708 <3 3 RK_FUNC_2 &pcfg_pull_up>;
711 emmc_bus8: emmc-bus8 {
712 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
713 <3 1 RK_FUNC_2 &pcfg_pull_up>,
714 <3 2 RK_FUNC_2 &pcfg_pull_up>,
715 <3 3 RK_FUNC_2 &pcfg_pull_up>,
716 <3 4 RK_FUNC_2 &pcfg_pull_up>,
717 <3 5 RK_FUNC_2 &pcfg_pull_up>,
718 <3 6 RK_FUNC_2 &pcfg_pull_up>,
719 <3 7 RK_FUNC_2 &pcfg_pull_up>;
724 uart0_xfer: uart0-xfer {
725 rockchip,pins = <4 16 RK_FUNC_1 &pcfg_pull_up>,
726 <4 17 RK_FUNC_1 &pcfg_pull_none>;
729 uart0_cts: uart0-cts {
730 rockchip,pins = <4 18 RK_FUNC_1 &pcfg_pull_none>;
733 uart0_rts: uart0-rts {
734 rockchip,pins = <4 19 RK_FUNC_1 &pcfg_pull_none>;
739 uart1_xfer: uart1-xfer {
740 rockchip,pins = <5 8 RK_FUNC_1 &pcfg_pull_up>,
741 <5 9 RK_FUNC_1 &pcfg_pull_none>;
744 uart1_cts: uart1-cts {
745 rockchip,pins = <5 10 RK_FUNC_1 &pcfg_pull_none>;
748 uart1_rts: uart1-rts {
749 rockchip,pins = <5 11 RK_FUNC_1 &pcfg_pull_none>;
754 uart2_xfer: uart2-xfer {
755 rockchip,pins = <7 22 RK_FUNC_1 &pcfg_pull_up>,
756 <7 23 RK_FUNC_1 &pcfg_pull_none>;
758 /* no rts / cts for uart2 */
762 uart3_xfer: uart3-xfer {
763 rockchip,pins = <7 7 RK_FUNC_1 &pcfg_pull_up>,
764 <7 8 RK_FUNC_1 &pcfg_pull_none>;
767 uart3_cts: uart3-cts {
768 rockchip,pins = <7 9 RK_FUNC_1 &pcfg_pull_none>;
771 uart3_rts: uart3-rts {
772 rockchip,pins = <7 10 RK_FUNC_1 &pcfg_pull_none>;
777 uart4_xfer: uart4-xfer {
778 rockchip,pins = <5 12 3 &pcfg_pull_up>,
779 <5 13 3 &pcfg_pull_none>;
782 uart4_cts: uart4-cts {
783 rockchip,pins = <5 14 3 &pcfg_pull_none>;
786 uart4_rts: uart4-rts {
787 rockchip,pins = <5 15 3 &pcfg_pull_none>;
793 rockchip,pins = <7 0 RK_FUNC_1 &pcfg_pull_none>;
799 rockchip,pins = <7 1 RK_FUNC_1 &pcfg_pull_none>;
805 rockchip,pins = <7 22 3 &pcfg_pull_none>;
811 rockchip,pins = <7 23 3 &pcfg_pull_none>;