zephyr/dts/riscv/virt.dtsi

199 lines
3.8 KiB
Plaintext

/*
* Copyright (c) 2020 Cobham Gaisler AB
*
* SPDX-License-Identifier: Apache-2.0
*/
/*
* This file is based on:
* qemu-system-riscv32 -machine virt,dumpdtb=virt.dtb -smp 8 -m 256
* dtc virt.dtb > virt.dtsi
*/
/dts-v1/;
/ {
#address-cells = < 0x01 >;
#size-cells = < 0x01 >;
compatible = "riscv-virtio";
model = "riscv-virtio,qemu";
flash@20000000 {
bank-width = < 0x04 >;
reg = < 0x20000000 0x2000000 0x22000000 0x2000000 >;
compatible = "cfi-flash";
};
uart0: uart@10000000 {
interrupts = < 0x0a 1 >;
interrupt-parent = < &plic >;
clock-frequency = < 0x384000 >;
reg = < 0x10000000 0x100 >;
compatible = "ns16550";
reg-shift = < 0 >;
label = "UART_0";
};
cpus {
#address-cells = < 0x01 >;
#size-cells = < 0x00 >;
timebase-frequency = < 10000000 >;
cpu@0 {
device_type = "cpu";
reg = < 0x00 >;
status = "okay";
compatible = "riscv";
hlic0: interrupt-controller {
#interrupt-cells = < 0x01 >;
interrupt-controller;
compatible = "riscv,cpu-intc";
};
};
cpu@1 {
device_type = "cpu";
reg = < 0x01 >;
status = "okay";
compatible = "riscv";
hlic1: interrupt-controller {
#interrupt-cells = < 0x01 >;
interrupt-controller;
compatible = "riscv,cpu-intc";
};
};
cpu@2 {
device_type = "cpu";
reg = < 0x02 >;
status = "okay";
compatible = "riscv";
hlic2: interrupt-controller {
#interrupt-cells = < 0x01 >;
interrupt-controller;
compatible = "riscv,cpu-intc";
};
};
cpu@3 {
device_type = "cpu";
reg = < 0x03 >;
status = "okay";
compatible = "riscv";
hlic3: interrupt-controller {
#interrupt-cells = < 0x01 >;
interrupt-controller;
compatible = "riscv,cpu-intc";
};
};
cpu@4 {
device_type = "cpu";
reg = < 0x04 >;
status = "okay";
compatible = "riscv";
hlic4: interrupt-controller {
#interrupt-cells = < 0x01 >;
interrupt-controller;
compatible = "riscv,cpu-intc";
};
};
cpu@5 {
device_type = "cpu";
reg = < 0x05 >;
status = "okay";
compatible = "riscv";
hlic5: interrupt-controller {
#interrupt-cells = < 0x01 >;
interrupt-controller;
compatible = "riscv,cpu-intc";
};
};
cpu@6 {
device_type = "cpu";
reg = < 0x06 >;
status = "okay";
compatible = "riscv";
hlic6: interrupt-controller {
#interrupt-cells = < 0x01 >;
interrupt-controller;
compatible = "riscv,cpu-intc";
};
};
cpu@7 {
device_type = "cpu";
reg = < 0x07 >;
status = "okay";
compatible = "riscv";
hlic7: interrupt-controller {
#interrupt-cells = < 0x01 >;
interrupt-controller;
compatible = "riscv,cpu-intc";
};
};
};
ram0: memory@80000000 {
device_type = "memory";
reg = < 0x80000000 0x10000000 >;
};
soc {
#address-cells = < 0x01 >;
#size-cells = < 0x01 >;
compatible = "simple-bus";
ranges;
plic: interrupt-controller@c000000 {
riscv,max-priority = <7>;
riscv,ndev = < 0x35 >;
reg = <0x0c000000 0x00002000
0x0c002000 0x001fe000
0x0c200000 0x03e00000>;
reg-names = "prio", "irq_en", "reg";
interrupts-extended = <
&hlic0 0x0b &hlic0 0x09
&hlic1 0x0b &hlic1 0x09
&hlic2 0x0b &hlic2 0x09
&hlic3 0x0b &hlic3 0x09
&hlic4 0x0b &hlic4 0x09
&hlic5 0x0b &hlic5 0x09
&hlic6 0x0b &hlic6 0x09
&hlic7 0x0b &hlic7 0x09
>;
interrupt-controller;
compatible = "sifive,plic-1.0.0";
#interrupt-cells = < 0x02 >;
#address-cells = < 0x00 >;
};
clint@2000000 {
interrupts-extended = <
&hlic0 0x03 &hlic0 0x07
&hlic1 0x03 &hlic1 0x07
&hlic2 0x03 &hlic2 0x07
&hlic3 0x03 &hlic3 0x07
&hlic4 0x03 &hlic4 0x07
&hlic5 0x03 &hlic5 0x07
&hlic6 0x03 &hlic6 0x07
&hlic7 0x03 &hlic7 0x07
>;
reg = < 0x2000000 0x10000 >;
compatible = "riscv,clint0";
#interrupt-cells = <1>;
interrupt-controller;
};
};
};