From: Emil Velikov <emil.veli...@collabora.com>

Keep the distinct pci/platform screen management in the separate probe
entry point and fold the rest into a single function.

Signed-off-by: Emil Velikov <emil.veli...@collabora.com>
---
 src/amdgpu_probe.c | 71 +++++++-----------------------------------------------
 1 file changed, 9 insertions(+), 62 deletions(-)

diff --git a/src/amdgpu_probe.c b/src/amdgpu_probe.c
index afc8d4c..d1ad13f 100644
--- a/src/amdgpu_probe.c
+++ b/src/amdgpu_probe.c
@@ -194,16 +194,14 @@ error_amdgpu:
        return FALSE;
 }
 
-static Bool amdgpu_get_scrninfo(int entity_num, struct pci_device *pci_dev)
+static Bool
+amdgpu_probe(ScrnInfoPtr pScrn, int entity_num,
+            struct pci_device *pci_dev, struct xf86_platform_device *dev)
 {
-       ScrnInfoPtr pScrn = NULL;
        EntityInfoPtr pEnt = NULL;
        DevUnion *pPriv;
        AMDGPUEntPtr pAMDGPUEnt;
 
-       pScrn = xf86ConfigPciEntity(pScrn, 0, entity_num, NULL,
-                                   NULL, NULL, NULL, NULL, NULL);
-
        if (!pScrn)
                return FALSE;
 
@@ -211,7 +209,6 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct 
pci_device *pci_dev)
        pScrn->driverName = AMDGPU_DRIVER_NAME;
        pScrn->name = AMDGPU_NAME;
        pScrn->Probe = NULL;
-
        pScrn->PreInit = AMDGPUPreInit_KMS;
        pScrn->ScreenInit = AMDGPUScreenInit_KMS;
        pScrn->SwitchMode = AMDGPUSwitchMode_KMS;
@@ -238,7 +235,7 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct 
pci_device *pci_dev)
                if (!pPriv->ptr)
                        goto error;
 
-               if (!amdgpu_device_setup(pScrn, pci_dev, NULL, pPriv->ptr))
+               if (!amdgpu_device_setup(pScrn, pci_dev, dev, pPriv->ptr))
                        goto error;
 
                pAMDGPUEnt = pPriv->ptr;
@@ -266,7 +263,10 @@ static Bool
 amdgpu_pci_probe(DriverPtr pDriver,
                 int entity_num, struct pci_device *device, intptr_t match_data)
 {
-       return amdgpu_get_scrninfo(entity_num, device);
+       ScrnInfoPtr pScrn = xf86ConfigPciEntity(NULL, 0, entity_num, NULL,
+                                               NULL, NULL, NULL, NULL, NULL);
+
+       return amdgpu_probe(pScrn, entity_num, device, NULL);
 }
 
 static Bool AMDGPUDriverFunc(ScrnInfoPtr scrn, xorgDriverFuncOp op, void *data)
@@ -295,9 +295,6 @@ amdgpu_platform_probe(DriverPtr pDriver,
 {
        ScrnInfoPtr pScrn;
        int scr_flags = 0;
-       EntityInfoPtr pEnt = NULL;
-       DevUnion *pPriv;
-       AMDGPUEntPtr pAMDGPUEnt;
 
        if (!dev->pdev)
                return FALSE;
@@ -310,57 +307,7 @@ amdgpu_platform_probe(DriverPtr pDriver,
                xf86SetEntityShared(entity_num);
        xf86AddEntityToScreen(pScrn, entity_num);
 
-       pScrn->driverVersion = AMDGPU_VERSION_CURRENT;
-       pScrn->driverName = AMDGPU_DRIVER_NAME;
-       pScrn->name = AMDGPU_NAME;
-       pScrn->Probe = NULL;
-       pScrn->PreInit = AMDGPUPreInit_KMS;
-       pScrn->ScreenInit = AMDGPUScreenInit_KMS;
-       pScrn->SwitchMode = AMDGPUSwitchMode_KMS;
-       pScrn->AdjustFrame = AMDGPUAdjustFrame_KMS;
-       pScrn->EnterVT = AMDGPUEnterVT_KMS;
-       pScrn->LeaveVT = AMDGPULeaveVT_KMS;
-       pScrn->FreeScreen = AMDGPUFreeScreen_KMS;
-       pScrn->ValidMode = AMDGPUValidMode;
-
-       pEnt = xf86GetEntityInfo(entity_num);
-
-       /* Create a AMDGPUEntity for all chips, even with old single head
-        * Radeon, need to use pAMDGPUEnt for new monitor detection routines.
-        */
-       xf86SetEntitySharable(entity_num);
-
-       if (gAMDGPUEntityIndex == -1)
-               gAMDGPUEntityIndex = xf86AllocateEntityPrivateIndex();
-
-       pPriv = xf86GetEntityPrivate(pEnt->index, gAMDGPUEntityIndex);
-
-       if (!pPriv->ptr) {
-
-               pPriv->ptr = xnfcalloc(sizeof(AMDGPUEntRec), 1);
-
-               if (!amdgpu_device_setup(pScrn, NULL, dev, pPriv->ptr))
-                       goto error;
-
-               pAMDGPUEnt = pPriv->ptr;
-               pAMDGPUEnt->fd_ref = 1;
-
-       } else {
-               pAMDGPUEnt = pPriv->ptr;
-               pAMDGPUEnt->fd_ref++;
-       }
-
-       xf86SetEntityInstanceForScreen(pScrn, pEnt->index,
-                                      xf86GetNumEntityInstances(pEnt->
-                                                                index)
-                                      - 1);
-       free(pEnt);
-
-       return TRUE;
-
-error:
-       free(pEnt);
-       return FALSE;
+       return amdgpu_probe(pScrn, entity_num, NULL, dev);
 }
 #endif
 
-- 
2.16.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to