mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-30 23:50:23 +00:00 
			
		
		
		
	 9344f09215
			
		
	
	
		9344f09215
		
	
	
	
	
		
			
			https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			192 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   UGA IO protocol from the EFI 1.10 specification.
 | |
| 
 | |
|   Abstraction of a very simple graphics device.
 | |
| 
 | |
|   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __UGA_IO_H__
 | |
| #define __UGA_IO_H__
 | |
| 
 | |
| #define EFI_UGA_IO_PROTOCOL_GUID \
 | |
|   { 0x61a4d49e, 0x6f68, 0x4f1b, { 0xb9, 0x22, 0xa8, 0x6e, 0xed, 0xb, 0x7, 0xa2 } }
 | |
| 
 | |
| typedef struct _EFI_UGA_IO_PROTOCOL EFI_UGA_IO_PROTOCOL;
 | |
| 
 | |
| typedef UINT32                      UGA_STATUS;
 | |
| 
 | |
| typedef enum {
 | |
|   UgaDtParentBus          = 1,
 | |
|   UgaDtGraphicsController,
 | |
|   UgaDtOutputController,
 | |
|   UgaDtOutputPort,
 | |
|   UgaDtOther
 | |
| } UGA_DEVICE_TYPE, *PUGA_DEVICE_TYPE;
 | |
| 
 | |
| typedef UINT32 UGA_DEVICE_ID, *PUGA_DEVICE_ID;
 | |
| 
 | |
| typedef struct {
 | |
|   UGA_DEVICE_TYPE deviceType;
 | |
|   UGA_DEVICE_ID   deviceId;
 | |
|   UINT32          ui32DeviceContextSize;
 | |
|   UINT32          ui32SharedContextSize;
 | |
| } UGA_DEVICE_DATA, *PUGA_DEVICE_DATA;
 | |
| 
 | |
| typedef struct _UGA_DEVICE {
 | |
|   VOID                *pvDeviceContext;
 | |
|   VOID                *pvSharedContext;
 | |
|   VOID                *pvRunTimeContext;
 | |
|   struct _UGA_DEVICE  *pParentDevice;
 | |
|   VOID                *pvBusIoServices;
 | |
|   VOID                *pvStdIoServices;
 | |
|   UGA_DEVICE_DATA     deviceData;
 | |
| } UGA_DEVICE, *PUGA_DEVICE;
 | |
| 
 | |
| typedef enum {
 | |
|   UgaIoGetVersion             = 1,
 | |
|   UgaIoGetChildDevice,
 | |
|   UgaIoStartDevice,
 | |
|   UgaIoStopDevice,
 | |
|   UgaIoFlushDevice,
 | |
|   UgaIoResetDevice,
 | |
|   UgaIoGetDeviceState,
 | |
|   UgaIoSetDeviceState,
 | |
|   UgaIoSetPowerState,
 | |
|   UgaIoGetMemoryConfiguration,
 | |
|   UgaIoSetVideoMode,
 | |
|   UgaIoCopyRectangle,
 | |
|   UgaIoGetEdidSegment,
 | |
|   UgaIoDeviceChannelOpen,
 | |
|   UgaIoDeviceChannelClose,
 | |
|   UgaIoDeviceChannelRead,
 | |
|   UgaIoDeviceChannelWrite,
 | |
|   UgaIoGetPersistentDataSize,
 | |
|   UgaIoGetPersistentData,
 | |
|   UgaIoSetPersistentData,
 | |
|   UgaIoGetDevicePropertySize,
 | |
|   UgaIoGetDeviceProperty,
 | |
|   UgaIoBtPrivateInterface
 | |
| } UGA_IO_REQUEST_CODE, *PUGA_IO_REQUEST_CODE;
 | |
| 
 | |
| typedef struct {
 | |
|   IN UGA_IO_REQUEST_CODE  ioRequestCode;
 | |
|   IN VOID                 *pvInBuffer;
 | |
|   IN UINT64               ui64InBufferSize;
 | |
|   OUT VOID                *pvOutBuffer;
 | |
|   IN UINT64               ui64OutBufferSize;
 | |
|   OUT UINT64              ui64BytesReturned;
 | |
| } UGA_IO_REQUEST, *PUGA_IO_REQUEST;
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Dynamically allocate storage for a child UGA_DEVICE.
 | |
| 
 | |
|   @param[in]     This            The EFI_UGA_IO_PROTOCOL instance.
 | |
|   @param[in]     ParentDevice    ParentDevice specifies a pointer to the parent device of Device.
 | |
|   @param[in]     DeviceData      A pointer to UGA_DEVICE_DATA returned from a call to DispatchService()
 | |
|                                  with a UGA_DEVICE of Parent and an IoRequest of type UgaIoGetChildDevice.
 | |
