1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3 * lan966x.dtsi - Device Tree Include file for Microchip LAN966 family SoC
4 *
5 * Copyright (C) 2021 Microchip Technology, Inc. and its subsidiaries
6 *
7 * Author: Kavyasree Kotagiri <kavyasree.kotagiri@microchip.com>
8 *
9 */
10
11 #include <dt-bindings/interrupt-controller/irq.h>
12 #include <dt-bindings/interrupt-controller/arm-gic.h>
13 #include <dt-bindings/mfd/atmel-flexcom.h>
14 #include <dt-bindings/dma/at91.h>
15 #include <dt-bindings/gpio/gpio.h>
16 #include <dt-bindings/clock/microchip,lan966x.h>
17
18 / {
19 model = "Microchip LAN966 family SoC";
20 compatible = "microchip,lan966";
21 interrupt-parent = <&gic>;
22 #address-cells = <1>;
23 #size-cells = <1>;
24
25 cpus {
26 #address-cells = <1>;
27 #size-cells = <0>;
28
29 cpu@0 {
30 device_type = "cpu";
31 compatible = "arm,cortex-a7";
32 clock-frequency = <600000000>;
33 reg = <0x0>;
34 };
35 };
36
37 clocks {
38 sys_clk: sys_clk {
39 compatible = "fixed-clock";
40 #clock-cells = <0>;
41 clock-frequency = <165625000>;
42 };
43
44 cpu_clk: cpu_clk {
45 compatible = "fixed-clock";
46 #clock-cells = <0>;
47 clock-frequency = <600000000>;
48 };
49
50 ddr_clk: ddr_clk {
51 compatible = "fixed-clock";
52 #clock-cells = <0>;
53 clock-frequency = <300000000>;
54 };
55
56 nic_clk: nic_clk {
57 compatible = "fixed-clock";
58 #clock-cells = <0>;
59 clock-frequency = <200000000>;
60 };
61 };
62
63 clks: clock-controller@e00c00a8 {
64 compatible = "microchip,lan966x-gck";
65 #clock-cells = <1>;
66 clocks = <&cpu_clk>, <&ddr_clk>, <&sys_clk>;
67 clock-names = "cpu", "ddr", "sys";
68 reg = <0xe00c00a8 0x38>, <0xe00c02cc 0x4>;
69 };
70
71 timer {
72 compatible = "arm,armv7-timer";
73 interrupt-parent = <&gic>;
74 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
75 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
76 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
77 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
78 clock-frequency = <37500000>;
79 };
80
81 soc {
82 compatible = "simple-bus";
83 #address-cells = <1>;
84 #size-cells = <1>;
85 ranges;
86
87 udc: usb@200000 {
88 compatible = "microchip,lan9662-udc",
89 "atmel,sama5d3-udc";
90 reg = <0x00200000 0x80000>,
91 <0xe0808000 0x400>;
92 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
93 clocks = <&clks GCK_GATE_UDPHS>, <&nic_clk>;
94 clock-names = "pclk", "hclk";
95 status = "disabled";
96 };
97
98 switch: switch@e0000000 {
99 compatible = "microchip,lan966x-switch";
100 reg = <0xe0000000 0x0100000>,
101 <0xe2000000 0x0800000>;
102 reg-names = "cpu", "gcb";
103 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
104 <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
105 <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
106 <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
107 <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
108 interrupt-names = "xtr", "fdma", "ana", "ptp",
109 "ptp-ext";
110 resets = <&reset 0>;
111 reset-names = "switch";
112 status = "disabled";
113
114 ethernet-ports {
115 #address-cells = <1>;
116 #size-cells = <0>;
117
118 port0: port@0 {
119 reg = <0>;
120 status = "disabled";
121 };
122
123 port1: port@1 {
124 reg = <1>;
125 status = "disabled";
126 };
127
128 port2: port@2 {
129 reg = <2>;
130 status = "disabled";
131 };
132
133 port3: port@3 {
134 reg = <3>;
135 status = "disabled";
136 };
137
138 port4: port@4 {
139 reg = <4>;
140 status = "disabled";
141 };
142
143 port5: port@5 {
144 reg = <5>;
145 status = "disabled";
146 };
147
148 port6: port@6 {
149 reg = <6>;
150 status = "disabled";
151 };
152
153 port7: port@7 {
154 reg = <7>;
155 status = "disabled";
156 };
157 };
158 };
159
160 flx0: flexcom@e0040000 {
161 compatible = "atmel,sama5d2-flexcom";
162 reg = <0xe0040000 0x100>;
163 clocks = <&clks GCK_ID_FLEXCOM0>;
164 #address-cells = <1>;
165 #size-cells = <1>;
166 ranges = <0x0 0xe0040000 0x800>;
167 status = "disabled";
168
169 usart0: serial@200 {
170 compatible = "atmel,at91sam9260-usart";
171 reg = <0x200 0x200>;
172 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
173 dmas = <&dma0 AT91_XDMAC_DT_PERID(3)>,
174 <&dma0 AT91_XDMAC_DT_PERID(2)>;
175 dma-names = "tx", "rx";
176 clocks = <&nic_clk>;
177 clock-names = "usart";
178 atmel,fifo-size = <32>;
179 status = "disabled";
180 };
181
182 spi0: spi@400 {
183 compatible = "atmel,at91rm9200-spi";
184 reg = <0x400 0x200>;
185 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
186 dmas = <&dma0 AT91_XDMAC_DT_PERID(3)>,
187 <&dma0 AT91_XDMAC_DT_PERID(2)>;
188 dma-names = "tx", "rx";
189 clocks = <&nic_clk>;
190 clock-names = "spi_clk";
191 atmel,fifo-size = <32>;
192 #address-cells = <1>;
193 #size-cells = <0>;
194 status = "disabled";
195 };
196
197 i2c0: i2c@600 {
198 compatible = "microchip,sam9x60-i2c";
199 reg = <0x600 0x200>;
200 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
201 dmas = <&dma0 AT91_XDMAC_DT_PERID(3)>,
202 <&dma0 AT91_XDMAC_DT_PERID(2)>;
203 dma-names = "tx", "rx";
204 clocks = <&nic_clk>;
205 #address-cells = <1>;
206 #size-cells = <0>;
207 status = "disabled";
208 };
209 };
210
211 flx1: flexcom@e0044000 {
212 compatible = "atmel,sama5d2-flexcom";
213 reg = <0xe0044000 0x100>;
214 clocks = <&clks GCK_ID_FLEXCOM1>;
215 #address-cells = <1>;
216 #size-cells = <1>;
217 ranges = <0x0 0xe0044000 0x800>;
218 status = "disabled";
219
220 usart1: serial@200 {
221 compatible = "atmel,at91sam9260-usart";
222 reg = <0x200 0x200>;
223 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
224 dmas = <&dma0 AT91_XDMAC_DT_PERID(5)>,
225 <&dma0 AT91_XDMAC_DT_PERID(4)>;
226 dma-names = "tx", "rx";
227 clocks = <&nic_clk>;
228 clock-names = "usart";
229 atmel,fifo-size = <32>;
230 status = "disabled";
231 };
232
233 spi1: spi@400 {
234 compatible = "atmel,at91rm9200-spi";
235 reg = <0x400 0x200>;
236 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
237 dmas = <&dma0 AT91_XDMAC_DT_PERID(5)>,
238 <&dma0 AT91_XDMAC_DT_PERID(4)>;
239 dma-names = "tx", "rx";
240 clocks = <&nic_clk>;
241 clock-names = "spi_clk";
242 atmel,fifo-size = <32>;
243 #address-cells = <1>;
244 #size-cells = <0>;
245 status = "disabled";
246 };
247
248 i2c1: i2c@600 {
249 compatible = "microchip,sam9x60-i2c";
250 reg = <0x600 0x200>;
251 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
252 dmas = <&dma0 AT91_XDMAC_DT_PERID(5)>,
253 <&dma0 AT91_XDMAC_DT_PERID(4)>;
254 dma-names = "tx", "rx";
255 clocks = <&nic_clk>;
256 #address-cells = <1>;
257 #size-cells = <0>;
258 status = "disabled";
259 };
260 };
261
262 trng: rng@e0048000 {
263 compatible = "atmel,at91sam9g45-trng";
264 reg = <0xe0048000 0x100>;
265 clocks = <&nic_clk>;
266 };
267
268 aes: crypto@e004c000 {
269 compatible = "atmel,at91sam9g46-aes";
270 reg = <0xe004c000 0x100>;
271 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
272 dmas = <&dma0 AT91_XDMAC_DT_PERID(12)>,
273 <&dma0 AT91_XDMAC_DT_PERID(13)>;
274 dma-names = "tx", "rx";
275 clocks = <&nic_clk>;
276 clock-names = "aes_clk";
277 };
278
279 flx2: flexcom@e0060000 {
280 compatible = "atmel,sama5d2-flexcom";
281 reg = <0xe0060000 0x100>;
282 clocks = <&clks GCK_ID_FLEXCOM2>;
283 #address-cells = <1>;
284 #size-cells = <1>;
285 ranges = <0x0 0xe0060000 0x800>;
286 status = "disabled";
287
288 usart2: serial@200 {
289 compatible = "atmel,at91sam9260-usart";
290 reg = <0x200 0x200>;
291 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
292 dmas = <&dma0 AT91_XDMAC_DT_PERID(7)>,
293 <&dma0 AT91_XDMAC_DT_PERID(6)>;
294 dma-names = "tx", "rx";
295 clocks = <&nic_clk>;
296 clock-names = "usart";
297 atmel,fifo-size = <32>;
298 status = "disabled";
299 };
300
301 spi2: spi@400 {
302 compatible = "atmel,at91rm9200-spi";
303 reg = <0x400 0x200>;
304 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
305 dmas = <&dma0 AT91_XDMAC_DT_PERID(7)>,
306 <&dma0 AT91_XDMAC_DT_PERID(6)>;
307 dma-names = "tx", "rx";
308 clocks = <&nic_clk>;
309 clock-names = "spi_clk";
310 atmel,fifo-size = <32>;
311 #address-cells = <1>;
312 #size-cells = <0>;
313 status = "disabled";
314 };
315
316 i2c2: i2c@600 {
317 compatible = "microchip,sam9x60-i2c";
318 reg = <0x600 0x200>;
319 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
320 dmas = <&dma0 AT91_XDMAC_DT_PERID(7)>,
321 <&dma0 AT91_XDMAC_DT_PERID(6)>;
322 dma-names = "tx", "rx";
323 clocks = <&nic_clk>;
324 #address-cells = <1>;
325 #size-cells = <0>;
326 status = "disabled";
327 };
328 };
329
330 flx3: flexcom@e0064000 {
331 compatible = "atmel,sama5d2-flexcom";
332 reg = <0xe0064000 0x100>;
333 clocks = <&clks GCK_ID_FLEXCOM3>;
334 #address-cells = <1>;
335 #size-cells = <1>;
336 ranges = <0x0 0xe0064000 0x800>;
337 status = "disabled";
338
339 usart3: serial@200 {
340 compatible = "atmel,at91sam9260-usart";
341 reg = <0x200 0x200>;
342 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
343 dmas = <&dma0 AT91_XDMAC_DT_PERID(9)>,
344 <&dma0 AT91_XDMAC_DT_PERID(8)>;
345 dma-names = "tx", "rx";
346 clocks = <&nic_clk>;
347 clock-names = "usart";
348 atmel,fifo-size = <32>;
349 status = "disabled";
350 };
351
352 spi3: spi@400 {
353 compatible = "atmel,at91rm9200-spi";
354 reg = <0x400 0x200>;
355 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
356 dmas = <&dma0 AT91_XDMAC_DT_PERID(9)>,
357 <&dma0 AT91_XDMAC_DT_PERID(8)>;
358 dma-names = "tx", "rx";
359 clocks = <&nic_clk>;
360 clock-names = "spi_clk";
361 atmel,fifo-size = <32>;
362 #address-cells = <1>;
363 #size-cells = <0>;
364 status = "disabled";
365 };
366
367 i2c3: i2c@600 {
368 compatible = "microchip,sam9x60-i2c";
369 reg = <0x600 0x200>;
370 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
371 dmas = <&dma0 AT91_XDMAC_DT_PERID(9)>,
372 <&dma0 AT91_XDMAC_DT_PERID(8)>;
373 dma-names = "tx", "rx";
374 clocks = <&nic_clk>;
375 #address-cells = <1>;
376 #size-cells = <0>;
377 status = "disabled";
378 };
379 };
380
381 dma0: dma-controller@e0068000 {
382 compatible = "microchip,sama7g5-dma";
383 reg = <0xe0068000 0x1000>;
384 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
385 #dma-cells = <1>;
386 clocks = <&nic_clk>;
387 clock-names = "dma_clk";
388 };
389
390 sha: crypto@e006c000 {
391 compatible = "atmel,at91sam9g46-sha";
392 reg = <0xe006c000 0xec>;
393 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
394 dmas = <&dma0 AT91_XDMAC_DT_PERID(14)>;
395 dma-names = "tx";
396 clocks = <&nic_clk>;
397 clock-names = "sha_clk";
398 };
399
400 flx4: flexcom@e0070000 {
401 compatible = "atmel,sama5d2-flexcom";
402 reg = <0xe0070000 0x100>;
403 clocks = <&clks GCK_ID_FLEXCOM4>;
404 #address-cells = <1>;
405 #size-cells = <1>;
406 ranges = <0x0 0xe0070000 0x800>;
407 status = "disabled";
408
409 usart4: serial@200 {
410 compatible = "atmel,at91sam9260-usart";
411 reg = <0x200 0x200>;
412 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
413 dmas = <&dma0 AT91_XDMAC_DT_PERID(11)>,
414 <&dma0 AT91_XDMAC_DT_PERID(10)>;
415 dma-names = "tx", "rx";
416 clocks = <&nic_clk>;
417 clock-names = "usart";
418 atmel,fifo-size = <32>;
419 status = "disabled";
420 };
421
422 spi4: spi@400 {
423 compatible = "atmel,at91rm9200-spi";
424 reg = <0x400 0x200>;
425 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
426 dmas = <&dma0 AT91_XDMAC_DT_PERID(11)>,
427 <&dma0 AT91_XDMAC_DT_PERID(10)>;
428 dma-names = "tx", "rx";
429 clocks = <&nic_clk>;
430 clock-names = "spi_clk";
431 atmel,fifo-size = <32>;
432 #address-cells = <1>;
433 #size-cells = <0>;
434 status = "disabled";
435 };
436
437 i2c4: i2c@600 {
438 compatible = "microchip,sam9x60-i2c";
439 reg = <0x600 0x200>;
440 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
441 dmas = <&dma0 AT91_XDMAC_DT_PERID(11)>,
442 <&dma0 AT91_XDMAC_DT_PERID(10)>;
443 dma-names = "tx", "rx";
444 clocks = <&nic_clk>;
445 #address-cells = <1>;
446 #size-cells = <0>;
447 status = "disabled";
448 };
449 };
450
451 timer0: timer@e008c000 {
452 compatible = "snps,dw-apb-timer";
453 reg = <0xe008c000 0x400>;
454 clocks = <&nic_clk>;
455 clock-names = "timer";
456 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
457 };
458
459 watchdog: watchdog@e0090000 {
460 compatible = "snps,dw-wdt";
461 reg = <0xe0090000 0x1000>;
462 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
463 clocks = <&nic_clk>;
464 status = "disabled";
465 };
466
467 cpu_ctrl: syscon@e00c0000 {
468 compatible = "microchip,lan966x-cpu-syscon", "syscon";
469 reg = <0xe00c0000 0x350>;
470 };
471
472 can0: can@e081c000 {
473 compatible = "bosch,m_can";
474 reg = <0xe081c000 0xfc>, <0x00100000 0x4000>;
475 reg-names = "m_can", "message_ram";
476 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
477 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
478 interrupt-names = "int0", "int1";
479 clocks = <&clks GCK_ID_MCAN0>, <&clks GCK_ID_MCAN0>;
480 clock-names = "hclk", "cclk";
481 assigned-clocks = <&clks GCK_ID_MCAN0>;
482 assigned-clock-rates = <40000000>;
483 bosch,mram-cfg = <0x0 0 0 64 0 0 32 32>;
484 status = "disabled";
485 };
486
487 can1: can@e0820000 {
488 compatible = "bosch,m_can";
489 reg = <0xe0820000 0xfc>, <0x00100000 0x8000>;
490 reg-names = "m_can", "message_ram";
491 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>,
492 <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
493 interrupt-names = "int0", "int1";
494 clocks = <&clks GCK_ID_MCAN1>, <&clks GCK_ID_MCAN1>;
495 clock-names = "hclk", "cclk";
496 assigned-clocks = <&clks GCK_ID_MCAN1>;
497 assigned-clock-rates = <40000000>;
498 bosch,mram-cfg = <0x4000 0 0 64 0 0 32 32>;
499 status = "disabled";
500 };
501
502 reset: reset-controller@e200400c {
503 compatible = "microchip,lan966x-switch-reset";
504 reg = <0xe200400c 0x4>;
505 reg-names = "gcb";
506 #reset-cells = <1>;
507 cpu-syscon = <&cpu_ctrl>;
508 };
509
510 gpio: pinctrl@e2004064 {
511 compatible = "microchip,lan966x-pinctrl";
512 reg = <0xe2004064 0xb4>,
513 <0xe2010024 0x138>;
514 resets = <&reset 0>;
515 reset-names = "switch";
516 gpio-controller;
517 #gpio-cells = <2>;
518 gpio-ranges = <&gpio 0 0 78>;
519 interrupt-controller;
520 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
521 #interrupt-cells = <2>;
522 };
523
524 mdio0: mdio@e2004118 {
525 compatible = "microchip,lan966x-miim";
526 #address-cells = <1>;
527 #size-cells = <0>;
528 reg = <0xe2004118 0x24>;
529 clocks = <&sys_clk>;
530 status = "disabled";
531 };
532
533 mdio1: mdio@e200413c {
534 compatible = "microchip,lan966x-miim";
535 #address-cells = <1>;
536 #size-cells = <0>;
537 reg = <0xe200413c 0x24>,
538 <0xe2010020 0x4>;
539 clocks = <&sys_clk>;
540 status = "disabled";
541
542 phy0: ethernet-phy@1 {
543 reg = <1>;
544 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
545 status = "disabled";
546 };
547
548 phy1: ethernet-phy@2 {
549 reg = <2>;
550 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
551 status = "disabled";
552 };
553 };
554
555 sgpio: gpio@e2004190 {
556 compatible = "microchip,sparx5-sgpio";
557 reg = <0xe2004190 0x118>;
558 clocks = <&sys_clk>;
559 resets = <&reset 0>;
560 reset-names = "switch";
561 #address-cells = <1>;
562 #size-cells = <0>;
563 status = "disabled";
564
565 sgpio_in: gpio@0 {
566 compatible = "microchip,sparx5-sgpio-bank";
567 reg = <0>;
568 gpio-controller;
569 #gpio-cells = <3>;
570 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
571 interrupt-controller;
572 #interrupt-cells = <3>;
573 };
574
575 sgpio_out: gpio@1 {
576 compatible = "microchip,sparx5-sgpio-bank";
577 reg = <1>;
578 gpio-controller;
579 #gpio-cells = <3>;
580 };
581 };
582
583 hwmon: hwmon@e2010180 {
584 compatible = "microchip,lan9668-hwmon";
585 reg = <0xe2010180 0xc>,
586 <0xe20042a8 0xc>;
587 reg-names = "pvt", "fan";
588 clocks = <&sys_clk>;
589 };
590
591 serdes: serdes@e202c000 {
592 compatible = "microchip,lan966x-serdes";
593 reg = <0xe202c000 0x9c>,
594 <0xe2004010 0x4>;
595 #phy-cells = <2>;
596 status = "disabled";
597 };
598
599 gic: interrupt-controller@e8c11000 {
600 compatible = "arm,gic-400", "arm,cortex-a7-gic";
601 #interrupt-cells = <3>;
602 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
603 interrupt-controller;
604 reg = <0xe8c11000 0x1000>,
605 <0xe8c12000 0x2000>,
606 <0xe8c14000 0x2000>,
607 <0xe8c16000 0x2000>;
608 };
609 };
610 };
Cache object: c0ceccaf3b98264b2d3f183a9573748e
|