summaryrefslogtreecommitdiff
path: root/xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c')
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c44
1 files changed, 26 insertions, 18 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c
index d16ce7819..c839cde9a 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c
@@ -1,5 +1,5 @@
/*
- * $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c,v 1.68 2000/03/06 23:54:15 dawes Exp $
+ * $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tseng/tseng_driver.c,v 1.69 2000/04/17 16:30:09 eich Exp $
*
* Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
*
@@ -96,7 +96,7 @@ static ModeStatus TsengValidMode(int scrnIndex, DisplayModePtr mode,
static Bool TsengMapMem(ScrnInfoPtr pScrn);
static Bool TsengUnmapMem(ScrnInfoPtr pScrn);
static void TsengSave(ScrnInfoPtr pScrn);
-static void TsengRestore(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, TsengRegPtr tsengReg);
+static void TsengRestore(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, TsengRegPtr tsengReg, int flags);
static Bool TsengModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
static void TsengUnlock(void);
static void TsengLock(void);
@@ -516,13 +516,15 @@ TsengProbe(DriverPtr drv, int flags)
foundScreen = TRUE;
else for (i = 0; i < numUsed; i++) {
/* Allocate a ScrnInfoRec */
- ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0);
- TsengAssignFPtr(pScrn);
- xf86ConfigActivePciEntity(pScrn,usedChips[i],TsengPciChipsets,
- NULL,NULL,NULL,NULL,NULL);
- foundScreen = TRUE;
+ ScrnInfoPtr pScrn = NULL;
+ if ((pScrn = xf86ConfigPciEntity(pScrn,0,usedChips[i],
+ TsengPciChipsets,NULL,
+ NULL,NULL,NULL,NULL))) {
+ TsengAssignFPtr(pScrn);
+ foundScreen = TRUE;
+ }
+ xfree(usedChips);
}
- xfree(usedChips);
}
}
@@ -534,11 +536,13 @@ TsengProbe(DriverPtr drv, int flags)
if (flags & PROBE_DETECT)
foundScreen = TRUE;
else for (i = 0; i < numUsed; i++) {
- ScrnInfoPtr pScrn = xf86AllocateScreen(drv,0);
- TsengAssignFPtr(pScrn);
- foundScreen = TRUE;
- xf86ConfigActiveIsaEntity(pScrn,usedChips[i],TsengIsaChipsets,
- NULL,NULL,NULL,NULL,NULL);
+ ScrnInfoPtr pScrn = NULL;
+ if ((pScrn = xf86ConfigIsaEntity(pScrn,0,usedChips[i],
+ TsengIsaChipsets,NULL,
+ NULL,NULL,NULL,NULL))) {
+ TsengAssignFPtr(pScrn);
+ foundScreen = TRUE;
+ }
}
xfree(usedChips);
}
@@ -1458,6 +1462,7 @@ TsengPreInit(ScrnInfoPtr pScrn, int flags)
if (flags & PROBE_DETECT) return FALSE;
PDEBUG(" TsengPreInit\n");
+
/*
* Note: This function is only called once at server startup, and
* not at the start of each server generation. This means that
@@ -2193,7 +2198,8 @@ TsengLeaveVT(int scrnIndex, int flags)
#endif
PDEBUG(" TsengLeaveVT\n");
- TsengRestore(pScrn, &(VGAHWPTR(pScrn)->SavedReg), &pTseng->SavedReg);
+ TsengRestore(pScrn, &(VGAHWPTR(pScrn)->SavedReg),
+ &pTseng->SavedReg,VGA_SR_ALL);
TsengLock();
vgaHWLock(VGAHWPTR(pScrn));
@@ -2208,7 +2214,8 @@ TsengCloseScreen(int scrnIndex, ScreenPtr pScreen)
PDEBUG(" TsengCloseScreen\n");
if (pScrn->vtSema) {
- TsengRestore(pScrn, &(VGAHWPTR(pScrn)->SavedReg), &(pTseng->SavedReg));
+ TsengRestore(pScrn, &(VGAHWPTR(pScrn)->SavedReg),
+ &(pTseng->SavedReg),VGA_SR_ALL);
TsengUnmapMem(pScrn);
}
if (pTseng->AccelInfoRec)
@@ -2656,7 +2663,7 @@ TsengModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
}
vgaHWUnlock(hwp); /* TODO: is this needed (tsengEnterVT does this) */
/* Program the registers */
- TsengRestore(pScrn, &hwp->ModeReg, new);
+ TsengRestore(pScrn, &hwp->ModeReg, new, VGA_SR_MODE);
return TRUE;
}
@@ -2916,7 +2923,8 @@ TsengSave(ScrnInfoPtr pScrn)
*/
static void
-TsengRestore(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, TsengRegPtr tsengReg)
+TsengRestore(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, TsengRegPtr tsengReg,
+ int flags)
{
vgaHWPtr hwp;
TsengPtr pTseng;
@@ -3053,7 +3061,7 @@ TsengRestore(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, TsengRegPtr tsengReg)
outw(iobase + 4, (tsengReg->ExtCRTC[0x3F] << 8) | 0x3F);
outw(iobase + 4, (tsengReg->ExtCRTC[0x30] << 8) | 0x30);
outw(iobase + 4, (tsengReg->ExtCRTC[0x31] << 8) | 0x31);
- vgaHWRestore(pScrn, vgaReg, VGA_SR_ALL); /* TODO: does this belong HERE, in the middle? */
+ vgaHWRestore(pScrn, vgaReg, flags); /* TODO: does this belong HERE, in the middle? */
outw(0x3C4, (tsengReg->ExtTS[6] << 8) | 0x06);
outw(0x3C4, (tsengReg->ExtTS[7] << 8) | 0x07);
tmp = inb(iobase + 0x0A); /* reset flip-flop */