summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmil Velikov <emil.l.velikov@gmail.com>2012-11-02 03:57:40 +0000
committerBen Skeggs <bskeggs@redhat.com>2012-11-05 19:19:48 +1000
commit78f24dc3798d635fca2e20856a09012c28bbbb8b (patch)
treebbe84ec2f23961731c292fe63789d3884e82d866
parent47457fbd5006070ea9a06238a5a69ca8167dac77 (diff)
nouveau: introduce NVInitScrn()
Common/helper function for NV{Pci,Platform}Probe() This introduces some the following functions to the NVPlatformProbe codepath * xf86SetEntitySharable() * xf86SetEntityInstanceForScreen() Necessary for dualhead, xinerama and/or zaphodhead v2: Rename nouveau_init_scrn() to NVInitScrn() Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--src/nv_driver.c91
1 files changed, 47 insertions, 44 deletions
diff --git a/src/nv_driver.c b/src/nv_driver.c
index c885e73..dc4f3b2 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -74,36 +74,10 @@ static Bool NVPciProbe ( DriverPtr drv,
intptr_t match_data );
#ifdef XSERVER_PLATFORM_BUS
-static Bool
-NVPlatformProbe(DriverPtr driver,
- int entity_num, int flags, struct xf86_platform_device *dev, intptr_t dev_match_data)
-{
- ScrnInfoPtr scrn = NULL;
- uint32_t scr_flags = 0;
-
- if (!dev->pdev)
- return FALSE;
-
- if (flags & PLATFORM_PROBE_GPU_SCREEN)
- scr_flags = XF86_ALLOCATE_GPU_SCREEN;
-
- scrn = xf86AllocateScreen(driver, scr_flags);
- xf86AddEntityToScreen(scrn, entity_num);
-
- scrn->driverVersion = NV_VERSION;
- scrn->driverName = NV_DRIVER_NAME;
- scrn->name = NV_NAME;
-
- scrn->Probe = NULL;
- scrn->PreInit = NVPreInit;
- scrn->ScreenInit = NVScreenInit;
- scrn->SwitchMode = NVSwitchMode;
- scrn->AdjustFrame = NVAdjustFrame;
- scrn->EnterVT = NVEnterVT;
- scrn->LeaveVT = NVLeaveVT;
- scrn->FreeScreen = NVFreeScreen;
- return scrn != NULL;
-}
+static Bool NVPlatformProbe(DriverPtr driver,
+ int entity_num, int flags,
+ struct xf86_platform_device *dev,
+ intptr_t dev_match_data);
#endif
/*
@@ -251,6 +225,27 @@ NVDriverFunc(ScrnInfoPtr scrn, xorgDriverFuncOp op, void *data)
}
}
+static void
+NVInitScrn(ScrnInfoPtr pScrn, int entity_num)
+{
+ pScrn->driverVersion = NV_VERSION;
+ pScrn->driverName = NV_DRIVER_NAME;
+ pScrn->name = NV_NAME;
+
+ pScrn->Probe = NULL;
+ pScrn->PreInit = NVPreInit;
+ pScrn->ScreenInit = NVScreenInit;
+ pScrn->SwitchMode = NVSwitchMode;
+ pScrn->AdjustFrame = NVAdjustFrame;
+ pScrn->EnterVT = NVEnterVT;
+ pScrn->LeaveVT = NVLeaveVT;
+ pScrn->FreeScreen = NVFreeScreen;
+
+ xf86SetEntitySharable(entity_num);
+ xf86SetEntityInstanceForScreen(pScrn, entity_num,
+ xf86GetNumEntityInstances(entity_num) - 1);
+}
+
static Bool
NVPciProbe(DriverPtr drv, int entity_num, struct pci_device *pci_dev,
intptr_t match_data)
@@ -325,25 +320,33 @@ NVPciProbe(DriverPtr drv, int entity_num, struct pci_device *pci_dev,
if (!pScrn)
return FALSE;
- pScrn->driverVersion = NV_VERSION;
- pScrn->driverName = NV_DRIVER_NAME;
- pScrn->name = NV_NAME;
+ NVInitScrn(pScrn, entity_num);
- pScrn->Probe = NULL;
- pScrn->PreInit = NVPreInit;
- pScrn->ScreenInit = NVScreenInit;
- pScrn->SwitchMode = NVSwitchMode;
- pScrn->AdjustFrame = NVAdjustFrame;
- pScrn->EnterVT = NVEnterVT;
- pScrn->LeaveVT = NVLeaveVT;
- pScrn->FreeScreen = NVFreeScreen;
+ return TRUE;
+}
- xf86SetEntitySharable(entity_num);
- xf86SetEntityInstanceForScreen(pScrn, entity_num,
- xf86GetNumEntityInstances(entity_num) - 1);
+#ifdef XSERVER_PLATFORM_BUS
+static Bool
+NVPlatformProbe(DriverPtr driver,
+ int entity_num, int flags, struct xf86_platform_device *dev, intptr_t dev_match_data)
+{
+ ScrnInfoPtr scrn = NULL;
+ uint32_t scr_flags = 0;
+
+ if (!dev->pdev)
+ return FALSE;
+
+ if (flags & PLATFORM_PROBE_GPU_SCREEN)
+ scr_flags = XF86_ALLOCATE_GPU_SCREEN;
+
+ scrn = xf86AllocateScreen(driver, scr_flags);
+ xf86AddEntityToScreen(scrn, entity_num);
+
+ NVInitScrn(scrn, entity_num);
return TRUE;
}
+#endif
#define MAX_CHIPS MAXSCREENS