mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-11-30 12:43:41 +01:00
181 lines
8.5 KiB
C
181 lines
8.5 KiB
C
|
/****************************************************************************/
|
||
|
/*Portion I: Definitions shared between VBIOS and Driver */
|
||
|
/****************************************************************************/
|
||
|
|
||
|
|
||
|
#ifndef _SHORT_ATOMBIOS_H
|
||
|
#define _SHORT_ATOMBIOS_H
|
||
|
|
||
|
#define ATOM_VERSION_MAJOR 0x00020000
|
||
|
#define ATOM_VERSION_MINOR 0x00000002
|
||
|
|
||
|
#define ATOM_HEADER_VERSION (ATOM_VERSION_MAJOR | ATOM_VERSION_MINOR)
|
||
|
|
||
|
|
||
|
|
||
|
#pragma pack(1) /* BIOS data must use byte aligment */
|
||
|
|
||
|
/* Define offset to location of ROM header. */
|
||
|
|
||
|
#define OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER 0x00000048L
|
||
|
#define OFFSET_TO_ATOM_ROM_IMAGE_SIZE 0x00000002L
|
||
|
|
||
|
typedef struct _ATOM_COMMON_TABLE_HEADER
|
||
|
{
|
||
|
UINT16 usStructureSize;
|
||
|
UINT8 ucTableFormatRevision; /*Change it when the Parser is not backward compatible */
|
||
|
UINT8 ucTableContentRevision; /*Change it only when the table needs to change but the firmware */
|
||
|
/*Image can't be updated, while Driver needs to carry the new table! */
|
||
|
} ATOM_COMMON_TABLE_HEADER;
|
||
|
|
||
|
typedef struct _ATOM_ROM_HEADER
|
||
|
{
|
||
|
ATOM_COMMON_TABLE_HEADER sHeader;
|
||
|
UINT8 uaFirmWareSignature[4]; /*Signature to distinguish between Atombios and non-atombios,
|
||
|
+ atombios should init it as "ATOM", don't change the position */
|
||
|
UINT16 usBiosRuntimeSegmentAddress;
|
||
|
UINT16 usProtectedModeInfoOffset;
|
||
|
UINT16 usConfigFilenameOffset;
|
||
|
UINT16 usCRC_BlockOffset;
|
||
|
UINT16 usBIOS_BootupMessageOffset;
|
||
|
UINT16 usInt10Offset;
|
||
|
UINT16 usPciBusDevInitCode;
|
||
|
UINT16 usIoBaseAddress;
|
||
|
UINT16 usSubsystemVendorID;
|
||
|
UINT16 usSubsystemID;
|
||
|
UINT16 usPCI_InfoOffset;
|
||
|
UINT16 usMasterCommandTableOffset; /*Offset for SW to get all command table offsets, Don't change the position */
|
||
|
UINT16 usMasterDataTableOffset; /*Offset for SW to get all data table offsets, Don't change the position */
|
||
|
UINT8 ucExtendedFunctionCode;
|
||
|
UINT8 ucReserved;
|
||
|
} ATOM_ROM_HEADER;
|
||
|
|
||
|
/****************************************************************************/
|
||
|
// Structure used in Data.mtb
|
||
|
/****************************************************************************/
|
||
|
typedef struct _ATOM_MASTER_LIST_OF_DATA_TABLES
|
||
|
{
|
||
|
UINT16 UtilityPipeLine; // Offest for the utility to get parser info,Don't change this position!
|
||
|
UINT16 MultimediaCapabilityInfo; // Only used by MM Lib,latest version 1.1, not configuable from Bios, need to include the table to build Bios
|
||
|
UINT16 MultimediaConfigInfo; // Only used by MM Lib,latest version 2.1, not configuable from Bios, need to include the table to build Bios
|
||
|
UINT16 StandardVESA_Timing; // Only used by Bios
|
||
|
UINT16 FirmwareInfo; // Shared by various SW components,latest version 1.4
|
||
|
UINT16 DAC_Info; // Will be obsolete from R600
|
||
|
UINT16 LVDS_Info; // Shared by various SW components,latest version 1.1
|
||
|
UINT16 TMDS_Info; // Will be obsolete from R600
|
||
|
UINT16 AnalogTV_Info; // Shared by various SW components,latest version 1.1
|
||
|
UINT16 SupportedDevicesInfo; // Will be obsolete from R600
|
||
|
UINT16 GPIO_I2C_Info; // Shared by various SW components,latest version 1.2 will be used from R600
|
||
|
UINT16 VRAM_UsageByFirmware; // Shared by various SW components,latest version 1.3 will be used from R600
|
||
|
UINT16 GPIO_Pin_LUT; // Shared by various SW components,latest version 1.1
|
||
|
UINT16 VESA_ToInternalModeLUT; // Only used by Bios
|
||
|
UINT16 ComponentVideoInfo; // Shared by various SW components,latest version 2.1 will be used from R600
|
||
|
UINT16 PowerPlayInfo; // Shared by various SW components,latest version 2.1,new design from R600
|
||
|
UINT16 CompassionateData; // Will be obsolete from R600
|
||
|
UINT16 SaveRestoreInfo; // Only used by Bios
|
||
|
UINT16 PPLL_SS_Info; // Shared by various SW components,latest version 1.2, used to call SS_Info, change to new name because of int ASIC SS info
|
||
|
UINT16 OemInfo; // Defined and used by external SW, should be obsolete soon
|
||
|
UINT16 XTMDS_Info; // Will be obsolete from R600
|
||
|
UINT16 MclkSS_Info; // Shared by various SW components,latest version 1.1, only enabled when ext SS chip is used
|
||
|
UINT16 Object_Header; // Shared by various SW components,latest version 1.1
|
||
|
UINT16 IndirectIOAccess; // Only used by Bios,this table position can't change at all!!
|
||
|
UINT16 MC_InitParameter; // Only used by command table
|
||
|
UINT16 ASIC_VDDC_Info; // Will be obsolete from R600
|
||
|
UINT16 ASIC_InternalSS_Info; // New tabel name from R600, used to be called "ASIC_MVDDC_Info"
|
||
|
UINT16 TV_VideoMode; // Only used by command table
|
||
|
UINT16 VRAM_Info; // Only used by command table, latest version 1.3
|
||
|
UINT16 MemoryTrainingInfo; // Used for VBIOS and Diag utility for memory training purpose since R600. the new table rev start from 2.1
|
||
|
UINT16 IntegratedSystemInfo; // Shared by various SW components
|
||
|
UINT16 ASIC_ProfilingInfo; // New table name from R600, used to be called "ASIC_VDDCI_Info" for pre-R600
|
||
|
UINT16 VoltageObjectInfo; // Shared by various SW components, latest version 1.1
|
||
|
UINT16 PowerSourceInfo; // Shared by various SW components, latest versoin 1.1
|
||
|
} ATOM_MASTER_LIST_OF_DATA_TABLES;
|
||
|
|
||
|
typedef struct _ATOM_MASTER_DATA_TABLE
|
||
|
{
|
||
|
ATOM_COMMON_TABLE_HEADER sHeader;
|
||
|
ATOM_MASTER_LIST_OF_DATA_TABLES ListOfDataTables;
|
||
|
} ATOM_MASTER_DATA_TABLE;
|
||
|
|
||
|
typedef union _ATOM_MODE_MISC_INFO_ACCESS
|
||
|
{
|
||
|
UINT16 usAccess;
|
||
|
} ATOM_MODE_MISC_INFO_ACCESS;
|
||
|
|
||
|
/****************************************************************************/
|
||
|
// Structure used in StandardVESA_TimingTable
|
||
|
// AnalogTV_InfoTable
|
||
|
// ComponentVideoInfoTable
|
||
|
/****************************************************************************/
|
||
|
typedef struct _ATOM_MODE_TIMING
|
||
|
{
|
||
|
UINT16 usCRTC_H_Total;
|
||
|
UINT16 usCRTC_H_Disp;
|
||
|
UINT16 usCRTC_H_SyncStart;
|
||
|
UINT16 usCRTC_H_SyncWidth;
|
||
|
UINT16 usCRTC_V_Total;
|
||
|
UINT16 usCRTC_V_Disp;
|
||
|
UINT16 usCRTC_V_SyncStart;
|
||
|
UINT16 usCRTC_V_SyncWidth;
|
||
|
UINT16 usPixelClock; //in 10Khz unit
|
||
|
ATOM_MODE_MISC_INFO_ACCESS susModeMiscInfo;
|
||
|
UINT16 usCRTC_OverscanRight;
|
||
|
UINT16 usCRTC_OverscanLeft;
|
||
|
UINT16 usCRTC_OverscanBottom;
|
||
|
UINT16 usCRTC_OverscanTop;
|
||
|
UINT16 usReserve;
|
||
|
UINT8 ucInternalModeNumber;
|
||
|
UINT8 ucRefreshRate;
|
||
|
} ATOM_MODE_TIMING;
|
||
|
|
||
|
typedef struct _ATOM_DTD_FORMAT
|
||
|
{
|
||
|
UINT16 usPixClk;
|
||
|
UINT16 usHActive;
|
||
|
UINT16 usHBlanking_Time;
|
||
|
UINT16 usVActive;
|
||
|
UINT16 usVBlanking_Time;
|
||
|
UINT16 usHSyncOffset;
|
||
|
UINT16 usHSyncWidth;
|
||
|
UINT16 usVSyncOffset;
|
||
|
UINT16 usVSyncWidth;
|
||
|
UINT16 usImageHSize;
|
||
|
UINT16 usImageVSize;
|
||
|
UINT8 ucHBorder;
|
||
|
UINT8 ucVBorder;
|
||
|
ATOM_MODE_MISC_INFO_ACCESS susModeMiscInfo;
|
||
|
UINT8 ucInternalModeNumber;
|
||
|
UINT8 ucRefreshRate;
|
||
|
} ATOM_DTD_FORMAT;
|
||
|
|
||
|
typedef struct _ATOM_LVDS_INFO_V12
|
||
|
{
|
||
|
ATOM_COMMON_TABLE_HEADER sHeader;
|
||
|
ATOM_DTD_FORMAT sLCDTiming;
|
||
|
UINT16 usExtInfoTableOffset;
|
||
|
UINT16 usSupportedRefreshRate; //Refer to panel info table in ATOMBIOS extension Spec.
|
||
|
UINT16 usOffDelayInMs;
|
||
|
UINT8 ucPowerSequenceDigOntoDEin10Ms;
|
||
|
UINT8 ucPowerSequenceDEtoBLOnin10Ms;
|
||
|
UINT8 ucLVDS_Misc; // Bit0:{=0:single, =1:dual},Bit1 {=0:666RGB, =1:888RGB},Bit2:3:{Grey level}
|
||
|
// Bit4:{=0:LDI format for RGB888, =1 FPDI format for RGB888}
|
||
|
// Bit5:{=0:Spatial Dithering disabled;1 Spatial Dithering enabled}
|
||
|
// Bit6:{=0:Temporal Dithering disabled;1 Temporal Dithering enabled}
|
||
|
UINT8 ucPanelDefaultRefreshRate;
|
||
|
UINT8 ucPanelIdentification;
|
||
|
UINT8 ucSS_Id;
|
||
|
UINT16 usLCDVenderID;
|
||
|
UINT16 usLCDProductID;
|
||
|
UINT8 ucLCDPanel_SpecialHandlingCap;
|
||
|
UINT8 ucPanelInfoSize; // start from ATOM_DTD_FORMAT to end of panel info, include ExtInfoTable
|
||
|
UINT8 ucReserved[2];
|
||
|
} ATOM_LVDS_INFO_V12;
|
||
|
|
||
|
|
||
|
typedef struct _ATOM_STANDARD_VESA_TIMING
|
||
|
{
|
||
|
ATOM_COMMON_TABLE_HEADER sHeader;
|
||
|
char * aModeTimings; // 16 is not the real array number, just for initial allocation
|
||
|
} ATOM_STANDARD_VESA_TIMING;
|
||
|
|
||
|
#endif
|