This adds a header file defining symbolic constants for the VMWare SVGA virtual display device in preparation for supporting it in QemuVideoDxe. It is mostly an extract of the file lib/vmware/svga_reg.h from commit 329dd537456f93a806841ec8a8213aed11395def of VMWare's vmware-svga repository at git://git.code.sf.net/p/vmware-svga/git (See also http://vmware-svga.sourceforge.net/ ) Only the bare essentials necessary for initialisation, modesetting and framebuffer access have been kept from the original file; macro names have been prefixed with VMWARE_SVGA_ instead of SVGA2_, and the enum definition has been adapted to comply with EDK2 naming conventions. The original file was released by VMWare under the MIT license, this has been retained. Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
		
			
				
	
	
		
			105 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
| 
 | |
|   Macro and enum definitions of a subset of port numbers, register identifiers
 | |
|   and values required for driving the VMWare SVGA virtual display adapter,
 | |
|   also implemented by Qemu.
 | |
| 
 | |
|   This file's contents was extracted from file lib/vmware/svga_reg.h in commit
 | |
|   329dd537456f93a806841ec8a8213aed11395def of VMWare's vmware-svga repository:
 | |
|   git://git.code.sf.net/p/vmware-svga/git
 | |
| 
 | |
| 
 | |
|   Copyright 1998-2009 VMware, Inc.  All rights reserved.
 | |
|   Portions Copyright 2017 Phil Dennis-Jordan <phil@philjordan.eu>
 | |
| 
 | |
|   Permission is hereby granted, free of charge, to any person
 | |
|   obtaining a copy of this software and associated documentation
 | |
|   files (the "Software"), to deal in the Software without
 | |
|   restriction, including without limitation the rights to use, copy,
 | |
|   modify, merge, publish, distribute, sublicense, and/or sell copies
 | |
|   of the Software, and to permit persons to whom the Software is
 | |
|   furnished to do so, subject to the following conditions:
 | |
| 
 | |
|   The above copyright notice and this permission notice shall be
 | |
|   included in all copies or substantial portions of the Software.
 | |
| 
 | |
|   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | |
|   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | |
|   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | |
|   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 | |
|   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 | |
|   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | |
|   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | |
|   SOFTWARE.
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _VMWARE_SVGA_H_
 | |
| #define _VMWARE_SVGA_H_
 | |
| 
 | |
| #include <Base.h>
 | |
| 
 | |
| //
 | |
| // IDs for recognising the device
 | |
| //
 | |
| #define VMWARE_PCI_VENDOR_ID_VMWARE            0x15AD
 | |
| #define VMWARE_PCI_DEVICE_ID_VMWARE_SVGA2      0x0405
 | |
| 
 | |
| //
 | |
| // I/O port BAR offsets for register selection and read/write.
 | |
| //
 | |
| // The register index is written to the 32-bit index port, followed by a 32-bit
 | |
| // read or write on the value port to read or set that register's contents.
 | |
| //
 | |
| #define VMWARE_SVGA_INDEX_PORT         0x0
 | |
| #define VMWARE_SVGA_VALUE_PORT         0x1
 | |
| 
 | |
| //
 | |
| // Some of the device's register indices for basic framebuffer functionality.
 | |
| //
 | |
| typedef enum {
 | |
|   VmwareSvgaRegId = 0,
 | |
|   VmwareSvgaRegEnable = 1,
 | |
|   VmwareSvgaRegWidth = 2,
 | |
|   VmwareSvgaRegHeight = 3,
 | |
|   VmwareSvgaRegMaxWidth = 4,
 | |
|   VmwareSvgaRegMaxHeight = 5,
 | |
| 
 | |
|   VmwareSvgaRegBitsPerPixel = 7,
 | |
| 
 | |
|   VmwareSvgaRegRedMask = 9,
 | |
|   VmwareSvgaRegGreenMask = 10,
 | |
|   VmwareSvgaRegBlueMask = 11,
 | |
|   VmwareSvgaRegBytesPerLine = 12,
 | |
| 
 | |
|   VmwareSvgaRegFbOffset = 14,
 | |
| 
 | |
|   VmwareSvgaRegFbSize = 16,
 | |
|   VmwareSvgaRegCapabilities = 17,
 | |
| 
 | |
|   VmwareSvgaRegHostBitsPerPixel = 28,
 | |
| } VMWARE_SVGA_REGISTER;
 | |
| 
 | |
| //
 | |
| // Values used with VmwareSvgaRegId for sanity-checking the device and getting
 | |
| // its version.
 | |
| //
 | |
| #define VMWARE_SVGA_MAGIC          0x900000U
 | |
| #define VMWARE_SVGA_MAKE_ID(ver)   (VMWARE_SVGA_MAGIC << 8 | (ver))
 | |
| 
 | |
| #define VMWARE_SVGA_VERSION_2      2
 | |
| #define VMWARE_SVGA_ID_2           VMWARE_SVGA_MAKE_ID (VMWARE_SVGA_VERSION_2)
 | |
| 
 | |
| #define VMWARE_SVGA_VERSION_1      1
 | |
| #define VMWARE_SVGA_ID_1           VMWARE_SVGA_MAKE_ID (VMWARE_SVGA_VERSION_1)
 | |
| 
 | |
| #define VMWARE_SVGA_VERSION_0      0
 | |
| #define VMWARE_SVGA_ID_0           VMWARE_SVGA_MAKE_ID (VMWARE_SVGA_VERSION_0)
 | |
| 
 | |
| //
 | |
| // One of the capability bits advertised by VmwareSvgaRegCapabilities.
 | |
| //
 | |
| #define VMWARE_SVGA_CAP_8BIT_EMULATION     BIT8
 | |
| 
 | |
| #endif
 |