1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
3 * Copyright (c) 2013 MundoReader S.L.
7 #include <dt-bindings/gpio/gpio.h>
8 #include <dt-bindings/pinctrl/rockchip.h>
9 #include <dt-bindings/clock/rk3066a-cru.h>
10 #include <dt-bindings/power/rk3066-power.h>
11 #include "rk3xxx.dtsi"
14 compatible = "rockchip,rk3066a";
24 enable-method = "rockchip,rk3066-smp";
28 compatible = "arm,cortex-a9";
29 next-level-cache = <&L2>;
40 clock-latency = <40000>;
41 clocks = <&cru ARMCLK>;
45 compatible = "arm,cortex-a9";
46 next-level-cache = <&L2>;
52 compatible = "rockchip,display-subsystem";
53 ports = <&vop0_out>, <&vop1_out>;
56 hdmi_sound: hdmi-sound {
57 compatible = "simple-audio-card";
58 simple-audio-card,name = "HDMI";
59 simple-audio-card,format = "i2s";
60 simple-audio-card,mclk-fs = <256>;
63 simple-audio-card,codec {
67 simple-audio-card,cpu {
73 compatible = "mmio-sram";
74 reg = <0x10080000 0x10000>;
77 ranges = <0 0x10080000 0x10000>;
80 compatible = "rockchip,rk3066-smp-sram";
86 compatible = "rockchip,rk3066-vop";
87 reg = <0x1010c000 0x19c>;
88 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
89 clocks = <&cru ACLK_LCDC0>,
92 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
93 power-domains = <&power RK3066_PD_VIO>;
94 resets = <&cru SRST_LCDC0_AXI>,
95 <&cru SRST_LCDC0_AHB>,
96 <&cru SRST_LCDC0_DCLK>;
97 reset-names = "axi", "ahb", "dclk";
101 #address-cells = <1>;
104 vop0_out_hdmi: endpoint@0 {
106 remote-endpoint = <&hdmi_in_vop0>;
112 compatible = "rockchip,rk3066-vop";
113 reg = <0x1010e000 0x19c>;
114 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
115 clocks = <&cru ACLK_LCDC1>,
118 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
119 power-domains = <&power RK3066_PD_VIO>;
120 resets = <&cru SRST_LCDC1_AXI>,
121 <&cru SRST_LCDC1_AHB>,
122 <&cru SRST_LCDC1_DCLK>;
123 reset-names = "axi", "ahb", "dclk";
127 #address-cells = <1>;
130 vop1_out_hdmi: endpoint@0 {
132 remote-endpoint = <&hdmi_in_vop1>;
137 hdmi: hdmi@10116000 {
138 compatible = "rockchip,rk3066-hdmi";
139 reg = <0x10116000 0x2000>;
140 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
141 clocks = <&cru HCLK_HDMI>;
142 clock-names = "hclk";
143 pinctrl-names = "default";
144 pinctrl-0 = <&hdmii2c_xfer>, <&hdmi_hpd>;
145 power-domains = <&power RK3066_PD_VIO>;
146 rockchip,grf = <&grf>;
147 #sound-dai-cells = <0>;
151 #address-cells = <1>;
156 #address-cells = <1>;
159 hdmi_in_vop0: endpoint@0 {
161 remote-endpoint = <&vop0_out_hdmi>;
164 hdmi_in_vop1: endpoint@1 {
166 remote-endpoint = <&vop1_out_hdmi>;
177 compatible = "rockchip,rk3066-i2s";
178 reg = <0x10118000 0x2000>;
179 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
180 pinctrl-names = "default";
181 pinctrl-0 = <&i2s0_bus>;
182 clocks = <&cru SCLK_I2S0>, <&cru HCLK_I2S0>;
183 clock-names = "i2s_clk", "i2s_hclk";
184 dmas = <&dmac1_s 4>, <&dmac1_s 5>;
185 dma-names = "tx", "rx";
186 rockchip,playback-channels = <8>;
187 rockchip,capture-channels = <2>;
188 #sound-dai-cells = <0>;
193 compatible = "rockchip,rk3066-i2s";
194 reg = <0x1011a000 0x2000>;
195 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
196 pinctrl-names = "default";
197 pinctrl-0 = <&i2s1_bus>;
198 clocks = <&cru SCLK_I2S1>, <&cru HCLK_I2S1>;
199 clock-names = "i2s_clk", "i2s_hclk";
200 dmas = <&dmac1_s 6>, <&dmac1_s 7>;
201 dma-names = "tx", "rx";
202 rockchip,playback-channels = <2>;
203 rockchip,capture-channels = <2>;
204 #sound-dai-cells = <0>;
209 compatible = "rockchip,rk3066-i2s";
210 reg = <0x1011c000 0x2000>;
211 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
212 pinctrl-names = "default";
213 pinctrl-0 = <&i2s2_bus>;
214 clocks = <&cru SCLK_I2S2>, <&cru HCLK_I2S2>;
215 clock-names = "i2s_clk", "i2s_hclk";
216 dmas = <&dmac1_s 9>, <&dmac1_s 10>;
217 dma-names = "tx", "rx";
218 rockchip,playback-channels = <2>;
219 rockchip,capture-channels = <2>;
220 #sound-dai-cells = <0>;
224 cru: clock-controller@20000000 {
225 compatible = "rockchip,rk3066a-cru";
226 reg = <0x20000000 0x1000>;
228 clock-names = "xin24m";
229 rockchip,grf = <&grf>;
232 assigned-clocks = <&cru PLL_CPLL>, <&cru PLL_GPLL>,
233 <&cru ACLK_CPU>, <&cru HCLK_CPU>,
234 <&cru PCLK_CPU>, <&cru ACLK_PERI>,
235 <&cru HCLK_PERI>, <&cru PCLK_PERI>;
236 assigned-clock-rates = <400000000>, <594000000>,
237 <300000000>, <150000000>,
238 <75000000>, <300000000>,
239 <150000000>, <75000000>;
242 timer2: timer@2000e000 {
243 compatible = "snps,dw-apb-timer";
244 reg = <0x2000e000 0x100>;
245 interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
246 clocks = <&cru SCLK_TIMER2>, <&cru PCLK_TIMER2>;
247 clock-names = "timer", "pclk";
250 efuse: efuse@20010000 {
251 compatible = "rockchip,rk3066a-efuse";
252 reg = <0x20010000 0x4000>;
253 #address-cells = <1>;
255 clocks = <&cru PCLK_EFUSE>;
256 clock-names = "pclk_efuse";
258 cpu_leakage: cpu_leakage@17 {
263 timer0: timer@20038000 {
264 compatible = "snps,dw-apb-timer";
265 reg = <0x20038000 0x100>;
266 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
267 clocks = <&cru SCLK_TIMER0>, <&cru PCLK_TIMER0>;
268 clock-names = "timer", "pclk";
271 timer1: timer@2003a000 {
272 compatible = "snps,dw-apb-timer";
273 reg = <0x2003a000 0x100>;
274 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
275 clocks = <&cru SCLK_TIMER1>, <&cru PCLK_TIMER1>;
276 clock-names = "timer", "pclk";
279 tsadc: tsadc@20060000 {
280 compatible = "rockchip,rk3066-tsadc";
281 reg = <0x20060000 0x100>;
282 clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
283 clock-names = "saradc", "apb_pclk";
284 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
285 #io-channel-cells = <1>;
286 resets = <&cru SRST_TSADC>;
287 reset-names = "saradc-apb";
292 compatible = "rockchip,rk3066a-pinctrl";
293 rockchip,grf = <&grf>;
294 #address-cells = <1>;
298 gpio0: gpio@20034000 {
299 compatible = "rockchip,gpio-bank";
300 reg = <0x20034000 0x100>;
301 interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
302 clocks = <&cru PCLK_GPIO0>;
307 interrupt-controller;
308 #interrupt-cells = <2>;
311 gpio1: gpio@2003c000 {
312 compatible = "rockchip,gpio-bank";
313 reg = <0x2003c000 0x100>;
314 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
315 clocks = <&cru PCLK_GPIO1>;
320 interrupt-controller;
321 #interrupt-cells = <2>;
324 gpio2: gpio@2003e000 {
325 compatible = "rockchip,gpio-bank";
326 reg = <0x2003e000 0x100>;
327 interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
328 clocks = <&cru PCLK_GPIO2>;
333 interrupt-controller;
334 #interrupt-cells = <2>;
337 gpio3: gpio@20080000 {
338 compatible = "rockchip,gpio-bank";
339 reg = <0x20080000 0x100>;
340 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
341 clocks = <&cru PCLK_GPIO3>;
346 interrupt-controller;
347 #interrupt-cells = <2>;
350 gpio4: gpio@20084000 {
351 compatible = "rockchip,gpio-bank";
352 reg = <0x20084000 0x100>;
353 interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
354 clocks = <&cru PCLK_GPIO4>;
359 interrupt-controller;
360 #interrupt-cells = <2>;
363 gpio6: gpio@2000a000 {
364 compatible = "rockchip,gpio-bank";
365 reg = <0x2000a000 0x100>;
366 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
367 clocks = <&cru PCLK_GPIO6>;
372 interrupt-controller;
373 #interrupt-cells = <2>;
376 pcfg_pull_default: pcfg-pull-default {
377 bias-pull-pin-default;
380 pcfg_pull_none: pcfg-pull-none {
385 emac_xfer: emac-xfer {
386 rockchip,pins = <1 RK_PC0 2 &pcfg_pull_none>, /* mac_clk */
387 <1 RK_PC1 2 &pcfg_pull_none>, /* tx_en */
388 <1 RK_PC2 2 &pcfg_pull_none>, /* txd1 */
389 <1 RK_PC3 2 &pcfg_pull_none>, /* txd0 */
390 <1 RK_PC4 2 &pcfg_pull_none>, /* rx_err */
391 <1 RK_PC5 2 &pcfg_pull_none>, /* crs_dvalid */
392 <1 RK_PC6 2 &pcfg_pull_none>, /* rxd1 */
393 <1 RK_PC7 2 &pcfg_pull_none>; /* rxd0 */
396 emac_mdio: emac-mdio {
397 rockchip,pins = <1 RK_PD0 2 &pcfg_pull_none>, /* mac_md */
398 <1 RK_PD1 2 &pcfg_pull_none>; /* mac_mdclk */
404 rockchip,pins = <3 RK_PD7 2 &pcfg_pull_default>;
408 rockchip,pins = <4 RK_PB1 2 &pcfg_pull_default>;
412 rockchip,pins = <4 RK_PB2 2 &pcfg_pull_default>;
416 * The data pins are shared between nandc and emmc and
417 * not accessible through pinctrl. Also they should've
418 * been already set correctly by firmware, as
419 * flash/emmc is the boot-device.
425 rockchip,pins = <0 RK_PA0 1 &pcfg_pull_default>;
428 hdmii2c_xfer: hdmii2c-xfer {
429 rockchip,pins = <0 RK_PA1 1 &pcfg_pull_none>,
430 <0 RK_PA2 1 &pcfg_pull_none>;
435 i2c0_xfer: i2c0-xfer {
436 rockchip,pins = <2 RK_PD4 1 &pcfg_pull_none>,
437 <2 RK_PD5 1 &pcfg_pull_none>;
442 i2c1_xfer: i2c1-xfer {
443 rockchip,pins = <2 RK_PD6 1 &pcfg_pull_none>,
444 <2 RK_PD7 1 &pcfg_pull_none>;
449 i2c2_xfer: i2c2-xfer {
450 rockchip,pins = <3 RK_PA0 1 &pcfg_pull_none>,
451 <3 RK_PA1 1 &pcfg_pull_none>;
456 i2c3_xfer: i2c3-xfer {
457 rockchip,pins = <3 RK_PA2 2 &pcfg_pull_none>,
458 <3 RK_PA3 2 &pcfg_pull_none>;
463 i2c4_xfer: i2c4-xfer {
464 rockchip,pins = <3 RK_PA4 1 &pcfg_pull_none>,
465 <3 RK_PA5 1 &pcfg_pull_none>;
471 rockchip,pins = <0 RK_PA3 1 &pcfg_pull_none>;
477 rockchip,pins = <0 RK_PA4 1 &pcfg_pull_none>;
483 rockchip,pins = <0 RK_PD6 1 &pcfg_pull_none>;
489 rockchip,pins = <0 RK_PD7 1 &pcfg_pull_none>;
495 rockchip,pins = <1 RK_PA5 2 &pcfg_pull_default>;
498 rockchip,pins = <1 RK_PA4 2 &pcfg_pull_default>;
501 rockchip,pins = <1 RK_PA7 2 &pcfg_pull_default>;
504 rockchip,pins = <1 RK_PA6 2 &pcfg_pull_default>;
507 rockchip,pins = <4 RK_PB7 1 &pcfg_pull_default>;
513 rockchip,pins = <2 RK_PC3 2 &pcfg_pull_default>;
516 rockchip,pins = <2 RK_PC4 2 &pcfg_pull_default>;
519 rockchip,pins = <2 RK_PC6 2 &pcfg_pull_default>;
522 rockchip,pins = <2 RK_PC5 2 &pcfg_pull_default>;
525 rockchip,pins = <2 RK_PC7 2 &pcfg_pull_default>;
530 uart0_xfer: uart0-xfer {
531 rockchip,pins = <1 RK_PA0 1 &pcfg_pull_default>,
532 <1 RK_PA1 1 &pcfg_pull_default>;
535 uart0_cts: uart0-cts {
536 rockchip,pins = <1 RK_PA2 1 &pcfg_pull_default>;
539 uart0_rts: uart0-rts {
540 rockchip,pins = <1 RK_PA3 1 &pcfg_pull_default>;
545 uart1_xfer: uart1-xfer {
546 rockchip,pins = <1 RK_PA4 1 &pcfg_pull_default>,
547 <1 RK_PA5 1 &pcfg_pull_default>;
550 uart1_cts: uart1-cts {
551 rockchip,pins = <1 RK_PA6 1 &pcfg_pull_default>;
554 uart1_rts: uart1-rts {
555 rockchip,pins = <1 RK_PA7 1 &pcfg_pull_default>;
560 uart2_xfer: uart2-xfer {
561 rockchip,pins = <1 RK_PB0 1 &pcfg_pull_default>,
562 <1 RK_PB1 1 &pcfg_pull_default>;
564 /* no rts / cts for uart2 */
568 uart3_xfer: uart3-xfer {
569 rockchip,pins = <3 RK_PD3 1 &pcfg_pull_default>,
570 <3 RK_PD4 1 &pcfg_pull_default>;
573 uart3_cts: uart3-cts {
574 rockchip,pins = <3 RK_PD5 1 &pcfg_pull_default>;
577 uart3_rts: uart3-rts {
578 rockchip,pins = <3 RK_PD6 1 &pcfg_pull_default>;
584 rockchip,pins = <3 RK_PB0 1 &pcfg_pull_default>;
588 rockchip,pins = <3 RK_PB1 1 &pcfg_pull_default>;
592 rockchip,pins = <3 RK_PB6 1 &pcfg_pull_default>;
596 rockchip,pins = <3 RK_PB7 1 &pcfg_pull_default>;
599 sd0_bus1: sd0-bus-width1 {
600 rockchip,pins = <3 RK_PB2 1 &pcfg_pull_default>;
603 sd0_bus4: sd0-bus-width4 {
604 rockchip,pins = <3 RK_PB2 1 &pcfg_pull_default>,
605 <3 RK_PB3 1 &pcfg_pull_default>,
606 <3 RK_PB4 1 &pcfg_pull_default>,
607 <3 RK_PB5 1 &pcfg_pull_default>;
613 rockchip,pins = <3 RK_PC5 1 &pcfg_pull_default>;
617 rockchip,pins = <3 RK_PC0 1 &pcfg_pull_default>;
621 rockchip,pins = <3 RK_PC6 1 &pcfg_pull_default>;
625 rockchip,pins = <3 RK_PC7 1 &pcfg_pull_default>;
628 sd1_bus1: sd1-bus-width1 {
629 rockchip,pins = <3 RK_PC1 1 &pcfg_pull_default>;
632 sd1_bus4: sd1-bus-width4 {
633 rockchip,pins = <3 RK_PC1 1 &pcfg_pull_default>,
634 <3 RK_PC2 1 &pcfg_pull_default>,
635 <3 RK_PC3 1 &pcfg_pull_default>,
636 <3 RK_PC4 1 &pcfg_pull_default>;
642 rockchip,pins = <0 RK_PA7 1 &pcfg_pull_default>,
643 <0 RK_PB0 1 &pcfg_pull_default>,
644 <0 RK_PB1 1 &pcfg_pull_default>,
645 <0 RK_PB2 1 &pcfg_pull_default>,
646 <0 RK_PB3 1 &pcfg_pull_default>,
647 <0 RK_PB4 1 &pcfg_pull_default>,
648 <0 RK_PB5 1 &pcfg_pull_default>,
649 <0 RK_PB6 1 &pcfg_pull_default>,
650 <0 RK_PB7 1 &pcfg_pull_default>;
656 rockchip,pins = <0 RK_PC0 1 &pcfg_pull_default>,
657 <0 RK_PC1 1 &pcfg_pull_default>,
658 <0 RK_PC2 1 &pcfg_pull_default>,
659 <0 RK_PC3 1 &pcfg_pull_default>,
660 <0 RK_PC4 1 &pcfg_pull_default>,
661 <0 RK_PC5 1 &pcfg_pull_default>;
667 rockchip,pins = <0 RK_PD0 1 &pcfg_pull_default>,
668 <0 RK_PD1 1 &pcfg_pull_default>,
669 <0 RK_PD2 1 &pcfg_pull_default>,
670 <0 RK_PD3 1 &pcfg_pull_default>,
671 <0 RK_PD4 1 &pcfg_pull_default>,
672 <0 RK_PD5 1 &pcfg_pull_default>;
679 compatible = "rockchip,rk3066-mali", "arm,mali-400";
680 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
681 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
682 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
683 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
684 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
685 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
686 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
687 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
688 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
689 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
690 interrupt-names = "gp",
700 power-domains = <&power RK3066_PD_GPU>;
704 compatible = "rockchip,rk3066-grf", "syscon", "simple-mfd";
707 compatible = "rockchip,rk3066a-usb-phy";
708 #address-cells = <1>;
712 usbphy0: usb-phy@17c {
714 clocks = <&cru SCLK_OTGPHY0>;
715 clock-names = "phyclk";
720 usbphy1: usb-phy@188 {
722 clocks = <&cru SCLK_OTGPHY1>;
723 clock-names = "phyclk";
731 pinctrl-names = "default";
732 pinctrl-0 = <&i2c0_xfer>;
736 pinctrl-names = "default";
737 pinctrl-0 = <&i2c1_xfer>;
741 pinctrl-names = "default";
742 pinctrl-0 = <&i2c2_xfer>;
746 pinctrl-names = "default";
747 pinctrl-0 = <&i2c3_xfer>;
751 pinctrl-names = "default";
752 pinctrl-0 = <&i2c4_xfer>;
756 clock-frequency = <50000000>;
759 max-frequency = <50000000>;
760 pinctrl-names = "default";
761 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4>;
767 pinctrl-names = "default";
768 pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_cd &sd1_bus4>;
777 power: power-controller {
778 compatible = "rockchip,rk3066-power-controller";
779 #power-domain-cells = <1>;
780 #address-cells = <1>;
783 power-domain@RK3066_PD_VIO {
784 reg = <RK3066_PD_VIO>;
785 clocks = <&cru ACLK_LCDC0>,
802 pm_qos = <&qos_lcdc0>,
808 #power-domain-cells = <0>;
811 power-domain@RK3066_PD_VIDEO {
812 reg = <RK3066_PD_VIDEO>;
813 clocks = <&cru ACLK_VDPU>,
818 #power-domain-cells = <0>;
821 power-domain@RK3066_PD_GPU {
822 reg = <RK3066_PD_GPU>;
823 clocks = <&cru ACLK_GPU>;
825 #power-domain-cells = <0>;
831 pinctrl-names = "default";
832 pinctrl-0 = <&pwm0_out>;
836 pinctrl-names = "default";
837 pinctrl-0 = <&pwm1_out>;
841 pinctrl-names = "default";
842 pinctrl-0 = <&pwm2_out>;
846 pinctrl-names = "default";
847 pinctrl-0 = <&pwm3_out>;
851 pinctrl-names = "default";
852 pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
856 pinctrl-names = "default";
857 pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
861 compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart";
862 dmas = <&dmac1_s 0>, <&dmac1_s 1>;
863 dma-names = "tx", "rx";
864 pinctrl-names = "default";
865 pinctrl-0 = <&uart0_xfer>;
869 compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart";
870 dmas = <&dmac1_s 2>, <&dmac1_s 3>;
871 dma-names = "tx", "rx";
872 pinctrl-names = "default";
873 pinctrl-0 = <&uart1_xfer>;
877 compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart";
878 dmas = <&dmac2 6>, <&dmac2 7>;
879 dma-names = "tx", "rx";
880 pinctrl-names = "default";
881 pinctrl-0 = <&uart2_xfer>;
885 compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart";
886 dmas = <&dmac2 8>, <&dmac2 9>;
887 dma-names = "tx", "rx";
888 pinctrl-names = "default";
889 pinctrl-0 = <&uart3_xfer>;
893 power-domains = <&power RK3066_PD_VIDEO>;
897 compatible = "rockchip,rk3066-wdt", "snps,dw-wdt";