mirror of
https://github.com/X11Libre/xf86-video-xgi.git
synced 2026-03-24 01:24:35 +00:00
Convert XGI_Wait(Begin|End)Retrace to take a pointer to RelIO instead of pScrn.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */ ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user