Convert XGI_Wait(Begin|End)Retrace to take a pointer to RelIO instead of pScrn.

This commit is contained in:
Ian Romanick
2007-04-12 16:08:56 -07:00
parent 7ed155e68f
commit 4f5ce32b7e
5 changed files with 18 additions and 21 deletions

View File

@@ -908,8 +908,8 @@ void XGINew_InitVBIOSData(PXGI_HW_DEVICE_INFO HwDeviceExtension, PVB_DEVICE_INFO
int compute_vclk(int Clock, int *out_n, int *out_dn, int *out_div,
int *out_sbit, int *out_scale);
void XGI_WaitBeginRetrace(ScrnInfoPtr pScrn);
void XGI_WaitEndRetrace(ScrnInfoPtr pScrn);
void XGI_WaitBeginRetrace(XGIIOADDRESS RelIO);
void XGI_WaitEndRetrace(XGIIOADDRESS RelIO);
/* 2005/11/21 added by jjtseng */
#define DelayS(sec) usleep((sec)*1000000)

View File

@@ -72,7 +72,7 @@ Volari_ShowCursor(ScrnInfoPtr pScrn)
xgiG2CRT2_EnableHWCursor(cursor_base, 0);
}
XGIG1_SetCursorPosition(pScrn, currX, currY) ;
XGI_WaitEndRetrace(pScrn);
XGI_WaitEndRetrace(pXGI->RelIO);
}
static void
@@ -86,7 +86,7 @@ Volari_HideCursor(ScrnInfoPtr pScrn)
xgiG1CRT2_DisableHWCursor() ;
}
XGIG1_SetCursorPosition(pScrn, currX, currY) ;
XGI_WaitEndRetrace(pScrn);
XGI_WaitEndRetrace(pXGI->RelIO);
}
static void

View File

@@ -711,19 +711,19 @@ XG40Mclk(XGIPtr pXGI)
static int
retrace_signals_active(XGIPtr pXGI)
retrace_signals_active(XGIIOADDRESS RelIO)
{
unsigned char temp;
/* Make sure the vertical retrace signal is enabled.
*/
inXGIIDXREG(XGICR, 0x17, temp);
inXGIIDXREG(RelIO + CROFFSET, 0x17, temp);
if (!(temp & 0x80))
return 0;
/* FIXME: Magic offset, what are you?
*/
inXGIIDXREG(XGISR, 0x1f, temp);
inXGIIDXREG(RelIO + SROFFSET, 0x1f, temp);
if(temp & 0xc0)
return 0;
@@ -739,21 +739,20 @@ retrace_signals_active(XGIPtr pXGI)
* nearly identical. Are both \b really necessary?
*/
void
XGI_WaitBeginRetrace(ScrnInfoPtr pScrn)
XGI_WaitBeginRetrace(XGIIOADDRESS RelIO)
{
XGIPtr pXGI = XGIPTR(pScrn);
int watchdog;
if (retrace_signals_active(pXGI)) {
if (retrace_signals_active(RelIO)) {
/* Wait for the CRTC to leave then re-enter the vertical retrace
* period.
*/
watchdog = 65536;
while ((inXGIREG(XGIINPSTAT) & IS_BIT_VERT_ACTIVE) && --watchdog)
while ((inXGIREG(RelIO + INPUTSTATOFFSET) & IS_BIT_VERT_ACTIVE) && --watchdog)
/* empty */ ;
watchdog = 65536;
while ((!(inXGIREG(XGIINPSTAT) & IS_BIT_VERT_ACTIVE)) && --watchdog)
while ((!(inXGIREG(RelIO + INPUTSTATOFFSET) & IS_BIT_VERT_ACTIVE)) && --watchdog)
/* empty */ ;
}
}
@@ -767,22 +766,20 @@ XGI_WaitBeginRetrace(ScrnInfoPtr pScrn)
* nearly identical. Are both \b really necessary?
*/
void
XGI_WaitEndRetrace(ScrnInfoPtr pScrn)
XGI_WaitEndRetrace(XGIIOADDRESS RelIO)
{
XGIPtr pXGI = XGIPTR(pScrn);
int watchdog;
if (retrace_signals_active(pXGI)) {
if (retrace_signals_active(RelIO)) {
/* Wait for the CRTC to enter then leave the vertical retrace
* period.
*/
watchdog = 65536;
while ((!(inXGIREG(XGIINPSTAT) & IS_BIT_VERT_ACTIVE)) && --watchdog)
while ((!(inXGIREG(RelIO + INPUTSTATOFFSET) & IS_BIT_VERT_ACTIVE)) && --watchdog)
/* empty */ ;
watchdog = 65536;
while ((inXGIREG(XGIINPSTAT) & IS_BIT_VERT_ACTIVE) && --watchdog)
while ((inXGIREG(RelIO + INPUTSTATOFFSET) & IS_BIT_VERT_ACTIVE) && --watchdog)
/* empty */ ;
}
}

View File

@@ -5737,7 +5737,7 @@ XGILeaveVT(int scrnIndex, int flags)
*/
#endif
pXGI->CursorInfoPtr->HideCursor(pScrn);
XGI_WaitBeginRetrace(pScrn);
XGI_WaitBeginRetrace(pXGI->RelIO);
}
XGIBridgeRestore(pScrn);
@@ -5798,7 +5798,7 @@ XGICloseScreen(int scrnIndex, ScreenPtr pScreen)
#endif
) {
pXGI->CursorInfoPtr->HideCursor(pScrn);
XGI_WaitBeginRetrace(pScrn);
XGI_WaitBeginRetrace(pXGI->RelIO);
}
XGIBridgeRestore(pScrn);

View File

@@ -84,7 +84,7 @@ XGI_XGIDetectCRT1(ScrnInfoPtr pScrn)
}
if(mustwait) {
for(i=0; i < 10; i++) XGI_WaitBeginRetrace(pScrn);
for(i=0; i < 10; i++) XGI_WaitBeginRetrace(pXGI->RelIO);
}
if((temp == 0) || (temp == 0xffff)) {