/** @file
  Type definitions related to the VBE (VESA BIOS Extension, Int10h AH=4Fh)
  services GET INFORMATION (AL=00h) and GET MODE INFORMATION (AL=01h).

  For reference, see Ralf Brown's Interrupt List:
  <http://www.cs.cmu.edu/~ralf/files.html>
  <http://www.ctyme.com/rbrown.htm>

  Copyright (C) 2014, Red Hat, Inc.

  This program and the accompanying materials are licensed and made available
  under the terms and conditions of the BSD License which 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 __LEGACY_VGA_BIOS_H__
#define __LEGACY_VGA_BIOS_H__

#include <Base.h>

#pragma pack (1)
typedef struct {
  UINT8  Signature[4];
  UINT16 VesaVersion;
  UINT32 OemNameAddress;
  UINT32 Capabilities;
  UINT32 ModeListAddress;
  UINT16 VideoMem64K;
  UINT16 OemSoftwareVersion;
  UINT32 VendorNameAddress;
  UINT32 ProductNameAddress;
  UINT32 ProductRevAddress;
} VBE_INFO_BASE;

typedef struct {
  VBE_INFO_BASE  Base;
  UINT8          Buffer[256 - sizeof (VBE_INFO_BASE)];
} VBE_INFO;

typedef struct {
  UINT16 ModeAttr;
  UINT8  WindowAAttr;
  UINT8  WindowBAttr;
  UINT16 WindowGranularityKB;
  UINT16 WindowSizeKB;
  UINT16 WindowAStartSegment;
  UINT16 WindowBStartSegment;
  UINT32 WindowPositioningAddress;
  UINT16 BytesPerScanLine;

  UINT16 Width;
  UINT16 Height;
  UINT8  CharCellWidth;
  UINT8  CharCellHeight;
  UINT8  NumPlanes;
  UINT8  BitsPerPixel;
  UINT8  NumBanks;
  UINT8  MemoryModel;
  UINT8  BankSizeKB;
  UINT8  NumImagePagesLessOne;
  UINT8  Vbe3;

  UINT8  RedMaskSize;
  UINT8  RedMaskPos;
  UINT8  GreenMaskSize;
  UINT8  GreenMaskPos;
  UINT8  BlueMaskSize;
  UINT8  BlueMaskPos;
  UINT8  ReservedMaskSize;
  UINT8  ReservedMaskPos;
  UINT8  DirectColorModeInfo;

  UINT32 LfbAddress;
  UINT32 OffScreenAddress;
  UINT16 OffScreenSizeKB;

  UINT16 BytesPerScanLineLinear;
  UINT8  NumImagesLessOneBanked;
  UINT8  NumImagesLessOneLinear;
  UINT8  RedMaskSizeLinear;
  UINT8  RedMaskPosLinear;
  UINT8  GreenMaskSizeLinear;
  UINT8  GreenMaskPosLinear;
  UINT8  BlueMaskSizeLinear;
  UINT8  BlueMaskPosLinear;
  UINT8  ReservedMaskSizeLinear;
  UINT8  ReservedMaskPosLinear;
  UINT32 MaxPixelClockHz;
  UINT8  Reserved[190];
} VBE_MODE_INFO;
#pragma pack ()

#endif
