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.veli...@gmail.com> --- src/nv_driver.c | 91 +++++++++++++++++++++++++++++---------------------------- 1 file 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 -- 1.8.0 _______________________________________________ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau