blob: 05425a03fc141e874eab2bbac1d2de171189cc43 [file] [log] [blame]
Ley Foon Tan2f721202017-04-26 02:44:44 +08001/*
Marek Vasut03f80b12018-04-23 01:37:57 +02002 * Copyright Altera Corporation (C) 2014. All rights reserved.
Ley Foon Tan2f721202017-04-26 02:44:44 +08003 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms and conditions of the GNU General Public License,
6 * version 2, as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
11 * more details.
12 *
13 * You should have received a copy of the GNU General Public License along with
14 * this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
Ley Foon Tan2f721202017-04-26 02:44:44 +080017#include <dt-bindings/interrupt-controller/arm-gic.h>
18#include <dt-bindings/reset/altr,rst-mgr-a10.h>
19
20/ {
21 #address-cells = <1>;
22 #size-cells = <1>;
23
Ley Foon Tan2f721202017-04-26 02:44:44 +080024 cpus {
25 #address-cells = <1>;
26 #size-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +020027 enable-method = "altr,socfpga-a10-smp";
Ley Foon Tan2f721202017-04-26 02:44:44 +080028
29 cpu@0 {
30 compatible = "arm,cortex-a9";
31 device_type = "cpu";
32 reg = <0>;
33 next-level-cache = <&L2>;
34 };
35 cpu@1 {
36 compatible = "arm,cortex-a9";
37 device_type = "cpu";
38 reg = <1>;
39 next-level-cache = <&L2>;
40 };
41 };
42
43 intc: intc@ffffd000 {
44 compatible = "arm,cortex-a9-gic";
45 #interrupt-cells = <3>;
46 interrupt-controller;
47 reg = <0xffffd000 0x1000>,
48 <0xffffc100 0x100>;
49 };
50
51 soc {
52 #address-cells = <1>;
53 #size-cells = <1>;
54 compatible = "simple-bus";
55 device_type = "soc";
56 interrupt-parent = <&intc>;
57 ranges;
Marek Vasuta292bd92018-08-13 18:42:32 +020058 u-boot,dm-pre-reloc;
Ley Foon Tan2f721202017-04-26 02:44:44 +080059
60 amba {
61 compatible = "simple-bus";
62 #address-cells = <1>;
63 #size-cells = <1>;
64 ranges;
65
66 pdma: pdma@ffda1000 {
67 compatible = "arm,pl330", "arm,primecell";
68 reg = <0xffda1000 0x1000>;
69 interrupts = <0 83 IRQ_TYPE_LEVEL_HIGH>,
70 <0 84 IRQ_TYPE_LEVEL_HIGH>,
71 <0 85 IRQ_TYPE_LEVEL_HIGH>,
72 <0 86 IRQ_TYPE_LEVEL_HIGH>,
73 <0 87 IRQ_TYPE_LEVEL_HIGH>,
74 <0 88 IRQ_TYPE_LEVEL_HIGH>,
75 <0 89 IRQ_TYPE_LEVEL_HIGH>,
76 <0 90 IRQ_TYPE_LEVEL_HIGH>,
77 <0 91 IRQ_TYPE_LEVEL_HIGH>;
78 #dma-cells = <1>;
79 #dma-channels = <8>;
80 #dma-requests = <32>;
81 clocks = <&l4_main_clk>;
82 clock-names = "apb_pclk";
83 };
84 };
85
Marek Vasut03f80b12018-04-23 01:37:57 +020086 base_fpga_region {
87 #address-cells = <0x1>;
88 #size-cells = <0x1>;
Ley Foon Tan2f721202017-04-26 02:44:44 +080089
Marek Vasut03f80b12018-04-23 01:37:57 +020090 compatible = "fpga-region";
91 fpga-mgr = <&fpga_mgr>;
92 };
Ley Foon Tan2f721202017-04-26 02:44:44 +080093
Marek Vasut03f80b12018-04-23 01:37:57 +020094 clkmgr@ffd04000 {
95 compatible = "altr,clk-mgr";
96 reg = <0xffd04000 0x1000>;
Ley Foon Tan2f721202017-04-26 02:44:44 +080097
Marek Vasut03f80b12018-04-23 01:37:57 +020098 clocks {
Ley Foon Tan2f721202017-04-26 02:44:44 +080099 #address-cells = <1>;
100 #size-cells = <0>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800101
Marek Vasut03f80b12018-04-23 01:37:57 +0200102 cb_intosc_hs_div2_clk: cb_intosc_hs_div2_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800103 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200104 compatible = "fixed-clock";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800105 };
106
Marek Vasut03f80b12018-04-23 01:37:57 +0200107 cb_intosc_ls_clk: cb_intosc_ls_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800108 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200109 compatible = "fixed-clock";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800110 };
111
Marek Vasut03f80b12018-04-23 01:37:57 +0200112 f2s_free_clk: f2s_free_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800113 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200114 compatible = "fixed-clock";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800115 };
116
Marek Vasut03f80b12018-04-23 01:37:57 +0200117 osc1: osc1 {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800118 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200119 compatible = "fixed-clock";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800120 };
121
Marek Vasut03f80b12018-04-23 01:37:57 +0200122 main_pll: main_pll@40 {
123 #address-cells = <1>;
124 #size-cells = <0>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800125 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200126 compatible = "altr,socfpga-a10-pll-clock";
127 clocks = <&osc1>, <&cb_intosc_ls_clk>,
128 <&f2s_free_clk>;
129 reg = <0x40>;
130
131 main_mpu_base_clk: main_mpu_base_clk {
132 #clock-cells = <0>;
133 compatible = "altr,socfpga-a10-perip-clk";
134 clocks = <&main_pll>;
135 div-reg = <0x140 0 11>;
136 };
137
138 main_noc_base_clk: main_noc_base_clk {
139 #clock-cells = <0>;
140 compatible = "altr,socfpga-a10-perip-clk";
141 clocks = <&main_pll>;
142 div-reg = <0x144 0 11>;
143 };
144
145 main_emaca_clk: main_emaca_clk@68 {
146 #clock-cells = <0>;
147 compatible = "altr,socfpga-a10-perip-clk";
148 clocks = <&main_pll>;
149 reg = <0x68>;
150 };
151
152 main_emacb_clk: main_emacb_clk@6c {
153 #clock-cells = <0>;
154 compatible = "altr,socfpga-a10-perip-clk";
155 clocks = <&main_pll>;
156 reg = <0x6C>;
157 };
158
159 main_emac_ptp_clk: main_emac_ptp_clk@70 {
160 #clock-cells = <0>;
161 compatible = "altr,socfpga-a10-perip-clk";
162 clocks = <&main_pll>;
163 reg = <0x70>;
164 };
165
166 main_gpio_db_clk: main_gpio_db_clk@74 {
167 #clock-cells = <0>;
168 compatible = "altr,socfpga-a10-perip-clk";
169 clocks = <&main_pll>;
170 reg = <0x74>;
171 };
172
173 main_sdmmc_clk: main_sdmmc_clk@78 {
174 #clock-cells = <0>;
175 compatible = "altr,socfpga-a10-perip-clk"
176;
177 clocks = <&main_pll>;
178 reg = <0x78>;
179 };
180
181 main_s2f_usr0_clk: main_s2f_usr0_clk@7c {
182 #clock-cells = <0>;
183 compatible = "altr,socfpga-a10-perip-clk";
184 clocks = <&main_pll>;
185 reg = <0x7C>;
186 };
187
188 main_s2f_usr1_clk: main_s2f_usr1_clk@80 {
189 #clock-cells = <0>;
190 compatible = "altr,socfpga-a10-perip-clk";
191 clocks = <&main_pll>;
192 reg = <0x80>;
193 };
194
195 main_hmc_pll_ref_clk: main_hmc_pll_ref_clk@84 {
196 #clock-cells = <0>;
197 compatible = "altr,socfpga-a10-perip-clk";
198 clocks = <&main_pll>;
199 reg = <0x84>;
200 };
201
202 main_periph_ref_clk: main_periph_ref_clk@9c {
203 #clock-cells = <0>;
204 compatible = "altr,socfpga-a10-perip-clk";
205 clocks = <&main_pll>;
206 reg = <0x9C>;
207 };
Ley Foon Tan2f721202017-04-26 02:44:44 +0800208 };
209
Marek Vasut03f80b12018-04-23 01:37:57 +0200210 periph_pll: periph_pll@c0 {
211 #address-cells = <1>;
212 #size-cells = <0>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800213 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200214 compatible = "altr,socfpga-a10-pll-clock";
215 clocks = <&osc1>, <&cb_intosc_ls_clk>,
216 <&f2s_free_clk>, <&main_periph_ref_clk>;
217 reg = <0xC0>;
218
219 peri_mpu_base_clk: peri_mpu_base_clk {
220 #clock-cells = <0>;
221 compatible = "altr,socfpga-a10-perip-clk";
222 clocks = <&periph_pll>;
223 div-reg = <0x140 16 11>;
224 };
225
226 peri_noc_base_clk: peri_noc_base_clk {
227 #clock-cells = <0>;
228 compatible = "altr,socfpga-a10-perip-clk";
229 clocks = <&periph_pll>;
230 div-reg = <0x144 16 11>;
231 };
232
233 peri_emaca_clk: peri_emaca_clk@e8 {
234 #clock-cells = <0>;
235 compatible = "altr,socfpga-a10-perip-clk";
236 clocks = <&periph_pll>;
237 reg = <0xE8>;
238 };
239
240 peri_emacb_clk: peri_emacb_clk@ec {
241 #clock-cells = <0>;
242 compatible = "altr,socfpga-a10-perip-clk";
243 clocks = <&periph_pll>;
244 reg = <0xEC>;
245 };
246
247 peri_emac_ptp_clk: peri_emac_ptp_clk@f0 {
248 #clock-cells = <0>;
249 compatible = "altr,socfpga-a10-perip-clk";
250 clocks = <&periph_pll>;
251 reg = <0xF0>;
252 };
253
254 peri_gpio_db_clk: peri_gpio_db_clk@f4 {
255 #clock-cells = <0>;
256 compatible = "altr,socfpga-a10-perip-clk";
257 clocks = <&periph_pll>;
258 reg = <0xF4>;
259 };
260
261 peri_sdmmc_clk: peri_sdmmc_clk@f8 {
262 #clock-cells = <0>;
263 compatible = "altr,socfpga-a10-perip-clk";
264 clocks = <&periph_pll>;
265 reg = <0xF8>;
266 };
267
268 peri_s2f_usr0_clk: peri_s2f_usr0_clk@fc {
269 #clock-cells = <0>;
270 compatible = "altr,socfpga-a10-perip-clk";
271 clocks = <&periph_pll>;
272 reg = <0xFC>;
273 };
274
275 peri_s2f_usr1_clk: peri_s2f_usr1_clk@100 {
276 #clock-cells = <0>;
277 compatible = "altr,socfpga-a10-perip-clk";
278 clocks = <&periph_pll>;
279 reg = <0x100>;
280 };
281
282 peri_hmc_pll_ref_clk: peri_hmc_pll_ref_clk@104 {
283 #clock-cells = <0>;
284 compatible = "altr,socfpga-a10-perip-clk";
285 clocks = <&periph_pll>;
286 reg = <0x104>;
287 };
Ley Foon Tan2f721202017-04-26 02:44:44 +0800288 };
289
Marek Vasut03f80b12018-04-23 01:37:57 +0200290 mpu_free_clk: mpu_free_clk@60 {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800291 #clock-cells = <0>;
292 compatible = "altr,socfpga-a10-perip-clk";
Marek Vasut03f80b12018-04-23 01:37:57 +0200293 clocks = <&main_mpu_base_clk>, <&peri_mpu_base_clk>,
294 <&osc1>, <&cb_intosc_hs_div2_clk>,
295 <&f2s_free_clk>;
296 reg = <0x60>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800297 };
298
Marek Vasut03f80b12018-04-23 01:37:57 +0200299 noc_free_clk: noc_free_clk@64 {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800300 #clock-cells = <0>;
301 compatible = "altr,socfpga-a10-perip-clk";
Marek Vasut03f80b12018-04-23 01:37:57 +0200302 clocks = <&main_noc_base_clk>, <&peri_noc_base_clk>,
303 <&osc1>, <&cb_intosc_hs_div2_clk>,
304 <&f2s_free_clk>;
305 reg = <0x64>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800306 };
307
Marek Vasut03f80b12018-04-23 01:37:57 +0200308 s2f_user1_free_clk: s2f_user1_free_clk@104 {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800309 #clock-cells = <0>;
310 compatible = "altr,socfpga-a10-perip-clk";
Marek Vasut03f80b12018-04-23 01:37:57 +0200311 clocks = <&main_s2f_usr1_clk>, <&peri_s2f_usr1_clk>,
312 <&osc1>, <&cb_intosc_hs_div2_clk>,
313 <&f2s_free_clk>;
314 reg = <0x104>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800315 };
316
Marek Vasut03f80b12018-04-23 01:37:57 +0200317 sdmmc_free_clk: sdmmc_free_clk@f8 {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800318 #clock-cells = <0>;
319 compatible = "altr,socfpga-a10-perip-clk";
Marek Vasut03f80b12018-04-23 01:37:57 +0200320 clocks = <&main_sdmmc_clk>, <&peri_sdmmc_clk>,
321 <&osc1>, <&cb_intosc_hs_div2_clk>,
322 <&f2s_free_clk>;
323 fixed-divider = <4>;
324 reg = <0xF8>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800325 };
326
Marek Vasut03f80b12018-04-23 01:37:57 +0200327 l4_sys_free_clk: l4_sys_free_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800328 #clock-cells = <0>;
329 compatible = "altr,socfpga-a10-perip-clk";
Marek Vasut03f80b12018-04-23 01:37:57 +0200330 clocks = <&noc_free_clk>;
331 fixed-divider = <4>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800332 };
Ley Foon Tan2f721202017-04-26 02:44:44 +0800333
Marek Vasut03f80b12018-04-23 01:37:57 +0200334 l4_main_clk: l4_main_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800335 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200336 compatible = "altr,socfpga-a10-gate-clk";
337 clocks = <&noc_free_clk>;
338 div-reg = <0xA8 0 2>;
339 clk-gate = <0x48 1>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800340 };
341
Marek Vasut03f80b12018-04-23 01:37:57 +0200342 l4_mp_clk: l4_mp_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800343 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200344 compatible = "altr,socfpga-a10-gate-clk";
345 clocks = <&noc_free_clk>;
346 div-reg = <0xA8 8 2>;
347 clk-gate = <0x48 2>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800348 };
349
Marek Vasut03f80b12018-04-23 01:37:57 +0200350 l4_sp_clk: l4_sp_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800351 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200352 compatible = "altr,socfpga-a10-gate-clk";
353 clocks = <&noc_free_clk>;
354 div-reg = <0xA8 16 2>;
355 clk-gate = <0x48 3>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800356 };
357
Marek Vasut03f80b12018-04-23 01:37:57 +0200358 mpu_periph_clk: mpu_periph_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800359 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200360 compatible = "altr,socfpga-a10-gate-clk";
361 clocks = <&mpu_free_clk>;
362 fixed-divider = <4>;
363 clk-gate = <0x48 0>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800364 };
365
Marek Vasut03f80b12018-04-23 01:37:57 +0200366 sdmmc_clk: sdmmc_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800367 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200368 compatible = "altr,socfpga-a10-gate-clk";
369 clocks = <&sdmmc_free_clk>;
370 clk-gate = <0xC8 5>;
371 clk-phase = <0 135>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800372 };
373
Marek Vasut03f80b12018-04-23 01:37:57 +0200374 qspi_clk: qspi_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800375 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200376 compatible = "altr,socfpga-a10-gate-clk";
377 clocks = <&l4_main_clk>;
378 clk-gate = <0xC8 11>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800379 };
380
Marek Vasut03f80b12018-04-23 01:37:57 +0200381 nand_clk: nand_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800382 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200383 compatible = "altr,socfpga-a10-gate-clk";
384 clocks = <&l4_mp_clk>;
385 clk-gate = <0xC8 10>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800386 };
387
Marek Vasut03f80b12018-04-23 01:37:57 +0200388 spi_m_clk: spi_m_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800389 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200390 compatible = "altr,socfpga-a10-gate-clk";
391 clocks = <&l4_main_clk>;
392 clk-gate = <0xC8 9>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800393 };
394
Marek Vasut03f80b12018-04-23 01:37:57 +0200395 usb_clk: usb_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800396 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200397 compatible = "altr,socfpga-a10-gate-clk";
398 clocks = <&l4_mp_clk>;
399 clk-gate = <0xC8 8>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800400 };
401
Marek Vasut03f80b12018-04-23 01:37:57 +0200402 s2f_usr1_clk: s2f_usr1_clk {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800403 #clock-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200404 compatible = "altr,socfpga-a10-gate-clk";
405 clocks = <&peri_s2f_usr1_clk>;
406 clk-gate = <0xC8 6>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800407 };
408 };
Marek Vasut03f80b12018-04-23 01:37:57 +0200409 };
Ley Foon Tan2f721202017-04-26 02:44:44 +0800410
Marek Vasut03f80b12018-04-23 01:37:57 +0200411 socfpga_axi_setup: stmmac-axi-config {
412 snps,wr_osr_lmt = <0xf>;
413 snps,rd_osr_lmt = <0xf>;
414 snps,blen = <0 0 0 0 16 0 0>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800415 };
416
417 gmac0: ethernet@ff800000 {
418 compatible = "altr,socfpga-stmmac", "snps,dwmac-3.72a", "snps,dwmac";
419 altr,sysmgr-syscon = <&sysmgr 0x44 0>;
420 reg = <0xff800000 0x2000>;
421 interrupts = <0 92 IRQ_TYPE_LEVEL_HIGH>;
422 interrupt-names = "macirq";
423 /* Filled in by bootloader */
424 mac-address = [00 00 00 00 00 00];
425 snps,multicast-filter-bins = <256>;
426 snps,perfect-filter-entries = <128>;
427 tx-fifo-depth = <4096>;
428 rx-fifo-depth = <16384>;
429 clocks = <&l4_mp_clk>;
430 clock-names = "stmmaceth";
Marek Vasutfbf9e402018-08-13 20:24:20 +0200431 resets = <&rst EMAC0_RESET>, <&rst EMAC0_OCP_RESET>;
432 reset-names = "stmmaceth", "stmmaceth-ocp";
Marek Vasut03f80b12018-04-23 01:37:57 +0200433 snps,axi-config = <&socfpga_axi_setup>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800434 status = "disabled";
435 };
436
437 gmac1: ethernet@ff802000 {
438 compatible = "altr,socfpga-stmmac", "snps,dwmac-3.72a", "snps,dwmac";
439 altr,sysmgr-syscon = <&sysmgr 0x48 0>;
440 reg = <0xff802000 0x2000>;
441 interrupts = <0 93 IRQ_TYPE_LEVEL_HIGH>;
442 interrupt-names = "macirq";
443 /* Filled in by bootloader */
444 mac-address = [00 00 00 00 00 00];
445 snps,multicast-filter-bins = <256>;
446 snps,perfect-filter-entries = <128>;
447 tx-fifo-depth = <4096>;
448 rx-fifo-depth = <16384>;
449 clocks = <&l4_mp_clk>;
450 clock-names = "stmmaceth";
Marek Vasutfbf9e402018-08-13 20:24:20 +0200451 resets = <&rst EMAC1_RESET>, <&rst EMAC1_OCP_RESET>;
452 reset-names = "stmmaceth", "stmmaceth-ocp";
Marek Vasut03f80b12018-04-23 01:37:57 +0200453 snps,axi-config = <&socfpga_axi_setup>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800454 status = "disabled";
455 };
456
457 gmac2: ethernet@ff804000 {
458 compatible = "altr,socfpga-stmmac", "snps,dwmac-3.72a", "snps,dwmac";
459 altr,sysmgr-syscon = <&sysmgr 0x4C 0>;
460 reg = <0xff804000 0x2000>;
461 interrupts = <0 94 IRQ_TYPE_LEVEL_HIGH>;
462 interrupt-names = "macirq";
463 /* Filled in by bootloader */
464 mac-address = [00 00 00 00 00 00];
465 snps,multicast-filter-bins = <256>;
466 snps,perfect-filter-entries = <128>;
467 tx-fifo-depth = <4096>;
468 rx-fifo-depth = <16384>;
469 clocks = <&l4_mp_clk>;
470 clock-names = "stmmaceth";
Marek Vasutfbf9e402018-08-13 20:24:20 +0200471 resets = <&rst EMAC2_RESET>, <&rst EMAC2_OCP_RESET>;
472 reset-names = "stmmaceth", "stmmaceth-ocp";
Marek Vasut03f80b12018-04-23 01:37:57 +0200473 snps,axi-config = <&socfpga_axi_setup>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800474 status = "disabled";
475 };
476
477 gpio0: gpio@ffc02900 {
478 #address-cells = <1>;
479 #size-cells = <0>;
480 compatible = "snps,dw-apb-gpio";
481 reg = <0xffc02900 0x100>;
482 status = "disabled";
483
484 porta: gpio-controller@0 {
485 compatible = "snps,dw-apb-gpio-port";
Marek Vasut03f80b12018-04-23 01:37:57 +0200486 bank-name = "porta";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800487 gpio-controller;
488 #gpio-cells = <2>;
489 snps,nr-gpios = <29>;
490 reg = <0>;
491 interrupt-controller;
492 #interrupt-cells = <2>;
493 interrupts = <0 112 IRQ_TYPE_LEVEL_HIGH>;
494 };
495 };
496
497 gpio1: gpio@ffc02a00 {
498 #address-cells = <1>;
499 #size-cells = <0>;
500 compatible = "snps,dw-apb-gpio";
501 reg = <0xffc02a00 0x100>;
502 status = "disabled";
503
504 portb: gpio-controller@0 {
505 compatible = "snps,dw-apb-gpio-port";
Marek Vasut03f80b12018-04-23 01:37:57 +0200506 bank-name = "portb";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800507 gpio-controller;
508 #gpio-cells = <2>;
509 snps,nr-gpios = <29>;
510 reg = <0>;
511 interrupt-controller;
512 #interrupt-cells = <2>;
513 interrupts = <0 113 IRQ_TYPE_LEVEL_HIGH>;
514 };
515 };
516
517 gpio2: gpio@ffc02b00 {
518 #address-cells = <1>;
519 #size-cells = <0>;
520 compatible = "snps,dw-apb-gpio";
521 reg = <0xffc02b00 0x100>;
522 status = "disabled";
523
524 portc: gpio-controller@0 {
525 compatible = "snps,dw-apb-gpio-port";
Marek Vasut03f80b12018-04-23 01:37:57 +0200526 bank-name = "portc";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800527 gpio-controller;
528 #gpio-cells = <2>;
529 snps,nr-gpios = <27>;
530 reg = <0>;
531 interrupt-controller;
532 #interrupt-cells = <2>;
533 interrupts = <0 114 IRQ_TYPE_LEVEL_HIGH>;
534 };
535 };
536
537 fpga_mgr: fpga-mgr@ffd03000 {
538 compatible = "altr,socfpga-a10-fpga-mgr";
539 reg = <0xffd03000 0x100
540 0xffcfe400 0x20>;
541 clocks = <&l4_mp_clk>;
542 resets = <&rst FPGAMGR_RESET>;
543 reset-names = "fpgamgr";
544 };
545
546 i2c0: i2c@ffc02200 {
547 #address-cells = <1>;
548 #size-cells = <0>;
549 compatible = "snps,designware-i2c";
550 reg = <0xffc02200 0x100>;
551 interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>;
552 clocks = <&l4_sp_clk>;
Marek Vasutde756742018-08-13 20:40:44 +0200553 resets = <&rst I2C0_RESET>;
554 reset-names = "i2c";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800555 status = "disabled";
556 };
557
558 i2c1: i2c@ffc02300 {
559 #address-cells = <1>;
560 #size-cells = <0>;
561 compatible = "snps,designware-i2c";
562 reg = <0xffc02300 0x100>;
563 interrupts = <0 106 IRQ_TYPE_LEVEL_HIGH>;
564 clocks = <&l4_sp_clk>;
Marek Vasutde756742018-08-13 20:40:44 +0200565 resets = <&rst I2C1_RESET>;
566 reset-names = "i2c";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800567 status = "disabled";
568 };
569
570 i2c2: i2c@ffc02400 {
571 #address-cells = <1>;
572 #size-cells = <0>;
573 compatible = "snps,designware-i2c";
574 reg = <0xffc02400 0x100>;
575 interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>;
576 clocks = <&l4_sp_clk>;
Marek Vasutde756742018-08-13 20:40:44 +0200577 resets = <&rst I2C2_RESET>;
578 reset-names = "i2c";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800579 status = "disabled";
580 };
581
582 i2c3: i2c@ffc02500 {
583 #address-cells = <1>;
584 #size-cells = <0>;
585 compatible = "snps,designware-i2c";
586 reg = <0xffc02500 0x100>;
587 interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>;
588 clocks = <&l4_sp_clk>;
Marek Vasutde756742018-08-13 20:40:44 +0200589 resets = <&rst I2C3_RESET>;
590 reset-names = "i2c";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800591 status = "disabled";
592 };
593
594 i2c4: i2c@ffc02600 {
595 #address-cells = <1>;
596 #size-cells = <0>;
597 compatible = "snps,designware-i2c";
598 reg = <0xffc02600 0x100>;
599 interrupts = <0 109 IRQ_TYPE_LEVEL_HIGH>;
600 clocks = <&l4_sp_clk>;
Marek Vasutde756742018-08-13 20:40:44 +0200601 resets = <&rst I2C4_RESET>;
602 reset-names = "i2c";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800603 status = "disabled";
604 };
605
Marek Vasut03f80b12018-04-23 01:37:57 +0200606 spi1: spi@ffda5000 {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800607 compatible = "snps,dw-apb-ssi";
608 #address-cells = <1>;
609 #size-cells = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200610 reg = <0xffda5000 0x100>;
611 interrupts = <0 102 4>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800612 num-chipselect = <4>;
613 bus-num = <0>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200614 /*32bit_access;*/
Ley Foon Tan2f721202017-04-26 02:44:44 +0800615 tx-dma-channel = <&pdma 16>;
616 rx-dma-channel = <&pdma 17>;
617 clocks = <&spi_m_clk>;
618 status = "disabled";
619 };
620
Marek Vasut03f80b12018-04-23 01:37:57 +0200621 sdr: sdr@ffc25000 {
622 compatible = "altr,sdr-ctl", "syscon";
623 reg = <0xffcfb100 0x80>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800624 };
625
626 L2: l2-cache@fffff000 {
627 compatible = "arm,pl310-cache";
628 reg = <0xfffff000 0x1000>;
629 interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>;
630 cache-unified;
631 cache-level = <2>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200632 prefetch-data = <1>;
633 prefetch-instr = <1>;
634 arm,shared-override;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800635 };
636
637 mmc: dwmmc0@ff808000 {
638 #address-cells = <1>;
639 #size-cells = <0>;
640 compatible = "altr,socfpga-dw-mshc";
641 reg = <0xff808000 0x1000>;
642 interrupts = <0 98 IRQ_TYPE_LEVEL_HIGH>;
643 fifo-depth = <0x400>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800644 clocks = <&l4_mp_clk>, <&sdmmc_clk>;
645 clock-names = "biu", "ciu";
646 status = "disabled";
647 };
648
Marek Vasut03f80b12018-04-23 01:37:57 +0200649 nand: nand@ffb90000 {
650 #address-cells = <1>;
651 #size-cells = <1>;
652 compatible = "denali,denali-nand-dt", "altr,socfpga-denali-nand";
Marek Vasut66803de2018-05-07 22:22:26 +0200653 reg = <0xffb90000 0x20>,
654 <0xffb80000 0x1000>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200655 reg-names = "nand_data", "denali_reg";
656 interrupts = <0 99 4>;
657 dma-mask = <0xffffffff>;
658 clocks = <&nand_clk>;
659 status = "disabled";
660 };
661
Ley Foon Tan2f721202017-04-26 02:44:44 +0800662 ocram: sram@ffe00000 {
663 compatible = "mmio-sram";
664 reg = <0xffe00000 0x40000>;
665 };
666
Marek Vasut03f80b12018-04-23 01:37:57 +0200667 eccmgr: eccmgr {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800668 compatible = "altr,socfpga-a10-ecc-manager";
669 altr,sysmgr-syscon = <&sysmgr>;
670 #address-cells = <1>;
671 #size-cells = <1>;
672 interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>,
673 <0 0 IRQ_TYPE_LEVEL_HIGH>;
674 interrupt-controller;
675 #interrupt-cells = <2>;
676 ranges;
677
678 sdramedac {
679 compatible = "altr,sdram-edac-a10";
680 altr,sdr-syscon = <&sdr>;
681 interrupts = <17 IRQ_TYPE_LEVEL_HIGH>,
682 <49 IRQ_TYPE_LEVEL_HIGH>;
683 };
684
685 l2-ecc@ffd06010 {
686 compatible = "altr,socfpga-a10-l2-ecc";
687 reg = <0xffd06010 0x4>;
688 interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
689 <32 IRQ_TYPE_LEVEL_HIGH>;
690 };
691
692 ocram-ecc@ff8c3000 {
693 compatible = "altr,socfpga-a10-ocram-ecc";
694 reg = <0xff8c3000 0x400>;
695 interrupts = <1 IRQ_TYPE_LEVEL_HIGH>,
696 <33 IRQ_TYPE_LEVEL_HIGH>;
697 };
698
Ley Foon Tan2f721202017-04-26 02:44:44 +0800699 emac0-rx-ecc@ff8c0800 {
700 compatible = "altr,socfpga-eth-mac-ecc";
701 reg = <0xff8c0800 0x400>;
702 altr,ecc-parent = <&gmac0>;
703 interrupts = <4 IRQ_TYPE_LEVEL_HIGH>,
704 <36 IRQ_TYPE_LEVEL_HIGH>;
705 };
706
707 emac0-tx-ecc@ff8c0c00 {
708 compatible = "altr,socfpga-eth-mac-ecc";
709 reg = <0xff8c0c00 0x400>;
710 altr,ecc-parent = <&gmac0>;
711 interrupts = <5 IRQ_TYPE_LEVEL_HIGH>,
712 <37 IRQ_TYPE_LEVEL_HIGH>;
713 };
714
715 dma-ecc@ff8c8000 {
716 compatible = "altr,socfpga-dma-ecc";
717 reg = <0xff8c8000 0x400>;
718 altr,ecc-parent = <&pdma>;
719 interrupts = <10 IRQ_TYPE_LEVEL_HIGH>,
720 <42 IRQ_TYPE_LEVEL_HIGH>;
721 };
722
723 usb0-ecc@ff8c8800 {
724 compatible = "altr,socfpga-usb-ecc";
725 reg = <0xff8c8800 0x400>;
726 altr,ecc-parent = <&usb0>;
727 interrupts = <2 IRQ_TYPE_LEVEL_HIGH>,
728 <34 IRQ_TYPE_LEVEL_HIGH>;
729 };
730 };
731
Marek Vasut03f80b12018-04-23 01:37:57 +0200732 qspi: spi@ff809000 {
733 compatible = "cdns,qspi-nor", "cadence,qspi";
Ley Foon Tan2f721202017-04-26 02:44:44 +0800734 #address-cells = <1>;
735 #size-cells = <0>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800736 reg = <0xff809000 0x100>,
Marek Vasut03f80b12018-04-23 01:37:57 +0200737 <0xffa00000 0x100000>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800738 interrupts = <0 100 IRQ_TYPE_LEVEL_HIGH>;
Jason Rushfeaa3f92018-01-23 17:13:10 -0600739 cdns,fifo-depth = <128>;
740 cdns,fifo-width = <4>;
Marek Vasut03f80b12018-04-23 01:37:57 +0200741 cdns,trigger-address = <0x00000000>;
742 clocks = <&qspi_clk>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800743 status = "disabled";
744 };
745
746 rst: rstmgr@ffd05000 {
747 #reset-cells = <1>;
748 compatible = "altr,rst-mgr";
749 reg = <0xffd05000 0x100>;
750 altr,modrst-offset = <0x20>;
Marek Vasuta292bd92018-08-13 18:42:32 +0200751 u-boot,dm-pre-reloc;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800752 };
753
754 scu: snoop-control-unit@ffffc000 {
755 compatible = "arm,cortex-a9-scu";
756 reg = <0xffffc000 0x100>;
757 };
758
759 sysmgr: sysmgr@ffd06000 {
760 compatible = "altr,sys-mgr", "syscon";
761 reg = <0xffd06000 0x300>;
762 cpu1-start-addr = <0xffd06230>;
763 };
764
765 /* Local timer */
766 timer@ffffc600 {
767 compatible = "arm,cortex-a9-twd-timer";
768 reg = <0xffffc600 0x100>;
769 interrupts = <1 13 0xf04>;
770 clocks = <&mpu_periph_clk>;
771 };
772
773 timer0: timer0@ffc02700 {
774 compatible = "snps,dw-apb-timer";
775 interrupts = <0 115 IRQ_TYPE_LEVEL_HIGH>;
776 reg = <0xffc02700 0x100>;
777 clocks = <&l4_sp_clk>;
778 clock-names = "timer";
779 };
780
781 timer1: timer1@ffc02800 {
782 compatible = "snps,dw-apb-timer";
783 interrupts = <0 116 IRQ_TYPE_LEVEL_HIGH>;
784 reg = <0xffc02800 0x100>;
785 clocks = <&l4_sp_clk>;
786 clock-names = "timer";
787 };
788
789 timer2: timer2@ffd00000 {
790 compatible = "snps,dw-apb-timer";
791 interrupts = <0 117 IRQ_TYPE_LEVEL_HIGH>;
792 reg = <0xffd00000 0x100>;
793 clocks = <&l4_sys_free_clk>;
794 clock-names = "timer";
795 };
796
797 timer3: timer3@ffd00100 {
798 compatible = "snps,dw-apb-timer";
799 interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>;
800 reg = <0xffd01000 0x100>;
801 clocks = <&l4_sys_free_clk>;
802 clock-names = "timer";
803 };
804
805 uart0: serial0@ffc02000 {
806 compatible = "snps,dw-apb-uart";
807 reg = <0xffc02000 0x100>;
808 interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>;
809 reg-shift = <2>;
810 reg-io-width = <4>;
811 clocks = <&l4_sp_clk>;
Marek Vasutc6411f02018-08-13 18:42:39 +0200812 resets = <&rst UART0_RESET>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800813 status = "disabled";
814 };
815
816 uart1: serial1@ffc02100 {
817 compatible = "snps,dw-apb-uart";
818 reg = <0xffc02100 0x100>;
819 interrupts = <0 111 IRQ_TYPE_LEVEL_HIGH>;
820 reg-shift = <2>;
821 reg-io-width = <4>;
822 clocks = <&l4_sp_clk>;
Marek Vasutc6411f02018-08-13 18:42:39 +0200823 resets = <&rst UART1_RESET>;
Ley Foon Tan2f721202017-04-26 02:44:44 +0800824 status = "disabled";
825 };
826
Marek Vasut03f80b12018-04-23 01:37:57 +0200827 usbphy0: usbphy {
Ley Foon Tan2f721202017-04-26 02:44:44 +0800828 #phy-cells = <0>;
829 compatible = "usb-nop-xceiv";
830 status = "okay";
831 };
832
833 usb0: usb@ffb00000 {
834 compatible = "snps,dwc2";
835 reg = <0xffb00000 0xffff>;
836 interrupts = <0 95 IRQ_TYPE_LEVEL_HIGH>;
837 clocks = <&usb_clk>;
838 clock-names = "otg";
839 resets = <&rst USB0_RESET>;
840 reset-names = "dwc2";
841 phys = <&usbphy0>;
842 phy-names = "usb2-phy";
843 status = "disabled";
844 };
845
846 usb1: usb@ffb40000 {
847 compatible = "snps,dwc2";
848 reg = <0xffb40000 0xffff>;
849 interrupts = <0 96 IRQ_TYPE_LEVEL_HIGH>;
850 clocks = <&usb_clk>;
851 clock-names = "otg";
852 resets = <&rst USB1_RESET>;
853 reset-names = "dwc2";
854 phys = <&usbphy0>;
855 phy-names = "usb2-phy";
856 status = "disabled";
857 };
858
859 watchdog0: watchdog@ffd00200 {
860 compatible = "snps,dw-wdt";
861 reg = <0xffd00200 0x100>;
862 interrupts = <0 119 IRQ_TYPE_LEVEL_HIGH>;
863 clocks = <&l4_sys_free_clk>;
864 status = "disabled";
865 };
866
867 watchdog1: watchdog@ffd00300 {
868 compatible = "snps,dw-wdt";
869 reg = <0xffd00300 0x100>;
870 interrupts = <0 120 IRQ_TYPE_LEVEL_HIGH>;
871 clocks = <&l4_sys_free_clk>;
872 status = "disabled";
873 };
874 };
875};