176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef _VGA_CLASS_H
276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _VGA_CLASS_H
376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*++
576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanCopyright (c) 1999  Intel Corporation
776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanModule Name:
976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    VgaClass.h
1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1276d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanAbstract:
1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    Vga Mini port binding to Vga Class protocol
1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanRevision History
1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman--*/
2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman//
2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// VGA Device Structure
2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman//
2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// {0E3D6310-6FE4-11d3-BB81-0080C73C8881}
2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define VGA_CLASS_DRIVER_PROTOCOL \
2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    { 0xe3d6310, 0x6fe4, 0x11d3, {0xbb, 0x81, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef
3176d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS
3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(* INIT_VGA_CARD) (
3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    IN  UINTN   VgaMode,
3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    IN  VOID    *Context
3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    );
3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct {
3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINTN   MaxColumns;
3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINTN   MaxRows;
4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} MAX_CONSOLE_GEOMETRY;
4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define VGA_CON_OUT_DEV_SIGNATURE   EFI_SIGNATURE_32('c','v','g','a')
4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct {
4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINTN                           Signature;
4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    EFI_HANDLE                      Handle;
4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    SIMPLE_TEXT_OUTPUT_INTERFACE    ConOut;
4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    SIMPLE_TEXT_OUTPUT_MODE         ConOutMode;
4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    EFI_DEVICE_PATH                 *DevicePath;
5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT8                           *Buffer;
5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    EFI_DEVICE_IO_INTERFACE         *DeviceIo;
5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    //
5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    // Video Card Context
5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    //
5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    INIT_VGA_CARD                   InitVgaCard;
5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    VOID                            *VgaCardContext;
5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    MAX_CONSOLE_GEOMETRY            *Geometry;
6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    //
6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    // Video buffer normally 0xb8000
6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    //
6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT64                          VideoBuffer;
6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    //
6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    // Clear Screen & Default Attribute
6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    //
6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT32                          Attribute;
6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    //
7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    // -1 means search for active VGA device
7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    //
7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    EFI_PCI_ADDRESS_UNION           Pci;
7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} VGA_CON_OUT_DEV;
7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
7676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define VGA_CON_OUT_DEV_FROM_THIS(a) CR(a, VGA_CON_OUT_DEV, ConOut, VGA_CON_OUT_DEV_SIGNATURE)
7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman//
7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// Vga Class Driver Protocol.
8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// GUID defined in EFI Lib
8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman//
8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef
8476d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS
8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *INSTALL_VGA_DRIVER) (
8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    IN  VGA_CON_OUT_DEV    *ConOutDev
8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    );
8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
8976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct {
9076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    UINT32               Version;
9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    INSTALL_VGA_DRIVER   InstallGenericVgaDriver;
9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} INSTALL_VGA_DRIVER_INTERFACE;
9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif
9576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
96