/** @file
794E15D9-BF1B-4568-99AC-DCE207C022E4.h -- Header for 794E15D9-BF1B-4568-99AC-DCE207C022E4
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __794E15D9-BF1B-4568-99AC-DCE207C022E4_H__
#define __794E15D9-BF1B-4568-99AC-DCE207C022E4_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
AspGraphicsDriverBindingSupported(
VOID
);
EFI_STATUS
EFIAPI
AspGraphicsDriverBindingStart(
VOID
);
EFI_STATUS
EFIAPI
AspGraphicsDriverBindingStop(
VOID
);
EFI_STATUS
EFIAPI
AspGraphicsComponentNameGetDriverName(
VOID
);
EFI_STATUS
EFIAPI
AspGraphicsComponentNameGetControllerName(
VOID
);
EFI_STATUS
EFIAPI
_ModuleEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
AspGraphicsDriverEntry(
VOID
);
EFI_STATUS
EFIAPI
AspGraphicsQueryMode(
VOID
);
EFI_STATUS
EFIAPI
AspGraphicsSetMode(
VOID
);
EFI_STATUS
EFIAPI
AspGraphicsBlt(
VOID
);
EFI_STATUS
EFIAPI
AspInitDisplayHardware(
VOID
);
EFI_STATUS
EFIAPI
AspInitModeTable(
VOID
);
EFI_STATUS
EFIAPI
AspInstallGopProtocol(
VOID
);
EFI_STATUS
EFIAPI
Definitions(
VOID
);
EFI_STATUS
EFIAPI
gAspGraphicsOutputProtocolGuid =(
VOID
);
EFI_STATUS
EFIAPI
Globals(
VOID
);
EFI_STATUS
EFIAPI
gImageHandle = NULL;(
VOID
);
EFI_STATUS
EFIAPI
declarations(
VOID
);
EFI_STATUS
EFIAPI
EFIAPI(
VOID
);
EFI_STATUS
EFIAPI
Name prototype(
VOID
);
EFI_STATUS
EFIAPI
Binding Protocol instance(
VOID
);
EFI_STATUS
EFIAPI
gAspGraphicsDriverBinding = {(
VOID
);
EFI_STATUS
EFIAPI
NULL, // ImageHandle (set at entry)(
VOID
);
EFI_STATUS
EFIAPI
(set at entry)(
VOID
);
EFI_STATUS
EFIAPI
Name Protocol instance(
VOID
);
EFI_STATUS
EFIAPI
gAspGraphicsComponentName2 = {(
VOID
);
EFI_STATUS
EFIAPI
Languages(
VOID
);
EFI_STATUS
EFIAPI
Entry Point(
VOID
);
EFI_STATUS
EFIAPI
binding version(
VOID
);
EFI_STATUS
EFIAPI
Driver Binding Protocol + Component Name + ASPEED Video Protocol(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->InstallMultipleProtocolInterfaces ((
VOID
);
EFI_STATUS
EFIAPI
&gAspVideoProtocolGuid(
VOID
);
EFI_STATUS
EFIAPI
NULL(
VOID
);
EFI_STATUS
EFIAPI
Component Name protocol(
VOID
);
EFI_STATUS
EFIAPI
Binding Protocol: Supported(
VOID
);
EFI_STATUS
EFIAPI
the ASPEED video protocol to check if this controller(
VOID
);
EFI_STATUS
EFIAPI
already managed by us(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->OpenProtocol ((
VOID
);
EFI_STATUS
EFIAPI
treated as child(
VOID
);
EFI_STATUS
EFIAPI
This->DriverBindingHandle(
VOID
);
EFI_STATUS
EFIAPI
have the protocol - check signature(
VOID
);
EFI_STATUS
EFIAPI
*Private = CR (Interface, ASPEED_PRIVATE_DATA, ProtocolHandle, ASPEED_PRIVATE_DATA_SIGNATURE);(
VOID
);
EFI_STATUS
EFIAPI
if the controller supports the ASPEED video protocol(
VOID
);
EFI_STATUS
EFIAPI
trying to open it(
VOID
);
EFI_STATUS
EFIAPI
Binding Protocol: Start(
VOID
);
EFI_STATUS
EFIAPI
private context structure (752 bytes)(
VOID
);
EFI_STATUS
EFIAPI
= (ASPEED_PRIVATE_DATA *)AspAllocateZeroPool (sizeof (ASPEED_PRIVATE_DATA));(
VOID
);
EFI_STATUS
EFIAPI
signature(
VOID
);
EFI_STATUS
EFIAPI
PCI IO protocol on the controller(
VOID
);
EFI_STATUS
EFIAPI
ASPEED hardware (enable memory space, detect display type)(
VOID
);
EFI_STATUS
EFIAPI
(Private);(
VOID
);
EFI_STATUS
EFIAPI
display type using scratch registers(
VOID
);
EFI_STATUS
EFIAPI
check if display override provided(
VOID
);
EFI_STATUS
EFIAPI
(RemainingDevicePath == NULL) {(
VOID
);
EFI_STATUS
EFIAPI
scratch register for display type detection(
VOID
);
EFI_STATUS
EFIAPI
= AspCrtcRead (Private, ASPEED_REG_SEQUENCER);(
VOID
);
EFI_STATUS
EFIAPI
display detected - check for DPMS override(
VOID
);
EFI_STATUS
EFIAPI
mode table from EDID(
VOID
);
EFI_STATUS
EFIAPI
= AspInitModeTable (Private);(
VOID
);
EFI_STATUS
EFIAPI
GOP protocol (QueryMode, SetMode, Blt)(
VOID
);
EFI_STATUS
EFIAPI
= AspInstallGopProtocol (Private);(
VOID
);
EFI_STATUS
EFIAPI
protocols on the controller(
VOID
);
EFI_STATUS
EFIAPI
protocol instance(
VOID
);
EFI_STATUS
EFIAPI
path(
VOID
);
EFI_STATUS
EFIAPI
protocol(
VOID
);
EFI_STATUS
EFIAPI
the protocol on the child handle (RemainingDevicePath)(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->InstallProtocolInterface ((
VOID
);
EFI_STATUS
EFIAPI
on failure(
VOID
);
EFI_STATUS
EFIAPI
(Private->PciIo != NULL) {(
VOID
);
EFI_STATUS
EFIAPI
PCI config(
VOID
);
EFI_STATUS
EFIAPI
Binding Protocol: Stop(
VOID
);
EFI_STATUS
EFIAPI
bytes for PCI config read(
VOID
);
EFI_STATUS
EFIAPI
the ASPEED video protocol on the controller(
VOID
);
EFI_STATUS
EFIAPI
PCI configuration(
VOID
);
EFI_STATUS
EFIAPI
(Private[10] != 0) { // saved PCI config(
VOID
);
EFI_STATUS
EFIAPI
if we need to restore PCI config(
VOID
);
EFI_STATUS
EFIAPI
= AspGraphicsCheckAndVerify (ControllerHandle, v7);(
VOID
);
EFI_STATUS
EFIAPI
and restore(
VOID
);
EFI_STATUS
EFIAPI
((VOID *)Private[2]); // close PCI IO(
VOID
);
EFI_STATUS
EFIAPI
Output Protocol: QueryMode(
VOID
);
EFI_STATUS
EFIAPI
= CR (This, ASPEED_PRIVATE_DATA, GopMode, ASPEED_PRIVATE_DATA_SIGNATURE);(
VOID
);
EFI_STATUS
EFIAPI
mode info structure(
VOID
);
EFI_STATUS
EFIAPI
= AspAllocatePool (sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION));(
VOID
);
EFI_STATUS
EFIAPI
in mode info from the mode configuration table(
VOID
);
EFI_STATUS
EFIAPI
pixel format and bitmasks based on color depth(
VOID
);
EFI_STATUS
EFIAPI
(Private, ModeNumber, ModeInfo);(
VOID
);
EFI_STATUS
EFIAPI
Output Protocol: SetMode(
VOID
);
EFI_STATUS
EFIAPI
existing frame buffer if any(
VOID
);
EFI_STATUS
EFIAPI
= (VOID *)(UINTN)Private->FrameBufferBase;(
VOID
);
EFI_STATUS
EFIAPI
frame buffer size(
VOID
);
EFI_STATUS
EFIAPI
= Private->ModeConfigTable[ModeNumber].HorizontalResolution;(
VOID
);
EFI_STATUS
EFIAPI
frame buffer(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->AllocatePages ((
VOID
);
EFI_STATUS
EFIAPI
the CRTC registers for the requested mode(
VOID
);
EFI_STATUS
EFIAPI
(Private, &gAspModeTable[ModeNumber]);(
VOID
);
EFI_STATUS
EFIAPI
mode structure(
VOID
);
EFI_STATUS
EFIAPI
pixel format(
VOID
);
EFI_STATUS
EFIAPI
= This->Mode->Info;(
VOID
);
EFI_STATUS
EFIAPI
the frame buffer address in hardware(
VOID
);
EFI_STATUS
EFIAPI
hardware registers(
VOID
);
EFI_STATUS
EFIAPI
(Private, This->Mode);(
VOID
);
EFI_STATUS
EFIAPI
Output Protocol: Blt (BitBLT)(
VOID
);
EFI_STATUS
EFIAPI
bounds(
VOID
);
EFI_STATUS
EFIAPI
= This->Mode->Info->HorizontalResolution;(
VOID
);
EFI_STATUS
EFIAPI
Fill: Fill a rectangle with a solid color(
VOID
);
EFI_STATUS
EFIAPI
((BltBuffer == NULL) || (DestinationX + Width > FbWidth) ||(
VOID
);
/// implemented with
EFI_STATUS
EFIAPI
via VideoToVideo or direct draw(
VOID
);
EFI_STATUS
EFIAPI
of a 1-pixel wide brush(
VOID
);
EFI_STATUS
EFIAPI
to BLT Buffer: Read from frame buffer(
VOID
);
EFI_STATUS
EFIAPI
((BltBuffer == NULL) || (SourceX + Width > FbWidth) ||(
VOID
);
EFI_STATUS
EFIAPI
line by line (bottom-up in VGA)(
VOID
);
EFI_STATUS
EFIAPI
to Video: Copy within frame buffer(
VOID
);
EFI_STATUS
EFIAPI
accelerated via ASPEED FIFO registers(
VOID
);
EFI_STATUS
EFIAPI
initialization sequence(
VOID
);
EFI_STATUS
EFIAPI
1: Mask sequencer interrupts(
VOID
);
EFI_STATUS
EFIAPI
= 1;(
VOID
);
EFI_STATUS
EFIAPI
2: Program CRTC clocking (register 0x42 = 35, CRTC index)(
VOID
);
EFI_STATUS
EFIAPI
= 35;(
VOID
);
EFI_STATUS
EFIAPI
3: Set horizontal total (register 0x42 = offset 84 = HTOTAL)(
VOID
);
EFI_STATUS
EFIAPI
AspCrtcWrite16 (Private, ASPEED_REG_CRTC, 84, RegPair);(
VOID
);
EFI_STATUS
EFIAPI
4: Set horizontal display enable end(
VOID
);
EFI_STATUS
EFIAPI
ASPEED timing(
VOID
);
EFI_STATUS
EFIAPI
5: Clear vertical sync interrupt(
VOID
);
EFI_STATUS
EFIAPI
(Private, ASPEED_REG_SEQUENCER, 964, 33);(
VOID
);
EFI_STATUS
EFIAPI
6: Program gamma/palette for index values 0x81-0x9E(
VOID
);
EFI_STATUS
EFIAPI
(Index = 0x81; Index <= 0x9E; Index++) {(
VOID
);
EFI_STATUS
EFIAPI
7: Palette table (VGA DAC data at 0x6C70)(
VOID
);
EFI_STATUS
EFIAPI
= (UINT8 *)&unk_6C70;(
VOID
);
EFI_STATUS
EFIAPI
8: Enable CRTC display(
VOID
);
EFI_STATUS
EFIAPI
(Private, ASPEED_REG_CRTC, 980, 0x8C);(
VOID
);
EFI_STATUS
EFIAPI
9: Set display mode flags(
VOID
);
EFI_STATUS
EFIAPI
(Private, ASPEED_REG_CRTC, 980, 0x90);(
VOID
);
EFI_STATUS
EFIAPI
10: Check if display mode register needs PLL programming(
VOID
);
EFI_STATUS
EFIAPI
((AspCrtcRead (Private, ASPEED_REG_CRTC, 980, 0xD0) & 0xC0) == 0) {(
VOID
);
EFI_STATUS
EFIAPI
PLL registers (MMIO at 0x1E600000 + offset)(
VOID
);
EFI_STATUS
EFIAPI
(Private, ASPEED_HW_BASE + 0x1E60000, 0xAE000000);(
VOID
);
EFI_STATUS
EFIAPI
11: Poll display status ready(
VOID
);
EFI_STATUS
EFIAPI
12: Program misc CRTC register 0xB3(
VOID
);
EFI_STATUS
EFIAPI
(Private, ASPEED_REG_CRTC, 980, 0xCF);(
VOID
);
EFI_STATUS
EFIAPI
13: Set GPIO/strap register for display(
VOID
);
EFI_STATUS
EFIAPI
(Private, ASPEED_REG_CRTC, 980, 0xA4);(
VOID
);
EFI_STATUS
EFIAPI
14: Enable MMIO access(
VOID
);
EFI_STATUS
EFIAPI
(Private, ASPEED_MMIO_CTRL, 0xF2000000);(
VOID
);
EFI_STATUS
EFIAPI
15: Restore DPMS(
VOID
);
EFI_STATUS
EFIAPI
table initialization(
VOID
);
EFI_STATUS
EFIAPI
EDID (Extended Display Identification Data)(
VOID
);
EFI_STATUS
EFIAPI
EDID retrieval(
VOID
);
EFI_STATUS
EFIAPI
= AspGetEdidInfo (Private, &MonitorType, &NumModes);(
VOID
);
EFI_STATUS
EFIAPI
unavailable, use built-in mode table(
VOID
);
EFI_STATUS
EFIAPI
= 0;(
VOID
);
EFI_STATUS
EFIAPI
display type from scratch register(
VOID
);
EFI_STATUS
EFIAPI
= AspCrtcRead (Private, ASPEED_REG_CRTC, 980, 0xD0);(
VOID
);
EFI_STATUS
EFIAPI
display flags based on available monitors(
VOID
);
EFI_STATUS
EFIAPI
detected(
VOID
);
EFI_STATUS
EFIAPI
modes: each mode entry has flags indicating compatibility(
VOID
);
EFI_STATUS
EFIAPI
= (UINT8 *)&gAspModeTable[0];(
VOID
);
EFI_STATUS
EFIAPI
mode by capabilities:(
VOID
);
EFI_STATUS
EFIAPI
(((ModeFlag & ASPEED_MODE_FLAG_ANALOG) && !MonitorTypeAnalog) ||(
VOID
);
EFI_STATUS
EFIAPI
this mode(
VOID
);
EFI_STATUS
EFIAPI
known hardware limits(
VOID
);
EFI_STATUS
EFIAPI
mode to the private mode table(
VOID
);
EFI_STATUS
EFIAPI
the Graphics Output Protocol(
VOID
);
EFI_STATUS
EFIAPI
GOP function table(
VOID
);
EFI_STATUS
EFIAPI
= gBootServices->AllocatePool ((
VOID
);
EFI_STATUS
EFIAPI
mode info structure within the GOP mode(
VOID
);
EFI_STATUS
EFIAPI
GOP mode structure(
VOID
);
EFI_STATUS
EFIAPI
*((UINT32 *)((EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *)((EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *)GopModeInfo)->Info) + 1) = 0xFFFF; // Mode (invalid)(
VOID
);
EFI_STATUS
EFIAPI
mode set yet(
VOID
);
EFI_STATUS
EFIAPI
mode to mode 0 (default)(
VOID
);
EFI_STATUS
EFIAPI
((
VOID
);
#endif /* __794E15D9-BF1B-4568-99AC-DCE207C022E4_H__ */