From eeaaf370854b63966f0b5adbd00d2e6809b773c1 Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Sat, 31 Mar 2018 15:00:16 +0100 Subject: Introduce amdgpu_device_setup helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It folds the device specifics (open fd, device init) into a single place. v2: - Rebase - Pass pAMDGPUEnt to amdgpu_device_setup (Michel) Signed-off-by: Emil Velikov Reviewed-by: Michel Dänzer Acked-by: Alex Deucher --- src/amdgpu_probe.c | 60 +++++++++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/src/amdgpu_probe.c b/src/amdgpu_probe.c index a59b4ff..30e2d67 100644 --- a/src/amdgpu_probe.c +++ b/src/amdgpu_probe.c @@ -212,6 +212,35 @@ static Bool amdgpu_open_drm_master(ScrnInfoPtr pScrn, return TRUE; } +static Bool amdgpu_device_setup(ScrnInfoPtr pScrn, + struct pci_device *pci_dev, + struct xf86_platform_device *platform_dev, + AMDGPUEntPtr pAMDGPUEnt) +{ + uint32_t major_version; + uint32_t minor_version; + + pAMDGPUEnt->platform_dev = platform_dev; + if (!amdgpu_open_drm_master(pScrn, pci_dev, platform_dev, + pAMDGPUEnt)) + return FALSE; + + if (amdgpu_device_initialize(pAMDGPUEnt->fd, + &major_version, + &minor_version, + &pAMDGPUEnt->pDev)) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "amdgpu_device_initialize failed\n"); + goto error_amdgpu; + } + + return TRUE; + +error_amdgpu: + amdgpu_kernel_close_fd(pAMDGPUEnt); + return FALSE; +} + static Bool amdgpu_get_scrninfo(int entity_num, struct pci_device *pci_dev) { ScrnInfoPtr pScrn = NULL; @@ -252,27 +281,16 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct pci_device *pci_dev) pPriv = xf86GetEntityPrivate(pEnt->index, gAMDGPUEntityIndex); if (!pPriv->ptr) { - uint32_t major_version; - uint32_t minor_version; - pPriv->ptr = xnfcalloc(sizeof(AMDGPUEntRec), 1); if (!pPriv->ptr) goto error; pAMDGPUEnt = pPriv->ptr; - if (!amdgpu_open_drm_master(pScrn, pci_dev, NULL, pAMDGPUEnt)) + if (!amdgpu_device_setup(pScrn, pci_dev, NULL, pAMDGPUEnt)) goto error; pAMDGPUEnt->fd_ref = 1; - if (amdgpu_device_initialize(pAMDGPUEnt->fd, - &major_version, - &minor_version, - &pAMDGPUEnt->pDev)) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "amdgpu_device_initialize failed\n"); - goto error_amdgpu; - } } else { pAMDGPUEnt = pPriv->ptr; @@ -294,8 +312,6 @@ static Bool amdgpu_get_scrninfo(int entity_num, struct pci_device *pci_dev) return TRUE; -error_amdgpu: - amdgpu_kernel_close_fd(pAMDGPUEnt); error: free(pEnt); return FALSE; @@ -375,25 +391,15 @@ amdgpu_platform_probe(DriverPtr pDriver, pPriv = xf86GetEntityPrivate(pEnt->index, gAMDGPUEntityIndex); if (!pPriv->ptr) { - uint32_t major_version; - uint32_t minor_version; pPriv->ptr = xnfcalloc(sizeof(AMDGPUEntRec), 1); + pAMDGPUEnt = pPriv->ptr; - pAMDGPUEnt->platform_dev = dev; - if (!amdgpu_open_drm_master(pScrn, NULL, dev, pAMDGPUEnt)) + if (!amdgpu_device_setup(pScrn, NULL, dev, pAMDGPUEnt)) goto error; pAMDGPUEnt->fd_ref = 1; - if (amdgpu_device_initialize(pAMDGPUEnt->fd, - &major_version, - &minor_version, - &pAMDGPUEnt->pDev)) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "amdgpu_device_initialize failed\n"); - goto error_amdgpu; - } } else { pAMDGPUEnt = pPriv->ptr; @@ -415,8 +421,6 @@ amdgpu_platform_probe(DriverPtr pDriver, return TRUE; -error_amdgpu: - amdgpu_kernel_close_fd(pAMDGPUEnt); error: free(pEnt); return FALSE; -- cgit v1.2.3