libsefi/protocols/console_support.h
Kevin Alavik d6fe5092e5
fix: MaxNode -> MaxMode
Signed-off-by: Kevin Alavik (puffer) <kevin@alavik.se>
2024-08-18 18:59:53 +02:00

620 lines
15 KiB
C

#ifndef EFI_PROTOCOLS_CONSOLE_SUPPORT_H
#define EFI_PROTOCOLS_CONSOLE_SUPPORT_H
////
// Simple Text Input Protocol
///
#define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID {0x387477c1,0x69c7,0x11d2, {0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
// EFI Scancodes
#define EFI_SCANCODE_NULL 0x00
#define EFI_SCANCODE_ARROW_UP 0x01
#define EFI_SCANCODE_ARROW_DOWN 0x02
#define EFI_SCANCODE_ARROW_RIGHT 0x03
#define EFI_SCANCODE_ARROW_LEFT 0x04
#define EFI_SCANCODE_HOME 0x05
#define EFI_SCANCODE_END 0x06
#define EFI_SCANCODE_INSERT 0x07
#define EFI_SCANCODE_DELETE 0x08
#define EFI_SCANCODE_PAGE_UP 0x09
#define EFI_SCANCODE_PAGE_DOWN 0x0A
#define EFI_SCANCODE_FN1 0x0B
#define EFI_SCANCODE_FN2 0x0C
#define EFI_SCANCODE_FN3 0x0D
#define EFI_SCANCODE_FN4 0x0E
#define EFI_SCANCODE_FN5 0x0F
#define EFI_SCANCODE_FN6 0x10
#define EFI_SCANCODE_FN7 0x11
#define EFI_SCANCODE_FN8 0x12
#define EFI_SCANCODE_FN9 0x13
#define EFI_SCANCODE_FN10 0x14
#define EFI_SCANCODE_ESC 0x17
// EFI special characters
#define EFI_CHAR_NULL 0x0000
#define EFI_CHAR_BACKSPACE 0x0008
#define EFI_CHAR_TAB 0x0009
#define EFI_CHAR_LINEFEED 0x000A
#define EFI_CHAR_CARRIAGE_RETURN 0x000D
typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
typedef struct {
EFI_UINT16 ScanCode;
CHAR16 UnicodeChar;
} EFI_INPUT_KEY;
typedef
EFI_STATUS
(EFIAPI *EFI_INPUT_READ_KEY)(
IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
OUT EFI_INPUT_KEY *Key
);
typedef
EFI_STATUS
(EFIAPI *EFI_INPUT_RESET)(
IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
IN EFI_BOOLEAN ExtendedVerification
);
typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL {
EFI_INPUT_RESET Reset;
EFI_INPUT_READ_KEY ReadKeyStroke;
EFI_EVENT WaitForKey;
} EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
////
// Simple Text Input Extended Protocol
///
#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID {0xdd9e7534,0x7762,0x4698, {0x8c,0x14,0xf5,0x85,0x17,0xa6,0x25,0xaa}}
// EFI Scancodes
#define EFI_SCANCODE_FN11 0x15
#define EFI_SCANCODE_FN12 0x16
#define EFI_SCANCODE_PAUSE 0x48
#define EFI_SCANCODE_FN13 0x68
#define EFI_SCANCODE_FN14 0x69
#define EFI_SCANCODE_FN15 0x6A
#define EFI_SCANCODE_FN16 0x6B
#define EFI_SCANCODE_FN17 0x6C
#define EFI_SCANCODE_FN18 0x6D
#define EFI_SCANCODE_FN19 0x6E
#define EFI_SCANCODE_FN20 0x6F
#define EFI_SCANCODE_FN21 0x70
#define EFI_SCANCODE_FN22 0x71
#define EFI_SCANCODE_FN23 0x72
#define EFI_SCANCODE_FN24 0x73
#define EFI_SCANCODE_VOLUME_MUTE 0x7F
#define EFI_SCANCODE_VOLUME_UP 0x80
#define EFI_SCANCODE_VOLUME_DOWN 0x81
#define EFI_SCANCODE_BRIGHTNESS_UP 0x100
#define EFI_SCANCODE_BRIGHTNESS_DOWN 0x101
#define EFI_SCANCODE_SUSPEND 0x102
#define EFI_SCANCODE_HIBERNATE 0x103
#define EFI_SCANCODE_TOGGLE_DISPLAY 0x104
#define EFI_SCANCODE_RECOVERY 0x105
#define EFI_SCANCODE_EJECT 0x106
#define EFI_SHIFT_STATE_VALID 0x80000000
#define EFI_RIGHT_SHIFT_PRESSED 0x00000001
#define EFI_LEFT_SHIFT_PRESSED 0x00000002
#define EFI_RIGHT_CONTROL_PRESSED 0x00000004
#define EFI_LEFT_CONTROL_PRESSED 0x00000008
#define EFI_RIGHT_ALT_PRESSED 0x00000010
#define EFI_LEFT_ALT_PRESSED 0x00000020
#define EFI_RIGHT_LOGO_PRESSED 0x00000040
#define EFI_LEFT_LOGO_PRESSED 0x00000080
#define EFI_MENU_KEY_PRESSED 0x00000100
#define EFI_SYS_REQ_PRESSED 0x00000200
#define EFI_TOGGLE_STATE_VALID 0x80
#define EFI_KEY_STATE_EXPOSED 0x40
#define EFI_SCROLL_LOCK_ACTIVE 0x01
#define EFI_NUM_LOCK_ACTIVE 0x02
#define EFI_CAPS_LOCK_ACTIVE 0x04
typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
// Key Toggle State
typedef EFI_UINT8 EFI_KEY_TOGGLE_STATE;
typedef struct {
EFI_UINT32 KeyShiftState;
EFI_KEY_TOGGLE_STATE KeyToggleState;
} EFI_KEY_STATE;
typedef struct {
EFI_INPUT_KEY Key;
EFI_KEY_STATE KeyState;
} EFI_KEY_DATA;
typedef
EFI_STATUS
(EFIAPI *EFI_INPUT_RESET_EX)(
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
IN EFI_BOOLEAN ExtendedVerification
);
typedef
EFI_STATUS
(EFIAPI *EFI_INPUT_READ_KEY_EX)(
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
OUT EFI_KEY_DATA *KeyData
);
typedef
EFI_STATUS
(EFIAPI *EFI_SET_STATE)(
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
IN EFI_KEY_TOGGLE_STATE *KeyToggleState
);
typedef
EFI_STATUS
(EFIAPI *EFI_KEY_NOTIFY_FUNCTION)(
IN EFI_KEY_DATA *KeyData
);
typedef
EFI_STATUS
(EFIAPI *EFI_REGISTER_KEYSTROKE_NOTIFY)(
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
IN EFI_KEY_DATA *KeyData,
IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction,
OUT VOID **NotifyHandle
);
typedef
EFI_STATUS
(EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY)(
IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
IN VOID *NotificationHandle
);
typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL {
EFI_INPUT_RESET_EX Reset;
EFI_INPUT_READ_KEY_EX ReadKeyStrokeEx;
EFI_EVENT WaitForKeyEx;
EFI_SET_STATE SetState;
EFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify;
EFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify;
} EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
////
// EFI Simple Text Output Protocol
///
#define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID {0x387477c2,0x69c7,0x11d2, {0x8e,0x39,0x00,0xa0,0xc9,0x69,0x72,0x3b}}
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
typedef
EFI_STATUS
(EFIAPI *EFI_TEXT_RESET)(
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
IN EFI_BOOLEAN ExtendedVerification
);
typedef
EFI_STATUS
(EFIAPI *EFI_TEXT_STRING)(
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
IN CHAR16 *String
);
typedef
EFI_STATUS
(EFIAPI *EFI_TEXT_TEST_STRING)(
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
IN CHAR16 *String
);
typedef
EFI_STATUS
(EFIAPI *EFI_TEXT_QUERY_MODE)(
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
IN EFI_UINTN ModeNumber,
OUT EFI_UINTN *Columns,
OUT EFI_UINTN *Rows
);
typedef
EFI_STATUS
(EFIAPI *EFI_TEXT_SET_MODE)(
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
IN EFI_UINTN ModeNumber
);
typedef
EFI_STATUS
(EFIAPI *EFI_TEXT_SET_ATTRIBUTE)(
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
IN EFI_UINTN Attribute
);
typedef
EFI_STATUS
(EFIAPI *EFI_TEXT_CLEAR_SCREEN)(
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This
);
typedef
EFI_STATUS
(EFIAPI *EFI_TEXT_SET_CURSOR_POSITION)(
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
IN EFI_UINTN Column,
IN EFI_UINTN Row
);
typedef
EFI_STATUS
(EFIAPI *EFI_TEXT_ENABLE_CURSOR)(
IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
IN EFI_BOOLEAN Visible
);
typedef struct {
EFI_INT32 MaxMode;
// Current settings
EFI_INT32 Mode;
EFI_INT32 Attribute;
EFI_INT32 CursorColumn;
EFI_INT32 CursorRow;
EFI_BOOLEAN CursorVisible;
} SIMPLE_TEXT_OUTPUT_MODE;
typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
EFI_TEXT_RESET Reset;
EFI_TEXT_STRING OutputString;
EFI_TEXT_TEST_STRING TestString;
EFI_TEXT_QUERY_MODE QueryMode;
EFI_TEXT_SET_MODE SetMode;
EFI_TEXT_SET_ATTRIBUTE SetAttribute;
EFI_TEXT_CLEAR_SCREEN ClearScreen;
EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
EFI_TEXT_ENABLE_CURSOR EnableCursor;
SIMPLE_TEXT_OUTPUT_MODE *Mode;
} EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
////
// EFI Simple Pointer Protocol
///
#define EFI_SIMPLE_POINTER_PROTOCOL_GUID {0x31878c87,0xb75,0x11d5, {0x9a,0x4f,0x00,0x90,0x27,0x3f,0xc1,0x4d}}
typedef struct _EFI_SIMPLE_POINTER_PROTOCOL EFI_SIMPLE_POINTER_PROTOCOL;
typedef struct {
EFI_UINT64 ResolutionX;
EFI_UINT64 ResolutionY;
EFI_UINT64 ResolutionZ;
EFI_BOOLEAN LeftButton;
EFI_BOOLEAN RightButton;
} EFI_SIMPLE_POINTER_MODE;
typedef struct {
EFI_INT32 RelativeMovementX;
EFI_INT32 RelativeMovementY;
EFI_INT32 RelativeMovementZ;
EFI_BOOLEAN LeftButton;
EFI_BOOLEAN RightButton;
} EFI_SIMPLE_POINTER_STATE;
typedef
EFI_STATUS
(EFIAPI *EFI_SIMPLE_POINTER_RESET)(
IN EFI_SIMPLE_POINTER_PROTOCOL *This,
IN EFI_BOOLEAN ExtendedVerification
);
typedef
EFI_STATUS
(EFIAPI *EFI_SIMPLE_POINTER_GET_STATE)(
IN EFI_SIMPLE_POINTER_PROTOCOL *This,
OUT EFI_SIMPLE_POINTER_STATE *State
);
typedef struct _EFI_SIMPLE_POINTER_PROTOCOL {
EFI_SIMPLE_POINTER_RESET Reset;
EFI_SIMPLE_POINTER_GET_STATE GetState;
EFI_EVENT WaitForInput;
EFI_SIMPLE_POINTER_MODE *Mode;
} EFI_SIMPLE_POINTER_PROTOCOL;
////
// Absolute Pointer Protocol
///
#define EFI_ABSOLUTE_POINTER_PROTOCOL_GUID {0x8d59d32b,0xc655,0x4ae9, {0x9b,0x15,0xf2,0x59,0x04,0x99,0x2a,0x43}}
#define EFI_ABSP_SupportsAltActive 0x00000001
#define EFI_ABSP_SupportsPressureAsZ 0x00000002
#define EFI_ABSP_TouchActive 0x00000001
#define EFI_ABS_AltActive 0x00000002
typedef struct _EFI_ABSOLUTE_POINTER_PROTOCOL EFI_ABSOLUTE_POINTER_PROTOCOL;
typedef struct {
EFI_UINT64 AbsoluteMinX;
EFI_UINT64 AbsoluteMinY;
EFI_UINT64 AbsoluteMinZ;
EFI_UINT64 AbsoluteMaxX;
EFI_UINT64 AbsoluteMaxY;
EFI_UINT64 AbsoluteMaxZ;
EFI_UINT32 Attributes;
} EFI_ABSOLUTE_POINTER_MODE;
typedef struct {
EFI_UINT64 CurrentX;
EFI_UINT64 CurrentY;
EFI_UINT64 CurrentZ;
EFI_UINT32 ActiveButtons;
} EFI_ABSOLUTE_POINTER_STATE;
typedef
EFI_STATUS
(EFIAPI *EFI_ABSOLUTE_POINTER_RESET)(
IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,
IN EFI_BOOLEAN ExtendedVerification
);
typedef
EFI_STATUS
(EFIAPI *EFI_ABSOLUTE_POINTER_GET_STATE)(
IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,
OUT EFI_ABSOLUTE_POINTER_STATE *State
);
typedef struct _EFI_ABSOLUTE_POINTER_PROTOCOL {
EFI_ABSOLUTE_POINTER_RESET Reset;
EFI_ABSOLUTE_POINTER_GET_STATE GetState;
EFI_EVENT WaitForInput;
EFI_ABSOLUTE_POINTER_MODE *Mode;
} EFI_ABSOLUTE_POINTER_PROTOCOL;
////
// Serial I/O Protocol
///
#define EFI_SERIAL_IO_PROTOCOL_GUID {0xbb25cf6f,0xf1d4,0x11d2, {0x9a,0x0c,0x00,0x90,0x27,0x3f,0xc1,0xfd}}
#define EFI_SERIAL_TERMINAL_DEVICE_TYPE_GUID {0x6ad9a60f,0x5815,0x4c7c, {0x8a,0x10,0x50,0x53,0xd2,0xbf,0x7a,0x1b}}
#define EFI_SERIAL_IO_PROTOCOL_REVISION 0x00010000
#define EFI_SERIAL_IO_PROTOCOL_REVISION1p1 0x00010001
#define EFI_SERIAL_CLEAR_TO_SEND 0x0010
#define EFI_SERIAL_DATA_SET_READY 0x0020
#define EFI_SERIAL_RING_INDICATE 0x0040
#define EFI_SERIAL_CARRIER_DETECT 0x0080
#define EFI_SERIAL_REQUEST_TO_SEND 0x0002
#define EFI_SERIAL_DATA_TERMINAL_READY 0x0001
#define EFI_SERIAL_INPUT_BUFFER_EMPTY 0x0100
#define EFI_SERIAL_OUTPUT_BUFFER_EMPTY 0x0200
#define EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE 0x1000
#define EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE 0x2000
#define EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE 0x4000
typedef struct _EFI_SERIAL_IO_PROTOCOL EFI_SERIAL_IO_PROTOCOL;
typedef enum {
DefaultParity,
NoParity,
EvenParity,
OddParity,
MarkParity,
SpaceParity
} EFI_PARITY_TYPE;
typedef enum {
DefaultStopBits,
OneStopBit,
OneFiveStopBits,
TwoStopBits
} EFI_STOP_BITS_TYPE;
typedef struct {
EFI_UINT32 ControlMask;
// Current Attributes
EFI_UINT32 Timeout;
EFI_UINT64 BaudRate;
EFI_UINT32 ReceiveFifoDepth;
EFI_UINT32 DataBits;
EFI_UINT32 Parity;
EFI_UINT32 StopBits;
} SERIAL_IO_MODE;
typedef
EFI_STATUS
(EFIAPI *EFI_SERIAL_RESET)(
IN EFI_SERIAL_IO_PROTOCOL *This
);
typedef
EFI_STATUS
(EFIAPI *EFI_SERIAL_SET_ATTRIBUTES)(
IN EFI_SERIAL_IO_PROTOCOL *This,
IN EFI_UINT64 BaudRate,
IN EFI_UINT32 ReceiveFifoDepth,
IN EFI_UINT32 Timeout,
IN EFI_PARITY_TYPE Parity,
IN EFI_UINT8 DataBits,
IN EFI_STOP_BITS_TYPE StopBits
);
typedef
EFI_STATUS
(EFIAPI *EFI_SERIAL_SET_CONTROL_BITS)(
IN EFI_SERIAL_IO_PROTOCOL *This,
IN EFI_UINT32 Control
);
typedef
EFI_STATUS
(EFIAPI *EFI_SERIAL_GET_CONTROL_BITS)(
IN EFI_SERIAL_IO_PROTOCOL *This,
OUT EFI_UINT32 *Control
);
typedef
EFI_STATUS
(EFIAPI *EFI_SERIAL_WRITE)(
IN EFI_SERIAL_IO_PROTOCOL *This,
IN OUT EFI_UINTN *BufferSize,
IN VOID *Buffer
);
typedef
EFI_STATUS
(EFIAPI *EFI_SERIAL_READ)(
IN EFI_SERIAL_IO_PROTOCOL *This,
IN OUT EFI_UINTN *BufferSize,
OUT VOID *Buffer
);
typedef struct _EFI_SERIAL_IO_PROTOCOL {
EFI_UINT32 Revision;
EFI_SERIAL_RESET Reset;
EFI_SERIAL_SET_ATTRIBUTES SetAttributes;
EFI_SERIAL_SET_CONTROL_BITS SetControl;
EFI_SERIAL_GET_CONTROL_BITS GetControl;
EFI_SERIAL_WRITE Write;
EFI_SERIAL_READ Read;
SERIAL_IO_MODE *Mode;
// Revision 1.1
CONST EFI_GUID *DeviceTypeGuid;
} EFI_SERIAL_IO_PROTOCOL;
////
// Graphics Output Protocol
///
#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID {0x9042a9de,0x23dc,0x4a38, {0x96,0xfb,0x7a,0xde,0xd0,0x80,0x51,0x6a}}
#define EFI_EDID_DISCOVERED_PROTOCOL_GUID {0x1c0c34f6,0xd380,0x41fa, {0xa0,0x49,0x8a,0xd0,0x6c,0x1a,0x66,0xaa}}
#define EFI_EDID_ACTIVE_PROTOCOL_GUID {0xbd8c1056,0x9f36,0x44ec, {0x92,0xa8,0xa6,0x33,0x7f,0x81,0x79,0x86}}
#define EFI_EDID_OVERRIDE_PROTOCOL_GUID {0x48ecb431,0xfb72,0x45c0, {0xa9,0x22,0xf4,0x58,0xfe,0x04,0x0b,0xd5}}
#define EFI_EDID_OVERRIDE_DONT_OVERRIDE 0x01
#define EFI_EDID_OVERRIDE_ENABLE_HOT_PLUG 0x02
typedef struct _EFI_GRAPHICS_OUTPUT_PROTCOL EFI_GRAPHICS_OUTPUT_PROTOCOL;
typedef enum {
PixelRedGreenBlueReserved8BitPerColor,
PixelBlueGreenRedReserved8BitPerColor,
PixelBitMask,
PixelBltOnly,
PixelFormatMax
} EFI_GRAPHICS_PIXEL_FORMAT;
typedef enum {
EfiBltVideoFill,
EfiBltVideoToBltBuffer,
EfiBltBufferToVideo,
EfiBltVideoToVideo,
EfiGraphicsOutputBltOperationMax
} EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
typedef struct {
EFI_UINT32 RedMask;
EFI_UINT32 GreenMask;
EFI_UINT32 BlueMask;
EFI_UINT32 ReservedMask;
} EFI_PIXEL_BITMASK;
typedef struct {
EFI_UINT32 Version;
EFI_UINT32 HorizontalResolution;
EFI_UINT32 VerticalResolution;
EFI_GRAPHICS_PIXEL_FORMAT PixelFormat;
EFI_PIXEL_BITMASK PixelInformation;
EFI_UINT32 PixelsPerScanLine;
} EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
typedef struct {
EFI_UINT32 MaxMode;
EFI_UINT32 Mode;
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;
EFI_UINTN SizeOfInfo;
EFI_PHYSICAL_ADDRESS FrameBufferBase;
EFI_UINTN FrameBufferSize;
} EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
typedef struct {
EFI_UINT8 Blue;
EFI_UINT8 Green;
EFI_UINT8 Red;
EFI_UINT8 Reserved;
} EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
typedef
EFI_STATUS
(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE)(
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
IN EFI_UINT32 ModeNumber,
OUT EFI_UINTN *SizeOfInfo,
OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info
);
typedef
EFI_STATUS
(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE)(
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
IN EFI_UINT32 ModeNumber
);
typedef
EFI_STATUS
(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT)(
IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL
IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
IN EFI_UINTN SourceX,
IN EFI_UINTN SourceY,
IN EFI_UINTN DestinationX,
IN EFI_UINTN DestinationY,
IN EFI_UINTN Width,
IN EFI_UINTN Height,
IN EFI_UINTN Delta OPTIONAL
);
typedef struct _EFI_GRAPHICS_OUTPUT_PROTCOL {
EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE QueryMode;
EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE SetMode;
EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT Blt;
EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode;
} EFI_GRAPHICS_OUTPUT_PROTOCOL;
typedef struct _EFI_EDID_DISCOVERED_PROTOCOL {
EFI_UINT32 SizeOfEdid;
EFI_UINT8 *Edid;
} EFI_EDID_DISCOVERED_PROTOCOL;
typedef struct _EFI_EDID_ACTIVE_PROTOCOL {
EFI_UINT32 SizeOfEdid;
EFI_UINT8 *Edid;
} EFI_EDID_ACTIVE_PROTOCOL;
typedef struct _EFI_EDID_OVERRIDE_PROTOCOL EFI_EDID_OVERRIDE_PROTOCOL;
typedef
EFI_STATUS
(EFIAPI *EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID)(
IN EFI_EDID_OVERRIDE_PROTOCOL *This,
IN EFI_HANDLE *ChildHandle,
OUT EFI_UINT32 *Attributes,
OUT EFI_UINTN *EdidSize,
OUT EFI_UINT8 **Edid
);
typedef struct _EFI_EDID_OVERRIDE_PROTOCOL {
EFI_EDID_OVERRIDE_PROTOCOL_GET_EDID GetEdid;
} EFI_EDID_OVERRIDE_PROTOCOL;
#endif /* EFI_PROTOCOLS_CONSOLE_SUPPORT_H */