157985788SYash Shah// SPDX-License-Identifier: (GPL-2.0 OR MIT) 257985788SYash Shah/* Copyright (c) 2020 SiFive, Inc */ 357985788SYash Shah 457985788SYash Shah/dts-v1/; 557985788SYash Shah 657985788SYash Shah#include <dt-bindings/clock/sifive-fu740-prci.h> 757985788SYash Shah 857985788SYash Shah/ { 957985788SYash Shah #address-cells = <2>; 1057985788SYash Shah #size-cells = <2>; 1157985788SYash Shah compatible = "sifive,fu740-c000", "sifive,fu740"; 1257985788SYash Shah 1357985788SYash Shah aliases { 1457985788SYash Shah serial0 = &uart0; 1557985788SYash Shah serial1 = &uart1; 1657985788SYash Shah ethernet0 = ð0; 1757985788SYash Shah }; 1857985788SYash Shah 1957985788SYash Shah chosen { 2057985788SYash Shah }; 2157985788SYash Shah 2257985788SYash Shah cpus { 2357985788SYash Shah #address-cells = <1>; 2457985788SYash Shah #size-cells = <0>; 2557985788SYash Shah cpu0: cpu@0 { 2657985788SYash Shah compatible = "sifive,bullet0", "riscv"; 2757985788SYash Shah device_type = "cpu"; 2857985788SYash Shah i-cache-block-size = <64>; 2957985788SYash Shah i-cache-sets = <128>; 3057985788SYash Shah i-cache-size = <16384>; 3157985788SYash Shah next-level-cache = <&ccache>; 3257985788SYash Shah reg = <0x0>; 3357985788SYash Shah riscv,isa = "rv64imac"; 3457985788SYash Shah status = "disabled"; 3557985788SYash Shah cpu0_intc: interrupt-controller { 3657985788SYash Shah #interrupt-cells = <1>; 3757985788SYash Shah compatible = "riscv,cpu-intc"; 3857985788SYash Shah interrupt-controller; 3957985788SYash Shah }; 4057985788SYash Shah }; 4157985788SYash Shah cpu1: cpu@1 { 4257985788SYash Shah compatible = "sifive,bullet0", "riscv"; 4357985788SYash Shah d-cache-block-size = <64>; 4457985788SYash Shah d-cache-sets = <64>; 4557985788SYash Shah d-cache-size = <32768>; 4657985788SYash Shah d-tlb-sets = <1>; 4757985788SYash Shah d-tlb-size = <40>; 4857985788SYash Shah device_type = "cpu"; 4957985788SYash Shah i-cache-block-size = <64>; 5057985788SYash Shah i-cache-sets = <128>; 5157985788SYash Shah i-cache-size = <32768>; 5257985788SYash Shah i-tlb-sets = <1>; 5357985788SYash Shah i-tlb-size = <40>; 5457985788SYash Shah mmu-type = "riscv,sv39"; 5557985788SYash Shah next-level-cache = <&ccache>; 5657985788SYash Shah reg = <0x1>; 5757985788SYash Shah riscv,isa = "rv64imafdc"; 5857985788SYash Shah tlb-split; 5957985788SYash Shah cpu1_intc: interrupt-controller { 6057985788SYash Shah #interrupt-cells = <1>; 6157985788SYash Shah compatible = "riscv,cpu-intc"; 6257985788SYash Shah interrupt-controller; 6357985788SYash Shah }; 6457985788SYash Shah }; 6557985788SYash Shah cpu2: cpu@2 { 6657985788SYash Shah compatible = "sifive,bullet0", "riscv"; 6757985788SYash Shah d-cache-block-size = <64>; 6857985788SYash Shah d-cache-sets = <64>; 6957985788SYash Shah d-cache-size = <32768>; 7057985788SYash Shah d-tlb-sets = <1>; 7157985788SYash Shah d-tlb-size = <40>; 7257985788SYash Shah device_type = "cpu"; 7357985788SYash Shah i-cache-block-size = <64>; 7457985788SYash Shah i-cache-sets = <128>; 7557985788SYash Shah i-cache-size = <32768>; 7657985788SYash Shah i-tlb-sets = <1>; 7757985788SYash Shah i-tlb-size = <40>; 7857985788SYash Shah mmu-type = "riscv,sv39"; 7957985788SYash Shah next-level-cache = <&ccache>; 8057985788SYash Shah reg = <0x2>; 8157985788SYash Shah riscv,isa = "rv64imafdc"; 8257985788SYash Shah tlb-split; 8357985788SYash Shah cpu2_intc: interrupt-controller { 8457985788SYash Shah #interrupt-cells = <1>; 8557985788SYash Shah compatible = "riscv,cpu-intc"; 8657985788SYash Shah interrupt-controller; 8757985788SYash Shah }; 8857985788SYash Shah }; 8957985788SYash Shah cpu3: cpu@3 { 9057985788SYash Shah compatible = "sifive,bullet0", "riscv"; 9157985788SYash Shah d-cache-block-size = <64>; 9257985788SYash Shah d-cache-sets = <64>; 9357985788SYash Shah d-cache-size = <32768>; 9457985788SYash Shah d-tlb-sets = <1>; 9557985788SYash Shah d-tlb-size = <40>; 9657985788SYash Shah device_type = "cpu"; 9757985788SYash Shah i-cache-block-size = <64>; 9857985788SYash Shah i-cache-sets = <128>; 9957985788SYash Shah i-cache-size = <32768>; 10057985788SYash Shah i-tlb-sets = <1>; 10157985788SYash Shah i-tlb-size = <40>; 10257985788SYash Shah mmu-type = "riscv,sv39"; 10357985788SYash Shah next-level-cache = <&ccache>; 10457985788SYash Shah reg = <0x3>; 10557985788SYash Shah riscv,isa = "rv64imafdc"; 10657985788SYash Shah tlb-split; 10757985788SYash Shah cpu3_intc: interrupt-controller { 10857985788SYash Shah #interrupt-cells = <1>; 10957985788SYash Shah compatible = "riscv,cpu-intc"; 11057985788SYash Shah interrupt-controller; 11157985788SYash Shah }; 11257985788SYash Shah }; 11357985788SYash Shah cpu4: cpu@4 { 11457985788SYash Shah compatible = "sifive,bullet0", "riscv"; 11557985788SYash Shah d-cache-block-size = <64>; 11657985788SYash Shah d-cache-sets = <64>; 11757985788SYash Shah d-cache-size = <32768>; 11857985788SYash Shah d-tlb-sets = <1>; 11957985788SYash Shah d-tlb-size = <40>; 12057985788SYash Shah device_type = "cpu"; 12157985788SYash Shah i-cache-block-size = <64>; 12257985788SYash Shah i-cache-sets = <128>; 12357985788SYash Shah i-cache-size = <32768>; 12457985788SYash Shah i-tlb-sets = <1>; 12557985788SYash Shah i-tlb-size = <40>; 12657985788SYash Shah mmu-type = "riscv,sv39"; 12757985788SYash Shah next-level-cache = <&ccache>; 12857985788SYash Shah reg = <0x4>; 12957985788SYash Shah riscv,isa = "rv64imafdc"; 13057985788SYash Shah tlb-split; 13157985788SYash Shah cpu4_intc: interrupt-controller { 13257985788SYash Shah #interrupt-cells = <1>; 13357985788SYash Shah compatible = "riscv,cpu-intc"; 13457985788SYash Shah interrupt-controller; 13557985788SYash Shah }; 13657985788SYash Shah }; 137*bf6cd1c0SConor Dooley 138*bf6cd1c0SConor Dooley cpu-map { 139*bf6cd1c0SConor Dooley cluster0 { 140*bf6cd1c0SConor Dooley core0 { 141*bf6cd1c0SConor Dooley cpu = <&cpu0>; 142*bf6cd1c0SConor Dooley }; 143*bf6cd1c0SConor Dooley 144*bf6cd1c0SConor Dooley core1 { 145*bf6cd1c0SConor Dooley cpu = <&cpu1>; 146*bf6cd1c0SConor Dooley }; 147*bf6cd1c0SConor Dooley 148*bf6cd1c0SConor Dooley core2 { 149*bf6cd1c0SConor Dooley cpu = <&cpu2>; 150*bf6cd1c0SConor Dooley }; 151*bf6cd1c0SConor Dooley 152*bf6cd1c0SConor Dooley core3 { 153*bf6cd1c0SConor Dooley cpu = <&cpu3>; 154*bf6cd1c0SConor Dooley }; 155*bf6cd1c0SConor Dooley 156*bf6cd1c0SConor Dooley core4 { 157*bf6cd1c0SConor Dooley cpu = <&cpu4>; 158*bf6cd1c0SConor Dooley }; 159*bf6cd1c0SConor Dooley }; 160*bf6cd1c0SConor Dooley }; 16157985788SYash Shah }; 16257985788SYash Shah soc { 16357985788SYash Shah #address-cells = <2>; 16457985788SYash Shah #size-cells = <2>; 16557985788SYash Shah compatible = "simple-bus"; 16657985788SYash Shah ranges; 16757985788SYash Shah plic0: interrupt-controller@c000000 { 16857985788SYash Shah #interrupt-cells = <1>; 16957985788SYash Shah #address-cells = <0>; 17057985788SYash Shah compatible = "sifive,fu540-c000-plic", "sifive,plic-1.0.0"; 17157985788SYash Shah reg = <0x0 0xc000000 0x0 0x4000000>; 17257985788SYash Shah riscv,ndev = <69>; 17357985788SYash Shah interrupt-controller; 174cc79be0eSGeert Uytterhoeven interrupts-extended = 175cc79be0eSGeert Uytterhoeven <&cpu0_intc 0xffffffff>, 176cc79be0eSGeert Uytterhoeven <&cpu1_intc 0xffffffff>, <&cpu1_intc 9>, 177cc79be0eSGeert Uytterhoeven <&cpu2_intc 0xffffffff>, <&cpu2_intc 9>, 178cc79be0eSGeert Uytterhoeven <&cpu3_intc 0xffffffff>, <&cpu3_intc 9>, 179cc79be0eSGeert Uytterhoeven <&cpu4_intc 0xffffffff>, <&cpu4_intc 9>; 18057985788SYash Shah }; 18157985788SYash Shah prci: clock-controller@10000000 { 18257985788SYash Shah compatible = "sifive,fu740-c000-prci"; 18357985788SYash Shah reg = <0x0 0x10000000 0x0 0x1000>; 18457985788SYash Shah clocks = <&hfclk>, <&rtcclk>; 18557985788SYash Shah #clock-cells = <1>; 186ae80d514SGreentime Hu #reset-cells = <1>; 18757985788SYash Shah }; 18857985788SYash Shah uart0: serial@10010000 { 18957985788SYash Shah compatible = "sifive,fu740-c000-uart", "sifive,uart0"; 19057985788SYash Shah reg = <0x0 0x10010000 0x0 0x1000>; 19157985788SYash Shah interrupt-parent = <&plic0>; 19257985788SYash Shah interrupts = <39>; 193990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_PCLK>; 19457985788SYash Shah status = "disabled"; 19557985788SYash Shah }; 19657985788SYash Shah uart1: serial@10011000 { 19757985788SYash Shah compatible = "sifive,fu740-c000-uart", "sifive,uart0"; 19857985788SYash Shah reg = <0x0 0x10011000 0x0 0x1000>; 19957985788SYash Shah interrupt-parent = <&plic0>; 20057985788SYash Shah interrupts = <40>; 201990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_PCLK>; 20257985788SYash Shah status = "disabled"; 20357985788SYash Shah }; 20457985788SYash Shah i2c0: i2c@10030000 { 20557985788SYash Shah compatible = "sifive,fu740-c000-i2c", "sifive,i2c0"; 20657985788SYash Shah reg = <0x0 0x10030000 0x0 0x1000>; 20757985788SYash Shah interrupt-parent = <&plic0>; 20857985788SYash Shah interrupts = <52>; 209990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_PCLK>; 21057985788SYash Shah reg-shift = <2>; 21157985788SYash Shah reg-io-width = <1>; 21257985788SYash Shah #address-cells = <1>; 21357985788SYash Shah #size-cells = <0>; 21457985788SYash Shah status = "disabled"; 21557985788SYash Shah }; 21657985788SYash Shah i2c1: i2c@10031000 { 21757985788SYash Shah compatible = "sifive,fu740-c000-i2c", "sifive,i2c0"; 21857985788SYash Shah reg = <0x0 0x10031000 0x0 0x1000>; 21957985788SYash Shah interrupt-parent = <&plic0>; 22057985788SYash Shah interrupts = <53>; 221990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_PCLK>; 22257985788SYash Shah reg-shift = <2>; 22357985788SYash Shah reg-io-width = <1>; 22457985788SYash Shah #address-cells = <1>; 22557985788SYash Shah #size-cells = <0>; 22657985788SYash Shah status = "disabled"; 22757985788SYash Shah }; 22857985788SYash Shah qspi0: spi@10040000 { 22957985788SYash Shah compatible = "sifive,fu740-c000-spi", "sifive,spi0"; 23057985788SYash Shah reg = <0x0 0x10040000 0x0 0x1000>, 23157985788SYash Shah <0x0 0x20000000 0x0 0x10000000>; 23257985788SYash Shah interrupt-parent = <&plic0>; 23357985788SYash Shah interrupts = <41>; 234990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_PCLK>; 23557985788SYash Shah #address-cells = <1>; 23657985788SYash Shah #size-cells = <0>; 23757985788SYash Shah status = "disabled"; 23857985788SYash Shah }; 23957985788SYash Shah qspi1: spi@10041000 { 24057985788SYash Shah compatible = "sifive,fu740-c000-spi", "sifive,spi0"; 24157985788SYash Shah reg = <0x0 0x10041000 0x0 0x1000>, 24257985788SYash Shah <0x0 0x30000000 0x0 0x10000000>; 24357985788SYash Shah interrupt-parent = <&plic0>; 24457985788SYash Shah interrupts = <42>; 245990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_PCLK>; 24657985788SYash Shah #address-cells = <1>; 24757985788SYash Shah #size-cells = <0>; 24857985788SYash Shah status = "disabled"; 24957985788SYash Shah }; 25057985788SYash Shah spi0: spi@10050000 { 25157985788SYash Shah compatible = "sifive,fu740-c000-spi", "sifive,spi0"; 25257985788SYash Shah reg = <0x0 0x10050000 0x0 0x1000>; 25357985788SYash Shah interrupt-parent = <&plic0>; 25457985788SYash Shah interrupts = <43>; 255990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_PCLK>; 25657985788SYash Shah #address-cells = <1>; 25757985788SYash Shah #size-cells = <0>; 25857985788SYash Shah status = "disabled"; 25957985788SYash Shah }; 26057985788SYash Shah eth0: ethernet@10090000 { 26157985788SYash Shah compatible = "sifive,fu540-c000-gem"; 26257985788SYash Shah interrupt-parent = <&plic0>; 26357985788SYash Shah interrupts = <55>; 26457985788SYash Shah reg = <0x0 0x10090000 0x0 0x2000>, 26557985788SYash Shah <0x0 0x100a0000 0x0 0x1000>; 26657985788SYash Shah local-mac-address = [00 00 00 00 00 00]; 26757985788SYash Shah clock-names = "pclk", "hclk"; 268990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_GEMGXLPLL>, 269990d627fSZong Li <&prci FU740_PRCI_CLK_GEMGXLPLL>; 27057985788SYash Shah #address-cells = <1>; 27157985788SYash Shah #size-cells = <0>; 27257985788SYash Shah status = "disabled"; 27357985788SYash Shah }; 27457985788SYash Shah pwm0: pwm@10020000 { 27557985788SYash Shah compatible = "sifive,fu740-c000-pwm", "sifive,pwm0"; 27657985788SYash Shah reg = <0x0 0x10020000 0x0 0x1000>; 27757985788SYash Shah interrupt-parent = <&plic0>; 27857985788SYash Shah interrupts = <44>, <45>, <46>, <47>; 279990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_PCLK>; 28057985788SYash Shah #pwm-cells = <3>; 28157985788SYash Shah status = "disabled"; 28257985788SYash Shah }; 28357985788SYash Shah pwm1: pwm@10021000 { 28457985788SYash Shah compatible = "sifive,fu740-c000-pwm", "sifive,pwm0"; 28557985788SYash Shah reg = <0x0 0x10021000 0x0 0x1000>; 28657985788SYash Shah interrupt-parent = <&plic0>; 28757985788SYash Shah interrupts = <48>, <49>, <50>, <51>; 288990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_PCLK>; 28957985788SYash Shah #pwm-cells = <3>; 29057985788SYash Shah status = "disabled"; 29157985788SYash Shah }; 29257985788SYash Shah ccache: cache-controller@2010000 { 29357985788SYash Shah compatible = "sifive,fu740-c000-ccache", "cache"; 29457985788SYash Shah cache-block-size = <64>; 29557985788SYash Shah cache-level = <2>; 29657985788SYash Shah cache-sets = <2048>; 29757985788SYash Shah cache-size = <2097152>; 29857985788SYash Shah cache-unified; 29957985788SYash Shah interrupt-parent = <&plic0>; 300cc79be0eSGeert Uytterhoeven interrupts = <19>, <21>, <22>, <20>; 30157985788SYash Shah reg = <0x0 0x2010000 0x0 0x1000>; 30257985788SYash Shah }; 30357985788SYash Shah gpio: gpio@10060000 { 30457985788SYash Shah compatible = "sifive,fu740-c000-gpio", "sifive,gpio0"; 30557985788SYash Shah interrupt-parent = <&plic0>; 30657985788SYash Shah interrupts = <23>, <24>, <25>, <26>, <27>, <28>, <29>, 30757985788SYash Shah <30>, <31>, <32>, <33>, <34>, <35>, <36>, 30857985788SYash Shah <37>, <38>; 30957985788SYash Shah reg = <0x0 0x10060000 0x0 0x1000>; 31057985788SYash Shah gpio-controller; 31157985788SYash Shah #gpio-cells = <2>; 31257985788SYash Shah interrupt-controller; 31357985788SYash Shah #interrupt-cells = <2>; 314990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_PCLK>; 31557985788SYash Shah status = "disabled"; 31657985788SYash Shah }; 317ae80d514SGreentime Hu pcie@e00000000 { 318ae80d514SGreentime Hu compatible = "sifive,fu740-pcie"; 319ae80d514SGreentime Hu #address-cells = <3>; 320ae80d514SGreentime Hu #size-cells = <2>; 321ae80d514SGreentime Hu #interrupt-cells = <1>; 322ae80d514SGreentime Hu reg = <0xe 0x00000000 0x0 0x80000000>, 323ae80d514SGreentime Hu <0xd 0xf0000000 0x0 0x10000000>, 324ae80d514SGreentime Hu <0x0 0x100d0000 0x0 0x1000>; 325ae80d514SGreentime Hu reg-names = "dbi", "config", "mgmt"; 326ae80d514SGreentime Hu device_type = "pci"; 327ae80d514SGreentime Hu dma-coherent; 328ae80d514SGreentime Hu bus-range = <0x0 0xff>; 329ae80d514SGreentime Hu ranges = <0x81000000 0x0 0x60080000 0x0 0x60080000 0x0 0x10000>, /* I/O */ 330ae80d514SGreentime Hu <0x82000000 0x0 0x60090000 0x0 0x60090000 0x0 0xff70000>, /* mem */ 331ae80d514SGreentime Hu <0x82000000 0x0 0x70000000 0x0 0x70000000 0x0 0x1000000>, /* mem */ 332ae80d514SGreentime Hu <0xc3000000 0x20 0x00000000 0x20 0x00000000 0x20 0x00000000>; /* mem prefetchable */ 333ae80d514SGreentime Hu num-lanes = <0x8>; 334ae80d514SGreentime Hu interrupts = <56>, <57>, <58>, <59>, <60>, <61>, <62>, <63>, <64>; 335ae80d514SGreentime Hu interrupt-names = "msi", "inta", "intb", "intc", "intd"; 336ae80d514SGreentime Hu interrupt-parent = <&plic0>; 337ae80d514SGreentime Hu interrupt-map-mask = <0x0 0x0 0x0 0x7>; 338ae80d514SGreentime Hu interrupt-map = <0x0 0x0 0x0 0x1 &plic0 57>, 339ae80d514SGreentime Hu <0x0 0x0 0x0 0x2 &plic0 58>, 340ae80d514SGreentime Hu <0x0 0x0 0x0 0x3 &plic0 59>, 341ae80d514SGreentime Hu <0x0 0x0 0x0 0x4 &plic0 60>; 342ae80d514SGreentime Hu clock-names = "pcie_aux"; 343990d627fSZong Li clocks = <&prci FU740_PRCI_CLK_PCIE_AUX>; 344ae80d514SGreentime Hu pwren-gpios = <&gpio 5 0>; 345ae80d514SGreentime Hu reset-gpios = <&gpio 8 0>; 346ae80d514SGreentime Hu resets = <&prci 4>; 347ae80d514SGreentime Hu status = "okay"; 348ae80d514SGreentime Hu }; 34957985788SYash Shah }; 35057985788SYash Shah}; 351