📄 ltlcdl.h
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/****************************************************************************\
*
* Module Name LTLCDL.H (Local header file for GDO LCD.)
* Project LT Rage Pro/ Rage Mobility/ Rage XC/ Rage XL
*
* Description Local header file for GDO LCD
*
*
* (c) 1998 ATI Technologies Inc. (unpublished)
*
* All rights reserved. This notice is intended as a precaution against
* inadvertent publication and does not imply publication or any waiver
* of confidentiality. The year included in the foregoing notice is the
* year of creation of the work.
*
*
\****************************************************************************/
#include "LTLCD.H"
#include "R3LIBVER.H"
#include "r3com.h"
#ifndef _LTLCDL_H
#define _LTLCDL_H
#define R3LCDGDOLIB "[ATI LIB=R3LCD.LIB," R3_LIB_VERSION "]"
#define RAGELCD_VERSION 0x00000001 // Version of GDO-LCD
#define RAGELCD_NAME "RagePro_LCD_GDO"
#define HEADER_OFFSET 0x00
#define VENDOR_ID_OFFSET 0x08
#define EDID_VERSION_OFFSET 0x12
#define BASIC_DISPLAY_OFFSET 0x14
#define COLOR_CHARACTERISTICS_OFFSET 0x19
#define ESTABLISHED_TIMINGS_OFFSET 0x23
#define STANDARD_TIMING_ID_OFFSET 0x26
#define DETAILED_TIMING_DSCRP_OFFSET 0x36
#define EXTENSION_FLAG_OFFSET 0x7E
#define CHECKSUM_OFFSET 0x7F
#define DETAILED_TIMING_DSCRP_SIZE 18
#define STANDARD_TIMING_ID_SIZE 2
#define MAX_STANDARD_REFRESH_RATE 123
#define MIN_STANDARD_REFRESH_RATE 60
#define RPROLCDGDO_MAX_LCD_ON_OFF_DELAY 2000 // In milli-seconds
#define RPROLCDGDO_MIN_LCD_ON_OFF_DELAY 45 // In milli-seconds
#define RPROLCDGDO_DEFAULT_LCD_ON_OFF_DELAY 200 // In milli-seconds
#define RPROLCDGDO_MAX_BACKLIGHT_DELAY 1000 // In milli-seconds
#define RPROLCDGDO_MIN_BACKLIGHT_DELAY 5 // In milli-seconds
#define MAX_NO_RESOLUTION_TIMING 20
#define XL_BIOS_SCALING_ADJUST_TABLE_REV1 1 // Initial Table to fix missing pixel problem
#define EDID_DATA_SIZE 128
#define MOBILE_BIOS_FEATURES_FEILD_OFFSET 26
// Define IDC INF based options
#define RPRO_REG_OPTION_LCDGCO_DELAY_IN_MILI_SEC 0x00000020
// Registry value name as must be defined in INF
#define szRPROREGOPTIONLCDGDO_DELAYINMILISEC "RPRORegOptionLcdGdoDelayInMiliSec"
#define szRPROREGOPTIONLCDGDO_BACKLIGHTDELAY "RPRORegOptionLcdGdoBackLightDelay"
#define RPRO_REG_OPTION_LCDGDO_BACKLIGHTOFFONENABLE 0x00000001L
#define RPRO_REG_OPTION_LCDGDO_ENGINEOFFONMODECHANGE 0x00000002L
// Registry option bit wise flag for LCD.
#define szRPROREGOPTIONLCDGDO "RPROREGOPTIONLCDGDO"
//Mask for specific Panel Manufacturer ID for PanelScalingAdjustTable
#define SPECIFIC_PANEL_MANUFACTURER_ID_MASK 0xFFFF0000
#pragma pack(1)
/*
typedef struct _LCD_GDO_PANEL_INFO
{
USHORT usHorizontalSize; // in pixels
USHORT usVerticalSize; // in lines
USHORT usFlatPanelType;
UCHAR ucPanelRefreshRateData;
USHORT usSupportedRefreshRate;
USHORT ausModeTableOffset[MAX_NO_RESOLUTION_TIMING];
UCHAR ucXBufSize;
ULONG ulDelayInMiliSec;
ULONG ulBackLightDelay;
} LCD_GDO_PANEL_INFO, FAR* LPLCD_GDO_PANEL_INFO;
*/
typedef struct _GDO_RAGE_LCD
{
ULONG ulChipFamily;
ULONG ulChipID;
ULONG ulVRamInstalled;
ULONG ulVRamType;
ULONG ulVRamBitWidth;
LPVOID lpIO;
LPVOID lpMMR;
LPVOID lpRomBaseAddress;
LPVOID lpRomHeader;
LPVOID lpLibVersionString;
LPUCHAR lpucVgaBuffer;
USHORT usRealSegment;
ULONG ulReferenceFrequency;
ULONG ulLCDGDORegOptionFlag;
ULONG ulContrastLevel;
ULONG ulI2CCntl0Data;
ULONG ulI2CCntl1Data;
BOOL bDFPattached;
ULONG ulController;
HDDL hDDL;
// This stores the panel related information from BIOS
//LCD_GDO_PANEL_INFO LcdGdoPanelInfo;
LVDS_PANEL_INFO LcdGdoPanelInfo;
USHORT usOffsetToLcdParameterTable;
// This stores the offset to panel scaling adjustment table
USHORT usOffsetToPanelScalingAdjustTable;
ULONG ulLCDSupportsDDC;
ULONG ulDriverOptions;
ULONG ulLCDTimingsInBIOS;
ULONG ulEDIDMfgProductID;
ULONG ulBiosInfoTableSiganture;
ULONG ulBiosSupportedFeatures;
BOOL bRageXLUseInfoTable;
} GDO_RAGE_LCD, FAR* LPGDO_RAGE_LCD;
typedef struct _LCD_GDO_BIOS_INFO_TABLE
{
UCHAR ucInfoTableSignature[4];
UCHAR ucInfoTableRevision;
UCHAR ucOffsetToBiosInfoTableSize;
USHORT usOffsetToCrtParameterTable;
USHORT usOffsetToCrtParameterTableSize;
USHORT usOffsetToLcdParameterTable;
USHORT usOffsetToTvParameterTable;
USHORT usRefDivider;
USHORT usMinFreq;
USHORT usMaxFreq;
USHORT usRefFreq;
USHORT usOffsetToHardwareInfoTable;
USHORT usOffsetToVideoFeatureTable;
USHORT usOffsetPanelEdidOverrideTable;
USHORT usOffsetToPanelScalingAdjustTable;
} LCD_GDO_BIOS_INFO_TABLE, FAR *LPLCD_GDO_BIOS_INFO_TABLE;
/*
typedef struct _LCD_GDO_PANEL_INFORMATION_TABLE
{
UCHAR ucPanelIdentification; // (0x00 - 0x1F)
UCHAR ucPanelIDString[24];
USHORT usHorizontalSize; // in pixels
USHORT usVerticalSize; // in lines
USHORT usFlatPanelType;
UCHAR ucRedBitsPerPrimary;
UCHAR ucGreenBitsPerPrimary;
UCHAR ucBlueBitsPerPrimary;
UCHAR ucReservedBitsPerPrimary;
ULONG ulPtrToOffScreenMemoryRequired; //for frame buffer
ULONG ulPtrToReservedOffScreenMemory; //for frame buffer
UCHAR ucReserved[5];
USHORT usBackLightDelay;
USHORT usLCDOnDelay;
UCHAR ucSpreadSpectrumControlType;
UCHAR ucSpreadSpectrumLevel;
UCHAR ucBackLightLevel;
UCHAR ucBiasLevel;
UCHAR ucPowerSequenceDelay;
ULONG ulPanelData;
UCHAR ucPanelRefreshRateData;
USHORT usSupportedRefreshRate;
USHORT usModeTableOffset[MAX_NO_RESOLUTION_TIMING];
}LCD_GDO_PANEL_INFORMATION_TABLE, FAR *LPLCD_GDO_PANEL_INFORMATION_TABLE;
*/
typedef struct _LCD_GDO_MODE_TABLE_CENTER
{
USHORT usHorizontalRes;
USHORT usVerticalRes;
UCHAR ucModeType;
USHORT usOffset2ExpParamTable;
USHORT usOffset2TvParamTable;
USHORT usPixelClock;
USHORT usPixelClockAdjustment;
ULONG ulFpPos;
USHORT usCrtcHTotal;
USHORT usCrtcHDisp;
USHORT usCrtcHSyncStrt;
UCHAR ucCrtcHSyncWid;
USHORT usCrtcVTotal;
USHORT usCrtcVDisp;
USHORT usCrtcVSyncStrt;
UCHAR ucOvrWidTop;
}LCD_GDO_MODE_TABLE_CENTER, FAR *LPLCD_GDO_MODE_TABLE_CENTER;
typedef struct _LCD_GDO_SCALING_ADJUST_TABLE
{
ULONG ulEDIDMfgProductID;
UCHAR ucProblemModeHDisp;
UCHAR ucReserved;
ULONG ulHorzStretchingRegValue;
} LCD_GDO_SCALING_ADJUST_TABLE, FAR *LPLCD_GDO_SCALING_ADJUST_TABLE;
typedef struct _LCD_GDO_BIOS_SCALING_ADJUST_TABLE_HEADER
{
UCHAR ucTableRevision;
USHORT usTotalSizeOfAllTables;
} LCD_GDO_BIOS_SCALING_ADJUST_TABLE_HEADER,
FAR *LPLCD_GDO_BIOS_SCALING_ADJUST_TABLE_HEADER;
#pragma pack()
BOOL FAR InitializePanelInfoStruc(HGDO hGDO);
USHORT FAR LCD_GDO_TranslateLcdRefreshRate(ULONG ulDisplayFrequency);
VOID FAR EdidInfo(LPVOID lpBiosMMBaseAddress, ULONG OffsetToPanelInformationTable, LPVOID lpBuffer);
VOID LCDPatchHorzStretching(LPVOID lpMMR, ULONG ulHorzStretchingRegValue);
UCHAR GetAspectRatio(ULONG ulHorRes, ULONG ulVerRes);
USHORT ValidateEstablishedTiming(ULONG ulHorRes, ULONG ulVerRes, USHORT usSupRefreshRate);
VOID FillConstantFields(LPUCHAR lpEdidBuffer);
BOOL FAR LCDBIOSDetection(HGDO hGDO);
BOOL FAR LCDAutoDetection(HGDO hGDO);
BOOL FAR LCDHotPlugDetection(HGDO hGDO);
VOID FAR LCDDetectionInit(HGDO hGDO);
BOOL FAR DDCGetEdidData(HGDO hGDO, LPEDID_BUFFER lpEdidBuffer);
BOOL FAR BIOSGetEdidData(HGDO hGDO, LPEDID_BUFFER lpEdidBuffer);
UCHAR GDOPLLReadByte( HGDO hGDO, UCHAR ucAddress);
VOID GDOPLLWriteByte(HGDO hGDO, UCHAR ucAddress, UCHAR ucData, UCHAR ucMask);
VOID vGetLCDGDORegFlag(HDDL hDDL, HGDO hGDO);
ULONG FAR LCDEDIDCHECKDISPLAYTYPE( HGDO hGDO, HDDL hDDL, LPUCHAR lpucQueryBuffer);
VOID vWaitVertBlank(LPVOID lpMMR, ULONG ulController);
VOID vLCDTurnOff(HGDO hGDO);
VOID vLCDTurnOn(HGDO hGDO);
#endif /*_LTLCDL_H*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -