summaryrefslogtreecommitdiff
path: root/xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c
diff options
context:
space:
mode:
authoralanh <alanh>2000-07-10 21:17:26 +0000
committeralanh <alanh>2000-07-10 21:17:26 +0000
commit30722f5171428576252260bfe13e2dcd8f622a4d (patch)
treeda831e272145819ef138fd4ca1183f2b782ac2d1 /xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c
parent55378d1c9953642fb1b327237d51287d4d8beefb (diff)
Import of XFree86 4.0.1X_4_0_1
Diffstat (limited to 'xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c')
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c116
1 files changed, 56 insertions, 60 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c b/xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c
index 119bdbe92..ce84e6475 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c,v 1.20 2000/03/01 16:01:07 tsi Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/fbdev/fbdev.c,v 1.22 2000/06/13 02:28:33 dawes Exp $ */
/*
* Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk>
@@ -243,7 +243,7 @@ static Bool
FBDevProbe(DriverPtr drv, int flags)
{
int i;
- ScrnInfoPtr pScrn, pScrn0;
+ ScrnInfoPtr pScrn;
GDevPtr *devSections = NULL;
int numDevSections;
int bus,device,func;
@@ -256,71 +256,67 @@ FBDevProbe(DriverPtr drv, int flags)
if (flags & PROBE_DETECT)
return FALSE;
- pScrn0 = xf86AllocateScreen(drv, 0);
- if (!xf86LoadSubModule(pScrn0, "fbdevhw")) {
- xf86DeleteScreen(pScrn0->scrnIndex,0);
- return FALSE;
- }
+ if ((numDevSections = xf86MatchDevice(FBDEV_DRIVER_NAME, &devSections)) <= 0)
+ return FALSE;
+
+ if (!xf86LoadDrvSubModule(drv, "fbdevhw"))
+ return FALSE;
+
xf86LoaderReqSymLists(fbdevHWSymbols, NULL);
-
- if ((numDevSections = xf86MatchDevice(FBDEV_DRIVER_NAME, &devSections)) <= 0) {
- xf86DeleteScreen(pScrn0->scrnIndex,0);
- return FALSE;
- }
-
+
for (i = 0; i < numDevSections; i++) {
- dev = xf86FindOptionValue(devSections[i]->options,"fbdev");
+ dev = xf86FindOptionValue(devSections[i]->options,"fbdev");
+ if (devSections[i]->busID) {
+ xf86ParsePciBusString(devSections[i]->busID,&bus,&device,&func);
+ if (!xf86CheckPciSlot(bus,device,func))
+ continue;
+ }
+ if (fbdevHWProbe(NULL,dev,NULL)) {
+ pScrn = NULL;
if (devSections[i]->busID) {
- xf86ParsePciBusString(devSections[i]->busID,&bus,&device,&func);
- if (!xf86CheckPciSlot(bus,device,func))
- continue;
+ /* XXX what about when there's no busID set? */
+ int entity;
+
+ entity = xf86ClaimPciSlot(bus,device,func,drv,
+ 0,devSections[i],
+ TRUE);
+ pScrn = xf86ConfigPciEntity(pScrn,0,entity,
+ NULL,RES_SHARED_VGA,
+ NULL,NULL,NULL,NULL);
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "claimed PCI slot %d:%d:%d\n",bus,device,func);
+
+ } else {
+ /* XXX This is a quick hack */
+ int entity;
+
+ entity = xf86ClaimIsaSlot(drv, 0,
+ devSections[i], TRUE);
+ pScrn = xf86ConfigIsaEntity(pScrn,0,entity,
+ NULL,RES_SHARED_VGA,
+ NULL,NULL,NULL,NULL);
}
- if (fbdevHWProbe(NULL,dev)) {
- foundScreen = TRUE;
- pScrn = xf86AllocateScreen(drv, 0);
- xf86LoadSubModule(pScrn, "fbdevhw");
- xf86LoaderReqSymLists(fbdevHWSymbols, NULL);
-
- pScrn->driverVersion = VERSION;
- pScrn->driverName = FBDEV_DRIVER_NAME;
- pScrn->name = FBDEV_NAME;
- pScrn->Probe = FBDevProbe;
- pScrn->PreInit = FBDevPreInit;
- pScrn->ScreenInit = FBDevScreenInit;
- pScrn->SwitchMode = fbdevHWSwitchMode;
- pScrn->AdjustFrame = fbdevHWAdjustFrame;
- pScrn->EnterVT = fbdevHWEnterVT;
- pScrn->LeaveVT = fbdevHWLeaveVT;
- pScrn->ValidMode = fbdevHWValidMode;
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "using %s\n", dev ? dev : "default device");
- if (devSections[i]->busID) {
- /* XXX what about when there's no busID set? */
- int entity;
-
- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
- "claimed PCI slot %d:%d:%d\n",bus,device,func);
- entity = xf86ClaimPciSlot(bus,device,func,drv,
- 0,devSections[i],
- TRUE);
- xf86ConfigActivePciEntity(pScrn,entity,
- NULL,RES_SHARED_VGA,
- NULL,NULL,NULL,NULL);
- } else {
- /* XXX This is a quick hack */
- int entity;
-
- entity = xf86ClaimIsaSlot(drv, 0,
- devSections[i], TRUE);
- xf86ConfigActiveIsaEntity(pScrn,entity,
- NULL,RES_SHARED_VGA,
- NULL,NULL,NULL,NULL);
- }
+ if (pScrn) {
+ foundScreen = TRUE;
+
+ pScrn->driverVersion = VERSION;
+ pScrn->driverName = FBDEV_DRIVER_NAME;
+ pScrn->name = FBDEV_NAME;
+ pScrn->Probe = FBDevProbe;
+ pScrn->PreInit = FBDevPreInit;
+ pScrn->ScreenInit = FBDevScreenInit;
+ pScrn->SwitchMode = fbdevHWSwitchMode;
+ pScrn->AdjustFrame = fbdevHWAdjustFrame;
+ pScrn->EnterVT = fbdevHWEnterVT;
+ pScrn->LeaveVT = fbdevHWLeaveVT;
+ pScrn->ValidMode = fbdevHWValidMode;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "using %s\n", dev ? dev : "default device");
}
+ }
}
xfree(devSections);
- xf86DeleteScreen(pScrn0->scrnIndex,0);
TRACE("probe done");
return foundScreen;
}