1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2012 Altera <www.altera.com>
6 #include <dt-bindings/reset/altr,rst-mgr.h>
24 enable-method = "altr,socfpga-smp";
27 compatible = "arm,cortex-a9";
30 next-level-cache = <&L2>;
33 compatible = "arm,cortex-a9";
36 next-level-cache = <&L2>;
41 compatible = "arm,cortex-a9-pmu";
42 interrupt-parent = <&intc>;
43 interrupts = <0 176 4>, <0 177 4>;
44 interrupt-affinity = <&cpu0>, <&cpu1>;
45 reg = <0xff111000 0x1000>,
50 compatible = "arm,cortex-a9-gic";
51 #interrupt-cells = <3>;
53 reg = <0xfffed000 0x1000>,
60 compatible = "simple-bus";
62 interrupt-parent = <&intc>;
66 compatible = "simple-bus";
72 compatible = "arm,pl330", "arm,primecell";
73 reg = <0xffe01000 0x1000>;
74 interrupts = <0 104 4>,
85 clocks = <&l4_main_clk>;
86 clock-names = "apb_pclk";
87 resets = <&rst DMA_RESET>;
93 compatible = "fpga-region";
94 fpga-mgr = <&fpgamgr0>;
96 #address-cells = <0x1>;
101 compatible = "bosch,d_can";
102 reg = <0xffc00000 0x1000>;
103 interrupts = <0 131 4>, <0 132 4>, <0 133 4>, <0 134 4>;
104 clocks = <&can0_clk>;
105 resets = <&rst CAN0_RESET>;
110 compatible = "bosch,d_can";
111 reg = <0xffc01000 0x1000>;
112 interrupts = <0 135 4>, <0 136 4>, <0 137 4>, <0 138 4>;
113 clocks = <&can1_clk>;
114 resets = <&rst CAN1_RESET>;
119 compatible = "altr,clk-mgr";
120 reg = <0xffd04000 0x1000>;
123 #address-cells = <1>;
128 compatible = "fixed-clock";
133 compatible = "fixed-clock";
136 f2s_periph_ref_clk: f2s_periph_ref_clk {
138 compatible = "fixed-clock";
141 f2s_sdram_ref_clk: f2s_sdram_ref_clk {
143 compatible = "fixed-clock";
146 main_pll: main_pll@40 {
147 #address-cells = <1>;
150 compatible = "altr,socfpga-pll-clock";
156 compatible = "altr,socfpga-perip-clk";
157 clocks = <&main_pll>;
158 div-reg = <0xe0 0 9>;
162 mainclk: mainclk@4c {
164 compatible = "altr,socfpga-perip-clk";
165 clocks = <&main_pll>;
166 div-reg = <0xe4 0 9>;
170 dbg_base_clk: dbg_base_clk@50 {
172 compatible = "altr,socfpga-perip-clk";
173 clocks = <&main_pll>, <&osc1>;
174 div-reg = <0xe8 0 9>;
178 main_qspi_clk: main_qspi_clk@54 {
180 compatible = "altr,socfpga-perip-clk";
181 clocks = <&main_pll>;
185 main_nand_sdmmc_clk: main_nand_sdmmc_clk@58 {
187 compatible = "altr,socfpga-perip-clk";
188 clocks = <&main_pll>;
192 cfg_h2f_usr0_clk: cfg_h2f_usr0_clk@5c {
194 compatible = "altr,socfpga-perip-clk";
195 clocks = <&main_pll>;
200 periph_pll: periph_pll@80 {
201 #address-cells = <1>;
204 compatible = "altr,socfpga-pll-clock";
205 clocks = <&osc1>, <&osc2>, <&f2s_periph_ref_clk>;
208 emac0_clk: emac0_clk@88 {
210 compatible = "altr,socfpga-perip-clk";
211 clocks = <&periph_pll>;
215 emac1_clk: emac1_clk@8c {
217 compatible = "altr,socfpga-perip-clk";
218 clocks = <&periph_pll>;
222 per_qspi_clk: per_qsi_clk@90 {
224 compatible = "altr,socfpga-perip-clk";
225 clocks = <&periph_pll>;
229 per_nand_mmc_clk: per_nand_mmc_clk@94 {
231 compatible = "altr,socfpga-perip-clk";
232 clocks = <&periph_pll>;
236 per_base_clk: per_base_clk@98 {
238 compatible = "altr,socfpga-perip-clk";
239 clocks = <&periph_pll>;
243 h2f_usr1_clk: h2f_usr1_clk@9c {
245 compatible = "altr,socfpga-perip-clk";
246 clocks = <&periph_pll>;
251 sdram_pll: sdram_pll@c0 {
252 #address-cells = <1>;
255 compatible = "altr,socfpga-pll-clock";
256 clocks = <&osc1>, <&osc2>, <&f2s_sdram_ref_clk>;
259 ddr_dqs_clk: ddr_dqs_clk@c8 {
261 compatible = "altr,socfpga-perip-clk";
262 clocks = <&sdram_pll>;
266 ddr_2x_dqs_clk: ddr_2x_dqs_clk@cc {
268 compatible = "altr,socfpga-perip-clk";
269 clocks = <&sdram_pll>;
273 ddr_dq_clk: ddr_dq_clk@d0 {
275 compatible = "altr,socfpga-perip-clk";
276 clocks = <&sdram_pll>;
280 h2f_usr2_clk: h2f_usr2_clk@d4 {
282 compatible = "altr,socfpga-perip-clk";
283 clocks = <&sdram_pll>;
288 mpu_periph_clk: mpu_periph_clk {
290 compatible = "altr,socfpga-perip-clk";
295 mpu_l2_ram_clk: mpu_l2_ram_clk {
297 compatible = "altr,socfpga-perip-clk";
302 l4_main_clk: l4_main_clk {
304 compatible = "altr,socfpga-gate-clk";
309 l3_main_clk: l3_main_clk {
311 compatible = "altr,socfpga-perip-clk";
316 l3_mp_clk: l3_mp_clk {
318 compatible = "altr,socfpga-gate-clk";
320 div-reg = <0x64 0 2>;
324 l3_sp_clk: l3_sp_clk {
326 compatible = "altr,socfpga-gate-clk";
327 clocks = <&l3_mp_clk>;
328 div-reg = <0x64 2 2>;
331 l4_mp_clk: l4_mp_clk {
333 compatible = "altr,socfpga-gate-clk";
334 clocks = <&mainclk>, <&per_base_clk>;
335 div-reg = <0x64 4 3>;
339 l4_sp_clk: l4_sp_clk {
341 compatible = "altr,socfpga-gate-clk";
342 clocks = <&mainclk>, <&per_base_clk>;
343 div-reg = <0x64 7 3>;
347 dbg_at_clk: dbg_at_clk {
349 compatible = "altr,socfpga-gate-clk";
350 clocks = <&dbg_base_clk>;
351 div-reg = <0x68 0 2>;
357 compatible = "altr,socfpga-gate-clk";
358 clocks = <&dbg_at_clk>;
359 div-reg = <0x68 2 2>;
363 dbg_trace_clk: dbg_trace_clk {
365 compatible = "altr,socfpga-gate-clk";
366 clocks = <&dbg_base_clk>;
367 div-reg = <0x6C 0 3>;
371 dbg_timer_clk: dbg_timer_clk {
373 compatible = "altr,socfpga-gate-clk";
374 clocks = <&dbg_base_clk>;
380 compatible = "altr,socfpga-gate-clk";
381 clocks = <&cfg_h2f_usr0_clk>;
385 h2f_user0_clk: h2f_user0_clk {
387 compatible = "altr,socfpga-gate-clk";
388 clocks = <&cfg_h2f_usr0_clk>;
392 emac_0_clk: emac_0_clk {
394 compatible = "altr,socfpga-gate-clk";
395 clocks = <&emac0_clk>;
399 emac_1_clk: emac_1_clk {
401 compatible = "altr,socfpga-gate-clk";
402 clocks = <&emac1_clk>;
406 usb_mp_clk: usb_mp_clk {
408 compatible = "altr,socfpga-gate-clk";
409 clocks = <&per_base_clk>;
411 div-reg = <0xa4 0 3>;
414 spi_m_clk: spi_m_clk {
416 compatible = "altr,socfpga-gate-clk";
417 clocks = <&per_base_clk>;
419 div-reg = <0xa4 3 3>;
424 compatible = "altr,socfpga-gate-clk";
425 clocks = <&per_base_clk>;
427 div-reg = <0xa4 6 3>;
432 compatible = "altr,socfpga-gate-clk";
433 clocks = <&per_base_clk>;
435 div-reg = <0xa4 9 3>;
438 gpio_db_clk: gpio_db_clk {
440 compatible = "altr,socfpga-gate-clk";
441 clocks = <&per_base_clk>;
443 div-reg = <0xa8 0 24>;
446 h2f_user1_clk: h2f_user1_clk {
448 compatible = "altr,socfpga-gate-clk";
449 clocks = <&h2f_usr1_clk>;
453 sdmmc_clk: sdmmc_clk {
455 compatible = "altr,socfpga-gate-clk";
456 clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
461 sdmmc_clk_divided: sdmmc_clk_divided {
463 compatible = "altr,socfpga-gate-clk";
464 clocks = <&sdmmc_clk>;
469 nand_x_clk: nand_x_clk {
471 compatible = "altr,socfpga-gate-clk";
472 clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
476 nand_ecc_clk: nand_ecc_clk {
478 compatible = "altr,socfpga-gate-clk";
479 clocks = <&nand_x_clk>;
485 compatible = "altr,socfpga-gate-clk";
486 clocks = <&nand_x_clk>;
487 clk-gate = <0xa0 10>;
493 compatible = "altr,socfpga-gate-clk";
494 clocks = <&f2s_periph_ref_clk>, <&main_qspi_clk>, <&per_qspi_clk>;
495 clk-gate = <0xa0 11>;
498 ddr_dqs_clk_gate: ddr_dqs_clk_gate {
500 compatible = "altr,socfpga-gate-clk";
501 clocks = <&ddr_dqs_clk>;
505 ddr_2x_dqs_clk_gate: ddr_2x_dqs_clk_gate {
507 compatible = "altr,socfpga-gate-clk";
508 clocks = <&ddr_2x_dqs_clk>;
512 ddr_dq_clk_gate: ddr_dq_clk_gate {
514 compatible = "altr,socfpga-gate-clk";
515 clocks = <&ddr_dq_clk>;
519 h2f_user2_clk: h2f_user2_clk {
521 compatible = "altr,socfpga-gate-clk";
522 clocks = <&h2f_usr2_clk>;
529 fpga_bridge0: fpga_bridge@ff400000 {
530 compatible = "altr,socfpga-lwhps2fpga-bridge";
531 reg = <0xff400000 0x100000>;
532 resets = <&rst LWHPS2FPGA_RESET>;
533 clocks = <&l4_main_clk>;
537 fpga_bridge1: fpga_bridge@ff500000 {
538 compatible = "altr,socfpga-hps2fpga-bridge";
539 reg = <0xff500000 0x10000>;
540 resets = <&rst HPS2FPGA_RESET>;
541 clocks = <&l4_main_clk>;
545 fpga_bridge2: fpga-bridge@ff600000 {
546 compatible = "altr,socfpga-fpga2hps-bridge";
547 reg = <0xff600000 0x100000>;
548 resets = <&rst FPGA2HPS_RESET>;
549 clocks = <&l4_main_clk>;
553 fpga_bridge3: fpga-bridge@ffc25080 {
554 compatible = "altr,socfpga-fpga2sdram-bridge";
555 reg = <0xffc25080 0x4>;
559 fpgamgr0: fpgamgr@ff706000 {
560 compatible = "altr,socfpga-fpga-mgr";
561 reg = <0xff706000 0x1000
563 interrupts = <0 175 4>;
566 gmac0: ethernet@ff700000 {
567 compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac";
568 altr,sysmgr-syscon = <&sysmgr 0x60 0>;
569 reg = <0xff700000 0x2000>;
570 interrupts = <0 115 4>;
571 interrupt-names = "macirq";
572 mac-address = [00 00 00 00 00 00];/* Filled in by U-Boot */
573 clocks = <&emac_0_clk>;
574 clock-names = "stmmaceth";
575 resets = <&rst EMAC0_RESET>;
576 reset-names = "stmmaceth";
577 snps,multicast-filter-bins = <256>;
578 snps,perfect-filter-entries = <128>;
579 tx-fifo-depth = <4096>;
580 rx-fifo-depth = <4096>;
584 gmac1: ethernet@ff702000 {
585 compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac";
586 altr,sysmgr-syscon = <&sysmgr 0x60 2>;
587 reg = <0xff702000 0x2000>;
588 interrupts = <0 120 4>;
589 interrupt-names = "macirq";
590 mac-address = [00 00 00 00 00 00];/* Filled in by U-Boot */
591 clocks = <&emac_1_clk>;
592 clock-names = "stmmaceth";
593 resets = <&rst EMAC1_RESET>;
594 reset-names = "stmmaceth";
595 snps,multicast-filter-bins = <256>;
596 snps,perfect-filter-entries = <128>;
597 tx-fifo-depth = <4096>;
598 rx-fifo-depth = <4096>;
602 gpio0: gpio@ff708000 {
603 #address-cells = <1>;
605 compatible = "snps,dw-apb-gpio";
606 reg = <0xff708000 0x1000>;
607 clocks = <&l4_mp_clk>;
608 resets = <&rst GPIO0_RESET>;
611 porta: gpio-controller@0 {
612 compatible = "snps,dw-apb-gpio-port";
615 snps,nr-gpios = <29>;
617 interrupt-controller;
618 #interrupt-cells = <2>;
619 interrupts = <0 164 4>;
623 gpio1: gpio@ff709000 {
624 #address-cells = <1>;
626 compatible = "snps,dw-apb-gpio";
627 reg = <0xff709000 0x1000>;
628 clocks = <&l4_mp_clk>;
629 resets = <&rst GPIO1_RESET>;
632 portb: gpio-controller@0 {
633 compatible = "snps,dw-apb-gpio-port";
636 snps,nr-gpios = <29>;
638 interrupt-controller;
639 #interrupt-cells = <2>;
640 interrupts = <0 165 4>;
644 gpio2: gpio@ff70a000 {
645 #address-cells = <1>;
647 compatible = "snps,dw-apb-gpio";
648 reg = <0xff70a000 0x1000>;
649 clocks = <&l4_mp_clk>;
650 resets = <&rst GPIO2_RESET>;
653 portc: gpio-controller@0 {
654 compatible = "snps,dw-apb-gpio-port";
657 snps,nr-gpios = <27>;
659 interrupt-controller;
660 #interrupt-cells = <2>;
661 interrupts = <0 166 4>;
666 #address-cells = <1>;
668 compatible = "snps,designware-i2c";
669 reg = <0xffc04000 0x1000>;
670 resets = <&rst I2C0_RESET>;
671 clocks = <&l4_sp_clk>;
672 interrupts = <0 158 0x4>;
677 #address-cells = <1>;
679 compatible = "snps,designware-i2c";
680 reg = <0xffc05000 0x1000>;
681 resets = <&rst I2C1_RESET>;
682 clocks = <&l4_sp_clk>;
683 interrupts = <0 159 0x4>;
688 #address-cells = <1>;
690 compatible = "snps,designware-i2c";
691 reg = <0xffc06000 0x1000>;
692 resets = <&rst I2C2_RESET>;
693 clocks = <&l4_sp_clk>;
694 interrupts = <0 160 0x4>;
699 #address-cells = <1>;
701 compatible = "snps,designware-i2c";
702 reg = <0xffc07000 0x1000>;
703 resets = <&rst I2C3_RESET>;
704 clocks = <&l4_sp_clk>;
705 interrupts = <0 161 0x4>;
710 compatible = "altr,socfpga-ecc-manager";
711 #address-cells = <1>;
716 compatible = "altr,socfpga-l2-ecc";
717 reg = <0xffd08140 0x4>;
718 interrupts = <0 36 1>, <0 37 1>;
722 compatible = "altr,socfpga-ocram-ecc";
723 reg = <0xffd08144 0x4>;
725 interrupts = <0 178 1>, <0 179 1>;
729 L2: cache-controller@fffef000 {
730 compatible = "arm,pl310-cache";
731 reg = <0xfffef000 0x1000>;
732 interrupts = <0 38 0x04>;
735 arm,tag-latency = <1 1 1>;
736 arm,data-latency = <2 1 1>;
738 prefetch-instr = <1>;
740 arm,double-linefill = <1>;
741 arm,double-linefill-incr = <0>;
742 arm,double-linefill-wrap = <1>;
743 arm,prefetch-drop = <0>;
744 arm,prefetch-offset = <7>;
748 compatible = "altr,l3regs", "syscon";
749 reg = <0xff800000 0x1000>;
752 mmc: dwmmc0@ff704000 {
753 compatible = "altr,socfpga-dw-mshc";
754 reg = <0xff704000 0x1000>;
755 interrupts = <0 139 4>;
756 fifo-depth = <0x400>;
757 #address-cells = <1>;
759 clocks = <&l4_mp_clk>, <&sdmmc_clk_divided>;
760 clock-names = "biu", "ciu";
761 resets = <&rst SDMMC_RESET>;
765 nand0: nand@ff900000 {
766 #address-cells = <0x1>;
768 compatible = "altr,socfpga-denali-nand";
769 reg = <0xff900000 0x100000>,
770 <0xffb80000 0x10000>;
771 reg-names = "nand_data", "denali_reg";
772 interrupts = <0x0 0x90 0x4>;
773 clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>;
774 clock-names = "nand", "nand_x", "ecc";
775 resets = <&rst NAND_RESET>;
779 ocram: sram@ffff0000 {
780 compatible = "mmio-sram";
781 reg = <0xffff0000 0x10000>;
785 compatible = "cdns,qspi-nor";
786 #address-cells = <1>;
788 reg = <0xff705000 0x1000>,
790 interrupts = <0 151 4>;
791 cdns,fifo-depth = <128>;
792 cdns,fifo-width = <4>;
793 cdns,trigger-address = <0x00000000>;
794 clocks = <&qspi_clk>;
795 resets = <&rst QSPI_RESET>;
799 rst: rstmgr@ffd05000 {
801 compatible = "altr,rst-mgr";
802 reg = <0xffd05000 0x1000>;
803 altr,modrst-offset = <0x10>;
806 scu: snoop-control-unit@fffec000 {
807 compatible = "arm,cortex-a9-scu";
808 reg = <0xfffec000 0x100>;
812 compatible = "altr,sdr-ctl", "syscon";
813 reg = <0xffc25000 0x1000>;
814 resets = <&rst SDR_RESET>;
818 compatible = "altr,sdram-edac";
819 altr,sdr-syscon = <&sdr>;
820 interrupts = <0 39 4>;
824 compatible = "snps,dw-apb-ssi";
825 #address-cells = <1>;
827 reg = <0xfff00000 0x1000>;
828 interrupts = <0 154 4>;
830 clocks = <&spi_m_clk>;
831 resets = <&rst SPIM0_RESET>;
837 compatible = "snps,dw-apb-ssi";
838 #address-cells = <1>;
840 reg = <0xfff01000 0x1000>;
841 interrupts = <0 155 4>;
843 clocks = <&spi_m_clk>;
844 resets = <&rst SPIM1_RESET>;
849 sysmgr: sysmgr@ffd08000 {
850 compatible = "altr,sys-mgr", "syscon";
851 reg = <0xffd08000 0x4000>;
856 compatible = "arm,cortex-a9-twd-timer";
857 reg = <0xfffec600 0x100>;
858 interrupts = <1 13 0xf01>;
859 clocks = <&mpu_periph_clk>;
862 timer0: timer0@ffc08000 {
863 compatible = "snps,dw-apb-timer";
864 interrupts = <0 167 4>;
865 reg = <0xffc08000 0x1000>;
866 clocks = <&l4_sp_clk>;
867 clock-names = "timer";
868 resets = <&rst SPTIMER0_RESET>;
869 reset-names = "timer";
872 timer1: timer1@ffc09000 {
873 compatible = "snps,dw-apb-timer";
874 interrupts = <0 168 4>;
875 reg = <0xffc09000 0x1000>;
876 clocks = <&l4_sp_clk>;
877 clock-names = "timer";
878 resets = <&rst SPTIMER1_RESET>;
879 reset-names = "timer";
882 timer2: timer2@ffd00000 {
883 compatible = "snps,dw-apb-timer";
884 interrupts = <0 169 4>;
885 reg = <0xffd00000 0x1000>;
887 clock-names = "timer";
888 resets = <&rst OSC1TIMER0_RESET>;
889 reset-names = "timer";
892 timer3: timer3@ffd01000 {
893 compatible = "snps,dw-apb-timer";
894 interrupts = <0 170 4>;
895 reg = <0xffd01000 0x1000>;
897 clock-names = "timer";
898 resets = <&rst OSC1TIMER1_RESET>;
899 reset-names = "timer";
902 uart0: serial0@ffc02000 {
903 compatible = "snps,dw-apb-uart";
904 reg = <0xffc02000 0x1000>;
905 interrupts = <0 162 4>;
908 clocks = <&l4_sp_clk>;
911 dma-names = "tx", "rx";
912 resets = <&rst UART0_RESET>;
915 uart1: serial1@ffc03000 {
916 compatible = "snps,dw-apb-uart";
917 reg = <0xffc03000 0x1000>;
918 interrupts = <0 163 4>;
921 clocks = <&l4_sp_clk>;
924 dma-names = "tx", "rx";
925 resets = <&rst UART1_RESET>;
930 compatible = "usb-nop-xceiv";
935 compatible = "snps,dwc2";
936 reg = <0xffb00000 0xffff>;
937 interrupts = <0 125 4>;
938 clocks = <&usb_mp_clk>;
940 resets = <&rst USB0_RESET>;
941 reset-names = "dwc2";
943 phy-names = "usb2-phy";
948 compatible = "snps,dwc2";
949 reg = <0xffb40000 0xffff>;
950 interrupts = <0 128 4>;
951 clocks = <&usb_mp_clk>;
953 resets = <&rst USB1_RESET>;
954 reset-names = "dwc2";
956 phy-names = "usb2-phy";
960 watchdog0: watchdog@ffd02000 {
961 compatible = "snps,dw-wdt";
962 reg = <0xffd02000 0x1000>;
963 interrupts = <0 171 4>;
965 resets = <&rst L4WD0_RESET>;
969 watchdog1: watchdog@ffd03000 {
970 compatible = "snps,dw-wdt";
971 reg = <0xffd03000 0x1000>;
972 interrupts = <0 172 4>;
974 resets = <&rst L4WD1_RESET>;