⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ltlcdl.h

📁 此代码为WCE5.0下显示器的源代码
💻 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 + -