^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) * QEMU Firmware Configuration bindings for ARM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) QEMU's arm-softmmu and aarch64-softmmu emulation / virtualization targets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) provide the following Firmware Configuration interface on the "virt" machine
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) type:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) - A write-only, 16-bit wide selector (or control) register,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) - a read-write, 64-bit wide data register.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) QEMU exposes the control and data register to ARM guests as memory mapped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) registers; their location is communicated to the guest's UEFI firmware in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) DTB that QEMU places at the bottom of the guest's DRAM.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) The authoritative guest-side hardware interface documentation to the fw_cfg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) device can be found in "docs/specs/fw_cfg.txt" in the QEMU source tree.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) Required properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) - compatible: "qemu,fw-cfg-mmio".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) - reg: the MMIO region used by the device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) * Bytes 0x0 to 0x7 cover the data register.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) * Bytes 0x8 to 0x9 cover the selector register.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * Further registers may be appended to the region in case of future interface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) revisions / feature bits.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) / {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #size-cells = <0x2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #address-cells = <0x2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) fw-cfg@9020000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) compatible = "qemu,fw-cfg-mmio";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) reg = <0x0 0x9020000 0x0 0xa>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) };