|   @param[in]     RunTimeContext  Context to associate with Device.
 | |
|   @param[out]    Device          The Device returns a dynamically allocated child UGA_DEVICE object
 | |
|                                  for ParentDevice. The caller is responsible for deleting Device.
 | |
| 
 | |
| 
 | |
|   @retval  EFI_SUCCESS           Device was returned.
 | |
|   @retval  EFI_INVALID_PARAMETER One of the arguments was not valid.
 | |
|   @retval  EFI_DEVICE_ERROR      The device had an error and could not complete the request.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_UGA_IO_PROTOCOL_CREATE_DEVICE)(
 | |
|   IN  EFI_UGA_IO_PROTOCOL  *This,
 | |
|   IN  UGA_DEVICE           *ParentDevice,
 | |
|   IN  UGA_DEVICE_DATA      *DeviceData,
 | |
|   IN  VOID                 *RunTimeContext,
 | |
|   OUT UGA_DEVICE           **Device
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Delete a dynamically allocated child UGA_DEVICE object that was allocated via CreateDevice().
 | |
| 
 | |
|   @param[in]     This            The EFI_UGA_IO_PROTOCOL instance. Type EFI_UGA_IO_PROTOCOL is
 | |
|                                  defined in Section 10.7.
 | |
|   @param[in]     Device          The Device points to a UGA_DEVICE object that was dynamically
 | |
|                                  allocated via a CreateDevice() call.
 | |
| 
 | |
| 
 | |
|   @retval  EFI_SUCCESS           Device was returned.
 | |
|   @retval  EFI_INVALID_PARAMETER The Device was not allocated via CreateDevice().
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_UGA_IO_PROTOCOL_DELETE_DEVICE)(
 | |
|   IN EFI_UGA_IO_PROTOCOL  * This,
 | |
|   IN UGA_DEVICE           * Device
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This is the main UGA service dispatch routine for all UGA_IO_REQUEST s.
 | |
| 
 | |
|   @param pDevice pDevice specifies a pointer to a device object associated with a
 | |
|                  device enumerated by a pIoRequest->ioRequestCode of type
 | |
|                  UgaIoGetChildDevice. The root device for the EFI_UGA_IO_PROTOCOL
 | |
|                  is represented by pDevice being set to NULL.
 | |
| 
 | |
|   @param pIoRequest
 | |
|                  pIoRequest points to a caller allocated buffer that contains data
 | |
|                  defined by pIoRequest->ioRequestCode. See Related Definitions for
 | |
|                  a definition of UGA_IO_REQUEST_CODE s and their associated data
 | |
|                  structures.
 | |
| 
 | |
|   @return UGA_STATUS
 | |
| 
 | |
| **/
 | |
| typedef UGA_STATUS
 | |
| (EFIAPI *PUGA_FW_SERVICE_DISPATCH)(
 | |
|   IN PUGA_DEVICE pDevice,
 | |
|   IN OUT PUGA_IO_REQUEST pIoRequest
 | |
|   );
 | |
| 
 | |
| ///
 | |
| /// Provides a basic abstraction to send I/O requests to the graphics device and any of its children.
 | |
| ///
 | |
| struct _EFI_UGA_IO_PROTOCOL {
 | |
|   EFI_UGA_IO_PROTOCOL_CREATE_DEVICE CreateDevice;
 | |
|   EFI_UGA_IO_PROTOCOL_DELETE_DEVICE DeleteDevice;
 | |
|   PUGA_FW_SERVICE_DISPATCH          DispatchService;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID gEfiUgaIoProtocolGuid;
 | |
| 
 | |
| //
 | |
| // Data structure that is stored in the EFI Configuration Table with the
 | |
| // EFI_UGA_IO_PROTOCOL_GUID.  The option ROMs listed in this table may have
 | |
| // EBC UGA drivers.
 | |
| //
 | |
| typedef struct {
 | |
|   UINT32  Version;
 | |
|   UINT32  HeaderSize;
 | |
|   UINT32  SizeOfEntries;
 | |
|   UINT32  NumberOfEntries;
 | |
| } EFI_DRIVER_OS_HANDOFF_HEADER;
 | |
| 
 | |
| typedef enum {
 | |
|   EfiUgaDriverFromPciRom,
 | |
|   EfiUgaDriverFromSystem,
 | |
|   EfiDriverHandoffMax
 | |
| } EFI_DRIVER_HANOFF_ENUM;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_DRIVER_HANOFF_ENUM    Type;
 | |
|   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
 | |
|   VOID                      *PciRomImage;
 | |
|   UINT64                    PciRomSize;
 | |
| } EFI_DRIVER_OS_HANDOFF;
 | |
| 
 | |
| #endif
 |