]> git.proxmox.com Git - mirror_edk2.git/blame - EmulatorPkg/EmuGopDxe/Gop.h
ArmVirtPkg: drop PcdPrePiCpuMemorySize assignments from all platforms
[mirror_edk2.git] / EmulatorPkg / EmuGopDxe / Gop.h
CommitLineData
79e4f2a5
RN
1/*++ @file\r
2\r
3Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
4Portions copyright (c) 2010,Apple Inc. All rights reserved.<BR>\r
5This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef __UGA_H_\r
16#define __UGA_H_\r
17\r
18#include <PiDxe.h>\r
19\r
20#include <Protocol/GraphicsOutput.h>\r
21#include <Protocol/SimpleTextIn.h>\r
22#include <Protocol/SimpleTextInEx.h>\r
23#include <Protocol/SimplePointer.h>\r
24#include <Protocol/EmuIoThunk.h>\r
25#include <Protocol/EmuGraphicsWindow.h>\r
26\r
27#include <Guid/EventGroup.h>\r
28\r
29#include <Library/DebugLib.h>\r
30#include <Library/BaseLib.h>\r
31#include <Library/UefiDriverEntryPoint.h>\r
32#include <Library/UefiLib.h>\r
33#include <Library/BaseMemoryLib.h>\r
34#include <Library/MemoryAllocationLib.h>\r
35#include <Library/UefiBootServicesTableLib.h>\r
36#include <Library/KeyMapLib.h>\r
37\r
38\r
39#define MAX_Q 256\r
40\r
41typedef struct {\r
42 UINTN Front;\r
43 UINTN Rear;\r
44 UINTN Count;\r
45 EFI_INPUT_KEY Q[MAX_Q];\r
46} GOP_QUEUE_FIXED;\r
47\r
48#define EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE SIGNATURE_32 ('U', 'g', 'S', 'n')\r
49typedef struct _EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY {\r
50 UINTN Signature;\r
51 EFI_HANDLE NotifyHandle;\r
52 EFI_KEY_DATA KeyData;\r
53 EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;\r
54 EFI_EVENT Event;\r
55 LIST_ENTRY NotifyEntry;\r
56} EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY;\r
57\r
58#define GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER 0xffff\r
59\r
60typedef struct {\r
61 UINT32 HorizontalResolution;\r
62 UINT32 VerticalResolution;\r
63 UINT32 ColorDepth;\r
64 UINT32 RefreshRate;\r
65} GOP_MODE_DATA;\r
66\r
67\r
68\r
69extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding;\r
70extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName;\r
71\r
72#define EMU_UGA_CLASS_NAME L"EmuGopWindow"\r
73\r
74#define GOP_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('G', 'o', 'p', 'N')\r
75typedef struct {\r
76 UINT64 Signature;\r
77\r
78 EFI_HANDLE Handle;\r
79 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
80 EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleTextIn;\r
81 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;\r
82\r
83 EMU_IO_THUNK_PROTOCOL *EmuIoThunk;\r
84 EMU_GRAPHICS_WINDOW_PROTOCOL *EmuGraphicsWindow;\r
85\r
86 EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
87\r
88 EFI_SIMPLE_POINTER_MODE PointerMode;\r
89 //\r
90 // GOP Private Data for QueryMode ()\r
91 //\r
92 GOP_MODE_DATA *ModeData;\r
93\r
94\r
95 //\r
96 // UGA Private Data knowing when to start hardware\r
97 //\r
98 BOOLEAN HardwareNeedsStarting;\r
99\r
100 CHAR16 *WindowName;\r
101\r
102 GOP_QUEUE_FIXED Queue;\r
103\r
104 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL SimpleTextInEx;\r
105 EFI_KEY_STATE KeyState;\r
106 LIST_ENTRY NotifyList;\r
107} GOP_PRIVATE_DATA;\r
108\r
109\r
110#define GOP_PRIVATE_DATA_FROM_THIS(a) \\r
111 CR(a, GOP_PRIVATE_DATA, GraphicsOutput, GOP_PRIVATE_DATA_SIGNATURE)\r
112\r
113#define GOP_PRIVATE_DATA_FROM_TEXT_IN_THIS(a) \\r
114 CR(a, GOP_PRIVATE_DATA, SimpleTextIn, GOP_PRIVATE_DATA_SIGNATURE)\r
115\r
116#define GOP_PRIVATE_DATA_FROM_TEXT_IN_EX_THIS(a) \\r
117 CR(a, GOP_PRIVATE_DATA, SimpleTextInEx, GOP_PRIVATE_DATA_SIGNATURE)\r
118\r
119#define GOP_PRIVATE_DATA_FROM_POINTER_MODE_THIS(a) \\r
120 CR(a, GOP_PRIVATE_DATA, SimplePointer, GOP_PRIVATE_DATA_SIGNATURE)\r
121\r
122\r
123//\r
124// Global Protocol Variables\r
125//\r
126extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding;\r
127extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName;\r
128extern EFI_COMPONENT_NAME2_PROTOCOL gEmuGopComponentName2;\r
129\r
130//\r
131// Gop Hardware abstraction internal worker functions\r
132//\r
133EFI_STATUS\r
134EmuGopSupported (\r
135 IN EMU_IO_THUNK_PROTOCOL *EmuIoThunk\r
136 );\r
137\r
138EFI_STATUS\r
139EmuGopConstructor (\r
140 IN GOP_PRIVATE_DATA *Private\r
141 );\r
142\r
143EFI_STATUS\r
144EmuGopDestructor (\r
145 IN GOP_PRIVATE_DATA *Private\r
146 );\r
147\r
148\r
149EFI_STATUS\r
150GopPrivateAddQ (\r
151 IN GOP_PRIVATE_DATA *Private,\r
152 IN EFI_INPUT_KEY Key\r
153 );\r
154\r
155EFI_STATUS\r
156EmuGopInitializeSimpleTextInForWindow (\r
157 IN GOP_PRIVATE_DATA *Private\r
158 );\r
159\r
160EFI_STATUS\r
161EmuGopInitializeSimplePointerForWindow (\r
162 IN GOP_PRIVATE_DATA *Private\r
163 );\r
164\r
165EFI_STATUS\r
166EmuGopStartWindow (\r
167 IN GOP_PRIVATE_DATA *Private,\r
168 IN UINT32 HorizontalResolution,\r
169 IN UINT32 VerticalResolution,\r
170 IN UINT32 ColorDepth,\r
171 IN UINT32 RefreshRate\r
172 );\r
173\r
174VOID\r
175EFIAPI\r
176ShutdownGopEvent (\r
177 IN EFI_EVENT Event,\r
178 IN VOID *Context\r
179 );\r
180\r
181VOID\r
182EFIAPI\r
183GopPrivateMakeCallbackFunction (\r
184 IN VOID *Context,\r
185 IN EFI_KEY_DATA *KeyData\r
186 );\r
187\r
188VOID\r
189EFIAPI\r
190GopPrivateBreakCallbackFunction (\r
191 IN VOID *Context,\r
192 IN EFI_KEY_DATA *KeyData\r
193 );\r
194\r
195#endif\r