1/*
2 *  Copyright (C) 2012 Altera <www.altera.com>
3 *
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.
8 *
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.
13 *
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/>.
16 */
17
18#include <dt-bindings/reset/altr,rst-mgr.h>
19
20/ {
21	#address-cells = <1>;
22	#size-cells = <1>;
23
24	aliases {
25		ethernet0 = &gmac0;
26		ethernet1 = &gmac1;
27		serial0 = &uart0;
28		serial1 = &uart1;
29		timer0 = &timer0;
30		timer1 = &timer1;
31		timer2 = &timer2;
32		timer3 = &timer3;
33	};
34
35	cpus {
36		#address-cells = <1>;
37		#size-cells = <0>;
38		enable-method = "altr,socfpga-smp";
39
40		cpu0: cpu@0 {
41			compatible = "arm,cortex-a9";
42			device_type = "cpu";
43			reg = <0>;
44			next-level-cache = <&L2>;
45		};
46		cpu1: cpu@1 {
47			compatible = "arm,cortex-a9";
48			device_type = "cpu";
49			reg = <1>;
50			next-level-cache = <&L2>;
51		};
52	};
53
54	pmu: pmu@ff111000 {
55		compatible = "arm,cortex-a9-pmu";
56		interrupt-parent = <&intc>;
57		interrupts = <0 176 4>, <0 177 4>;
58		interrupt-affinity = <&cpu0>, <&cpu1>;
59		reg = <0xff111000 0x1000>,
60		      <0xff113000 0x1000>;
61	};
62
63	intc: intc@fffed000 {
64		compatible = "arm,cortex-a9-gic";
65		#interrupt-cells = <3>;
66		interrupt-controller;
67		reg = <0xfffed000 0x1000>,
68		      <0xfffec100 0x100>;
69	};
70
71	soc {
72		#address-cells = <1>;
73		#size-cells = <1>;
74		compatible = "simple-bus";
75		device_type = "soc";
76		interrupt-parent = <&intc>;
77		ranges;
78
79		amba {
80			compatible = "simple-bus";
81			#address-cells = <1>;
82			#size-cells = <1>;
83			ranges;
84
85			pdma: pdma@ffe01000 {
86				compatible = "arm,pl330", "arm,primecell";
87				reg = <0xffe01000 0x1000>;
88				interrupts = <0 104 4>,
89					     <0 105 4>,
90					     <0 106 4>,
91					     <0 107 4>,
92					     <0 108 4>,
93					     <0 109 4>,
94					     <0 110 4>,
95					     <0 111 4>;
96				#dma-cells = <1>;
97				#dma-channels = <8>;
98				#dma-requests = <32>;
99				clocks = <&l4_main_clk>;
100				clock-names = "apb_pclk";
101			};
102		};
103
104		base_fpga_region {
105			compatible = "fpga-region";
106			fpga-mgr = <&fpgamgr0>;
107
108			#address-cells = <0x1>;
109			#size-cells = <0x1>;
110		};
111
112		can0: can@ffc00000 {
113			compatible = "bosch,d_can";
114			reg = <0xffc00000 0x1000>;
115			interrupts = <0 131 4>, <0 132 4>, <0 133 4>, <0 134 4>;
116			clocks = <&can0_clk>;
117			status = "disabled";
118		};
119
120		can1: can@ffc01000 {
121			compatible = "bosch,d_can";
122			reg = <0xffc01000 0x1000>;
123			interrupts = <0 135 4>, <0 136 4>, <0 137 4>, <0 138 4>;
124			clocks = <&can1_clk>;
125			status = "disabled";
126		};
127
128		clkmgr@ffd04000 {
129				compatible = "altr,clk-mgr";
130				reg = <0xffd04000 0x1000>;
131
132				clocks {
133					#address-cells = <1>;
134					#size-cells = <0>;
135
136					osc1: osc1 {
137						#clock-cells = <0>;
138						compatible = "fixed-clock";
139					};
140
141					osc2: osc2 {
142						#clock-cells = <0>;
143						compatible = "fixed-clock";
144					};
145
146					f2s_periph_ref_clk: f2s_periph_ref_clk {
147						#clock-cells = <0>;
148						compatible = "fixed-clock";
149					};
150
151					f2s_sdram_ref_clk: f2s_sdram_ref_clk {
152						#clock-cells = <0>;
153						compatible = "fixed-clock";
154					};
155
156					main_pll: main_pll@40 {
157						#address-cells = <1>;
158						#size-cells = <0>;
159						#clock-cells = <0>;
160						compatible = "altr,socfpga-pll-clock";
161						clocks = <&osc1>;
162						reg = <0x40>;
163
164						mpuclk: mpuclk@48 {
165							#clock-cells = <0>;
166							compatible = "altr,socfpga-perip-clk";
167							clocks = <&main_pll>;
168							div-reg = <0xe0 0 9>;
169							reg = <0x48>;
170						};
171
172						mainclk: mainclk@4c {
173							#clock-cells = <0>;
174							compatible = "altr,socfpga-perip-clk";
175							clocks = <&main_pll>;
176							div-reg = <0xe4 0 9>;
177							reg = <0x4C>;
178						};
179
180						dbg_base_clk: dbg_base_clk@50 {
181							#clock-cells = <0>;
182							compatible = "altr,socfpga-perip-clk";
183							clocks = <&main_pll>, <&osc1>;
184							div-reg = <0xe8 0 9>;
185							reg = <0x50>;
186						};
187
188						main_qspi_clk: main_qspi_clk@54 {
189							#clock-cells = <0>;
190							compatible = "altr,socfpga-perip-clk";
191							clocks = <&main_pll>;
192							reg = <0x54>;
193						};
194
195						main_nand_sdmmc_clk: main_nand_sdmmc_clk@58 {
196							#clock-cells = <0>;
197							compatible = "altr,socfpga-perip-clk";
198							clocks = <&main_pll>;
199							reg = <0x58>;
200						};
201
202						cfg_h2f_usr0_clk: cfg_h2f_usr0_clk@5c {
203							#clock-cells = <0>;
204							compatible = "altr,socfpga-perip-clk";
205							clocks = <&main_pll>;
206							reg = <0x5C>;
207						};
208					};
209
210					periph_pll: periph_pll@80 {
211						#address-cells = <1>;
212						#size-cells = <0>;
213						#clock-cells = <0>;
214						compatible = "altr,socfpga-pll-clock";
215						clocks = <&osc1>, <&osc2>, <&f2s_periph_ref_clk>;
216						reg = <0x80>;
217
218						emac0_clk: emac0_clk@88 {
219							#clock-cells = <0>;
220							compatible = "altr,socfpga-perip-clk";
221							clocks = <&periph_pll>;
222							reg = <0x88>;
223						};
224
225						emac1_clk: emac1_clk@8c {
226							#clock-cells = <0>;
227							compatible = "altr,socfpga-perip-clk";
228							clocks = <&periph_pll>;
229							reg = <0x8C>;
230						};
231
232						per_qspi_clk: per_qsi_clk@90 {
233							#clock-cells = <0>;
234							compatible = "altr,socfpga-perip-clk";
235							clocks = <&periph_pll>;
236							reg = <0x90>;
237						};
238
239						per_nand_mmc_clk: per_nand_mmc_clk@94 {
240							#clock-cells = <0>;
241							compatible = "altr,socfpga-perip-clk";
242							clocks = <&periph_pll>;
243							reg = <0x94>;
244						};
245
246						per_base_clk: per_base_clk@98 {
247							#clock-cells = <0>;
248							compatible = "altr,socfpga-perip-clk";
249							clocks = <&periph_pll>;
250							reg = <0x98>;
251						};
252
253						h2f_usr1_clk: h2f_usr1_clk@9c {
254							#clock-cells = <0>;
255							compatible = "altr,socfpga-perip-clk";
256							clocks = <&periph_pll>;
257							reg = <0x9C>;
258						};
259					};
260
261					sdram_pll: sdram_pll@c0 {
262						#address-cells = <1>;
263						#size-cells = <0>;
264						#clock-cells = <0>;
265						compatible = "altr,socfpga-pll-clock";
266						clocks = <&osc1>, <&osc2>, <&f2s_sdram_ref_clk>;
267						reg = <0xC0>;
268
269						ddr_dqs_clk: ddr_dqs_clk@c8 {
270							#clock-cells = <0>;
271							compatible = "altr,socfpga-perip-clk";
272							clocks = <&sdram_pll>;
273							reg = <0xC8>;
274						};
275
276						ddr_2x_dqs_clk: ddr_2x_dqs_clk@cc {
277							#clock-cells = <0>;
278							compatible = "altr,socfpga-perip-clk";
279							clocks = <&sdram_pll>;
280							reg = <0xCC>;
281						};
282
283						ddr_dq_clk: ddr_dq_clk@d0 {
284							#clock-cells = <0>;
285							compatible = "altr,socfpga-perip-clk";
286							clocks = <&sdram_pll>;
287							reg = <0xD0>;
288						};
289
290						h2f_usr2_clk: h2f_usr2_clk@d4 {
291							#clock-cells = <0>;
292							compatible = "altr,socfpga-perip-clk";
293							clocks = <&sdram_pll>;
294							reg = <0xD4>;
295						};
296					};
297
298					mpu_periph_clk: mpu_periph_clk {
299						#clock-cells = <0>;
300						compatible = "altr,socfpga-perip-clk";
301						clocks = <&mpuclk>;
302						fixed-divider = <4>;
303					};
304
305					mpu_l2_ram_clk: mpu_l2_ram_clk {
306						#clock-cells = <0>;
307						compatible = "altr,socfpga-perip-clk";
308						clocks = <&mpuclk>;
309						fixed-divider = <2>;
310					};
311
312					l4_main_clk: l4_main_clk {
313						#clock-cells = <0>;
314						compatible = "altr,socfpga-gate-clk";
315						clocks = <&mainclk>;
316						clk-gate = <0x60 0>;
317					};
318
319					l3_main_clk: l3_main_clk {
320						#clock-cells = <0>;
321						compatible = "altr,socfpga-perip-clk";
322						clocks = <&mainclk>;
323						fixed-divider = <1>;
324					};
325
326					l3_mp_clk: l3_mp_clk {
327						#clock-cells = <0>;
328						compatible = "altr,socfpga-gate-clk";
329						clocks = <&mainclk>;
330						div-reg = <0x64 0 2>;
331						clk-gate = <0x60 1>;
332					};
333
334					l3_sp_clk: l3_sp_clk {
335						#clock-cells = <0>;
336						compatible = "altr,socfpga-gate-clk";
337						clocks = <&l3_mp_clk>;
338						div-reg = <0x64 2 2>;
339					};
340
341					l4_mp_clk: l4_mp_clk {
342						#clock-cells = <0>;
343						compatible = "altr,socfpga-gate-clk";
344						clocks = <&mainclk>, <&per_base_clk>;
345						div-reg = <0x64 4 3>;
346						clk-gate = <0x60 2>;
347					};
348
349					l4_sp_clk: l4_sp_clk {
350						#clock-cells = <0>;
351						compatible = "altr,socfpga-gate-clk";
352						clocks = <&mainclk>, <&per_base_clk>;
353						div-reg = <0x64 7 3>;
354						clk-gate = <0x60 3>;
355					};
356
357					dbg_at_clk: dbg_at_clk {
358						#clock-cells = <0>;
359						compatible = "altr,socfpga-gate-clk";
360						clocks = <&dbg_base_clk>;
361						div-reg = <0x68 0 2>;
362						clk-gate = <0x60 4>;
363					};
364
365					dbg_clk: dbg_clk {
366						#clock-cells = <0>;
367						compatible = "altr,socfpga-gate-clk";
368						clocks = <&dbg_at_clk>;
369						div-reg = <0x68 2 2>;
370						clk-gate = <0x60 5>;
371					};
372
373					dbg_trace_clk: dbg_trace_clk {
374						#clock-cells = <0>;
375						compatible = "altr,socfpga-gate-clk";
376						clocks = <&dbg_base_clk>;
377						div-reg = <0x6C 0 3>;
378						clk-gate = <0x60 6>;
379					};
380
381					dbg_timer_clk: dbg_timer_clk {
382						#clock-cells = <0>;
383						compatible = "altr,socfpga-gate-clk";
384						clocks = <&dbg_base_clk>;
385						clk-gate = <0x60 7>;
386					};
387
388					cfg_clk: cfg_clk {
389						#clock-cells = <0>;
390						compatible = "altr,socfpga-gate-clk";
391						clocks = <&cfg_h2f_usr0_clk>;
392						clk-gate = <0x60 8>;
393					};
394
395					h2f_user0_clk: h2f_user0_clk {
396						#clock-cells = <0>;
397						compatible = "altr,socfpga-gate-clk";
398						clocks = <&cfg_h2f_usr0_clk>;
399						clk-gate = <0x60 9>;
400					};
401
402					emac_0_clk: emac_0_clk {
403						#clock-cells = <0>;
404						compatible = "altr,socfpga-gate-clk";
405						clocks = <&emac0_clk>;
406						clk-gate = <0xa0 0>;
407					};
408
409					emac_1_clk: emac_1_clk {
410						#clock-cells = <0>;
411						compatible = "altr,socfpga-gate-clk";
412						clocks = <&emac1_clk>;
413						clk-gate = <0xa0 1>;
414					};
415
416					usb_mp_clk: usb_mp_clk {
417						#clock-cells = <0>;
418						compatible = "altr,socfpga-gate-clk";
419						clocks = <&per_base_clk>;
420						clk-gate = <0xa0 2>;
421						div-reg = <0xa4 0 3>;
422					};
423
424					spi_m_clk: spi_m_clk {
425						#clock-cells = <0>;
426						compatible = "altr,socfpga-gate-clk";
427						clocks = <&per_base_clk>;
428						clk-gate = <0xa0 3>;
429						div-reg = <0xa4 3 3>;
430					};
431
432					can0_clk: can0_clk {
433						#clock-cells = <0>;
434						compatible = "altr,socfpga-gate-clk";
435						clocks = <&per_base_clk>;
436						clk-gate = <0xa0 4>;
437						div-reg = <0xa4 6 3>;
438					};
439
440					can1_clk: can1_clk {
441						#clock-cells = <0>;
442						compatible = "altr,socfpga-gate-clk";
443						clocks = <&per_base_clk>;
444						clk-gate = <0xa0 5>;
445						div-reg = <0xa4 9 3>;
446					};
447
448					gpio_db_clk: gpio_db_clk {
449						#clock-cells = <0>;
450						compatible = "altr,socfpga-gate-clk";
451						clocks = <&per_base_clk>;
452						clk-gate = <0xa0 6>;
453						div-reg = <0xa8 0 24>;
454					};
455
456					h2f_user1_clk: h2f_user1_clk {
457						#clock-cells = <0>;
458						compatible = "altr,socfpga-gate-clk";
459						clocks = <&h2f_usr1_clk>;
460						clk-gate = <0xa0 7>;
461					};
462
463					sdmmc_clk: sdmmc_clk {
464						#clock-cells = <0>;
465						compatible = "altr,socfpga-gate-clk";
466						clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
467						clk-gate = <0xa0 8>;
468						clk-phase = <0 135>;
469					};
470
471					sdmmc_clk_divided: sdmmc_clk_divided {
472						#clock-cells = <0>;
473						compatible = "altr,socfpga-gate-clk";
474						clocks = <&sdmmc_clk>;
475						clk-gate = <0xa0 8>;
476						fixed-divider = <4>;
477					};
478
479					nand_x_clk: nand_x_clk {
480						#clock-cells = <0>;
481						compatible = "altr,socfpga-gate-clk";
482						clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
483						clk-gate = <0xa0 9>;
484					};
485
486					nand_clk: nand_clk {
487						#clock-cells = <0>;
488						compatible = "altr,socfpga-gate-clk";
489						clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
490						clk-gate = <0xa0 10>;
491						fixed-divider = <4>;
492					};
493
494					qspi_clk: qspi_clk {
495						#clock-cells = <0>;
496						compatible = "altr,socfpga-gate-clk";
497						clocks = <&f2s_periph_ref_clk>, <&main_qspi_clk>, <&per_qspi_clk>;
498						clk-gate = <0xa0 11>;
499					};
500
501					ddr_dqs_clk_gate: ddr_dqs_clk_gate {
502						#clock-cells = <0>;
503						compatible = "altr,socfpga-gate-clk";
504						clocks = <&ddr_dqs_clk>;
505						clk-gate = <0xd8 0>;
506					};
507
508					ddr_2x_dqs_clk_gate: ddr_2x_dqs_clk_gate {
509						#clock-cells = <0>;
510						compatible = "altr,socfpga-gate-clk";
511						clocks = <&ddr_2x_dqs_clk>;
512						clk-gate = <0xd8 1>;
513					};
514
515					ddr_dq_clk_gate: ddr_dq_clk_gate {
516						#clock-cells = <0>;
517						compatible = "altr,socfpga-gate-clk";
518						clocks = <&ddr_dq_clk>;
519						clk-gate = <0xd8 2>;
520					};
521
522					h2f_user2_clk: h2f_user2_clk {
523						#clock-cells = <0>;
524						compatible = "altr,socfpga-gate-clk";
525						clocks = <&h2f_usr2_clk>;
526						clk-gate = <0xd8 3>;
527					};
528
529				};
530		};
531
532		fpga_bridge0: fpga_bridge@ff400000 {
533			compatible = "altr,socfpga-lwhps2fpga-bridge";
534			reg = <0xff400000 0x100000>;
535			resets = <&rst LWHPS2FPGA_RESET>;
536			clocks = <&l4_main_clk>;
537		};
538
539		fpga_bridge1: fpga_bridge@ff500000 {
540			compatible = "altr,socfpga-hps2fpga-bridge";
541			reg = <0xff500000 0x10000>;
542			resets = <&rst HPS2FPGA_RESET>;
543			clocks = <&l4_main_clk>;
544		};
545
546		fpgamgr0: fpgamgr@ff706000 {
547			compatible = "altr,socfpga-fpga-mgr";
548			reg = <0xff706000 0x1000
549			       0xffb90000 0x4>;
550			interrupts = <0 175 4>;
551		};
552
553		gmac0: ethernet@ff700000 {
554			compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac";
555			altr,sysmgr-syscon = <&sysmgr 0x60 0>;
556			reg = <0xff700000 0x2000>;
557			interrupts = <0 115 4>;
558			interrupt-names = "macirq";
559			mac-address = [00 00 00 00 00 00];/* Filled in by U-Boot */
560			clocks = <&emac_0_clk>;
561			clock-names = "stmmaceth";
562			resets = <&rst EMAC0_RESET>;
563			reset-names = "stmmaceth";
564			snps,multicast-filter-bins = <256>;
565			snps,perfect-filter-entries = <128>;
566			tx-fifo-depth = <4096>;
567			rx-fifo-depth = <4096>;
568			status = "disabled";
569		};
570
571		gmac1: ethernet@ff702000 {
572			compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac";
573			altr,sysmgr-syscon = <&sysmgr 0x60 2>;
574			reg = <0xff702000 0x2000>;
575			interrupts = <0 120 4>;
576			interrupt-names = "macirq";
577			mac-address = [00 00 00 00 00 00];/* Filled in by U-Boot */
578			clocks = <&emac_1_clk>;
579			clock-names = "stmmaceth";
580			resets = <&rst EMAC1_RESET>;
581			reset-names = "stmmaceth";
582			snps,multicast-filter-bins = <256>;
583			snps,perfect-filter-entries = <128>;
584			tx-fifo-depth = <4096>;
585			rx-fifo-depth = <4096>;
586			status = "disabled";
587		};
588
589		gpio0: gpio@ff708000 {
590			#address-cells = <1>;
591			#size-cells = <0>;
592			compatible = "snps,dw-apb-gpio";
593			reg = <0xff708000 0x1000>;
594			clocks = <&l4_mp_clk>;
595			status = "disabled";
596
597			porta: gpio-controller@0 {
598				compatible = "snps,dw-apb-gpio-port";
599				gpio-controller;
600				#gpio-cells = <2>;
601				snps,nr-gpios = <29>;
602				reg = <0>;
603				interrupt-controller;
604				#interrupt-cells = <2>;
605				interrupts = <0 164 4>;
606			};
607		};
608
609		gpio1: gpio@ff709000 {
610			#address-cells = <1>;
611			#size-cells = <0>;
612			compatible = "snps,dw-apb-gpio";
613			reg = <0xff709000 0x1000>;
614			clocks = <&l4_mp_clk>;
615			status = "disabled";
616
617			portb: gpio-controller@0 {
618				compatible = "snps,dw-apb-gpio-port";
619				gpio-controller;
620				#gpio-cells = <2>;
621				snps,nr-gpios = <29>;
622				reg = <0>;
623				interrupt-controller;
624				#interrupt-cells = <2>;
625				interrupts = <0 165 4>;
626			};
627		};
628
629		gpio2: gpio@ff70a000 {
630			#address-cells = <1>;
631			#size-cells = <0>;
632			compatible = "snps,dw-apb-gpio";
633			reg = <0xff70a000 0x1000>;
634			clocks = <&l4_mp_clk>;
635			status = "disabled";
636
637			portc: gpio-controller@0 {
638				compatible = "snps,dw-apb-gpio-port";
639				gpio-controller;
640				#gpio-cells = <2>;
641				snps,nr-gpios = <27>;
642				reg = <0>;
643				interrupt-controller;
644				#interrupt-cells = <2>;
645				interrupts = <0 166 4>;
646			};
647		};
648
649		i2c0: i2c@ffc04000 {
650			#address-cells = <1>;
651			#size-cells = <0>;
652			compatible = "snps,designware-i2c";
653			reg = <0xffc04000 0x1000>;
654			resets = <&rst I2C0_RESET>;
655			clocks = <&l4_sp_clk>;
656			interrupts = <0 158 0x4>;
657			status = "disabled";
658		};
659
660		i2c1: i2c@ffc05000 {
661			#address-cells = <1>;
662			#size-cells = <0>;
663			compatible = "snps,designware-i2c";
664			reg = <0xffc05000 0x1000>;
665			resets = <&rst I2C1_RESET>;
666			clocks = <&l4_sp_clk>;
667			interrupts = <0 159 0x4>;
668			status = "disabled";
669		};
670
671		i2c2: i2c@ffc06000 {
672			#address-cells = <1>;
673			#size-cells = <0>;
674			compatible = "snps,designware-i2c";
675			reg = <0xffc06000 0x1000>;
676			resets = <&rst I2C2_RESET>;
677			clocks = <&l4_sp_clk>;
678			interrupts = <0 160 0x4>;
679			status = "disabled";
680		};
681
682		i2c3: i2c@ffc07000 {
683			#address-cells = <1>;
684			#size-cells = <0>;
685			compatible = "snps,designware-i2c";
686			reg = <0xffc07000 0x1000>;
687			resets = <&rst I2C3_RESET>;
688			clocks = <&l4_sp_clk>;
689			interrupts = <0 161 0x4>;
690			status = "disabled";
691		};
692
693		eccmgr: eccmgr {
694			compatible = "altr,socfpga-ecc-manager";
695			#address-cells = <1>;
696			#size-cells = <1>;
697			ranges;
698
699			l2-ecc@ffd08140 {
700				compatible = "altr,socfpga-l2-ecc";
701				reg = <0xffd08140 0x4>;
702				interrupts = <0 36 1>, <0 37 1>;
703			};
704
705			ocram-ecc@ffd08144 {
706				compatible = "altr,socfpga-ocram-ecc";
707				reg = <0xffd08144 0x4>;
708				iram = <&ocram>;
709				interrupts = <0 178 1>, <0 179 1>;
710			};
711		};
712
713		L2: l2-cache@fffef000 {
714			compatible = "arm,pl310-cache";
715			reg = <0xfffef000 0x1000>;
716			interrupts = <0 38 0x04>;
717			cache-unified;
718			cache-level = <2>;
719			arm,tag-latency = <1 1 1>;
720			arm,data-latency = <2 1 1>;
721			prefetch-data = <1>;
722			prefetch-instr = <1>;
723			arm,shared-override;
724			arm,double-linefill = <1>;
725			arm,double-linefill-incr = <0>;
726			arm,double-linefill-wrap = <1>;
727			arm,prefetch-drop = <0>;
728			arm,prefetch-offset = <7>;
729		};
730
731		l3regs@0xff800000 {
732			compatible = "altr,l3regs", "syscon";
733			reg = <0xff800000 0x1000>;
734		};
735
736		mmc: dwmmc0@ff704000 {
737			compatible = "altr,socfpga-dw-mshc";
738			reg = <0xff704000 0x1000>;
739			interrupts = <0 139 4>;
740			fifo-depth = <0x400>;
741			#address-cells = <1>;
742			#size-cells = <0>;
743			clocks = <&l4_mp_clk>, <&sdmmc_clk_divided>;
744			clock-names = "biu", "ciu";
745			status = "disabled";
746		};
747
748		nand0: nand@ff900000 {
749			#address-cells = <0x1>;
750			#size-cells = <0x1>;
751			compatible = "altr,socfpga-denali-nand";
752			reg = <0xff900000 0x100000>,
753			      <0xffb80000 0x10000>;
754			reg-names = "nand_data", "denali_reg";
755			interrupts = <0x0 0x90 0x4>;
756			dma-mask = <0xffffffff>;
757			clocks = <&nand_x_clk>;
758			status = "disabled";
759		};
760
761		ocram: sram@ffff0000 {
762			compatible = "mmio-sram";
763			reg = <0xffff0000 0x10000>;
764		};
765
766		qspi: spi@ff705000 {
767			compatible = "cdns,qspi-nor";
768                        #address-cells = <1>;
769			#size-cells = <0>;
770			reg = <0xff705000 0x1000>,
771			      <0xffa00000 0x1000>;
772			interrupts = <0 151 4>;
773			cdns,fifo-depth = <128>;
774			cdns,fifo-width = <4>;
775			cdns,trigger-address = <0x00000000>;
776			clocks = <&qspi_clk>;
777			status = "disabled";
778		};
779
780		rst: rstmgr@ffd05000 {
781			#reset-cells = <1>;
782			compatible = "altr,rst-mgr";
783			reg = <0xffd05000 0x1000>;
784			altr,modrst-offset = <0x10>;
785		};
786
787		scu: snoop-control-unit@fffec000 {
788			compatible = "arm,cortex-a9-scu";
789			reg = <0xfffec000 0x100>;
790		};
791
792		sdr: sdr@ffc25000 {
793			compatible = "altr,sdr-ctl", "syscon";
794			reg = <0xffc25000 0x1000>;
795		};
796
797		sdramedac {
798			compatible = "altr,sdram-edac";
799			altr,sdr-syscon = <&sdr>;
800			interrupts = <0 39 4>;
801		};
802
803		spi0: spi@fff00000 {
804			compatible = "snps,dw-apb-ssi";
805			#address-cells = <1>;
806			#size-cells = <0>;
807			reg = <0xfff00000 0x1000>;
808			interrupts = <0 154 4>;
809			num-cs = <4>;
810			clocks = <&spi_m_clk>;
811			status = "disabled";
812		};
813
814		spi1: spi@fff01000 {
815			compatible = "snps,dw-apb-ssi";
816			#address-cells = <1>;
817			#size-cells = <0>;
818			reg = <0xfff01000 0x1000>;
819			interrupts = <0 155 4>;
820			num-cs = <4>;
821			clocks = <&spi_m_clk>;
822			status = "disabled";
823		};
824
825		sysmgr: sysmgr@ffd08000 {
826			compatible = "altr,sys-mgr", "syscon";
827			reg = <0xffd08000 0x4000>;
828		};
829
830		/* Local timer */
831		timer@fffec600 {
832			compatible = "arm,cortex-a9-twd-timer";
833			reg = <0xfffec600 0x100>;
834			interrupts = <1 13 0xf01>;
835			clocks = <&mpu_periph_clk>;
836		};
837
838		timer0: timer0@ffc08000 {
839			compatible = "snps,dw-apb-timer";
840			interrupts = <0 167 4>;
841			reg = <0xffc08000 0x1000>;
842			clocks = <&l4_sp_clk>;
843			clock-names = "timer";
844		};
845
846		timer1: timer1@ffc09000 {
847			compatible = "snps,dw-apb-timer";
848			interrupts = <0 168 4>;
849			reg = <0xffc09000 0x1000>;
850			clocks = <&l4_sp_clk>;
851			clock-names = "timer";
852		};
853
854		timer2: timer2@ffd00000 {
855			compatible = "snps,dw-apb-timer";
856			interrupts = <0 169 4>;
857			reg = <0xffd00000 0x1000>;
858			clocks = <&osc1>;
859			clock-names = "timer";
860		};
861
862		timer3: timer3@ffd01000 {
863			compatible = "snps,dw-apb-timer";
864			interrupts = <0 170 4>;
865			reg = <0xffd01000 0x1000>;
866			clocks = <&osc1>;
867			clock-names = "timer";
868		};
869
870		uart0: serial0@ffc02000 {
871			compatible = "snps,dw-apb-uart";
872			reg = <0xffc02000 0x1000>;
873			interrupts = <0 162 4>;
874			reg-shift = <2>;
875			reg-io-width = <4>;
876			clocks = <&l4_sp_clk>;
877			dmas = <&pdma 28>,
878			       <&pdma 29>;
879			dma-names = "tx", "rx";
880		};
881
882		uart1: serial1@ffc03000 {
883			compatible = "snps,dw-apb-uart";
884			reg = <0xffc03000 0x1000>;
885			interrupts = <0 163 4>;
886			reg-shift = <2>;
887			reg-io-width = <4>;
888			clocks = <&l4_sp_clk>;
889			dmas = <&pdma 30>,
890			       <&pdma 31>;
891			dma-names = "tx", "rx";
892		};
893
894		usbphy0: usbphy {
895			#phy-cells = <0>;
896			compatible = "usb-nop-xceiv";
897			status = "okay";
898		};
899
900		usb0: usb@ffb00000 {
901			compatible = "snps,dwc2";
902			reg = <0xffb00000 0xffff>;
903			interrupts = <0 125 4>;
904			clocks = <&usb_mp_clk>;
905			clock-names = "otg";
906			resets = <&rst USB0_RESET>;
907			reset-names = "dwc2";
908			phys = <&usbphy0>;
909			phy-names = "usb2-phy";
910			status = "disabled";
911		};
912
913		usb1: usb@ffb40000 {
914			compatible = "snps,dwc2";
915			reg = <0xffb40000 0xffff>;
916			interrupts = <0 128 4>;
917			clocks = <&usb_mp_clk>;
918			clock-names = "otg";
919			resets = <&rst USB1_RESET>;
920			reset-names = "dwc2";
921			phys = <&usbphy0>;
922			phy-names = "usb2-phy";
923			status = "disabled";
924		};
925
926		watchdog0: watchdog@ffd02000 {
927			compatible = "snps,dw-wdt";
928			reg = <0xffd02000 0x1000>;
929			interrupts = <0 171 4>;
930			clocks = <&osc1>;
931			status = "disabled";
932		};
933
934		watchdog1: watchdog@ffd03000 {
935			compatible = "snps,dw-wdt";
936			reg = <0xffd03000 0x1000>;
937			interrupts = <0 172 4>;
938			clocks = <&osc1>;
939			status = "disabled";
940		};
941	};
942};
943