mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-11-28 12:25:19 +01:00
95 lines
3.4 KiB
C
95 lines
3.4 KiB
C
|
/** @file
|
||
|
The VGA Mini Port Protocol used to set the text display mode of a VGA controller.
|
||
|
|
||
|
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||
|
This program and the accompanying materials are licensed and made available under
|
||
|
the terms and conditions of the BSD License that accompanies this distribution.
|
||
|
The full text of the license may be found at
|
||
|
http://opensource.org/licenses/bsd-license.php.
|
||
|
|
||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||
|
|
||
|
**/
|
||
|
|
||
|
#ifndef __VGA_MINI_PORT_H_
|
||
|
#define __VGA_MINI_PORT_H_
|
||
|
|
||
|
///
|
||
|
/// Global ID for the EFI_VGA_MINI_PORT_PROTOCOL.
|
||
|
///
|
||
|
#define EFI_VGA_MINI_PORT_PROTOCOL_GUID \
|
||
|
{ \
|
||
|
0xc7735a2f, 0x88f5, 0x4882, {0xae, 0x63, 0xfa, 0xac, 0x8c, 0x8b, 0x86, 0xb3 } \
|
||
|
}
|
||
|
|
||
|
///
|
||
|
/// Forward declaration for the EFI_VGA_MINI_PORT_PROTOCOL.
|
||
|
///
|
||
|
typedef struct _EFI_VGA_MINI_PORT_PROTOCOL EFI_VGA_MINI_PORT_PROTOCOL;
|
||
|
|
||
|
/**
|
||
|
Sets the text display mode of a VGA controller.
|
||
|
|
||
|
Sets the text display mode of the VGA controller to the mode specified by
|
||
|
ModeNumber. A ModeNumber of 0 is a request for an 80x25 text mode. A
|
||
|
ModeNumber of 1 is a request for an 80x50 text mode. If ModeNumber is greater
|
||
|
than MaxModeNumber, then EFI_UNSUPPORTED is returned. If the VGA controller
|
||
|
is not functioning properly, then EFI_DEVICE_ERROR is returned. If the VGA
|
||
|
controller is sucessfully set to the mode number specified by ModeNumber, then
|
||
|
EFI_SUCCESS is returned.
|
||
|
|
||
|
@param[in] This A pointer to the EFI_VGA_MINI_PORT_PROTOCOL instance.
|
||
|
@param[in] ModeNumber The requested mode number. 0 for 80x25. 1 for 80x5.
|
||
|
|
||
|
@retval EFI_SUCCESS The mode number was set.
|
||
|
@retval EFI_UNSUPPORTED The mode number specified by ModeNumber is not supported.
|
||
|
@retval EFI_DEVICE_ERROR The device is not functioning properly.
|
||
|
|
||
|
**/
|
||
|
typedef
|
||
|
EFI_STATUS
|
||
|
(EFIAPI *EFI_VGA_MINI_PORT_SET_MODE)(
|
||
|
IN EFI_VGA_MINI_PORT_PROTOCOL *This,
|
||
|
IN UINTN ModeNumber
|
||
|
);
|
||
|
|
||
|
struct _EFI_VGA_MINI_PORT_PROTOCOL {
|
||
|
EFI_VGA_MINI_PORT_SET_MODE SetMode;
|
||
|
///
|
||
|
/// MMIO base address of the VGA text mode framebuffer. Typically set to 0xB8000.
|
||
|
///
|
||
|
UINT64 VgaMemoryOffset;
|
||
|
///
|
||
|
/// I/O Port address for the VGA CRTC address register. Typically set to 0x3D4.
|
||
|
///
|
||
|
UINT64 CrtcAddressRegisterOffset;
|
||
|
///
|
||
|
/// I/O Port address for the VGA CRTC data register. Typically set to 0x3D5.
|
||
|
///
|
||
|
UINT64 CrtcDataRegisterOffset;
|
||
|
///
|
||
|
/// PCI Controller MMIO BAR index of the VGA text mode frame buffer. Typically
|
||
|
/// set to EFI_PCI_IO_PASS_THROUGH_BAR
|
||
|
///
|
||
|
UINT8 VgaMemoryBar;
|
||
|
///
|
||
|
/// PCI Controller I/O BAR index of the VGA CRTC address register. Typically
|
||
|
/// set to EFI_PCI_IO_PASS_THROUGH_BAR
|
||
|
///
|
||
|
UINT8 CrtcAddressRegisterBar;
|
||
|
///
|
||
|
/// PCI Controller I/O BAR index of the VGA CRTC data register. Typically set
|
||
|
/// to EFI_PCI_IO_PASS_THROUGH_BAR
|
||
|
///
|
||
|
UINT8 CrtcDataRegisterBar;
|
||
|
///
|
||
|
/// The maximum number of text modes that this VGA controller supports.
|
||
|
///
|
||
|
UINT8 MaxMode;
|
||
|
};
|
||
|
|
||
|
extern EFI_GUID gEfiVgaMiniPortProtocolGuid;
|
||
|
|
||
|
#endif
|