2 * Copyright (C) 2012 Altera <www.altera.com>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #include "skeleton.dtsi"
19 #include <dt-bindings/reset/altr,rst-mgr.h>
39 enable-method = "altr,socfpga-smp";
42 compatible = "arm,cortex-a9";
45 next-level-cache = <&L2>;
48 compatible = "arm,cortex-a9";
51 next-level-cache = <&L2>;
56 compatible = "arm,cortex-a9-gic";
57 #interrupt-cells = <3>;
59 reg = <0xfffed000 0x1000>,
66 compatible = "simple-bus";
68 interrupt-parent = <&intc>;
72 compatible = "simple-bus";
78 compatible = "arm,pl330", "arm,primecell";
79 reg = <0xffe01000 0x1000>;
80 interrupts = <0 104 4>,
91 clocks = <&l4_main_clk>;
92 clock-names = "apb_pclk";
97 compatible = "fpga-region";
98 fpga-mgr = <&fpgamgr0>;
100 #address-cells = <0x1>;
105 compatible = "bosch,d_can";
106 reg = <0xffc00000 0x1000>;
107 interrupts = <0 131 4>, <0 132 4>, <0 133 4>, <0 134 4>;
108 clocks = <&can0_clk>;
113 compatible = "bosch,d_can";
114 reg = <0xffc01000 0x1000>;
115 interrupts = <0 135 4>, <0 136 4>, <0 137 4>, <0 138 4>;
116 clocks = <&can1_clk>;
121 compatible = "altr,clk-mgr";
122 reg = <0xffd04000 0x1000>;
125 #address-cells = <1>;
130 compatible = "fixed-clock";
135 compatible = "fixed-clock";
138 f2s_periph_ref_clk: f2s_periph_ref_clk {
140 compatible = "fixed-clock";
143 f2s_sdram_ref_clk: f2s_sdram_ref_clk {
145 compatible = "fixed-clock";
149 #address-cells = <1>;
152 compatible = "altr,socfpga-pll-clock";
158 compatible = "altr,socfpga-perip-clk";
159 clocks = <&main_pll>;
160 div-reg = <0xe0 0 9>;
166 compatible = "altr,socfpga-perip-clk";
167 clocks = <&main_pll>;
168 div-reg = <0xe4 0 9>;
172 dbg_base_clk: dbg_base_clk {
174 compatible = "altr,socfpga-perip-clk";
175 clocks = <&main_pll>, <&osc1>;
176 div-reg = <0xe8 0 9>;
180 main_qspi_clk: main_qspi_clk {
182 compatible = "altr,socfpga-perip-clk";
183 clocks = <&main_pll>;
187 main_nand_sdmmc_clk: main_nand_sdmmc_clk {
189 compatible = "altr,socfpga-perip-clk";
190 clocks = <&main_pll>;
194 cfg_h2f_usr0_clk: cfg_h2f_usr0_clk {
196 compatible = "altr,socfpga-perip-clk";
197 clocks = <&main_pll>;
202 periph_pll: periph_pll {
203 #address-cells = <1>;
206 compatible = "altr,socfpga-pll-clock";
207 clocks = <&osc1>, <&osc2>, <&f2s_periph_ref_clk>;
210 emac0_clk: emac0_clk {
212 compatible = "altr,socfpga-perip-clk";
213 clocks = <&periph_pll>;
217 emac1_clk: emac1_clk {
219 compatible = "altr,socfpga-perip-clk";
220 clocks = <&periph_pll>;
224 per_qspi_clk: per_qsi_clk {
226 compatible = "altr,socfpga-perip-clk";
227 clocks = <&periph_pll>;
231 per_nand_mmc_clk: per_nand_mmc_clk {
233 compatible = "altr,socfpga-perip-clk";
234 clocks = <&periph_pll>;
238 per_base_clk: per_base_clk {
240 compatible = "altr,socfpga-perip-clk";
241 clocks = <&periph_pll>;
245 h2f_usr1_clk: h2f_usr1_clk {
247 compatible = "altr,socfpga-perip-clk";
248 clocks = <&periph_pll>;
253 sdram_pll: sdram_pll {
254 #address-cells = <1>;
257 compatible = "altr,socfpga-pll-clock";
258 clocks = <&osc1>, <&osc2>, <&f2s_sdram_ref_clk>;
261 ddr_dqs_clk: ddr_dqs_clk {
263 compatible = "altr,socfpga-perip-clk";
264 clocks = <&sdram_pll>;
268 ddr_2x_dqs_clk: ddr_2x_dqs_clk {
270 compatible = "altr,socfpga-perip-clk";
271 clocks = <&sdram_pll>;
275 ddr_dq_clk: ddr_dq_clk {
277 compatible = "altr,socfpga-perip-clk";
278 clocks = <&sdram_pll>;
282 h2f_usr2_clk: h2f_usr2_clk {
284 compatible = "altr,socfpga-perip-clk";
285 clocks = <&sdram_pll>;
290 mpu_periph_clk: mpu_periph_clk {
292 compatible = "altr,socfpga-perip-clk";
297 mpu_l2_ram_clk: mpu_l2_ram_clk {
299 compatible = "altr,socfpga-perip-clk";
304 l4_main_clk: l4_main_clk {
306 compatible = "altr,socfpga-gate-clk";
311 l3_main_clk: l3_main_clk {
313 compatible = "altr,socfpga-perip-clk";
318 l3_mp_clk: l3_mp_clk {
320 compatible = "altr,socfpga-gate-clk";
322 div-reg = <0x64 0 2>;
326 l3_sp_clk: l3_sp_clk {
328 compatible = "altr,socfpga-gate-clk";
329 clocks = <&l3_mp_clk>;
330 div-reg = <0x64 2 2>;
333 l4_mp_clk: l4_mp_clk {
335 compatible = "altr,socfpga-gate-clk";
336 clocks = <&mainclk>, <&per_base_clk>;
337 div-reg = <0x64 4 3>;
341 l4_sp_clk: l4_sp_clk {
343 compatible = "altr,socfpga-gate-clk";
344 clocks = <&mainclk>, <&per_base_clk>;
345 div-reg = <0x64 7 3>;
349 dbg_at_clk: dbg_at_clk {
351 compatible = "altr,socfpga-gate-clk";
352 clocks = <&dbg_base_clk>;
353 div-reg = <0x68 0 2>;
359 compatible = "altr,socfpga-gate-clk";
360 clocks = <&dbg_at_clk>;
361 div-reg = <0x68 2 2>;
365 dbg_trace_clk: dbg_trace_clk {
367 compatible = "altr,socfpga-gate-clk";
368 clocks = <&dbg_base_clk>;
369 div-reg = <0x6C 0 3>;
373 dbg_timer_clk: dbg_timer_clk {
375 compatible = "altr,socfpga-gate-clk";
376 clocks = <&dbg_base_clk>;
382 compatible = "altr,socfpga-gate-clk";
383 clocks = <&cfg_h2f_usr0_clk>;
387 h2f_user0_clk: h2f_user0_clk {
389 compatible = "altr,socfpga-gate-clk";
390 clocks = <&cfg_h2f_usr0_clk>;
394 emac_0_clk: emac_0_clk {
396 compatible = "altr,socfpga-gate-clk";
397 clocks = <&emac0_clk>;
401 emac_1_clk: emac_1_clk {
403 compatible = "altr,socfpga-gate-clk";
404 clocks = <&emac1_clk>;
408 usb_mp_clk: usb_mp_clk {
410 compatible = "altr,socfpga-gate-clk";
411 clocks = <&per_base_clk>;
413 div-reg = <0xa4 0 3>;
416 spi_m_clk: spi_m_clk {
418 compatible = "altr,socfpga-gate-clk";
419 clocks = <&per_base_clk>;
421 div-reg = <0xa4 3 3>;
426 compatible = "altr,socfpga-gate-clk";
427 clocks = <&per_base_clk>;
429 div-reg = <0xa4 6 3>;
434 compatible = "altr,socfpga-gate-clk";
435 clocks = <&per_base_clk>;
437 div-reg = <0xa4 9 3>;
440 gpio_db_clk: gpio_db_clk {
442 compatible = "altr,socfpga-gate-clk";
443 clocks = <&per_base_clk>;
445 div-reg = <0xa8 0 24>;
448 h2f_user1_clk: h2f_user1_clk {
450 compatible = "altr,socfpga-gate-clk";
451 clocks = <&h2f_usr1_clk>;
455 sdmmc_clk: sdmmc_clk {
457 compatible = "altr,socfpga-gate-clk";
458 clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
463 sdmmc_clk_divided: sdmmc_clk_divided {
465 compatible = "altr,socfpga-gate-clk";
466 clocks = <&sdmmc_clk>;
471 nand_x_clk: nand_x_clk {
473 compatible = "altr,socfpga-gate-clk";
474 clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
480 compatible = "altr,socfpga-gate-clk";
481 clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
482 clk-gate = <0xa0 10>;
488 compatible = "altr,socfpga-gate-clk";
489 clocks = <&f2s_periph_ref_clk>, <&main_qspi_clk>, <&per_qspi_clk>;
490 clk-gate = <0xa0 11>;
493 ddr_dqs_clk_gate: ddr_dqs_clk_gate {
495 compatible = "altr,socfpga-gate-clk";
496 clocks = <&ddr_dqs_clk>;
500 ddr_2x_dqs_clk_gate: ddr_2x_dqs_clk_gate {
502 compatible = "altr,socfpga-gate-clk";
503 clocks = <&ddr_2x_dqs_clk>;
507 ddr_dq_clk_gate: ddr_dq_clk_gate {
509 compatible = "altr,socfpga-gate-clk";
510 clocks = <&ddr_dq_clk>;
514 h2f_user2_clk: h2f_user2_clk {
516 compatible = "altr,socfpga-gate-clk";
517 clocks = <&h2f_usr2_clk>;
524 fpga_bridge0: fpga_bridge@ff400000 {
525 compatible = "altr,socfpga-lwhps2fpga-bridge";
526 reg = <0xff400000 0x100000>;
527 resets = <&rst LWHPS2FPGA_RESET>;
528 clocks = <&l4_main_clk>;
531 fpga_bridge1: fpga_bridge@ff500000 {
532 compatible = "altr,socfpga-hps2fpga-bridge";
533 reg = <0xff500000 0x10000>;
534 resets = <&rst HPS2FPGA_RESET>;
535 clocks = <&l4_main_clk>;
538 fpgamgr0: fpgamgr@ff706000 {
539 compatible = "altr,socfpga-fpga-mgr";
540 reg = <0xff706000 0x1000
542 interrupts = <0 175 4>;
545 gmac0: ethernet@ff700000 {
546 compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac";
547 altr,sysmgr-syscon = <&sysmgr 0x60 0>;
548 reg = <0xff700000 0x2000>;
549 interrupts = <0 115 4>;
550 interrupt-names = "macirq";
551 mac-address = [00 00 00 00 00 00];/* Filled in by U-Boot */
552 clocks = <&emac0_clk>;
553 clock-names = "stmmaceth";
554 resets = <&rst EMAC0_RESET>;
555 reset-names = "stmmaceth";
556 snps,multicast-filter-bins = <256>;
557 snps,perfect-filter-entries = <128>;
558 tx-fifo-depth = <4096>;
559 rx-fifo-depth = <4096>;
563 gmac1: ethernet@ff702000 {
564 compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac";
565 altr,sysmgr-syscon = <&sysmgr 0x60 2>;
566 reg = <0xff702000 0x2000>;
567 interrupts = <0 120 4>;
568 interrupt-names = "macirq";
569 mac-address = [00 00 00 00 00 00];/* Filled in by U-Boot */
570 clocks = <&emac1_clk>;
571 clock-names = "stmmaceth";
572 resets = <&rst EMAC1_RESET>;
573 reset-names = "stmmaceth";
574 snps,multicast-filter-bins = <256>;
575 snps,perfect-filter-entries = <128>;
576 tx-fifo-depth = <4096>;
577 rx-fifo-depth = <4096>;
581 gpio0: gpio@ff708000 {
582 #address-cells = <1>;
584 compatible = "snps,dw-apb-gpio";
585 reg = <0xff708000 0x1000>;
586 clocks = <&l4_mp_clk>;
589 porta: gpio-controller@0 {
590 compatible = "snps,dw-apb-gpio-port";
593 snps,nr-gpios = <29>;
595 interrupt-controller;
596 #interrupt-cells = <2>;
597 interrupts = <0 164 4>;
601 gpio1: gpio@ff709000 {
602 #address-cells = <1>;
604 compatible = "snps,dw-apb-gpio";
605 reg = <0xff709000 0x1000>;
606 clocks = <&l4_mp_clk>;
609 portb: gpio-controller@0 {
610 compatible = "snps,dw-apb-gpio-port";
613 snps,nr-gpios = <29>;
615 interrupt-controller;
616 #interrupt-cells = <2>;
617 interrupts = <0 165 4>;
621 gpio2: gpio@ff70a000 {
622 #address-cells = <1>;
624 compatible = "snps,dw-apb-gpio";
625 reg = <0xff70a000 0x1000>;
626 clocks = <&l4_mp_clk>;
629 portc: gpio-controller@0 {
630 compatible = "snps,dw-apb-gpio-port";
633 snps,nr-gpios = <27>;
635 interrupt-controller;
636 #interrupt-cells = <2>;
637 interrupts = <0 166 4>;
642 #address-cells = <1>;
644 compatible = "snps,designware-i2c";
645 reg = <0xffc04000 0x1000>;
646 clocks = <&l4_sp_clk>;
647 interrupts = <0 158 0x4>;
652 #address-cells = <1>;
654 compatible = "snps,designware-i2c";
655 reg = <0xffc05000 0x1000>;
656 clocks = <&l4_sp_clk>;
657 interrupts = <0 159 0x4>;
662 #address-cells = <1>;
664 compatible = "snps,designware-i2c";
665 reg = <0xffc06000 0x1000>;
666 clocks = <&l4_sp_clk>;
667 interrupts = <0 160 0x4>;
672 #address-cells = <1>;
674 compatible = "snps,designware-i2c";
675 reg = <0xffc07000 0x1000>;
676 clocks = <&l4_sp_clk>;
677 interrupts = <0 161 0x4>;
681 eccmgr: eccmgr@ffd08140 {
682 compatible = "altr,socfpga-ecc-manager";
683 #address-cells = <1>;
688 compatible = "altr,socfpga-l2-ecc";
689 reg = <0xffd08140 0x4>;
690 interrupts = <0 36 1>, <0 37 1>;
694 compatible = "altr,socfpga-ocram-ecc";
695 reg = <0xffd08144 0x4>;
697 interrupts = <0 178 1>, <0 179 1>;
701 L2: l2-cache@fffef000 {
702 compatible = "arm,pl310-cache";
703 reg = <0xfffef000 0x1000>;
704 interrupts = <0 38 0x04>;
707 arm,tag-latency = <1 1 1>;
708 arm,data-latency = <2 1 1>;
710 prefetch-instr = <1>;
712 arm,double-linefill = <1>;
713 arm,double-linefill-incr = <0>;
714 arm,double-linefill-wrap = <1>;
715 arm,prefetch-drop = <0>;
716 arm,prefetch-offset = <7>;
720 compatible = "altr,l3regs", "syscon";
721 reg = <0xff800000 0x1000>;
724 mmc: dwmmc0@ff704000 {
725 compatible = "altr,socfpga-dw-mshc";
726 reg = <0xff704000 0x1000>;
727 interrupts = <0 139 4>;
728 fifo-depth = <0x400>;
729 #address-cells = <1>;
731 clocks = <&l4_mp_clk>, <&sdmmc_clk_divided>;
732 clock-names = "biu", "ciu";
736 nand0: nand@ff900000 {
737 #address-cells = <0x1>;
739 compatible = "denali,denali-nand-dt";
740 reg = <0xff900000 0x100000>,
741 <0xffb80000 0x10000>;
742 reg-names = "nand_data", "denali_reg";
743 interrupts = <0x0 0x90 0x4>;
744 dma-mask = <0xffffffff>;
745 clocks = <&nand_clk>;
749 ocram: sram@ffff0000 {
750 compatible = "mmio-sram";
751 reg = <0xffff0000 0x10000>;
755 compatible = "cdns,qspi-nor";
756 #address-cells = <1>;
758 reg = <0xff705000 0x1000>,
760 interrupts = <0 151 4>;
761 cdns,fifo-depth = <128>;
762 cdns,fifo-width = <4>;
763 cdns,trigger-address = <0x00000000>;
764 clocks = <&qspi_clk>;
768 rst: rstmgr@ffd05000 {
770 compatible = "altr,rst-mgr";
771 reg = <0xffd05000 0x1000>;
772 altr,modrst-offset = <0x10>;
775 scu: snoop-control-unit@fffec000 {
776 compatible = "arm,cortex-a9-scu";
777 reg = <0xfffec000 0x100>;
781 compatible = "altr,sdr-ctl", "syscon";
782 reg = <0xffc25000 0x1000>;
786 compatible = "altr,sdram-edac";
787 altr,sdr-syscon = <&sdr>;
788 interrupts = <0 39 4>;
792 compatible = "snps,dw-apb-ssi";
793 #address-cells = <1>;
795 reg = <0xfff00000 0x1000>;
796 interrupts = <0 154 4>;
798 clocks = <&spi_m_clk>;
803 compatible = "snps,dw-apb-ssi";
804 #address-cells = <1>;
806 reg = <0xfff01000 0x1000>;
807 interrupts = <0 155 4>;
809 clocks = <&spi_m_clk>;
813 sysmgr: sysmgr@ffd08000 {
814 compatible = "altr,sys-mgr", "syscon";
815 reg = <0xffd08000 0x4000>;
820 compatible = "arm,cortex-a9-twd-timer";
821 reg = <0xfffec600 0x100>;
822 interrupts = <1 13 0xf04>;
823 clocks = <&mpu_periph_clk>;
826 timer0: timer0@ffc08000 {
827 compatible = "snps,dw-apb-timer";
828 interrupts = <0 167 4>;
829 reg = <0xffc08000 0x1000>;
830 clocks = <&l4_sp_clk>;
831 clock-names = "timer";
834 timer1: timer1@ffc09000 {
835 compatible = "snps,dw-apb-timer";
836 interrupts = <0 168 4>;
837 reg = <0xffc09000 0x1000>;
838 clocks = <&l4_sp_clk>;
839 clock-names = "timer";
842 timer2: timer2@ffd00000 {
843 compatible = "snps,dw-apb-timer";
844 interrupts = <0 169 4>;
845 reg = <0xffd00000 0x1000>;
847 clock-names = "timer";
850 timer3: timer3@ffd01000 {
851 compatible = "snps,dw-apb-timer";
852 interrupts = <0 170 4>;
853 reg = <0xffd01000 0x1000>;
855 clock-names = "timer";
858 uart0: serial0@ffc02000 {
859 compatible = "snps,dw-apb-uart";
860 reg = <0xffc02000 0x1000>;
861 interrupts = <0 162 4>;
864 clocks = <&l4_sp_clk>;
867 dma-names = "tx", "rx";
870 uart1: serial1@ffc03000 {
871 compatible = "snps,dw-apb-uart";
872 reg = <0xffc03000 0x1000>;
873 interrupts = <0 163 4>;
876 clocks = <&l4_sp_clk>;
879 dma-names = "tx", "rx";
884 compatible = "usb-nop-xceiv";
889 compatible = "snps,dwc2";
890 reg = <0xffb00000 0xffff>;
891 interrupts = <0 125 4>;
892 clocks = <&usb_mp_clk>;
894 resets = <&rst USB0_RESET>;
895 reset-names = "dwc2";
897 phy-names = "usb2-phy";
902 compatible = "snps,dwc2";
903 reg = <0xffb40000 0xffff>;
904 interrupts = <0 128 4>;
905 clocks = <&usb_mp_clk>;
907 resets = <&rst USB1_RESET>;
908 reset-names = "dwc2";
910 phy-names = "usb2-phy";
914 watchdog0: watchdog@ffd02000 {
915 compatible = "snps,dw-wdt";
916 reg = <0xffd02000 0x1000>;
917 interrupts = <0 171 4>;
922 watchdog1: watchdog@ffd03000 {
923 compatible = "snps,dw-wdt";
924 reg = <0xffd03000 0x1000>;
925 interrupts = <0 172 4>;