]> git.proxmox.com Git - mirror_edk2.git/blame - EmulatorPkg/EmuGopDxe/Gop.h
EmulatorPkg: Apply uncrustify changes
[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
e3ba31da 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
79e4f2a5
RN
6\r
7**/\r
8\r
9#ifndef __UGA_H_\r
10#define __UGA_H_\r
11\r
12#include <PiDxe.h>\r
13\r
14#include <Protocol/GraphicsOutput.h>\r
15#include <Protocol/SimpleTextIn.h>\r
16#include <Protocol/SimpleTextInEx.h>\r
17#include <Protocol/SimplePointer.h>\r
18#include <Protocol/EmuIoThunk.h>\r
19#include <Protocol/EmuGraphicsWindow.h>\r
20\r
21#include <Guid/EventGroup.h>\r
22\r
23#include <Library/DebugLib.h>\r
24#include <Library/BaseLib.h>\r
25#include <Library/UefiDriverEntryPoint.h>\r
26#include <Library/UefiLib.h>\r
27#include <Library/BaseMemoryLib.h>\r
28#include <Library/MemoryAllocationLib.h>\r
29#include <Library/UefiBootServicesTableLib.h>\r
30#include <Library/KeyMapLib.h>\r
31\r
a550d468 32#define MAX_Q 256\r
79e4f2a5
RN
33\r
34typedef struct {\r
a550d468
MK
35 UINTN Front;\r
36 UINTN Rear;\r
37 UINTN Count;\r
38 EFI_INPUT_KEY Q[MAX_Q];\r
79e4f2a5
RN
39} GOP_QUEUE_FIXED;\r
40\r
a550d468 41#define EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE SIGNATURE_32 ('U', 'g', 'S', 'n')\r
79e4f2a5 42typedef struct _EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY {\r
a550d468
MK
43 UINTN Signature;\r
44 EFI_HANDLE NotifyHandle;\r
45 EFI_KEY_DATA KeyData;\r
46 EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;\r
47 EFI_EVENT Event;\r
48 LIST_ENTRY NotifyEntry;\r
79e4f2a5
RN
49} EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY;\r
50\r
a550d468 51#define GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER 0xffff\r
79e4f2a5
RN
52\r
53typedef struct {\r
a550d468
MK
54 UINT32 HorizontalResolution;\r
55 UINT32 VerticalResolution;\r
56 UINT32 ColorDepth;\r
57 UINT32 RefreshRate;\r
79e4f2a5
RN
58} GOP_MODE_DATA;\r
59\r
a550d468
MK
60extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding;\r
61extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName;\r
79e4f2a5 62\r
a550d468 63#define EMU_UGA_CLASS_NAME L"EmuGopWindow"\r
79e4f2a5
RN
64\r
65#define GOP_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('G', 'o', 'p', 'N')\r
66typedef struct {\r
a550d468 67 UINT64 Signature;\r
79e4f2a5 68\r
a550d468
MK
69 EFI_HANDLE Handle;\r
70 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
71 EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleTextIn;\r
72 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;\r
79e4f2a5 73\r
a550d468
MK
74 EMU_IO_THUNK_PROTOCOL *EmuIoThunk;\r
75 EMU_GRAPHICS_WINDOW_PROTOCOL *EmuGraphicsWindow;\r
79e4f2a5 76\r
a550d468 77 EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
79e4f2a5 78\r
a550d468 79 EFI_SIMPLE_POINTER_MODE PointerMode;\r
79e4f2a5
RN
80 //\r
81 // GOP Private Data for QueryMode ()\r
82 //\r
a550d468 83 GOP_MODE_DATA *ModeData;\r
79e4f2a5
RN
84\r
85 //\r
86 // UGA Private Data knowing when to start hardware\r
87 //\r
a550d468 88 BOOLEAN HardwareNeedsStarting;\r
79e4f2a5 89\r
a550d468 90 CHAR16 *WindowName;\r
79e4f2a5 91\r
a550d468 92 GOP_QUEUE_FIXED Queue;\r
79e4f2a5 93\r
a550d468
MK
94 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL SimpleTextInEx;\r
95 EFI_KEY_STATE KeyState;\r
96 LIST_ENTRY NotifyList;\r
79e4f2a5
RN
97} GOP_PRIVATE_DATA;\r
98\r
79e4f2a5
RN
99#define GOP_PRIVATE_DATA_FROM_THIS(a) \\r
100 CR(a, GOP_PRIVATE_DATA, GraphicsOutput, GOP_PRIVATE_DATA_SIGNATURE)\r
101\r
102#define GOP_PRIVATE_DATA_FROM_TEXT_IN_THIS(a) \\r
103 CR(a, GOP_PRIVATE_DATA, SimpleTextIn, GOP_PRIVATE_DATA_SIGNATURE)\r
104\r
105#define GOP_PRIVATE_DATA_FROM_TEXT_IN_EX_THIS(a) \\r
106 CR(a, GOP_PRIVATE_DATA, SimpleTextInEx, GOP_PRIVATE_DATA_SIGNATURE)\r
107\r
108#define GOP_PRIVATE_DATA_FROM_POINTER_MODE_THIS(a) \\r
109 CR(a, GOP_PRIVATE_DATA, SimplePointer, GOP_PRIVATE_DATA_SIGNATURE)\r
110\r
79e4f2a5
RN
111//\r
112// Global Protocol Variables\r
113//\r
a550d468
MK
114extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding;\r
115extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName;\r
116extern EFI_COMPONENT_NAME2_PROTOCOL gEmuGopComponentName2;\r
79e4f2a5
RN
117\r
118//\r
119// Gop Hardware abstraction internal worker functions\r
120//\r
121EFI_STATUS\r
122EmuGopSupported (\r
123 IN EMU_IO_THUNK_PROTOCOL *EmuIoThunk\r
124 );\r
125\r
126EFI_STATUS\r
127EmuGopConstructor (\r
a550d468 128 IN GOP_PRIVATE_DATA *Private\r
79e4f2a5
RN
129 );\r
130\r
131EFI_STATUS\r
132EmuGopDestructor (\r
a550d468 133 IN GOP_PRIVATE_DATA *Private\r
79e4f2a5
RN
134 );\r
135\r
79e4f2a5
RN
136EFI_STATUS\r
137GopPrivateAddQ (\r
a550d468
MK
138 IN GOP_PRIVATE_DATA *Private,\r
139 IN EFI_INPUT_KEY Key\r
79e4f2a5
RN
140 );\r
141\r
142EFI_STATUS\r
143EmuGopInitializeSimpleTextInForWindow (\r
a550d468 144 IN GOP_PRIVATE_DATA *Private\r
79e4f2a5
RN
145 );\r
146\r
147EFI_STATUS\r
148EmuGopInitializeSimplePointerForWindow (\r
a550d468 149 IN GOP_PRIVATE_DATA *Private\r
79e4f2a5
RN
150 );\r
151\r
152EFI_STATUS\r
153EmuGopStartWindow (\r
a550d468
MK
154 IN GOP_PRIVATE_DATA *Private,\r
155 IN UINT32 HorizontalResolution,\r
156 IN UINT32 VerticalResolution,\r
157 IN UINT32 ColorDepth,\r
158 IN UINT32 RefreshRate\r
79e4f2a5
RN
159 );\r
160\r
161VOID\r
162EFIAPI\r
163ShutdownGopEvent (\r
164 IN EFI_EVENT Event,\r
165 IN VOID *Context\r
166 );\r
167\r
168VOID\r
169EFIAPI\r
170GopPrivateMakeCallbackFunction (\r
a550d468
MK
171 IN VOID *Context,\r
172 IN EFI_KEY_DATA *KeyData\r
79e4f2a5
RN
173 );\r
174\r
175VOID\r
176EFIAPI\r
177GopPrivateBreakCallbackFunction (\r
a550d468
MK
178 IN VOID *Context,\r
179 IN EFI_KEY_DATA *KeyData\r
79e4f2a5
RN
180 );\r
181\r
182#endif\r