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