TianoCore EDK2 master
Loading...
Searching...
No Matches
Gop.h
1/*++ @file
2
3Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
4Portions copyright (c) 2010,Apple Inc. All rights reserved.<BR>
5SPDX-License-Identifier: BSD-2-Clause-Patent
6
7**/
8
9#ifndef __UGA_H_
10#define __UGA_H_
11
12#include <PiDxe.h>
13
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>
26#include <Library/UefiLib.h>
30#include <Library/KeyMapLib.h>
31
32#define MAX_Q 256
33
34typedef struct {
35 UINTN Front;
36 UINTN Rear;
37 UINTN Count;
38 EFI_INPUT_KEY Q[MAX_Q];
40
41#define EMU_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE SIGNATURE_32 ('U', 'g', 'S', 'n')
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;
50
51#define GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER 0xffff
52
53typedef struct {
54 UINT32 HorizontalResolution;
55 UINT32 VerticalResolution;
56 UINT32 ColorDepth;
57 UINT32 RefreshRate;
59
60extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding;
61extern 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')
66typedef struct {
67 UINT64 Signature;
68
69 EFI_HANDLE Handle;
70 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;
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
95 EFI_KEY_STATE KeyState;
96 LIST_ENTRY NotifyList;
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//
114extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding;
115extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName;
116extern EFI_COMPONENT_NAME2_PROTOCOL gEmuGopComponentName2;
117
118//
119// Gop Hardware abstraction internal worker functions
120//
122EmuGopSupported (
123 IN EMU_IO_THUNK_PROTOCOL *EmuIoThunk
124 );
125
127EmuGopConstructor (
128 IN GOP_PRIVATE_DATA *Private
129 );
130
132EmuGopDestructor (
133 IN GOP_PRIVATE_DATA *Private
134 );
135
137GopPrivateAddQ (
138 IN GOP_PRIVATE_DATA *Private,
139 IN EFI_INPUT_KEY Key
140 );
141
143EmuGopInitializeSimpleTextInForWindow (
144 IN GOP_PRIVATE_DATA *Private
145 );
146
148EmuGopInitializeSimplePointerForWindow (
149 IN GOP_PRIVATE_DATA *Private
150 );
151
153EmuGopStartWindow (
154 IN GOP_PRIVATE_DATA *Private,
155 IN UINT32 HorizontalResolution,
156 IN UINT32 VerticalResolution,
157 IN UINT32 ColorDepth,
158 IN UINT32 RefreshRate
159 );
160
161VOID
162EFIAPI
163ShutdownGopEvent (
164 IN EFI_EVENT Event,
165 IN VOID *Context
166 );
167
168VOID
169EFIAPI
170GopPrivateMakeCallbackFunction (
171 IN VOID *Context,
172 IN EFI_KEY_DATA *KeyData
173 );
174
175VOID
176EFIAPI
177GopPrivateBreakCallbackFunction (
178 IN VOID *Context,
179 IN EFI_KEY_DATA *KeyData
180 );
181
182#endif
UINT64 UINTN
#define IN
Definition: Base.h:279
EFI_STATUS(EFIAPI * EFI_KEY_NOTIFY_FUNCTION)(IN EFI_KEY_DATA *KeyData)
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
VOID * EFI_EVENT
Definition: UefiBaseType.h:37
VOID * EFI_HANDLE
Definition: UefiBaseType.h:33