/WindSLIC_EFI/include/efiUgaIo.h
C Header | 234 lines | 108 code | 20 blank | 106 comment | 0 complexity | 93838a0981d8b7389559ff711027f014 MD5 | raw file
- /*++
- Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
- This software and associated documentation (if any) is furnished
- under a license and may only be used or copied in accordance
- with the terms of the license. Except as permitted by such
- license, no part of this software or documentation may be
- reproduced, stored in a retrieval system, or transmitted in any
- form or by any means without the express written consent of
- Intel Corporation.
- Module Name:
- UgaIo.h
- Abstract:
- UGA IO protocol from the EFI 1.1 specification.
- Abstraction of a very simple graphics device.
- --*/
- #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;
- #ifndef UGA_IO_REQUEST_CODE
- //
- // Prevent conflicts with UGA typedefs.
- //
- 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;
- #endif
- 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;
- 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
- );
- /*++
- Routine Description:
- Dynamically allocate storage for a child UGA_DEVICE .
- Arguments:
- This - The EFI_UGA_IO_PROTOCOL instance. Type EFI_UGA_IO_PROTOCOL is
- defined in Section 10.7.
- ParentDevice - ParentDevice specifies a pointer to the parent device of Device.
- 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.
- RuntimeContext - Context to associate with Device.
- Device - The Device returns a dynamically allocated child UGA_DEVICE object
- for ParentDevice. The caller is responsible for deleting Device.
-
- Returns:
- EFI_SUCCESS - Device was returned.
- EFI_INVALID_PARAMETER - One of the arguments was not valid.
- EFI_DEVICE_ERROR - The device had an error and could not complete the request.
- --*/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_UGA_IO_PROTOCOL_DELETE_DEVICE) (
- IN EFI_UGA_IO_PROTOCOL *This,
- IN UGA_DEVICE *Device
- );
- /*++
- Routine Description:
- Delete a dynamically allocated child UGA_DEVICE object that was allocated via
- CreateDevice() .
- Arguments:
- This - The EFI_UGA_IO_PROTOCOL instance. Type EFI_UGA_IO_PROTOCOL is defined
- in Section 10.7.
- Device - The Device points to a UGA_DEVICE object that was dynamically
- allocated via a CreateDevice() call.
- Returns:
- EFI_SUCCESS - Device was deleted.
- EFI_INVALID_PARAMETER - The Device was not allocated via CreateDevice()
- --*/
- typedef
- UGA_STATUS
- (EFIAPI *PUGA_FW_SERVICE_DISPATCH) (
- IN PUGA_DEVICE pDevice,
- IN OUT PUGA_IO_REQUEST pIoRequest
- );
- /*++
- Routine Description:
- This is the main UGA service dispatch routine for all UGA_IO_REQUEST s.
- Arguments:
- 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.
- 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.
- Returns:
- Varies depending on pIoRequest.
- --*/
- typedef struct _EFI_UGA_IO_PROTOCOL {
- EFI_UGA_IO_PROTOCOL_CREATE_DEVICE CreateDevice;
- EFI_UGA_IO_PROTOCOL_DELETE_DEVICE DeleteDevice;
- PUGA_FW_SERVICE_DISPATCH DispatchService;
- } EFI_UGA_IO_PROTOCOL;
- extern EFI_GUID UgaIoProtocol;
- //
- // 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