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}; 611