68ed96bebf
Convert docs/specs/standard-vga.txt to rST format. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 20230927151205.70930-6-peter.maydell@linaro.org Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
95 lines
2.1 KiB
ReStructuredText
95 lines
2.1 KiB
ReStructuredText
|
|
QEMU Standard VGA
|
|
=================
|
|
|
|
Exists in two variants, for isa and pci.
|
|
|
|
command line switches:
|
|
|
|
``-vga std``
|
|
picks isa for -M isapc, otherwise pci
|
|
``-device VGA``
|
|
pci variant
|
|
``-device isa-vga``
|
|
isa variant
|
|
``-device secondary-vga``
|
|
legacy-free pci variant
|
|
|
|
|
|
PCI spec
|
|
--------
|
|
|
|
Applies to the pci variant only for obvious reasons.
|
|
|
|
PCI ID
|
|
``1234:1111``
|
|
|
|
PCI Region 0
|
|
Framebuffer memory, 16 MB in size (by default).
|
|
Size is tunable via vga_mem_mb property.
|
|
|
|
PCI Region 1
|
|
Reserved (so we have the option to make the framebuffer bar 64bit).
|
|
|
|
PCI Region 2
|
|
MMIO bar, 4096 bytes in size (QEMU 1.3+)
|
|
|
|
PCI ROM Region
|
|
Holds the vgabios (QEMU 0.14+).
|
|
|
|
|
|
The legacy-free variant has no ROM and has ``PCI_CLASS_DISPLAY_OTHER``
|
|
instead of ``PCI_CLASS_DISPLAY_VGA``.
|
|
|
|
|
|
IO ports used
|
|
-------------
|
|
|
|
Doesn't apply to the legacy-free pci variant, use the MMIO bar instead.
|
|
|
|
``03c0 - 03df``
|
|
standard vga ports
|
|
``01ce``
|
|
bochs vbe interface index port
|
|
``01cf``
|
|
bochs vbe interface data port (x86 only)
|
|
``01d0``
|
|
bochs vbe interface data port
|
|
|
|
|
|
Memory regions used
|
|
-------------------
|
|
|
|
``0xe0000000``
|
|
Framebuffer memory, isa variant only.
|
|
|
|
The pci variant used to mirror the framebuffer bar here, QEMU 0.14+
|
|
stops doing that (except when in ``-M pc-$old`` compat mode).
|
|
|
|
|
|
MMIO area spec
|
|
--------------
|
|
|
|
Likewise applies to the pci variant only for obvious reasons.
|
|
|
|
``0000 - 03ff``
|
|
edid data blob.
|
|
``0400 - 041f``
|
|
vga ioports (``0x3c0`` to ``0x3df``), remapped 1:1. Word access
|
|
is supported, bytes are written in little endian order (aka index
|
|
port first), so indexed registers can be updated with a single
|
|
mmio write (and thus only one vmexit).
|
|
``0500 - 0515``
|
|
bochs dispi interface registers, mapped flat without index/data ports.
|
|
Use ``(index << 1)`` as offset for (16bit) register access.
|
|
``0600 - 0607``
|
|
QEMU extended registers. QEMU 2.2+ only.
|
|
The pci revision is 2 (or greater) when these registers are present.
|
|
The registers are 32bit.
|
|
``0600``
|
|
QEMU extended register region size, in bytes.
|
|
``0604``
|
|
framebuffer endianness register.
|
|
- ``0xbebebebe`` indicates big endian.
|
|
- ``0x1e1e1e1e`` indicates little endian.
|