2018年12月3日星期一

Dump QEMU virt machine dts

 Commands:

qemu-system-aarch64 -machine virt,dumpdtb=/tmp/virt.dtb
dtc -I dtb -O dts /tmp/virt.dtb >/tmp/virt.dts 

Example:

/dts-v1/;

/ {
interrupt-parent = <0x8001>;
#size-cells = <0x2>;
#address-cells = <0x2>;
compatible = "linux,dummy-virt";

platform@c000000 {
interrupt-parent = <0x8001>;
ranges = <0x0 0x0 0xc000000 0x2000000>;
#address-cells = <0x1>;
#size-cells = <0x1>;
compatible = "qemu,platform", "simple-bus";
};


fw-cfg@9020000 {
dma-coherent;
reg = <0x0 0x9020000 0x0 0x18>;
compatible = "qemu,fw-cfg-mmio";
};

virtio_mmio@a000000 {
dma-coherent;
interrupts = <0x0 0x10 0x1>;
reg = <0x0 0xa000000 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a000200 {
dma-coherent;
interrupts = <0x0 0x11 0x1>;
reg = <0x0 0xa000200 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a000400 {
dma-coherent;
interrupts = <0x0 0x12 0x1>;
reg = <0x0 0xa000400 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a000600 {
dma-coherent;
interrupts = <0x0 0x13 0x1>;
reg = <0x0 0xa000600 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a000800 {
dma-coherent;
interrupts = <0x0 0x14 0x1>;
reg = <0x0 0xa000800 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a000a00 {
dma-coherent;
interrupts = <0x0 0x15 0x1>;
reg = <0x0 0xa000a00 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a000c00 {
dma-coherent;
interrupts = <0x0 0x16 0x1>;
reg = <0x0 0xa000c00 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a000e00 {
dma-coherent;
interrupts = <0x0 0x17 0x1>;
reg = <0x0 0xa000e00 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a001000 {
dma-coherent;
interrupts = <0x0 0x18 0x1>;
reg = <0x0 0xa001000 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a001200 {
dma-coherent;
interrupts = <0x0 0x19 0x1>;
reg = <0x0 0xa001200 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a001400 {
dma-coherent;
interrupts = <0x0 0x1a 0x1>;
reg = <0x0 0xa001400 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a001600 {
dma-coherent;
interrupts = <0x0 0x1b 0x1>;
reg = <0x0 0xa001600 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a001800 {
dma-coherent;
interrupts = <0x0 0x1c 0x1>;
reg = <0x0 0xa001800 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a001a00 {
dma-coherent;
interrupts = <0x0 0x1d 0x1>;
reg = <0x0 0xa001a00 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a001c00 {
dma-coherent;
interrupts = <0x0 0x1e 0x1>;
reg = <0x0 0xa001c00 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a001e00 {
dma-coherent;
interrupts = <0x0 0x1f 0x1>;
reg = <0x0 0xa001e00 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a002000 {
dma-coherent;
interrupts = <0x0 0x20 0x1>;
reg = <0x0 0xa002000 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a002200 {
dma-coherent;
interrupts = <0x0 0x21 0x1>;
reg = <0x0 0xa002200 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a002400 {
dma-coherent;
interrupts = <0x0 0x22 0x1>;
reg = <0x0 0xa002400 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a002600 {
dma-coherent;
interrupts = <0x0 0x23 0x1>;
reg = <0x0 0xa002600 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a002800 {
dma-coherent;
interrupts = <0x0 0x24 0x1>;
reg = <0x0 0xa002800 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a002a00 {
dma-coherent;
interrupts = <0x0 0x25 0x1>;
reg = <0x0 0xa002a00 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a002c00 {
dma-coherent;
interrupts = <0x0 0x26 0x1>;
reg = <0x0 0xa002c00 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a002e00 {
dma-coherent;
interrupts = <0x0 0x27 0x1>;
reg = <0x0 0xa002e00 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a003000 {
dma-coherent;
interrupts = <0x0 0x28 0x1>;
reg = <0x0 0xa003000 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a003200 {
dma-coherent;
interrupts = <0x0 0x29 0x1>;
reg = <0x0 0xa003200 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a003400 {
dma-coherent;
interrupts = <0x0 0x2a 0x1>;
reg = <0x0 0xa003400 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a003600 {
dma-coherent;
interrupts = <0x0 0x2b 0x1>;
reg = <0x0 0xa003600 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a003800 {
dma-coherent;
interrupts = <0x0 0x2c 0x1>;
reg = <0x0 0xa003800 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a003a00 {
dma-coherent;
interrupts = <0x0 0x2d 0x1>;
reg = <0x0 0xa003a00 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a003c00 {
dma-coherent;
interrupts = <0x0 0x2e 0x1>;
reg = <0x0 0xa003c00 0x0 0x200>;
compatible = "virtio,mmio";
};

virtio_mmio@a003e00 {
dma-coherent;
interrupts = <0x0 0x2f 0x1>;
reg = <0x0 0xa003e00 0x0 0x200>;
compatible = "virtio,mmio";
};

gpio-keys {
#address-cells = <0x1>;
#size-cells = <0x0>;
compatible = "gpio-keys";

poweroff {
gpios = <0x8003 0x3 0x0>;
linux,code = <0x74>;
label = "GPIO Key Poweroff";
};
};

pl061@9030000 {
phandle = <0x8003>;
clock-names = "apb_pclk";
clocks = <0x8000>;
interrupts = <0x0 0x7 0x4>;
gpio-controller;
#gpio-cells = <0x2>;
compatible = "arm,pl061", "arm,primecell";
reg = <0x0 0x9030000 0x0 0x1000>;
};

pcie@10000000 {
interrupt-map-mask = <0x1800 0x0 0x0 0x7>;
interrupt-map = <0x0 0x0 0x0 0x1 0x8001 0x0 0x0 0x0 0x3 0x4 0x0 0x0 0x0 0x2 0x8001 0x0 0x0 0x0 0x4 0x4 0x0 0x0 0x0 0x3 0x8001 0x0 0x0 0x0 0x5 0x4 0x0 0x0 0x0 0x4 0x8001 0x0 0x0 0x0 0x6 0x4 0x800 0x0 0x0 0x1 0x8001 0x0 0x0 0x0 0x4 0x4 0x800 0x0 0x0 0x2 0x8001 0x0 0x0 0x0 0x5 0x4 0x800 0x0 0x0 0x3 0x8001 0x0 0x0 0x0 0x6 0x4 0x800 0x0 0x0 0x4 0x8001 0x0 0x0 0x0 0x3 0x4 0x1000 0x0 0x0 0x1 0x8001 0x0 0x0 0x0 0x5 0x4 0x1000 0x0 0x0 0x2 0x8001 0x0 0x0 0x0 0x6 0x4 0x1000 0x0 0x0 0x3 0x8001 0x0 0x0 0x0 0x3 0x4 0x1000 0x0 0x0 0x4 0x8001 0x0 0x0 0x0 0x4 0x4 0x1800 0x0 0x0 0x1 0x8001 0x0 0x0 0x0 0x6 0x4 0x1800 0x0 0x0 0x2 0x8001 0x0 0x0 0x0 0x3 0x4 0x1800 0x0 0x0 0x3 0x8001 0x0 0x0 0x0 0x4 0x4 0x1800 0x0 0x0 0x4 0x8001 0x0 0x0 0x0 0x5 0x4>;
#interrupt-cells = <0x1>;
ranges = <0x1000000 0x0 0x0 0x0 0x3eff0000 0x0 0x10000 0x2000000 0x0 0x10000000 0x0 0x10000000 0x0 0x2eff0000 0x3000000 0x80 0x0 0x80 0x0 0x80 0x0>;
reg = <0x0 0x3f000000 0x0 0x1000000>;
msi-parent = <0x8002>;
dma-coherent;
bus-range = <0x0 0xf>;
#size-cells = <0x2>;
#address-cells = <0x3>;
device_type = "pci";
compatible = "pci-host-ecam-generic";
};

pl031@9010000 {
clock-names = "apb_pclk";
clocks = <0x8000>;
interrupts = <0x0 0x2 0x4>;
reg = <0x0 0x9010000 0x0 0x1000>;
compatible = "arm,pl031", "arm,primecell";
};

pl011@9000000 {
clock-names = "uartclk", "apb_pclk";
clocks = <0x8000 0x8000>;
interrupts = <0x0 0x1 0x4>;
reg = <0x0 0x9000000 0x0 0x1000>;
compatible = "arm,pl011", "arm,primecell";
};

intc {
phandle = <0x8001>;
reg = <0x0 0x8000000 0x0 0x10000 0x0 0x8010000 0x0 0x10000>;
compatible = "arm,cortex-a15-gic";
ranges;
#size-cells = <0x2>;
#address-cells = <0x2>;
interrupt-controller;
#interrupt-cells = <0x3>;

v2m {
phandle = <0x8002>;
reg = <0x0 0x8020000 0x0 0x1000>;
msi-controller;
compatible = "arm,gic-v2m-frame";
};
};

flash@0 {
bank-width = <0x4>;
reg = <0x0 0x0 0x0 0x4000000 0x0 0x4000000 0x0 0x4000000>;
compatible = "cfi-flash";
};

psci {
migrate = <0x84000005>;
cpu_on = <0x84000003>;
cpu_off = <0x84000002>;
cpu_suspend = <0x84000001>;
method = "hvc";
compatible = "arm,psci-0.2", "arm,psci";
};

cpus {
#size-cells = <0x0>;
#address-cells = <0x1>;

cpu@0 {
reg = <0x0>;
compatible = "arm,cortex-a15";
device_type = "cpu";
};
};

timer {
interrupts = <0x1 0xd 0x104 0x1 0xe 0x104 0x1 0xb 0x104 0x1 0xa 0x104>;
always-on;
compatible = "arm,armv7-timer";
};

apb-pclk {
phandle = <0x8000>;
clock-output-names = "clk24mhz";
clock-frequency = <0x16e3600>;
#clock-cells = <0x0>;
compatible = "fixed-clock";
};

memory {
reg = <0x0 0x40000000 0x0 0x8000000>;
device_type = "memory";
};

chosen {
stdout-path = "/pl011@9000000";
};
};

没有评论:

发表评论