diff options
Diffstat (limited to 'src/CInt10.c')
-rw-r--r-- | src/CInt10.c | 1449 |
1 files changed, 549 insertions, 900 deletions
diff --git a/src/CInt10.c b/src/CInt10.c index 1510ce8..3737bd0 100644 --- a/src/CInt10.c +++ b/src/CInt10.c @@ -18,6 +18,7 @@ * <jason.lin@rdc.com.tw> */ + #include <string.h> #ifndef XFree86Module @@ -31,15 +32,15 @@ #include "CInt10FunProto.h" #include "CInt10Tbl.h" +#define I2C_ERROR 0 +#define I2C_OK 1 +#define I2CWriteCMD 0 +#define I2CReadCMD 1 + -/* Global for related IO address */ USHORT Relocate_IOAddress; -/*-------------------------------------------------------------------------- -; -; IO port function replace -; -;---------------------------------------------------------------------------*/ + __inline void OutPort(UCHAR Index,UCHAR Value) { @@ -57,34 +58,233 @@ __inline UCHAR InPort(UCHAR Index) return bInVal; } -/*---------------------------------------------------------------------------- -; -; SetVBERerurnStatus -; -; in: -; VBEReturnStatus = -; VBEFunctionCallSuccessful 0x004F -; VBEFunctionCallFail 0x014F -; VBEFunctionCallNotSupported 0x024F -; VBEFunctionCallInvalid 0x034F -; out: -; pCBiosArguments->Eax -;---------------------------------------------------------------------------*/ +void I2CWriteClock(UCHAR I2CPort, UCHAR data) +{ + UCHAR i; + UCHAR ujCRB7, jtemp; + + for (i=0;i<0x1000; i++) + { + ujCRB7 = ((data & 0x01) ? 0:1); + SetCRReg(I2CPort, ujCRB7, 0xFE); + + jtemp = GetCRReg(I2CPort) & 0x01; + + if (ujCRB7 == jtemp) break; + } +} + +void I2CDelay(UCHAR I2CPort) +{ + ULONG i; + UCHAR jtemp; + + + + + for (i=0;i<100;i++) + { + + jtemp = inb(0x80); + } +} + +void I2CWriteData(UCHAR I2CPort, UCHAR data) +{ + UCHAR ujCRB7, jtemp; + ULONG i; + + for (i=0;i<0x1000; i++) + { + ujCRB7 = ((data & 0x01) ? 0:1) << 2; + SetCRReg(I2CPort, ujCRB7, 0xFB); + + jtemp = GetCRReg(I2CPort) & 0x04; + + if (ujCRB7 == jtemp) break; + } +} + +void I2CStart(UCHAR I2CPort) +{ + I2CWriteClock(I2CPort, 0x00); + I2CDelay(I2CPort); + I2CWriteData(I2CPort, 0x01); + I2CDelay(I2CPort); + I2CWriteClock(I2CPort, 0x01); + I2CDelay(I2CPort); + I2CWriteData(I2CPort, 0x00); + I2CDelay(I2CPort); + I2CWriteClock(I2CPort, 0x01); + I2CDelay(I2CPort); +} + +void SendI2CDataByte(UCHAR I2CPort, UCHAR Data) +{ + UCHAR jData; + UCHAR i; + + for (i=7;i>=0;i--) + { + I2CWriteClock(I2CPort, 0x00); + I2CDelay(I2CPort); + + jData = ((Data >> i) & 0x01) ? 1:0; + I2CWriteData(I2CPort, jData); + I2CDelay(I2CPort); + + I2CWriteClock(I2CPort, 0x01); + I2CDelay(I2CPort); + } +} + +bool CheckACK(UCHAR I2CPort) +{ + UCHAR Data; + + I2CWriteClock(I2CPort, 0x00); + I2CDelay(I2CPort); + I2CWriteData(I2CPort, 0x01); + I2CDelay(I2CPort); + I2CWriteClock(I2CPort, 0x01); + I2CDelay(I2CPort); + Data = (GetCRReg(I2CPort) & 0x20) >> 5; + + + return ((Data & 0x01) ? 0:1); +} + +UCHAR ReceiveI2CDataByte(UCHAR I2CPort, UCHAR I2CSlave) +{ + + UCHAR jData=0, jTempData; + UCHAR i, j; + + for (i=7;i>=0;i--) + { + I2CWriteClock(I2CPort, 0x00); + I2CDelay(I2CPort); + + I2CWriteData(I2CPort, 0x01); + I2CDelay(I2CPort); + + I2CWriteClock(I2CPort, 0x01); + I2CDelay(I2CPort); + + for (j=0; j<0x1000; j++) + { + if (((GetCRReg(I2CPort) & 0x10) >> 4)) break; + } + + jTempData = (GetCRReg(I2CPort) & 0x20) >> 5; + jData |= ((jTempData & 0x01) << i); + + I2CWriteClock(I2CPort, 0x01); + I2CDelay(I2CPort); + } + + return (jData); +} + +void SendNACK(UCHAR I2CPort) +{ + I2CWriteClock(I2CPort, 0x00); + I2CDelay(I2CPort); + I2CWriteData(I2CPort, 0x01); + I2CDelay(I2CPort); + I2CWriteClock(I2CPort, 0x01); + I2CDelay(I2CPort); +} + +void I2CStop(UCHAR I2CPort) +{ + I2CWriteClock(I2CPort, 0x00); + I2CDelay(I2CPort); + I2CWriteData(I2CPort, 0x00); + I2CDelay(I2CPort); + I2CWriteClock(I2CPort, 0x01); + I2CDelay(I2CPort); + I2CWriteData(I2CPort, 0x01); + I2CDelay(I2CPort); + I2CWriteClock(I2CPort, 0x01); + I2CDelay(I2CPort); +} + + +UCHAR ReadI2C(UCHAR I2CPort, UCHAR I2CSlave, UCHAR RegIdx, UCHAR* RegData) +{ + I2CStart(I2CPort); + + + SendI2CDataByte(I2CPort, I2CSlave|I2CWriteCMD); + if (!CheckACK(I2CPort)) + { + return I2C_ERROR; + } + + + SendI2CDataByte(I2CPort, RegIdx); + if (!CheckACK(I2CPort)) + { + return I2C_ERROR; + } + + I2CStart(I2CPort); + + + SendI2CDataByte(I2CPort, I2CSlave|I2CReadCMD); + if (!CheckACK(I2CPort)) + { + return I2C_ERROR; + } + + + *RegData = ReceiveI2CDataByte(I2CPort, I2CSlave); + SendNACK(I2CPort); + + I2CStop(I2CPort); + + return I2C_OK; +} + +UCHAR WriteI2C(UCHAR I2CPort, UCHAR I2CSlave, UCHAR RegIdx, UCHAR RegData) +{ + I2CStart(I2CPort); + + + SendI2CDataByte(I2CPort, I2CSlave|I2CWriteCMD); + if (!CheckACK(I2CPort)) + { + return I2C_ERROR; + } + + + SendI2CDataByte(I2CPort, RegIdx); + if (!CheckACK(I2CPort)) + { + return I2C_ERROR; + } + + + SendI2CDataByte(I2CPort, RegData); + if (!CheckACK(I2CPort)) + { + return I2C_ERROR; + } + + SendNACK(I2CPort); + + I2CStop(I2CPort); + return I2C_OK; +} + + void SetVBERerurnStatus(USHORT VBEReturnStatus, CBIOS_ARGUMENTS *pCBiosArguments) { pCBiosArguments->reg.x.AX = VBEReturnStatus; } -/*---------------------------------------------------------------------------- -; -; SetTimingRegs -; -; in: -; bDisplayPath = display path -; pMODE_INFO = pointer to MODE_INFO -; pRRATE_TABLE = pointer to RRATE_TABLE -; -;---------------------------------------------------------------------------*/ + void SetTimingRegs(UCHAR ucDisplayPath, MODE_INFO *pModeInfo, RRATE_TABLE *pRRateTable) { USHORT usHBorder = 0, usVBorder = 0; @@ -162,21 +362,13 @@ void SetTimingRegs(UCHAR ucDisplayPath, MODE_INFO *pModeInfo, RRATE_TABLE *pRRat xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Exit SetTimingRegs()==\n"); } -/*------------------------------------------------------------------- -; -; SetHTotal() -; -; in: -; DisplayPath = display path -; Value = H total in pixel -; -;------------------------------------------------------------------*/ + void SetHTotal(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 40 pixels for setting HW */ + Value -= 40; - /* low-3-bits of H total has bug, HW will remove it. So the value have to align to 8*/ + Value += 7; if(DisplayPath == DISP1) @@ -191,18 +383,10 @@ void SetHTotal(UCHAR DisplayPath, USHORT Value) return; } -/*------------------------------------------------------------------- -; -; SetHDisplayEnd() -; -; in: -; DisplayPath = display path -; Value = H display end in pixel -; -;------------------------------------------------------------------*/ + void SetHDisplayEnd(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 8 pixels for setting HW */ + Value -= 8; if(DisplayPath == DISP1) @@ -218,18 +402,10 @@ void SetHDisplayEnd(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; SetHBlankingStart() -; -; in: -; DisplayPath = display path -; Value = H blanking start in pixel -; -;------------------------------------------------------------------*/ + void SetHBlankingStart(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 8 pixels for setting HW */ + Value -= 8; if(DisplayPath == DISP1) @@ -245,18 +421,10 @@ void SetHBlankingStart(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; SetHBlankingEnd() -; -; in: -; DisplayPath = display path -; Value = H blanking end in pixel -; -;------------------------------------------------------------------*/ + void SetHBlankingEnd(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 8 pixels for setting HW */ + Value -= 8; if(DisplayPath == DISP1) @@ -272,18 +440,10 @@ void SetHBlankingEnd(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; SetHSyncStart() -; -; in: -; DisplayPath = display path -; Value = H Sync start in pixel -; -;------------------------------------------------------------------*/ + void SetHSyncStart(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 0 pixels for setting HW */ + Value -= 0; if(DisplayPath == DISP1) @@ -299,18 +459,10 @@ void SetHSyncStart(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; SetHSyncEnd() -; -; in: -; DisplayPath = display path -; Value = H Sync end in pixel -; -;------------------------------------------------------------------*/ + void SetHSyncEnd(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 0 pixels for setting HW */ + Value -= 0; if(DisplayPath == DISP1) @@ -326,18 +478,10 @@ void SetHSyncEnd(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; SetVTotal() -; -; in: -; DisplayPath = display path -; Value = V total -; -;------------------------------------------------------------------*/ + void SetVTotal(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 2 line for setting HW */ + Value -= 2; if(DisplayPath == DISP1) @@ -353,18 +497,10 @@ void SetVTotal(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; SetVDisplayEnd() -; -; in: -; DisplayPath = display path -; Value = V display end -; -;------------------------------------------------------------------*/ + void SetVDisplayEnd(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 1 line for setting HW */ + Value -= 1; if(DisplayPath == DISP1) @@ -380,18 +516,10 @@ void SetVDisplayEnd(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; SetVBlankingStart() -; -; in: -; DisplayPath = display path -; Value = V blanking start -; -;------------------------------------------------------------------*/ + void SetVBlankingStart(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 1 line for setting HW */ + Value -= 1; if(DisplayPath == DISP1) @@ -407,18 +535,10 @@ void SetVBlankingStart(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; SetVBlankingEnd() -; -; in: -; DisplayPath = display path -; Value = V blanking end -; -;------------------------------------------------------------------*/ + void SetVBlankingEnd(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 1 line for setting HW */ + Value -= 1; if(DisplayPath == DISP1) @@ -434,18 +554,10 @@ void SetVBlankingEnd(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; SetVSyncStart() -; -; in: -; DisplayPath = display path -; Value = V sync start -; -;------------------------------------------------------------------*/ + void SetVSyncStart(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 1 line for setting HW */ + Value -= 1; if(DisplayPath == DISP1) @@ -461,18 +573,10 @@ void SetVSyncStart(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; SetVSyncEnd() -; -; in: -; DisplayPath = display path -; Value = V sync end -; -;------------------------------------------------------------------*/ + void SetVSyncEnd(UCHAR DisplayPath, USHORT Value) { - /* Subtract the 1 line for setting HW */ + Value -= 1; if(DisplayPath == DISP1) @@ -488,15 +592,7 @@ void SetVSyncEnd(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; SetPixelClock() -; -; in: -; DisplayPath = display path -; Clock = pixel clock in khz -; -;------------------------------------------------------------------*/ + void SetPixelClock(UCHAR bDisplayPath, ULONG dwClock) { PLL_Info PLLInfo; @@ -504,15 +600,7 @@ void SetPixelClock(UCHAR bDisplayPath, ULONG dwClock) PLLInfo = ClockToPLLF9003A(dwClock); SetDPLL(bDisplayPath, PLLInfo); } -/*------------------------------------------------------------------- -; -; SetHSource() -; -; in: -; DisplayPath = display path -; wValue = number of pixels of source data -; -;------------------------------------------------------------------*/ + void SetHSource(UCHAR bDisplayPath, USHORT wValue) { wValue -= 1; @@ -528,19 +616,10 @@ void SetHSource(UCHAR bDisplayPath, USHORT wValue) } -/*------------------------------------------------------------------- -; -; ClockToPLLF9003A() -; -; in: -; Clock = pixel clock in khz -; return: -; PLL_Info = PLL value -; -;------------------------------------------------------------------*/ + PLL_Info ClockToPLLF9003A(ULONG Clock) { - ULONG MSCount, NSCount, RSCount, FCKVCO, FCKOUT; /*defined in PLL module */ + ULONG MSCount, NSCount, RSCount, FCKVCO, FCKOUT; ULONG NearestClock = 0xFFFFFFFF; PLL_Info PLLInfo; @@ -577,15 +656,7 @@ PLL_Info ClockToPLLF9003A(ULONG Clock) } -/*------------------------------------------------------------------- -; -; SetDPLL() - set display PLL -; -; in: -; DisplayPath = display path -; PLLInfo: PLL value -; -;------------------------------------------------------------------*/ + void SetDPLL(UCHAR DisplayPath, PLL_Info PLLInfo) { UCHAR RetValue; @@ -603,26 +674,16 @@ void SetDPLL(UCHAR DisplayPath, PLL_Info PLLInfo) SetCRReg(0xCE, PLLInfo.RS, BIT2+BIT1+BIT0); } - /* Fire the PLL setting */ + RetValue = GetCRReg(0xBB); SetCRReg(0xBB, RetValue, 0xFF); } -/*------------------------------------------------------------------- -; -; SetPolarity() -; -; in: -; DisplayPath = display path -; Value: bit1 = 1 for positive H sync -; = 0 for negative H sync -; bit2 = 1 for positive V sync -; = 0 for negative V sync -;------------------------------------------------------------------*/ + void SetPolarity(UCHAR DevicePort, UCHAR Value) { - Value ^= BIT2+BIT1; /* invert Bit[2:1] */ + Value ^= BIT2+BIT1; switch (DevicePort) { @@ -641,20 +702,12 @@ void SetPolarity(UCHAR DevicePort, UCHAR Value) } } -/*------------------------------------------------------------------- -; -; SetFIFO() -; -; in: -; DisplayPath = display path -; out: -; none -;------------------------------------------------------------------*/ + void SetFIFO(UCHAR DisplayPath) { if (DisplayPath == DISP1) { - SetCRReg(0xA7, 0x3F, 0xFF); + SetCRReg(0xA7, 0x5F, 0xFF); SetCRReg(0xA6, 0x3F, 0xFF); } else if (DisplayPath == DISP2) @@ -664,18 +717,10 @@ void SetFIFO(UCHAR DisplayPath) } } -/*------------------------------------------------------------------- -; -; SetPitch() -; -; in: -; DisplayPath = display path -; Value = Pitch in byte -; -;------------------------------------------------------------------*/ + void SetPitch(UCHAR DisplayPath, USHORT Value) { - /* adjust pitch in 8 byte alignment */ + Value += 7; Value >>= 3; @@ -692,16 +737,7 @@ void SetPitch(UCHAR DisplayPath, USHORT Value) } -/*------------------------------------------------------------------- -; -; GetPitch() -; -; in: -; DisplayPath = display path -; out: -; return pitch in byte -; -;------------------------------------------------------------------*/ + USHORT GetPitch(UCHAR DisplayPath) { USHORT wPitch; @@ -720,16 +756,7 @@ USHORT GetPitch(UCHAR DisplayPath) return wPitch; } -/*------------------------------------------------------------------- -; -; GetVDisplayEnd() -; -; in: -; DisplayPath = display path -; out: -; return V disp end -; -;------------------------------------------------------------------*/ + USHORT GetVDisplayEnd(UCHAR DisplayPath) { USHORT wDisplayEnd = 0x0; @@ -743,21 +770,13 @@ USHORT GetVDisplayEnd(UCHAR DisplayPath) wDisplayEnd = ReadRegFromHW(VDispEnd2); } - /* Add 1 for query value. */ + wDisplayEnd += 1; return wDisplayEnd; } -/*------------------------------------------------------------------- -; -; SetColorDepth() -; -; in: -; DisplayPath = display path -; Value = color depth (8/16/32) -; -;------------------------------------------------------------------*/ + void SetColorDepth(UCHAR DisplayPath, UCHAR Value) { UCHAR bSetBit = 0x0; @@ -783,7 +802,7 @@ void SetColorDepth(UCHAR DisplayPath, UCHAR Value) } else { - /* Display2 would not support 8bit color depth */ + if(Value == 8) return; @@ -792,14 +811,7 @@ void SetColorDepth(UCHAR DisplayPath, UCHAR Value) } -/*------------------------------------------------------------------- -; -; ConfigDigitalPort() -; -; in: -; bDisplayPath = display path -; -;------------------------------------------------------------------*/ + void ConfigDigitalPort(UCHAR bDisplayPath) { PORT_CONFIG *pDevicePortConfig; @@ -843,20 +855,12 @@ void ConfigDigitalPort(UCHAR bDisplayPath) } } -/*---------------------------------------------------------------------------- -; -; LoadTiming -; -; in: -; bDisplayPath = display path -; wModeNum = mode no. -; -;---------------------------------------------------------------------------*/ + void LoadTiming(UCHAR bDisplayPath, USHORT wModeNum) { UCHAR bDeviceIndex = Get_DEV_ID(bDisplayPath); - /* Obtain the display device */ + switch(bDeviceIndex) { @@ -875,15 +879,7 @@ void LoadTiming(UCHAR bDisplayPath, USHORT wModeNum) } -/*---------------------------------------------------------------------------- -; -; LoadVESATiming -; -; in: -; bDisplayPath = display path -; wModeNum = mode no. -; -;---------------------------------------------------------------------------*/ + void LoadVESATiming(UCHAR bDisplayPath, USHORT wModeNum) { UCHAR bR_Rate_value = 0x0; @@ -899,19 +895,11 @@ void LoadVESATiming(UCHAR bDisplayPath, USHORT wModeNum) else { xf86DrvMsgVerb(0, X_INFO, InfoLevel, "Mode not found!!\n"); - /*ASSERT(true); */ + } xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Exit LoadVESATiming()==\n"); } -/*---------------------------------------------------------------------------- -; -; LoadLCDTiming -; -; in: -; bDisplayPath = display path -; wModeNum = mode no. -; -;---------------------------------------------------------------------------*/ + void LoadLCDTiming(UCHAR bDisplayPath, USHORT wModeNum) { UCHAR bDeviceIndex = Get_DEV_ID(bDisplayPath); @@ -929,20 +917,12 @@ void LoadLCDTiming(UCHAR bDisplayPath, USHORT wModeNum) } else { - /*ASSERT(true); */ + } xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Exit LoadLCDTiming()==\n"); } -/*---------------------------------------------------------------------------- -; -; SetScalingFactor -; -; in: -; pUserModeInfo = pointer to MODE_INFO of user mode -; pPanelModeInfo = pointer to LCD MODE_INFO of panel -; -;---------------------------------------------------------------------------*/ + void SetScalingFactor(UCHAR bDisplayPath, MODE_INFO *pUserModeInfo, MODE_INFO *pPanelModeInfo) { ULONG dwScalingFactor; @@ -986,15 +966,7 @@ void SetScalingFactor(UCHAR bDisplayPath, MODE_INFO *pUserModeInfo, MODE_INFO *p } xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Exit SetScalingFactor()==\n"); } -/*------------------------------------------------------------------- -; -; SetHorScalingFactor() -; -; in: -; DisplayPath = display path -; wValue = scaling factor -; -;------------------------------------------------------------------*/ + void SetHorScalingFactor(UCHAR bDisplayPath, USHORT wValue) { if(bDisplayPath == DISP1) @@ -1006,15 +978,7 @@ void SetHorScalingFactor(UCHAR bDisplayPath, USHORT wValue) WriteRegToHW(HScalingFactor2, wValue); } } -/*------------------------------------------------------------------- -; -; SetVerScalingFactor() -; -; in: -; DisplayPath = display path -; wValue = scaling factor -; -;------------------------------------------------------------------*/ + void SetVerScalingFactor(UCHAR bDisplayPath, USHORT wValue) { if(bDisplayPath == DISP1) @@ -1026,17 +990,7 @@ void SetVerScalingFactor(UCHAR bDisplayPath, USHORT wValue) WriteRegToHW(VScalingFactor2, wValue); } } -/*------------------------------------------------------------------- -; -; isLCDFitMode() - -; -; Input: -; bDeviceIndex = LCD/LCD2 -; wModeNom = mode number -; return: -; true if wModeNom is LCD fit mode -; -;------------------------------------------------------------------*/ + CI_STATUS isLCDFitMode(UCHAR bDeviceIndex, USHORT wModeNum) { MODE_INFO *pModeInfo; @@ -1059,29 +1013,17 @@ CI_STATUS isLCDFitMode(UCHAR bDeviceIndex, USHORT wModeNum) return false; } } -/*---------------------------------------------------------------------------- -; -; GetModePointerFromVESATable -; -; in: -; wModeNum = mode no. -; bRRIndex = refresh rate index -; out: -; return = true, pModeInfo = pointer to MODE_INFO -; pRRateTable = pointer to RRATE_TABLE -; = false, fail -; -;---------------------------------------------------------------------------*/ + CI_STATUS GetModePointerFromVESATable(USHORT wModeNum, UCHAR ucRRIndex, MODE_INFO **ppModeInfo, RRATE_TABLE **ppRRateTable) { int iRRateTableIndex; xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Enter GetModePointerFromVESATable()==\n"); - /* Don't find out any fit mode table in the vesa table */ + if(Get_MODE_INFO_From_VESA_Table(wModeNum, ppModeInfo)) { - /* Obtain the frequence table. */ + *ppRRateTable = (RRATE_TABLE*)((int)(*ppModeInfo) + sizeof(MODE_INFO)); for(iRRateTableIndex = 0; iRRateTableIndex < (*ppModeInfo)->RRTableCount; iRRateTableIndex++, (*ppRRateTable)++) @@ -1097,23 +1039,12 @@ CI_STATUS GetModePointerFromVESATable(USHORT wModeNum, UCHAR ucRRIndex, MODE_INF } } - /* Can't find any fresh rate be conformed */ + xf86DrvMsgVerb(0, X_INFO, DefaultLevel, " Exit2 GetModePointerFromVESATable()== return fail!!\n"); return false; } -/*---------------------------------------------------------------------------- -; -; GetModePointerFromLCDTable -; -; in: -; bDeviceIndex = device index -; out: -; return = true, ppPanelInfo = pointer to PANEL_INFO -; pPanelTable = pointerto PANEL_TABLE -; = false, fail -; -;---------------------------------------------------------------------------*/ + CI_STATUS GetModePointerFromLCDTable(UCHAR bDeviceIndex, MODE_INFO **ppModeInfo, PANEL_TABLE **ppPanelTable) { xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Enter GetModePointerFromLCDTable()==\n"); @@ -1130,17 +1061,7 @@ CI_STATUS GetModePointerFromLCDTable(UCHAR bDeviceIndex, MODE_INFO **ppModeInfo, return false; } } -/*---------------------------------------------------------------------------- -; -; Get_MODE_INFO -; -; in: -; wModeNum = mode no. -; out: -; return = true, pModeInfo = pointer to MODE_INFO -; = false, fail -; -;---------------------------------------------------------------------------*/ + CI_STATUS Get_MODE_INFO(USHORT wModeNum, MODE_INFO **ppModeInfo) { if (Get_MODE_INFO_From_VESA_Table(wModeNum, ppModeInfo)) @@ -1162,17 +1083,7 @@ CI_STATUS Get_MODE_INFO(USHORT wModeNum, MODE_INFO **ppModeInfo) return false; } } -/*---------------------------------------------------------------------------- -; -; Get_MODE_INFO_From_LCD_Table -; -; in: -; bDeviceIndex = device index. -; out: -; return = true, pModeInfo = pointer to PANEL_INFO -; = false, fail -; -;---------------------------------------------------------------------------*/ + CI_STATUS Get_MODE_INFO_From_LCD_Table(UCHAR bDeviceIndex, MODE_INFO **ppModeInfo) { int i; @@ -1222,17 +1133,7 @@ CI_STATUS Get_MODE_INFO_From_LCD_Table(UCHAR bDeviceIndex, MODE_INFO **ppModeInf return false; } -/*---------------------------------------------------------------------------- -; -; Get_MODE_INFO_From_VESA_Table -; -; in: -; wModeNum = mode no. -; out: -; return = true, pModeInfo = pointer to MODE_INFO -; = false, fail -; -;---------------------------------------------------------------------------*/ + #if 0 CI_STATUS Get_MODE_INFO_From_VESA_Table(USHORT wModeNum, MODE_INFO **ppModeInfo) { @@ -1295,18 +1196,7 @@ CI_STATUS Get_MODE_INFO_From_VESA_Table(USHORT wModeNum, MODE_INFO **ppModeInfo) return false; } #endif -/*---------------------------------------------------------------------------- -; -; GetModeColorDepth -; -; in: -; wModeNum = mode no. -; pMODE_INFO = pointer to MODE_INFO -; out: -; return = true, *pbColorDepth = color depth -; = false, fail -; -;---------------------------------------------------------------------------*/ + CI_STATUS GetModeColorDepth(USHORT wModeNum, MODE_INFO *pModeInfo, UCHAR *pucColorDepth) { #if CBIOS_DEBUG @@ -1348,23 +1238,13 @@ CI_STATUS GetModeColorDepth(USHORT wModeNum, MODE_INFO *pModeInfo, UCHAR *pucCol return false; } } -/*---------------------------------------------------------------------------- -; -; GetModePitch() -; -; In: -; ModeNum = mode no -; Out: -; return = true, *pPitch = pitch in byte -; = false, fail -; -;---------------------------------------------------------------------------*/ + CI_STATUS GetModePitch(USHORT ModeNum, USHORT *pPitch) { MODE_INFO *pModeInfo = NULL; UCHAR ucColorDepth = 0; - /* Don't find out any fit mode table in the vesa table */ + if(!Get_MODE_INFO(ModeNum, &pModeInfo)) { return false; @@ -1384,16 +1264,7 @@ CI_STATUS GetModePitch(USHORT ModeNum, USHORT *pPitch) return true; } -/*---------------------------------------------------------------------------- -; -; ReadRegFromHW -; -; in: -; pRegOp = pointer to REG_OP table -; out: -; return = register value -; -;---------------------------------------------------------------------------*/ + USHORT ReadRegFromHW(REG_OP *pRegOp) { USHORT wValue = 0x0; @@ -1403,33 +1274,33 @@ USHORT ReadRegFromHW(REG_OP *pRegOp) { if(pRegOp->RegGroup == CR) { - /*CR */ + OutPort(COLOR_CRTC_INDEX,(pRegOp->RegIndex)); btemp = (UCHAR)InPort(COLOR_CRTC_DATA); } else { - /*SR */ + OutPort(SEQ_INDEX,(pRegOp->RegIndex)); btemp = (UCHAR)InPort(SEQ_DATA); } bMasktemp = (pRegOp->RegMask); - /* Mask the bit that we need. */ + btemp &= bMasktemp; - /* Shift all register into LSB. */ + while(!(bMasktemp & BIT0)) { bMasktemp = bMasktemp >> 1; btemp = btemp >> 1; } - /* Shift the register and add in the value. */ + wValue |= (((USHORT)btemp) << (pRegOp->RegShiftBit)); - /* Next register. */ + pRegOp++; } @@ -1437,15 +1308,7 @@ USHORT ReadRegFromHW(REG_OP *pRegOp) return wValue; } -/*---------------------------------------------------------------------------- -; -; WriteRegToHW -; -; in: -; pRegOp = pointer to REG_OP table -; value = value to be written -; -;---------------------------------------------------------------------------*/ + void WriteRegToHW(REG_OP *pRegOp, USHORT value) { UCHAR btemp, btemp1; @@ -1459,18 +1322,18 @@ void WriteRegToHW(REG_OP *pRegOp, USHORT value) bMasktemp = (pRegOp->RegMask); - /* Shift all register into LSB. */ + while(!(bMasktemp & BIT0)) { bMasktemp = bMasktemp >> 1; bCount ++; } - /* Calculate the value that we need to set into register. */ + btemp = value >> (pRegOp->RegShiftBit); btemp &= (bMasktemp); - /* Shift the data bit into right position. */ + if(!(pRegOp->RegMask & BIT0)) { btemp = btemp << bCount; @@ -1478,7 +1341,7 @@ void WriteRegToHW(REG_OP *pRegOp, USHORT value) if(pRegOp->RegGroup == CR) { - /*CR */ + OutPort(COLOR_CRTC_INDEX,(pRegOp->RegIndex)); btemp1 = (UCHAR)InPort(COLOR_CRTC_DATA); btemp1 &= ~(pRegOp->RegMask); @@ -1487,7 +1350,7 @@ void WriteRegToHW(REG_OP *pRegOp, USHORT value) } else { - /*SR */ + OutPort(SEQ_INDEX,(pRegOp->RegIndex)); btemp1 = (UCHAR)InPort(SEQ_DATA); btemp1 &= ~(pRegOp->RegMask); @@ -1501,62 +1364,27 @@ void WriteRegToHW(REG_OP *pRegOp, USHORT value) } -/*---------------------------------------------------------------------------- -; -; UnLockCR0ToCR7 -; -; in: -; none -; out: -; none -; -;---------------------------------------------------------------------------*/ + void UnLockCR0ToCR7() { - /* CR11[7] = 0 */ + SetCRReg(0x11, 0x00, BIT7); } -/*---------------------------------------------------------------------------- -; -; LockCR0ToCR7 -; -; in: -; none -; out: -; none -; -;---------------------------------------------------------------------------*/ + void LockCR0ToCR7() { - /* CR11[7] = 1 */ + SetCRReg(0x11, 0x80, BIT7); } -/*---------------------------------------------------------------------------- -; -; CheckForModeAvailable -; -; in: -; ModeNum = mode no. -; out: -; return = true, if mode is available. Else, return false -; -;---------------------------------------------------------------------------*/ + CI_STATUS CheckForModeAvailable(USHORT ModeNum) { MODE_INFO *pModeInfo = NULL; return Get_MODE_INFO_From_VESA_Table(ModeNum, &pModeInfo); } -/*-------------------------------------------------------------------- -; -; CheckForNewDeviceAvailable() - -; -; Input: -; bDeviceIndex = device index -; return: -; true if device is supported -;--------------------------------------------------------------------*/ + CI_STATUS CheckForNewDeviceAvailable(UCHAR bDeviceIndex) { PORT_CONFIG *pDevicePortConfig; @@ -1584,14 +1412,7 @@ void Display2TurnOffTX() } -/*---------------------------------------------------------------------------- -; -; TurnOnDigitalPort -; -; in: -; DisplayPath = device index -; -;---------------------------------------------------------------------------*/ + void TurnOnDigitalPort(UCHAR bDeviceIndex) { PORT_CONFIG *pDevicePortConfig; @@ -1619,14 +1440,7 @@ void TurnOnDigitalPort(UCHAR bDeviceIndex) } } } -/*---------------------------------------------------------------------------- -; -; TurnOffDigitalPort -; -; in: -; bDeviceIndex = device index -; -;---------------------------------------------------------------------------*/ + void TurnOffDigitalPort(UCHAR bDeviceIndex) { PORT_CONFIG *pDevicePortConfig; @@ -1654,17 +1468,7 @@ void TurnOffDigitalPort(UCHAR bDeviceIndex) } } -/*----------------------------------------------------------------------------- -; -; GetPortConnectPath -; -; in: -; PortType = 0: CRT port, 1: DVP1, 2: DVP2, 3: 24-bit DVP1+2 -; out: -; return = 0 if port connecting on display1 -; = 1 if port connecting on display2 -; -;-----------------------------------------------------------------------------*/ + UCHAR GetPortConnectPath(UCHAR PortType) { UCHAR SR1F, PortMask; @@ -1692,16 +1496,7 @@ UCHAR GetPortConnectPath(UCHAR PortType) } -/*---------------------------------------------------------------------------- -; -; TransDevIDtoBit -; -; in: -; DeviceIndex = device index -; out: -; return device bit -; -;---------------------------------------------------------------------------*/ + USHORT TransDevIDtoBit(UCHAR DeviceIndex) { return (1 << (DeviceIndex - 1)); @@ -1837,18 +1632,7 @@ void Display2HWResetOn() } #endif -/*---------------------------------------------------------------------------- -; -; SerialLoadTable -; -; in: -; pucDisplay1VESAModeInitRegs = pointer to start of table -; (ucI2Cport = I2C port) -; (ucI2CAddr = I2C address) -; out: -; *ppucTablePointer = table end + 1 -; -;---------------------------------------------------------------------------*/ + void SerialLoadTable(UCHAR **ppucTablePointer, UCHAR ucI2Cport, UCHAR ucI2CAddr) { UCHAR ucRegGroup; @@ -1869,19 +1653,7 @@ void SerialLoadTable(UCHAR **ppucTablePointer, UCHAR ucI2Cport, UCHAR ucI2CAddr) (*ppucTablePointer)++; } -/*--------------------- -; -; SerialLoadRegBits -; -; in: -; pucDisplay1VESAModeInitRegs = pointer to start of table -; ucRegGroup = register group -; (ucI2Cport = I2C device address) -; (ucI2CAddr = I2C port) -; out: -; *ppucTablePointer = pointer to end of table +1 -; -;----------------------*/ + void SerialLoadRegBits(UCHAR **ppucTablePointer, UCHAR ucRegGroup, UCHAR ucI2Cport, UCHAR ucI2CAddr) { UCHAR ucRegIndex, ucRegValue, ucMask; @@ -1915,19 +1687,7 @@ void SerialLoadRegBits(UCHAR **ppucTablePointer, UCHAR ucRegGroup, UCHAR ucI2Cpo (*ppucTablePointer)++; } -/*--------------------- -; -; SerialLoadReg -; -; in: -; pucDisplay1VESAModeInitRegs = pointer to start of table -; ucRegGroup = register group -; (ucI2Cport = I2C device address) -; (ucI2CAddr = I2C port) -; out: -; *ppucTablePointer = pointer to end of table +1 -; -;----------------------*/ + void SerialLoadReg(UCHAR **ppucTablePointer, UCHAR ucRegGroup, UCHAR ucI2Cport, UCHAR ucI2CAddr) { UCHAR ucRegIndex, ucRegValue; @@ -1990,30 +1750,23 @@ void LoadDisplay1VESAModeInitRegs() void VESASetBIOSData(USHORT ModeNum) { - /* no need to implement */ + } -/*---------------------------------------------------------------------------- -; -; DisableDisplayPathAndDevice -; -; in: -; bDisplayPath = display path -; -;---------------------------------------------------------------------------*/ + void DisableDisplayPathAndDevice(UCHAR bDisplayPath) { UCHAR bDeviceIndex = Get_DEV_ID(bDisplayPath); - /* disable device */ + ControlPwrSeqOff(bDeviceIndex); - /* turn off TX */ + - /* disable port */ + TurnOffDigitalPort(bDeviceIndex); - /* disable display path */ + SequencerOff(bDisplayPath); } @@ -2041,32 +1794,32 @@ CI_STATUS GetDevicePortConfig(UCHAR bDeviceIndex, PORT_CONFIG **ppDevicePortConf void PowerSequenceOn() { - /* check if power sequence already on */ + if (!(GetSRReg(0x11) & BIT0)) { - /* Power Sequence Control Pad Output Enable */ + SetSRReg(0x32, BIT1, BIT1); - /* panel on */ + SetSRReg(0x11, BIT0, BIT0); - /* delay for power sequence done */ + WaitPowerSequenceDone(); } } void PowerSequenceOff() { - /* check if power sequence already off */ + if (GetSRReg(0x11) & BIT0) { - /* panel off */ + SetSRReg(0x11, 0, BIT0); - /* wait power sequence done */ + WaitPowerSequenceDone(); - /* Power Sequence Control Pad Output Disable */ + SetSRReg(0x32, 0, BIT1); } } @@ -2096,14 +1849,14 @@ void SequencerOff(UCHAR bDisplayPath) void ControlPwrSeqOn(UCHAR bDeviceIndex) { PORT_CONFIG *pDevicePortConfig; - /* check if LCD or LCD2 */ + if ((TransDevIDtoBit(bDeviceIndex) & (B_LCD+B_LCD2)) && (GetDevicePortConfig(bDeviceIndex, &pDevicePortConfig))) { if (pDevicePortConfig->Attribute & TX_PS) { if (pDevicePortConfig->TX_Enc_ID == TX_VT1636) { -/* VT1636PowerSequenceOnOn();*/ + } } else if ((pDevicePortConfig->PortID == DVP1) || (pDevicePortConfig->PortID == DVP12)) @@ -2116,14 +1869,14 @@ void ControlPwrSeqOn(UCHAR bDeviceIndex) void ControlPwrSeqOff(UCHAR bDeviceIndex) { PORT_CONFIG *pDevicePortConfig; - /* check if LCD or LCD2 */ + if ((TransDevIDtoBit(bDeviceIndex) & (B_LCD+B_LCD2)) && (GetDevicePortConfig(bDeviceIndex, &pDevicePortConfig))) { if (pDevicePortConfig->Attribute & TX_PS) { if (pDevicePortConfig->TX_Enc_ID == TX_VT1636) { -/* VT1636PowerSequenceOnOff();*/ + } } else if ((pDevicePortConfig->PortID == DVP1) || (pDevicePortConfig->PortID == DVP12)) @@ -2132,16 +1885,7 @@ void ControlPwrSeqOff(UCHAR bDeviceIndex) } } } -/*---------------------------------------------------------------------------- -; -; LongWait() - wait V sync of display1 -; -; in: -; none -; out: -; none -; -;---------------------------------------------------------------------------*/ + void LongWait() { while (GetIS1Reg() & BIT3); @@ -2316,7 +2060,7 @@ void EnableATTR() OutPort(ATTR_DATA_WRITE, 0x20); } -/* Set Cr register value with Mask */ + void SetCRReg(UCHAR bRegIndex, UCHAR bRegValue, UCHAR bMask) { UCHAR btemp = 0x0; @@ -2339,7 +2083,7 @@ void SetCRReg(UCHAR bRegIndex, UCHAR bRegValue, UCHAR bMask) return; } -/* Get Cr register value */ + UCHAR GetCRReg(UCHAR bRegIndex) { UCHAR btemp = 0x0; @@ -2350,7 +2094,7 @@ UCHAR GetCRReg(UCHAR bRegIndex) return btemp; } -/* Set Sr register value with Mask */ + void SetSRReg(UCHAR bRegIndex, UCHAR bRegValue, UCHAR bMask) { UCHAR btemp = 0x0; @@ -2373,7 +2117,7 @@ void SetSRReg(UCHAR bRegIndex, UCHAR bRegValue, UCHAR bMask) return; } -/* Get Sr register value */ + UCHAR GetSRReg(UCHAR bRegIndex) { UCHAR btemp = 0x0; @@ -2401,7 +2145,7 @@ UCHAR GetARReg(UCHAR index) return bTmp; } -/* Set Gr register value with Mask */ + void SetGRReg(UCHAR bRegIndex, UCHAR bRegValue, UCHAR bMask) { UCHAR btemp = 0x0; @@ -2434,16 +2178,16 @@ UCHAR GetIS1Reg() return InPort(COLOR_INPUT_STATUS1_READ); } -/* Clear frame buffer */ + void ClearFrameBuffer(UCHAR DisplayPath,ULONG *pFrameBufferBase, MODE_INFO *pModeInfo, UCHAR ucColorDepth) { ULONG dwWidth = (ULONG)pModeInfo->H_Size, dwHeight = (ULONG)pModeInfo->V_Size, dwFactor = 0; ULONG i = 0; xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Enter ClearFrameBuffer()==\n"); - /* get display1/2 starting address */ - /* Check the color depth */ + + switch(ucColorDepth) { case 8: @@ -2456,7 +2200,7 @@ void ClearFrameBuffer(UCHAR DisplayPath,ULONG *pFrameBufferBase, MODE_INFO *pMod return; } - /* Clear */ + for(i = 0;i<((dwWidth*dwHeight)/dwFactor);i++) { *(pFrameBufferBase+i) = 0x00000000; @@ -2473,16 +2217,7 @@ ULONG Difference(ULONG Value1, ULONG Value2) return (Value2 - Value1); } -/*---------------------------------------------------------------------------- -; -; ReadScratch() -; -; in: -; Index = scratch index -; out: -; return = scratch data aligned to LSB -; -;---------------------------------------------------------------------------*/ + UCHAR ReadScratch(USHORT IndexMask) { UCHAR Index = (UCHAR)(IndexMask >> 8); @@ -2497,16 +2232,7 @@ UCHAR ReadScratch(USHORT IndexMask) return RetValue; } -/*---------------------------------------------------------------------------- -; -; WriteScratch() -; -; in: -; Index = scratch index -; Data = data to be written -; out: -; none -;---------------------------------------------------------------------------*/ + void WriteScratch(USHORT IndexMask, UCHAR Data) { UCHAR Index = (UCHAR)(IndexMask >> 8); @@ -2517,17 +2243,7 @@ void WriteScratch(USHORT IndexMask, UCHAR Data) SetCRReg(Index, Data, Mask); } -/*---------------------------------------------------------------------------- -; -; AlignDataToLSB() -; -; in: -; Data = data to be aligned -; Mask = mask of data -; out: -; return = aligned data -; -;---------------------------------------------------------------------------*/ + UCHAR AlignDataToLSB(UCHAR bData, UCHAR bMask) { bData &= bMask; @@ -2541,17 +2257,7 @@ UCHAR AlignDataToLSB(UCHAR bData, UCHAR bMask) return bData; } -/*---------------------------------------------------------------------------- -; -; AlignDataToMask() -; -; in: -; Data = data to be aligned -; Mask = mask of data -; out: -; return = aligned data -; -;---------------------------------------------------------------------------*/ + UCHAR AlignDataToMask(UCHAR bData, UCHAR bMask) { while ((bMask & BIT0) == 0) @@ -2563,16 +2269,7 @@ UCHAR AlignDataToMask(UCHAR bData, UCHAR bMask) return bData; } -/*---------------------------------------------------------------------------- -; -; SetDPMS - -; Input: -; DPMSState = DPMS_ON, DPMS_STANDBY, DPMS_SUSPEND, DPMS_OFF -; DisplayPath -; Output: -; none -; -;---------------------------------------------------------------------------*/ + void SetDPMS(UCHAR DPMSState, UCHAR DisplayPath) { UCHAR RegValue; @@ -2588,46 +2285,28 @@ void SetDPMS(UCHAR DPMSState, UCHAR DisplayPath) SetCRReg(0x3E, RegValue, BIT1+BIT0); } -/*---------------------------------------------------------------------------- -; -; DetectMonitor() -; -; in: -; none -; out: -; return = true if CRT connected -; -;---------------------------------------------------------------------------*/ + CI_STATUS DetectMonitor() { CI_STATUS ConnectStatus; - /* CRA9 = sense data = 0x80 */ + SetCRReg(0xA9, 0x80, 0xFF); - /* CRA8[6] = 1, start DAC sense */ + SetCRReg(0xA8, BIT6, BIT6); - /* wait H sync */ + WaitDisplayPeriod(); - /* ISR0[4] = 1, CRT attached */ + ConnectStatus = ((InPort(INPUT_STATUS_0_READ) & BIT4) ? true : false); SetCRReg(0xA8, 0x00, BIT6); return ConnectStatus; } -/*---------------------------------------------------------------------------- -; -; WaitDisplayPeriod() - wait H sync of display1 -; -; in: -; none -; out: -; none -; -;---------------------------------------------------------------------------*/ + void WaitDisplayPeriod() { while ((InPort(COLOR_INPUT_STATUS1_READ)&BIT0) == 1); @@ -2635,36 +2314,17 @@ void WaitDisplayPeriod() while ((InPort(COLOR_INPUT_STATUS1_READ)&BIT0) == 0); } -/*---------------------------------------------------------------------------- -; -; WaitPowerSequenceDone() - SR32[2] = 1, power sequence on complete -; = 0, power sequence off complete -; -; Input: -; none -; Output: -; none -; -;---------------------------------------------------------------------------*/ + void WaitPowerSequenceDone() { UCHAR SR32; SR32 = GetSRReg(0x32); - /* loop while power sequence status not changed */ + while(SR32 == GetSRReg(0x32)); } -/*-------------------------------------------------------------------- -; -; CheckForDSTNPanel() - -; -; Input: -; bDeviceIndex = device index -; return: -; true if device is DSTN panel -; -;--------------------------------------------------------------------*/ + CI_STATUS CheckForDSTNPanel(UCHAR bDeviceIndex) { PORT_CONFIG *pDevicePortConfig; @@ -2686,15 +2346,7 @@ CI_STATUS CheckForDSTNPanel(UCHAR bDeviceIndex) return false; } } -/*------------------------------------------------------------------- -; -; GetVESAMEMSize() -; Input: -; none -; Output: -; return VESA Memory Size (Unit: MB) -; -;------------------------------------------------------------------*/ + USHORT GetVESAMEMSize() { UCHAR bHWStrapping; @@ -2759,76 +2411,76 @@ CI_STATUS VBE_SetMode(CBIOS_Extension *pCBIOSExtension) #endif return true; } - /* update mode no */ + Set_VESA_MODE(wModeNum, DISP1); - /* cut data */ + SequencerOff(DISP1); - /* disable scaler */ + TurnOffScaler(DISP1); if (bCurDeviceID != bNewDeviceID) { - /* control power sequence off */ + ControlPwrSeqOff(bCurDeviceID); - /* turn off TX if necessary */ + - /* turn off digital port */ + TurnOffDigitalPort(bCurDeviceID); - /* update scratch IDX_IGA1_DEV_ID */ + Set_DEV_ID(bNewDeviceID, DISP1); } - /* update BDA? */ + - /* load Display1 VESA Mode init registers */ + LoadDisplay1VESAModeInitRegs(); - /* load timing on display1 */ + LoadTiming(DISP1, wModeNum); - /* set pitch */ + GetModePitch(wModeNum, &wPitch); SetPitch(DISP1, wPitch); - /* set color depth */ - xf86DrvMsgVerb(0, X_INFO, InfoLevel, " /* set color depth */\n"); + + xf86DrvMsgVerb(0, X_INFO, InfoLevel, " \n"); Get_MODE_INFO(wModeNum, &pModeInfo); GetModeColorDepth(wModeNum, pModeInfo, &bColorDepth); SetColorDepth(DISP1, bColorDepth); - /* load font */ + - /* load LUT */ + - /* clear FB */ - xf86DrvMsgVerb(0, X_INFO, InfoLevel, " /* clear FB */\n"); + + xf86DrvMsgVerb(0, X_INFO, InfoLevel, " \n"); if(!(pCBIOSExtension->pCBiosArguments->reg.x.BX & BIT15)) { ClearFrameBuffer(DISP1,(ULONG*)(pCBIOSExtension->VideoVirtualAddress),pModeInfo,bColorDepth); } - /* set FIFO */ - xf86DrvMsgVerb(0, X_INFO, InfoLevel, " /* set FIFO */\n"); + + xf86DrvMsgVerb(0, X_INFO, InfoLevel, " \n"); SetFIFO(DISP1); - /* config digital port */ - xf86DrvMsgVerb(0, X_INFO, InfoLevel, " /* config difital port */\n"); + + xf86DrvMsgVerb(0, X_INFO, InfoLevel, " \n"); ConfigDigitalPort(DISP1); TurnOnDigitalPort(bNewDeviceID); - /* Turu on TX */ + - /* turn on power sequence if necessary */ - xf86DrvMsgVerb(0, X_INFO, InfoLevel, " /* turn on power sequence if necessary */\n"); + + xf86DrvMsgVerb(0, X_INFO, InfoLevel, " \n"); ControlPwrSeqOn(bNewDeviceID); - /* turn on sequencer */ - xf86DrvMsgVerb(0, X_INFO, InfoLevel, " /* turn on sequencer */\n"); + + xf86DrvMsgVerb(0, X_INFO, InfoLevel, " \n"); SequencerOn(DISP1); SetVBERerurnStatus(VBEFunctionCallSuccessful, pCBIOSExtension->pCBiosArguments); @@ -2838,35 +2490,7 @@ CI_STATUS VBE_SetMode(CBIOS_Extension *pCBIOSExtension) #endif return true; } -/*------------------------------------------------------------------- -; -; VBE_SetGetScanLineLength() -; -; Input1: set/get display2 pitch -; pCBiosArguments->AX = 0x4F06 -; BL = 0x00: Set Scan Line Length in Pixels -; 0x01: Get Scan Line Length -; 0x02: Set Scan Line Length in Bytes -; 0x03: Get Maximum Scan Line Length -; CX = Desired Width in Pixels if BL = 00 -; Desired Width in Bytes if BL = 02 -; -; Input2: set/get display2 pitch -; pCBiosArguments->AX = 0x4F14 -; BL = 0x00: Set Scan Line Length in Pixels -; 0x01: Get Scan Line Length -; 0x02: Set Scan Line in Bytes -; 0x03: Get Maximum Scan Line Length -; CX = Desired Width in Pixels if BL = 00 -; Desired Width in Bytes if BL = 02 -; -; Output: -; pCBiosArguments->AX = VBE Return Status -; BX = Bytes Per Scan Line -; CX = Actual Pixels Pet Scan Line (truncated to nearest complete pixel) -; DX = Maximum Number of Scan Lines -; -;------------------------------------------------------------------*/ + CI_STATUS VBE_SetGetScanLineLength (CBIOS_ARGUMENTS *pCBiosArguments) { USHORT wModeNum; @@ -2876,7 +2500,7 @@ CI_STATUS VBE_SetGetScanLineLength (CBIOS_ARGUMENTS *pCBiosArguments) ULONG dwVESAMemSizeInBytes; USHORT wMaxPitchInBytes, wCurrentVDispEnd; USHORT VBEReturnStatus = VBEFunctionCallFail; - USHORT wPitchToBeSet = pCBiosArguments->reg.x.CX; /* maybe in pixel or in byte */ + USHORT wPitchToBeSet = pCBiosArguments->reg.x.CX; #if CBIOS_DEBUG xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Entry VBE_SetGetScanLineLength== \n"); @@ -2912,7 +2536,7 @@ CI_STATUS VBE_SetGetScanLineLength (CBIOS_ARGUMENTS *pCBiosArguments) wCurrentVDispEnd = GetVDisplayEnd(bDispalyPath); - /* align pitch to 8-byte */ + if (((ULONG)(dwVESAMemSizeInBytes / (ULONG)wCurrentVDispEnd) & 0xFFFF0000) == 0) { wMaxPitchInBytes = (USHORT)(dwVESAMemSizeInBytes / (ULONG)wCurrentVDispEnd) & 0xFFF8; @@ -2931,7 +2555,7 @@ CI_STATUS VBE_SetGetScanLineLength (CBIOS_ARGUMENTS *pCBiosArguments) { if (pCBiosArguments->reg.lh.BL == 0) { - /* transform pitch size from pixels to bytes */ + wPitchToBeSet <<= (bColorDepth >> 4); } @@ -2948,16 +2572,16 @@ CI_STATUS VBE_SetGetScanLineLength (CBIOS_ARGUMENTS *pCBiosArguments) if (pCBiosArguments->reg.lh.BL == 3) { - /* get maximum pitch in bytes */ + pCBiosArguments->reg.x.BX = wMaxPitchInBytes; } else { - /* get current pitch in bytes */ + pCBiosArguments->reg.x.BX =GetPitch(bDispalyPath); } - /* get current pitch in pixels */ + pCBiosArguments->reg.x.CX = pCBiosArguments->reg.x.BX >> (bColorDepth >> 4); pCBiosArguments->reg.x.DX = (dwVESAMemSizeInBytes / (USHORT)pCBiosArguments->reg.x.BX); @@ -2973,54 +2597,78 @@ CI_STATUS VBE_SetGetScanLineLength (CBIOS_ARGUMENTS *pCBiosArguments) CI_STATUS OEM_QueryBiosInfo (CBIOS_ARGUMENTS *pCBiosArguments) { USHORT VBEReturnStatus = VBEFunctionCallFail; + char bProjCode; + int wCustomerCode; + char bRelVersion; + char szPrj[2], szMajor[3], szMinor[3] ; + int wYear; + char bMonth, bDay; + char szYear[5], szMonth[3], szDay[3]; + char i,ucCRAA,ucCRAB; + #if CBIOS_DEBUG xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Entry OEM_QueryBiosInfo()== \n"); #endif - /* bx[15:0] = version number */ - - /*-------------------EBX PART--------------------; - ; ; - ;[31:24] : Branch version number - ;[23:8] : Customer Index - ;[7:0] : Release version number - */ - - - /*-------------------ECX PART--------------------; - ; ; - ; [31:18] : Reserved - ; [17:16] : DRAM bus width - ; 00 : 16bit - ; 01 : 32bit - ; 10 : 64bit - ; 11 : reserved - ; [15:4] : memory size in 256k unit - ; [3:0] : Memory data rate - ; 000 : DDR333 - ; 001 : DDR400 - ; 010 : DDR533 - ; 011 : DDR667 - ; 100 : DDR800 - ; xxx : Reserved - */ - - - /*-------------------EDX PART--------------------; - ; ; - ; VGA BIOS Build TIME ; - ;[31:16] : Year - ;[15: 8] : Month - ;[ 7: 0] : Day - */ - - - - /*-------------------SI PART--------------------; - ; ; - ; SI = supported device - */ + + + + + + if (BiosInfoData != NULL) + { + szPrj[1] = szMajor[2] = szMinor[2] = '\0'; + strncpy(szPrj, ((char *)BiosInfoData)+0x10, 1); + strncpy(szMajor, ((char *)BiosInfoData)+0x12, 2); + strncpy(szMinor, ((char *)BiosInfoData)+0x15, 2); + + + bProjCode = atoi(szPrj) ; + wCustomerCode = atoi(szMajor); + bRelVersion = atoi(szMinor); + pCBiosArguments->reg.ex.EBX = (bProjCode<<24) | (wCustomerCode<8) | bRelVersion; + +#if CBIOS_DEBUG + xf86DrvMsgVerb(0, X_INFO, InfoLevel, "Bios version : %d\n",pCBiosArguments->reg.ex.EBX); +#endif + } + + + + + + + ucCRAA = GetCRReg(0xAA); + pCBiosArguments->reg.ex.ECX = ucCRAA; + pCBiosArguments->reg.ex.ECX <<= 6; + + + ucCRAB = GetCRReg(0xAB); + ucCRAB &= BIT0 + BIT1 + BIT2; + pCBiosArguments->reg.ex.ECX |= ucCRAB; + + + + + if (BiosInfoData != NULL) + { + szMonth[2] = szDay[2] = szYear[4] = '\0'; + strncpy(szMonth, ((char *)BiosInfoData)+0x47, 2); + strncpy(szDay, ((char *)BiosInfoData)+0x4a, 2); + strncpy(szYear, ((char *)BiosInfoData)+0x56, 4); + + wYear = atoi(szYear); + bMonth = atoi(szMonth); + bDay = atoi(szDay); + pCBiosArguments->reg.ex.EDX = (wYear<<16) | (bMonth<8) | bDay; + +#if CBIOS_DEBUG + xf86DrvMsgVerb(0, X_INFO, InfoLevel, "Bios date : %d\n",pCBiosArguments->reg.ex.EDX); +#endif + } + + pCBiosArguments->reg.x.SI = 0; if(bCRTSUPPORT) { @@ -3039,9 +2687,7 @@ CI_STATUS OEM_QueryBiosInfo (CBIOS_ARGUMENTS *pCBiosArguments) pCBiosArguments->reg.x.SI |= B_DVI; } - /*-------------------EAX PART--------------------; - ; ; - */ + VBEReturnStatus = VBEFunctionCallSuccessful; SetVBERerurnStatus(VBEReturnStatus, pCBiosArguments); @@ -3052,7 +2698,7 @@ CI_STATUS OEM_QueryBiosInfo (CBIOS_ARGUMENTS *pCBiosArguments) } CI_STATUS OEM_QueryBiosCaps (CBIOS_ARGUMENTS *pCBiosArguments) { - /* VBIOS not implemented */ + #if CBIOS_DEBUG xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Entry OEM_QueryBiosCaps()== \n"); #endif @@ -3099,10 +2745,10 @@ CI_STATUS OEM_QueryDisplayPathInfo (CBIOS_ARGUMENTS *pCBiosArguments) pCBiosArguments->reg.lh.BL |= Get_NEW_DEV_ID(DISP1); pCBiosArguments->reg.ex.EBX <<= 2; - ScratchTempData = GetSRReg(0x58); /* First Display scaling control */ + ScratchTempData = GetSRReg(0x58); if (ScratchTempData & BIT0) { - ScratchTempData &= (BIT2 + BIT1); /* reserve H and V scaling control bits */ + ScratchTempData &= (BIT2 + BIT1); ScratchTempData >>= 1; pCBiosArguments->reg.lh.BL |= ScratchTempData; } @@ -3122,10 +2768,10 @@ CI_STATUS OEM_QueryDisplayPathInfo (CBIOS_ARGUMENTS *pCBiosArguments) pCBiosArguments->reg.lh.CL |= Get_NEW_DEV_ID(DISP1); pCBiosArguments->reg.ex.ECX <<= 2; - ScratchTempData = GetSRReg(0x50); /* Second Display scaling control */ + ScratchTempData = GetSRReg(0x50); if (ScratchTempData & BIT0) { - ScratchTempData &= (BIT2 + BIT1); /* reserve H and V scaling control bits */ + ScratchTempData &= (BIT2 + BIT1); ScratchTempData >>= 1; pCBiosArguments->reg.lh.BL |= ScratchTempData; } @@ -3165,7 +2811,7 @@ CI_STATUS OEM_QueryDeviceConnectStatus (CBIOS_ARGUMENTS *pCBiosArguments) } else { - /* Detect Monitor From EDID */ + } if (bLCDSUPPORT) @@ -3184,13 +2830,13 @@ CI_STATUS OEM_QueryDeviceConnectStatus (CBIOS_ARGUMENTS *pCBiosArguments) } else { - /* Query DVI Connect Status */ + } } if (bTVSUPPORT) { - /* TV DAC Sense */ + } SetVBERerurnStatus(VBEFunctionCallSuccessful, pCBiosArguments); @@ -3251,26 +2897,26 @@ CI_STATUS OEM_QuerySupportedMode (CBIOS_ARGUMENTS *pCBiosArguments) { if (wSerialNumber == 0) { - /* BX = VESA mode number */ + pCBiosArguments->reg.x.BX = wModeNum; xf86DrvMsgVerb(0, X_INFO, InternalLevel, "mode num = 0x%x \n", pCBiosArguments->reg.x.BX); - /* CL = Color depth */ + GetModeColorDepth(wModeNum, pModeInfo, &pCBiosArguments->reg.lh.CL); xf86DrvMsgVerb(0, X_INFO, InternalLevel, "color depth = %d \n", pCBiosArguments->reg.lh.CL); - /* CH = Refresh rate index */ + pCBiosArguments->reg.lh.CH = pRRateTable->RRate_ID; xf86DrvMsgVerb(0, X_INFO, InternalLevel, "RRate ID = %d \n", pCBiosArguments->reg.lh.CH); - /* EDX = mode resolution */ + pCBiosArguments->reg.ex.EDX = (((ULONG)pModeInfo->V_Size) << 16) | (ULONG)pModeInfo->H_Size; xf86DrvMsgVerb(0, X_INFO, InternalLevel, "H x V = %d x %d \n", pCBiosArguments->reg.x.DX, pCBiosArguments->reg.ex.EDX>>16); - /* ESI = attribute */ + pCBiosArguments->reg.x.SI = pRRateTable->Attribute; - /* EDI = pixel clock */ + pCBiosArguments->reg.ex.EDI = pRRateTable->Clock; xf86DrvMsgVerb(0, X_INFO, InternalLevel, "dot clk = %dkhz \n", pCBiosArguments->reg.ex.EDI); @@ -3330,26 +2976,26 @@ CI_STATUS OEM_QuerySupportedMode (CBIOS_ARGUMENTS *pCBiosArguments) { if (wSerialNumber == 0) { - /* BX = VESA mode number */ + pCBiosArguments->reg.x.BX = wModeNum; xf86DrvMsgVerb(0, X_INFO, InternalLevel, "mode num = 0x%x \n", pCBiosArguments->reg.x.BX); - /* CL = Color depth */ + GetModeColorDepth(wModeNum, pModeInfo, &pCBiosArguments->reg.lh.CL); xf86DrvMsgVerb(0, X_INFO, InternalLevel, "color depth = %d \n", pCBiosArguments->reg.lh.CL); - /* CH = Refresh rate index */ + pCBiosArguments->reg.lh.CH = pRRateTable->RRate_ID; xf86DrvMsgVerb(0, X_INFO, InternalLevel, "RRate ID = %d \n", pCBiosArguments->reg.lh.CH); - /* EDX = mode resolution */ + pCBiosArguments->reg.ex.EDX = (((ULONG)pModeInfo->V_Size) << 16) | (ULONG)pModeInfo->H_Size; xf86DrvMsgVerb(0, X_INFO, InternalLevel, "H x V = %d x %d \n", pCBiosArguments->reg.x.DX, pCBiosArguments->reg.ex.EDX>>16); - /* ESI = attribute */ + pCBiosArguments->reg.x.SI = pRRateTable->Attribute; - /* EDI = pixel clock */ + pCBiosArguments->reg.ex.EDI = pRRateTable->Clock; xf86DrvMsgVerb(0, X_INFO, InternalLevel, "dot clk = %dkhz \n", pCBiosArguments->reg.ex.EDI); @@ -3418,19 +3064,19 @@ CI_STATUS OEM_QueryLCDPanelSizeMode (CBIOS_ARGUMENTS *pCBiosArguments) return true; } - /* BX = VESA mode number */ + pCBiosArguments->reg.x.BX = wModeNum; - /* CH = Refresh rate index */ + pCBiosArguments->reg.lh.CH = pPanelTable->Timing.RRate_ID; - /* EDX = mode resolution */ + pCBiosArguments->reg.ex.EDX = (ULONG)pModeInfo->H_Size | ((ULONG)pModeInfo->V_Size) << 16; - /* SI = attribute */ + pCBiosArguments->reg.x.SI = pPanelTable->Timing.Attribute; - /* EDI = pixel clock */ + pCBiosArguments->reg.ex.EDI = pPanelTable->Timing.Clock; SetVBERerurnStatus (VBEFunctionCallSuccessful, pCBiosArguments); @@ -3495,7 +3141,7 @@ CI_STATUS OEM_SetActiveDisplayDevice (CBIOS_ARGUMENTS *pCBiosArguments) xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Entry OEM_SetActiveDisplayDevice()== \n"); #endif - /* check if new device is available */ + if ((!CheckForNewDeviceAvailable(bNewDeviceIndex1)&& (bNewDeviceIndex1!=0)) || (!CheckForNewDeviceAvailable(bNewDeviceIndex2)&& (bNewDeviceIndex2!=0))) { SetVBERerurnStatus(VBEFunctionCallFail, pCBiosArguments); @@ -3560,7 +3206,7 @@ CI_STATUS OEM_SetVESAModeForDisplay2 (CBIOS_Extension *pCBIOSExtension) bCurDeviceID = Get_DEV_ID(DISP2); bNewDeviceID = Get_NEW_DEV_ID(DISP2); - /* check if mode is supported no matter which device is preferred */ + if(!Get_MODE_INFO(wModeNum, &pModeInfo)) { SetVBERerurnStatus(VBEFunctionCallFail, pCBIOSExtension->pCBiosArguments); @@ -3569,64 +3215,64 @@ CI_STATUS OEM_SetVESAModeForDisplay2 (CBIOS_Extension *pCBIOSExtension) #endif return true; } - /* update mode no */ + Set_VESA_MODE(wModeNum, DISP2); - /* cut data */ + SequencerOff(DISP2); - /* disable scaler */ + TurnOffScaler(DISP2); if (bCurDeviceID != bNewDeviceID) { - /* control power sequence off */ + ControlPwrSeqOff(bCurDeviceID); - /* turn off TX if necessary */ + - /* turn off digital port */ + TurnOffDigitalPort(bCurDeviceID); - /* update scratch IDX_IGA2_DEV_ID */ + Set_DEV_ID(bNewDeviceID, DISP2); } - /* load Display2 VESA Mode init registers??*/ - /* load timing on display2 */ + + LoadTiming(DISP2, wModeNum); - /* set pitch */ + GetModePitch(wModeNum, &wPitch); SetPitch(DISP2, wPitch); - /* set color depth */ + Get_MODE_INFO(wModeNum, &pModeInfo); GetModeColorDepth(wModeNum, pModeInfo, &bColorDepth); SetColorDepth(DISP2, bColorDepth); - /* load font */ + - /* load LUT */ + - /* clear FB */ + if(!(pCBIOSExtension->pCBiosArguments->reg.x.CX & BIT15)) { ClearFrameBuffer(DISP2,(ULONG*)(pCBIOSExtension->VideoVirtualAddress),pModeInfo,bColorDepth); } - /* set FIFO */ + SetFIFO(DISP2); - /* config digital port */ + ConfigDigitalPort(DISP2); TurnOnDigitalPort(bNewDeviceID); - /* Turu on TX */ + - /* turn on power sequence if necessary */ + ControlPwrSeqOn(bNewDeviceID); SequencerOn(DISP2); @@ -3753,27 +3399,27 @@ CI_STATUS OEM_VideoPOST (CBIOS_ARGUMENTS *pCBiosArguments) xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Entry OEM_VideoPOST()== \n"); #endif - /* Enable VGA */ + btemp = InPort(RIO_VGA_ENABLE); btemp |= 1; OutPort(RIO_VGA_ENABLE,btemp); - /* Select 3D4 as CRTC I/O base & Add memory access */ + btemp = InPort(MISC_READ); btemp |= 3; OutPort(MISC_WRITE,btemp); - /* Open write key */ + SetCRReg(0x80, 0xA8, 0xFF); - /* Clear Scratch pad */ + for(i = 0x81;i < 0x9F;i++) { SetCRReg(i, 0x00, 0xFF); } - /* Load DRAM timing */ - /* Get HW Trapping */ + + btemp = GetCRReg(0xAB); if((btemp & 0x3) == 0x3) { @@ -3782,43 +3428,43 @@ CI_STATUS OEM_VideoPOST (CBIOS_ARGUMENTS *pCBiosArguments) if(bDDRII400) { - /* Set memory PLL(Memory clock:200MHz NS:0x1B, MS:0x00, RS:0x02) */ + SetCRReg(0xD9, 0x00, 0x80); SetCRReg(0xD8, 0x9B, 0xFF); } else { - /* Set memory PLL(Memory clock:266MHz NS:0x38, MS:0x00, RS:0x01) */ + SetCRReg(0xD9, 0x80, 0x80); SetCRReg(0xD8, 0x78, 0xFF); } - /* Fire memory PLL timing setting */ - /* btemp = GetCRReg(0xBB); */ + + btemp = 0x00; SetCRReg(0xBB, btemp, 0xFF); - /* Open LCK PLL */ - /* SetCRReg(0xB4, 0x01, 0x01); */ + + - /* Load extend table */ + SerialLoadTable(&pucPOSTInItRegs, 0, 0); - /* Write the default disp1 scratch pad as CRT */ + Set_NEW_DEV_ID(0, DISP1); if(bDDRII400) { - /* Load DDRII400 timing table. */ + SerialLoadTable(&pucDDRII400Tbl, 0, 0); } else { - /* Load DDRII533 timing table. */ + SerialLoadTable(&pucDDRII533Tbl, 0, 0); } - /* Wait for DDRII setting */ + do{ btemp = GetCRReg(0x5D); btemp &= 0x80; @@ -3826,9 +3472,9 @@ CI_STATUS OEM_VideoPOST (CBIOS_ARGUMENTS *pCBiosArguments) btemp1 &= 0x01; }while((btemp != 0x80)||(btemp1 != 0x01)); - /* Set the other registers */ + SerialLoadTable(&pucExtendRegs2, 0, 0); - /* SetDCC */ + #if CBIOS_DEBUG xf86DrvMsgVerb(0, X_INFO, DefaultLevel, "==Exit OEM_VideoPOST()== \n"); #endif @@ -3873,15 +3519,18 @@ CI_STATUS OEM_CINT10DataInit (CBIOS_ARGUMENTS *pCBiosArguments) ParseTable("PCIR", (UCHAR*)pCBiosArguments->reg.ex.ECX, (UCHAR**)(&PCIDataStruct)); xf86DrvMsgVerb(0, X_INFO, InfoLevel, "PCI Data Struct = %x", PCIDataStruct); + BiosInfoData = (UCHAR*)pCBiosArguments->reg.ex.ECX; + xf86DrvMsgVerb(0, X_INFO, InfoLevel, "Bios info data (header) = %x", BiosInfoData); + ParseTable("D1INIT", (UCHAR*)pCBiosArguments->reg.ex.ECX, (UCHAR**)(&Display1VESAModeInitRegs)); xf86DrvMsgVerb(0, X_INFO, InfoLevel, "Display1 VESA Mode Init Regs = %x", Display1VESAModeInitRegs); SetDeviceSupport(); #if 0 - ParseTable("??????", &ExtendRegs); // POST init table - ParseTable("??????", &ExtendRegs2); // POST init table - ParseTable("??????", &DDRII400Tbl); // DDR400 DRAM table - ParseTable("??????", &DDRII533Tbl); // DDR533 DRAM table + ParseTable("??????", &ExtendRegs); + ParseTable("??????", &ExtendRegs2); + ParseTable("??????", &DDRII400Tbl); + ParseTable("??????", &DDRII533Tbl); #endif SetVBERerurnStatus(VBEFunctionCallSuccessful, pCBiosArguments); } @@ -3897,7 +3546,7 @@ CI_STATUS CInt10(CBIOS_Extension *pCBIOSExtension) #endif - /* Fill related IO address */ + Relocate_IOAddress = pCBIOSExtension->IOAddress; switch(pCBIOSExtension->pCBiosArguments->reg.x.AX) @@ -3913,28 +3562,28 @@ CI_STATUS CInt10(CBIOS_Extension *pCBIOSExtension) case OEMFunction: switch(pCBIOSExtension->pCBiosArguments->reg.x.BX) { - case QueryBiosInfo: /* 0000 */ + case QueryBiosInfo: CInt10_Status = OEM_QueryBiosInfo(pCBIOSExtension->pCBiosArguments); break; - case QueryBiosCaps: /* 0001 */ + case QueryBiosCaps: CInt10_Status = OEM_QueryBiosCaps(pCBIOSExtension->pCBiosArguments); break; - case QueryExternalDeviceInfo: /* 0100 */ + case QueryExternalDeviceInfo: CInt10_Status = OEM_QueryExternalDeviceInfo(pCBIOSExtension->pCBiosArguments); break; - case QueryDisplayPathInfo: /* 0200 */ + case QueryDisplayPathInfo: CInt10_Status = OEM_QueryDisplayPathInfo(pCBIOSExtension->pCBiosArguments); break; - case QueryDeviceConnectStatus: /* 0201 */ + case QueryDeviceConnectStatus: CInt10_Status = OEM_QueryDeviceConnectStatus(pCBIOSExtension->pCBiosArguments); break; - case QuerySupportedMode: /* 0202 */ + case QuerySupportedMode: CInt10_Status = OEM_QuerySupportedMode(pCBIOSExtension->pCBiosArguments); break; - case QueryLCDPanelSizeMode: /* 0203 */ + case QueryLCDPanelSizeMode: CInt10_Status = OEM_QueryLCDPanelSizeMode(pCBIOSExtension->pCBiosArguments); break; - case QueryLCDPWMLevel: /* 0301 */ + case QueryLCDPWMLevel: CInt10_Status = OEM_QueryLCDPWMLevel(pCBIOSExtension->pCBiosArguments); break; case QueryTVConfiguration: @@ -3954,20 +3603,20 @@ CI_STATUS CInt10(CBIOS_Extension *pCBIOSExtension) CInt10_Status = VBE_SetGetScanLineLength(pCBIOSExtension->pCBiosArguments); break; - case SetActiveDisplayDevice: /* 8200 */ + case SetActiveDisplayDevice: CInt10_Status = OEM_SetActiveDisplayDevice(pCBIOSExtension->pCBiosArguments); break; case SetVESAModeForDisplay2: CInt10_Status = OEM_SetVESAModeForDisplay2(pCBIOSExtension); break; - case SetDevicePowerState: /* 8203 */ + case SetDevicePowerState: CInt10_Status = OEM_SetDevicePowerState(pCBIOSExtension->pCBiosArguments); break; - case SetDisplay1RefreshRate: /* 8301 */ - case SetDisplay2RefreshRate: /* 8381 */ + case SetDisplay1RefreshRate: + case SetDisplay2RefreshRate: CInt10_Status = OEM_SetRefreshRate(pCBIOSExtension->pCBiosArguments); break; - case SetLCDPWMLevel: /* 8302 */ + case SetLCDPWMLevel: CInt10_Status = OEM_SetLCDPWMLevel(pCBIOSExtension->pCBiosArguments); break; case SetTVType: @@ -4017,5 +3666,5 @@ CI_STATUS CInt10(CBIOS_Extension *pCBIOSExtension) #endif return CInt10_Status; -} /* end CInt10() */ +} |