172296bdeSPaul Walmsley// SPDX-License-Identifier: (GPL-2.0 OR MIT) 272296bdeSPaul Walmsley/* Copyright (c) 2018-2019 SiFive, Inc */ 372296bdeSPaul Walmsley 472296bdeSPaul Walmsley/dts-v1/; 572296bdeSPaul Walmsley 672296bdeSPaul Walmsley#include <dt-bindings/clock/sifive-fu540-prci.h> 772296bdeSPaul Walmsley 872296bdeSPaul Walmsley/ { 972296bdeSPaul Walmsley #address-cells = <2>; 1072296bdeSPaul Walmsley #size-cells = <2>; 1172296bdeSPaul Walmsley compatible = "sifive,fu540-c000", "sifive,fu540"; 1272296bdeSPaul Walmsley 1372296bdeSPaul Walmsley aliases { 1472296bdeSPaul Walmsley serial0 = &uart0; 1572296bdeSPaul Walmsley serial1 = &uart1; 163bcca2a5SBin Meng ethernet0 = ð0; 1772296bdeSPaul Walmsley }; 1872296bdeSPaul Walmsley 1972296bdeSPaul Walmsley chosen { 2072296bdeSPaul Walmsley }; 2172296bdeSPaul Walmsley 2272296bdeSPaul Walmsley cpus { 2372296bdeSPaul Walmsley #address-cells = <1>; 2472296bdeSPaul Walmsley #size-cells = <0>; 2572296bdeSPaul Walmsley cpu0: cpu@0 { 2672296bdeSPaul Walmsley compatible = "sifive,e51", "sifive,rocket0", "riscv"; 2772296bdeSPaul Walmsley device_type = "cpu"; 2872296bdeSPaul Walmsley i-cache-block-size = <64>; 2972296bdeSPaul Walmsley i-cache-sets = <128>; 3072296bdeSPaul Walmsley i-cache-size = <16384>; 3172296bdeSPaul Walmsley reg = <0>; 3272296bdeSPaul Walmsley riscv,isa = "rv64imac"; 33*a54f4272SConor Dooley riscv,isa-base = "rv64i"; 34*a54f4272SConor Dooley riscv,isa-extensions = "i", "m", "a", "c", "zicntr", "zicsr", "zifencei", 35*a54f4272SConor Dooley "zihpm"; 3672296bdeSPaul Walmsley status = "disabled"; 3772296bdeSPaul Walmsley cpu0_intc: interrupt-controller { 3872296bdeSPaul Walmsley #interrupt-cells = <1>; 3972296bdeSPaul Walmsley compatible = "riscv,cpu-intc"; 4072296bdeSPaul Walmsley interrupt-controller; 4172296bdeSPaul Walmsley }; 4272296bdeSPaul Walmsley }; 4372296bdeSPaul Walmsley cpu1: cpu@1 { 4472296bdeSPaul Walmsley compatible = "sifive,u54-mc", "sifive,rocket0", "riscv"; 4572296bdeSPaul Walmsley d-cache-block-size = <64>; 4672296bdeSPaul Walmsley d-cache-sets = <64>; 4772296bdeSPaul Walmsley d-cache-size = <32768>; 4872296bdeSPaul Walmsley d-tlb-sets = <1>; 4972296bdeSPaul Walmsley d-tlb-size = <32>; 5072296bdeSPaul Walmsley device_type = "cpu"; 5172296bdeSPaul Walmsley i-cache-block-size = <64>; 5272296bdeSPaul Walmsley i-cache-sets = <64>; 5372296bdeSPaul Walmsley i-cache-size = <32768>; 5472296bdeSPaul Walmsley i-tlb-sets = <1>; 5572296bdeSPaul Walmsley i-tlb-size = <32>; 5672296bdeSPaul Walmsley mmu-type = "riscv,sv39"; 5772296bdeSPaul Walmsley reg = <1>; 5872296bdeSPaul Walmsley riscv,isa = "rv64imafdc"; 59*a54f4272SConor Dooley riscv,isa-base = "rv64i"; 60*a54f4272SConor Dooley riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr", 61*a54f4272SConor Dooley "zifencei", "zihpm"; 6272296bdeSPaul Walmsley tlb-split; 63cfda8617SYash Shah next-level-cache = <&l2cache>; 6472296bdeSPaul Walmsley cpu1_intc: interrupt-controller { 6572296bdeSPaul Walmsley #interrupt-cells = <1>; 6672296bdeSPaul Walmsley compatible = "riscv,cpu-intc"; 6772296bdeSPaul Walmsley interrupt-controller; 6872296bdeSPaul Walmsley }; 6972296bdeSPaul Walmsley }; 7072296bdeSPaul Walmsley cpu2: cpu@2 { 7172296bdeSPaul Walmsley compatible = "sifive,u54-mc", "sifive,rocket0", "riscv"; 7272296bdeSPaul Walmsley d-cache-block-size = <64>; 7372296bdeSPaul Walmsley d-cache-sets = <64>; 7472296bdeSPaul Walmsley d-cache-size = <32768>; 7572296bdeSPaul Walmsley d-tlb-sets = <1>; 7672296bdeSPaul Walmsley d-tlb-size = <32>; 7772296bdeSPaul Walmsley device_type = "cpu"; 7872296bdeSPaul Walmsley i-cache-block-size = <64>; 7972296bdeSPaul Walmsley i-cache-sets = <64>; 8072296bdeSPaul Walmsley i-cache-size = <32768>; 8172296bdeSPaul Walmsley i-tlb-sets = <1>; 8272296bdeSPaul Walmsley i-tlb-size = <32>; 8372296bdeSPaul Walmsley mmu-type = "riscv,sv39"; 8472296bdeSPaul Walmsley reg = <2>; 8572296bdeSPaul Walmsley riscv,isa = "rv64imafdc"; 86*a54f4272SConor Dooley riscv,isa-base = "rv64i"; 87*a54f4272SConor Dooley riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr", 88*a54f4272SConor Dooley "zifencei", "zihpm"; 8972296bdeSPaul Walmsley tlb-split; 90cfda8617SYash Shah next-level-cache = <&l2cache>; 9172296bdeSPaul Walmsley cpu2_intc: interrupt-controller { 9272296bdeSPaul Walmsley #interrupt-cells = <1>; 9372296bdeSPaul Walmsley compatible = "riscv,cpu-intc"; 9472296bdeSPaul Walmsley interrupt-controller; 9572296bdeSPaul Walmsley }; 9672296bdeSPaul Walmsley }; 9772296bdeSPaul Walmsley cpu3: cpu@3 { 9872296bdeSPaul Walmsley compatible = "sifive,u54-mc", "sifive,rocket0", "riscv"; 9972296bdeSPaul Walmsley d-cache-block-size = <64>; 10072296bdeSPaul Walmsley d-cache-sets = <64>; 10172296bdeSPaul Walmsley d-cache-size = <32768>; 10272296bdeSPaul Walmsley d-tlb-sets = <1>; 10372296bdeSPaul Walmsley d-tlb-size = <32>; 10472296bdeSPaul Walmsley device_type = "cpu"; 10572296bdeSPaul Walmsley i-cache-block-size = <64>; 10672296bdeSPaul Walmsley i-cache-sets = <64>; 10772296bdeSPaul Walmsley i-cache-size = <32768>; 10872296bdeSPaul Walmsley i-tlb-sets = <1>; 10972296bdeSPaul Walmsley i-tlb-size = <32>; 11072296bdeSPaul Walmsley mmu-type = "riscv,sv39"; 11172296bdeSPaul Walmsley reg = <3>; 11272296bdeSPaul Walmsley riscv,isa = "rv64imafdc"; 113*a54f4272SConor Dooley riscv,isa-base = "rv64i"; 114*a54f4272SConor Dooley riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr", 115*a54f4272SConor Dooley "zifencei", "zihpm"; 11672296bdeSPaul Walmsley tlb-split; 117cfda8617SYash Shah next-level-cache = <&l2cache>; 11872296bdeSPaul Walmsley cpu3_intc: interrupt-controller { 11972296bdeSPaul Walmsley #interrupt-cells = <1>; 12072296bdeSPaul Walmsley compatible = "riscv,cpu-intc"; 12172296bdeSPaul Walmsley interrupt-controller; 12272296bdeSPaul Walmsley }; 12372296bdeSPaul Walmsley }; 12472296bdeSPaul Walmsley cpu4: cpu@4 { 12572296bdeSPaul Walmsley compatible = "sifive,u54-mc", "sifive,rocket0", "riscv"; 12672296bdeSPaul Walmsley d-cache-block-size = <64>; 12772296bdeSPaul Walmsley d-cache-sets = <64>; 12872296bdeSPaul Walmsley d-cache-size = <32768>; 12972296bdeSPaul Walmsley d-tlb-sets = <1>; 13072296bdeSPaul Walmsley d-tlb-size = <32>; 13172296bdeSPaul Walmsley device_type = "cpu"; 13272296bdeSPaul Walmsley i-cache-block-size = <64>; 13372296bdeSPaul Walmsley i-cache-sets = <64>; 13472296bdeSPaul Walmsley i-cache-size = <32768>; 13572296bdeSPaul Walmsley i-tlb-sets = <1>; 13672296bdeSPaul Walmsley i-tlb-size = <32>; 13772296bdeSPaul Walmsley mmu-type = "riscv,sv39"; 13872296bdeSPaul Walmsley reg = <4>; 13972296bdeSPaul Walmsley riscv,isa = "rv64imafdc"; 140*a54f4272SConor Dooley riscv,isa-base = "rv64i"; 141*a54f4272SConor Dooley riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr", 142*a54f4272SConor Dooley "zifencei", "zihpm"; 14372296bdeSPaul Walmsley tlb-split; 144cfda8617SYash Shah next-level-cache = <&l2cache>; 14572296bdeSPaul Walmsley cpu4_intc: interrupt-controller { 14672296bdeSPaul Walmsley #interrupt-cells = <1>; 14772296bdeSPaul Walmsley compatible = "riscv,cpu-intc"; 14872296bdeSPaul Walmsley interrupt-controller; 14972296bdeSPaul Walmsley }; 15072296bdeSPaul Walmsley }; 151af8f260aSConor Dooley 152af8f260aSConor Dooley cpu-map { 153af8f260aSConor Dooley cluster0 { 154af8f260aSConor Dooley core0 { 155af8f260aSConor Dooley cpu = <&cpu0>; 156af8f260aSConor Dooley }; 157af8f260aSConor Dooley 158af8f260aSConor Dooley core1 { 159af8f260aSConor Dooley cpu = <&cpu1>; 160af8f260aSConor Dooley }; 161af8f260aSConor Dooley 162af8f260aSConor Dooley core2 { 163af8f260aSConor Dooley cpu = <&cpu2>; 164af8f260aSConor Dooley }; 165af8f260aSConor Dooley 166af8f260aSConor Dooley core3 { 167af8f260aSConor Dooley cpu = <&cpu3>; 168af8f260aSConor Dooley }; 169af8f260aSConor Dooley 170af8f260aSConor Dooley core4 { 171af8f260aSConor Dooley cpu = <&cpu4>; 172af8f260aSConor Dooley }; 173af8f260aSConor Dooley }; 174af8f260aSConor Dooley }; 17572296bdeSPaul Walmsley }; 17672296bdeSPaul Walmsley soc { 17772296bdeSPaul Walmsley #address-cells = <2>; 17872296bdeSPaul Walmsley #size-cells = <2>; 1798fc6e62aSGeert Uytterhoeven compatible = "simple-bus"; 18072296bdeSPaul Walmsley ranges; 18172296bdeSPaul Walmsley plic0: interrupt-controller@c000000 { 1829962a066SKrzysztof Kozlowski compatible = "sifive,fu540-c000-plic", "sifive,plic-1.0.0"; 18372296bdeSPaul Walmsley reg = <0x0 0xc000000 0x0 0x4000000>; 184893eae9aSGeert Uytterhoeven #address-cells = <0>; 185893eae9aSGeert Uytterhoeven #interrupt-cells = <1>; 18672296bdeSPaul Walmsley interrupt-controller; 187cc79be0eSGeert Uytterhoeven interrupts-extended = 188cc79be0eSGeert Uytterhoeven <&cpu0_intc 0xffffffff>, 189cc79be0eSGeert Uytterhoeven <&cpu1_intc 0xffffffff>, <&cpu1_intc 9>, 190cc79be0eSGeert Uytterhoeven <&cpu2_intc 0xffffffff>, <&cpu2_intc 9>, 191cc79be0eSGeert Uytterhoeven <&cpu3_intc 0xffffffff>, <&cpu3_intc 9>, 192cc79be0eSGeert Uytterhoeven <&cpu4_intc 0xffffffff>, <&cpu4_intc 9>; 193893eae9aSGeert Uytterhoeven riscv,ndev = <53>; 19472296bdeSPaul Walmsley }; 19572296bdeSPaul Walmsley prci: clock-controller@10000000 { 19672296bdeSPaul Walmsley compatible = "sifive,fu540-c000-prci"; 19772296bdeSPaul Walmsley reg = <0x0 0x10000000 0x0 0x1000>; 19872296bdeSPaul Walmsley clocks = <&hfclk>, <&rtcclk>; 19972296bdeSPaul Walmsley #clock-cells = <1>; 20072296bdeSPaul Walmsley }; 20172296bdeSPaul Walmsley uart0: serial@10010000 { 20272296bdeSPaul Walmsley compatible = "sifive,fu540-c000-uart", "sifive,uart0"; 20372296bdeSPaul Walmsley reg = <0x0 0x10010000 0x0 0x1000>; 20472296bdeSPaul Walmsley interrupt-parent = <&plic0>; 20572296bdeSPaul Walmsley interrupts = <4>; 206990d627fSZong Li clocks = <&prci FU540_PRCI_CLK_TLCLK>; 20745b03df2SYash Shah status = "disabled"; 20872296bdeSPaul Walmsley }; 209d26eee72SZong Li dma: dma-controller@3000000 { 2106f6fa9ceSZong Li compatible = "sifive,fu540-c000-pdma", "sifive,pdma0"; 211c5ab54e9SGreen Wan reg = <0x0 0x3000000 0x0 0x8000>; 212c5ab54e9SGreen Wan interrupt-parent = <&plic0>; 213cc79be0eSGeert Uytterhoeven interrupts = <23>, <24>, <25>, <26>, <27>, <28>, <29>, 214cc79be0eSGeert Uytterhoeven <30>; 2156f6fa9ceSZong Li dma-channels = <4>; 216c5ab54e9SGreen Wan #dma-cells = <1>; 217c5ab54e9SGreen Wan }; 21872296bdeSPaul Walmsley uart1: serial@10011000 { 21972296bdeSPaul Walmsley compatible = "sifive,fu540-c000-uart", "sifive,uart0"; 22072296bdeSPaul Walmsley reg = <0x0 0x10011000 0x0 0x1000>; 22172296bdeSPaul Walmsley interrupt-parent = <&plic0>; 22272296bdeSPaul Walmsley interrupts = <5>; 223990d627fSZong Li clocks = <&prci FU540_PRCI_CLK_TLCLK>; 22445b03df2SYash Shah status = "disabled"; 22572296bdeSPaul Walmsley }; 22672296bdeSPaul Walmsley i2c0: i2c@10030000 { 22772296bdeSPaul Walmsley compatible = "sifive,fu540-c000-i2c", "sifive,i2c0"; 22872296bdeSPaul Walmsley reg = <0x0 0x10030000 0x0 0x1000>; 22972296bdeSPaul Walmsley interrupt-parent = <&plic0>; 23072296bdeSPaul Walmsley interrupts = <50>; 231990d627fSZong Li clocks = <&prci FU540_PRCI_CLK_TLCLK>; 23272296bdeSPaul Walmsley reg-shift = <2>; 23372296bdeSPaul Walmsley reg-io-width = <1>; 23472296bdeSPaul Walmsley #address-cells = <1>; 23572296bdeSPaul Walmsley #size-cells = <0>; 23645b03df2SYash Shah status = "disabled"; 23772296bdeSPaul Walmsley }; 23872296bdeSPaul Walmsley qspi0: spi@10040000 { 23972296bdeSPaul Walmsley compatible = "sifive,fu540-c000-spi", "sifive,spi0"; 2408e9b1c95SGeert Uytterhoeven reg = <0x0 0x10040000 0x0 0x1000>, 2418e9b1c95SGeert Uytterhoeven <0x0 0x20000000 0x0 0x10000000>; 24272296bdeSPaul Walmsley interrupt-parent = <&plic0>; 24372296bdeSPaul Walmsley interrupts = <51>; 244990d627fSZong Li clocks = <&prci FU540_PRCI_CLK_TLCLK>; 24572296bdeSPaul Walmsley #address-cells = <1>; 24672296bdeSPaul Walmsley #size-cells = <0>; 24745b03df2SYash Shah status = "disabled"; 24872296bdeSPaul Walmsley }; 24972296bdeSPaul Walmsley qspi1: spi@10041000 { 25072296bdeSPaul Walmsley compatible = "sifive,fu540-c000-spi", "sifive,spi0"; 2518e9b1c95SGeert Uytterhoeven reg = <0x0 0x10041000 0x0 0x1000>, 2528e9b1c95SGeert Uytterhoeven <0x0 0x30000000 0x0 0x10000000>; 25372296bdeSPaul Walmsley interrupt-parent = <&plic0>; 25472296bdeSPaul Walmsley interrupts = <52>; 255990d627fSZong Li clocks = <&prci FU540_PRCI_CLK_TLCLK>; 25672296bdeSPaul Walmsley #address-cells = <1>; 25772296bdeSPaul Walmsley #size-cells = <0>; 25845b03df2SYash Shah status = "disabled"; 25972296bdeSPaul Walmsley }; 26072296bdeSPaul Walmsley qspi2: spi@10050000 { 26172296bdeSPaul Walmsley compatible = "sifive,fu540-c000-spi", "sifive,spi0"; 26272296bdeSPaul Walmsley reg = <0x0 0x10050000 0x0 0x1000>; 26372296bdeSPaul Walmsley interrupt-parent = <&plic0>; 26472296bdeSPaul Walmsley interrupts = <6>; 265990d627fSZong Li clocks = <&prci FU540_PRCI_CLK_TLCLK>; 26672296bdeSPaul Walmsley #address-cells = <1>; 26772296bdeSPaul Walmsley #size-cells = <0>; 26845b03df2SYash Shah status = "disabled"; 26972296bdeSPaul Walmsley }; 27026091eefSYash Shah eth0: ethernet@10090000 { 27126091eefSYash Shah compatible = "sifive,fu540-c000-gem"; 27226091eefSYash Shah interrupt-parent = <&plic0>; 27326091eefSYash Shah interrupts = <53>; 2748e9b1c95SGeert Uytterhoeven reg = <0x0 0x10090000 0x0 0x2000>, 2758e9b1c95SGeert Uytterhoeven <0x0 0x100a0000 0x0 0x1000>; 27626091eefSYash Shah local-mac-address = [00 00 00 00 00 00]; 27726091eefSYash Shah clock-names = "pclk", "hclk"; 278990d627fSZong Li clocks = <&prci FU540_PRCI_CLK_GEMGXLPLL>, 279990d627fSZong Li <&prci FU540_PRCI_CLK_GEMGXLPLL>; 28026091eefSYash Shah #address-cells = <1>; 28126091eefSYash Shah #size-cells = <0>; 28226091eefSYash Shah status = "disabled"; 28326091eefSYash Shah }; 284b45e0c30SYash Shah pwm0: pwm@10020000 { 285b45e0c30SYash Shah compatible = "sifive,fu540-c000-pwm", "sifive,pwm0"; 286b45e0c30SYash Shah reg = <0x0 0x10020000 0x0 0x1000>; 287b45e0c30SYash Shah interrupt-parent = <&plic0>; 288cc79be0eSGeert Uytterhoeven interrupts = <42>, <43>, <44>, <45>; 289990d627fSZong Li clocks = <&prci FU540_PRCI_CLK_TLCLK>; 290b45e0c30SYash Shah #pwm-cells = <3>; 291b45e0c30SYash Shah status = "disabled"; 292b45e0c30SYash Shah }; 293b45e0c30SYash Shah pwm1: pwm@10021000 { 294b45e0c30SYash Shah compatible = "sifive,fu540-c000-pwm", "sifive,pwm0"; 295b45e0c30SYash Shah reg = <0x0 0x10021000 0x0 0x1000>; 296b45e0c30SYash Shah interrupt-parent = <&plic0>; 297cc79be0eSGeert Uytterhoeven interrupts = <46>, <47>, <48>, <49>; 298990d627fSZong Li clocks = <&prci FU540_PRCI_CLK_TLCLK>; 299b45e0c30SYash Shah #pwm-cells = <3>; 300b45e0c30SYash Shah status = "disabled"; 301b45e0c30SYash Shah }; 302cfda8617SYash Shah l2cache: cache-controller@2010000 { 303cfda8617SYash Shah compatible = "sifive,fu540-c000-ccache", "cache"; 304cfda8617SYash Shah cache-block-size = <64>; 305cfda8617SYash Shah cache-level = <2>; 306cfda8617SYash Shah cache-sets = <1024>; 307cfda8617SYash Shah cache-size = <2097152>; 308cfda8617SYash Shah cache-unified; 309cfda8617SYash Shah interrupt-parent = <&plic0>; 310cc79be0eSGeert Uytterhoeven interrupts = <1>, <2>, <3>; 311cfda8617SYash Shah reg = <0x0 0x2010000 0x0 0x1000>; 312cfda8617SYash Shah }; 31361ffb9d2SYash Shah gpio: gpio@10060000 { 31461ffb9d2SYash Shah compatible = "sifive,fu540-c000-gpio", "sifive,gpio0"; 31561ffb9d2SYash Shah interrupt-parent = <&plic0>; 31661ffb9d2SYash Shah interrupts = <7>, <8>, <9>, <10>, <11>, <12>, <13>, 31761ffb9d2SYash Shah <14>, <15>, <16>, <17>, <18>, <19>, <20>, 31861ffb9d2SYash Shah <21>, <22>; 31961ffb9d2SYash Shah reg = <0x0 0x10060000 0x0 0x1000>; 32061ffb9d2SYash Shah gpio-controller; 32161ffb9d2SYash Shah #gpio-cells = <2>; 32261ffb9d2SYash Shah interrupt-controller; 32361ffb9d2SYash Shah #interrupt-cells = <2>; 324990d627fSZong Li clocks = <&prci FU540_PRCI_CLK_TLCLK>; 32561ffb9d2SYash Shah status = "disabled"; 32661ffb9d2SYash Shah }; 32772296bdeSPaul Walmsley }; 32872296bdeSPaul Walmsley}; 329