VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/MdePkg/Include/Protocol/UgaIo.h@ 58464

最後變更 在這個檔案從58464是 48674,由 vboxsync 提交於 12 年 前

EFI: Export newly imported tinaocore UEFI sources to OSE.

  • 屬性 svn:eol-style 設為 native
檔案大小: 6.3 KB
 
1/** @file
2 UGA IO protocol from the EFI 1.10 specification.
3
4 Abstraction of a very simple graphics device.
5
6 Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15**/
16
17#ifndef __UGA_IO_H__
18#define __UGA_IO_H__
19
20#define EFI_UGA_IO_PROTOCOL_GUID \
21 { 0x61a4d49e, 0x6f68, 0x4f1b, { 0xb9, 0x22, 0xa8, 0x6e, 0xed, 0xb, 0x7, 0xa2 } }
22
23typedef struct _EFI_UGA_IO_PROTOCOL EFI_UGA_IO_PROTOCOL;
24
25typedef UINT32 UGA_STATUS;
26
27typedef enum {
28 UgaDtParentBus = 1,
29 UgaDtGraphicsController,
30 UgaDtOutputController,
31 UgaDtOutputPort,
32 UgaDtOther
33} UGA_DEVICE_TYPE, *PUGA_DEVICE_TYPE;
34
35typedef UINT32 UGA_DEVICE_ID, *PUGA_DEVICE_ID;
36
37typedef struct {
38 UGA_DEVICE_TYPE deviceType;
39 UGA_DEVICE_ID deviceId;
40 UINT32 ui32DeviceContextSize;
41 UINT32 ui32SharedContextSize;
42} UGA_DEVICE_DATA, *PUGA_DEVICE_DATA;
43
44typedef struct _UGA_DEVICE {
45 VOID *pvDeviceContext;
46 VOID *pvSharedContext;
47 VOID *pvRunTimeContext;
48 struct _UGA_DEVICE *pParentDevice;
49 VOID *pvBusIoServices;
50 VOID *pvStdIoServices;
51 UGA_DEVICE_DATA deviceData;
52} UGA_DEVICE, *PUGA_DEVICE;
53
54typedef enum {
55 UgaIoGetVersion = 1,
56 UgaIoGetChildDevice,
57 UgaIoStartDevice,
58 UgaIoStopDevice,
59 UgaIoFlushDevice,
60 UgaIoResetDevice,
61 UgaIoGetDeviceState,
62 UgaIoSetDeviceState,
63 UgaIoSetPowerState,
64 UgaIoGetMemoryConfiguration,
65 UgaIoSetVideoMode,
66 UgaIoCopyRectangle,
67 UgaIoGetEdidSegment,
68 UgaIoDeviceChannelOpen,
69 UgaIoDeviceChannelClose,
70 UgaIoDeviceChannelRead,
71 UgaIoDeviceChannelWrite,
72 UgaIoGetPersistentDataSize,
73 UgaIoGetPersistentData,
74 UgaIoSetPersistentData,
75 UgaIoGetDevicePropertySize,
76 UgaIoGetDeviceProperty,
77 UgaIoBtPrivateInterface
78} UGA_IO_REQUEST_CODE, *PUGA_IO_REQUEST_CODE;
79
80typedef struct {
81 IN UGA_IO_REQUEST_CODE ioRequestCode;
82 IN VOID *pvInBuffer;
83 IN UINT64 ui64InBufferSize;
84 OUT VOID *pvOutBuffer;
85 IN UINT64 ui64OutBufferSize;
86 OUT UINT64 ui64BytesReturned;
87} UGA_IO_REQUEST, *PUGA_IO_REQUEST;
88
89
90/**
91 Dynamically allocate storage for a child UGA_DEVICE.
92
93 @param[in] This The EFI_UGA_IO_PROTOCOL instance.
94 @param[in] ParentDevice ParentDevice specifies a pointer to the parent device of Device.
95 @param[in] DeviceData A pointer to UGA_DEVICE_DATA returned from a call to DispatchService()
96 with a UGA_DEVICE of Parent and an IoRequest of type UgaIoGetChildDevice.
97 @param[in] RunTimeContext Context to associate with Device.
98 @param[out] Device The Device returns a dynamically allocated child UGA_DEVICE object
99 for ParentDevice. The caller is responsible for deleting Device.
100
101
102 @retval EFI_SUCCESS Device was returned.
103 @retval EFI_INVALID_PARAMETER One of the arguments was not valid.
104 @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.
105
106**/
107typedef
108EFI_STATUS
109(EFIAPI *EFI_UGA_IO_PROTOCOL_CREATE_DEVICE)(
110 IN EFI_UGA_IO_PROTOCOL *This,
111 IN UGA_DEVICE *ParentDevice,
112 IN UGA_DEVICE_DATA *DeviceData,
113 IN VOID *RunTimeContext,
114 OUT UGA_DEVICE **Device
115 );
116
117
118/**
119 Delete a dynamically allocated child UGA_DEVICE object that was allocated via CreateDevice().
120
121 @param[in] This The EFI_UGA_IO_PROTOCOL instance. Type EFI_UGA_IO_PROTOCOL is
122 defined in Section 10.7.
123 @param[in] Device The Device points to a UGA_DEVICE object that was dynamically
124 allocated via a CreateDevice() call.
125
126
127 @retval EFI_SUCCESS Device was returned.
128 @retval EFI_INVALID_PARAMETER The Device was not allocated via CreateDevice().
129
130**/
131typedef
132EFI_STATUS
133(EFIAPI *EFI_UGA_IO_PROTOCOL_DELETE_DEVICE)(
134 IN EFI_UGA_IO_PROTOCOL * This,
135 IN UGA_DEVICE * Device
136 );
137
138/**
139 This is the main UGA service dispatch routine for all UGA_IO_REQUEST s.
140
141 @param pDevice pDevice specifies a pointer to a device object associated with a
142 device enumerated by a pIoRequest->ioRequestCode of type
143 UgaIoGetChildDevice. The root device for the EFI_UGA_IO_PROTOCOL
144 is represented by pDevice being set to NULL.
145
146 @param pIoRequest
147 pIoRequest points to a caller allocated buffer that contains data
148 defined by pIoRequest->ioRequestCode. See Related Definitions for
149 a definition of UGA_IO_REQUEST_CODE s and their associated data
150 structures.
151
152 @return UGA_STATUS
153
154**/
155typedef UGA_STATUS
156(EFIAPI *PUGA_FW_SERVICE_DISPATCH)(
157 IN PUGA_DEVICE pDevice,
158 IN OUT PUGA_IO_REQUEST pIoRequest
159 );
160
161///
162/// Provides a basic abstraction to send I/O requests to the graphics device and any of its children.
163///
164struct _EFI_UGA_IO_PROTOCOL {
165 EFI_UGA_IO_PROTOCOL_CREATE_DEVICE CreateDevice;
166 EFI_UGA_IO_PROTOCOL_DELETE_DEVICE DeleteDevice;
167 PUGA_FW_SERVICE_DISPATCH DispatchService;
168};
169
170extern EFI_GUID gEfiUgaIoProtocolGuid;
171
172//
173// Data structure that is stored in the EFI Configuration Table with the
174// EFI_UGA_IO_PROTOCOL_GUID. The option ROMs listed in this table may have
175// EBC UGA drivers.
176//
177typedef struct {
178 UINT32 Version;
179 UINT32 HeaderSize;
180 UINT32 SizeOfEntries;
181 UINT32 NumberOfEntries;
182} EFI_DRIVER_OS_HANDOFF_HEADER;
183
184typedef enum {
185 EfiUgaDriverFromPciRom,
186 EfiUgaDriverFromSystem,
187 EfiDriverHandoffMax
188} EFI_DRIVER_HANOFF_ENUM;
189
190typedef struct {
191 EFI_DRIVER_HANOFF_ENUM Type;
192 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
193 VOID *PciRomImage;
194 UINT64 PciRomSize;
195} EFI_DRIVER_OS_HANDOFF;
196
197#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette