 68ed96bebf
			
		
	
	
		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.
 |