Use drm_dev_alloc(), drm_dev_register() and remove the .load and .unload
methods from drm_driver.

Signed-off-by: Ulrich Hecht <ulrich.hecht+rene...@gmail.com>
---
 drivers/gpu/drm/img-rogue/1.6/mt8173/mtk_module.c | 14 +++++++++++--
 drivers/gpu/drm/img-rogue/1.6/pvr_drm.c           | 24 +----------------------
 2 files changed, 13 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/img-rogue/1.6/mt8173/mtk_module.c 
b/drivers/gpu/drm/img-rogue/1.6/mt8173/mtk_module.c
index 5df3a15..1ef75bb 100644
--- a/drivers/gpu/drm/img-rogue/1.6/mt8173/mtk_module.c
+++ b/drivers/gpu/drm/img-rogue/1.6/mt8173/mtk_module.c
@@ -109,7 +109,7 @@ static struct platform_driver powervr_driver = {
 *****************************************************************************/
 int PVRSRVSystemInit(struct drm_device *pDrmDevice)
 {
-       struct platform_device *pDevice = pDrmDevice->platformdev;
+       struct platform_device *pDevice = to_platform_device(pDrmDevice->dev);
        PVRSRV_ERROR err;
 
        PVR_TRACE(("%s (pDevice=%p)", __func__, pDevice));
@@ -160,8 +160,10 @@ void PVRSRVSystemDeInit(struct platform_device *pDevice)
  @Return 0 for success or <0 for an error.
 
 *****************************************************************************/
+int PVRSRVDRMLoad(struct drm_device *dev, unsigned long flags);
 static int PVRSRVDriverProbe(struct platform_device *pDevice)
 {
+       struct drm_device *drm;
        int result;
 
        PVR_TRACE(("%s (pDevice=%p)", __func__, pDevice));
@@ -172,13 +174,21 @@ static int PVRSRVDriverProbe(struct platform_device 
*pDevice)
                        return result;
        }
 
-       result = drm_platform_init(&sPVRDRMDriver, pDevice);
+       drm = drm_dev_alloc(&sPVRDRMDriver, &pDevice->dev);
+        if (IS_ERR(drm))
+               return PTR_ERR(drm);
+
+       platform_set_drvdata(pDevice, drm);
+
+       result = PVRSRVDRMLoad(drm, 0);
 
        dma_set_mask(&pDevice->dev, DMA_BIT_MASK(33));
 
        if (result == 0)
                PVRSRVDeviceInit();
 
+       result = drm_dev_register(drm, 0);
+
        return result;
 }
 
diff --git a/drivers/gpu/drm/img-rogue/1.6/pvr_drm.c 
b/drivers/gpu/drm/img-rogue/1.6/pvr_drm.c
index 7439a6f..36c5a76 100644
--- a/drivers/gpu/drm/img-rogue/1.6/pvr_drm.c
+++ b/drivers/gpu/drm/img-rogue/1.6/pvr_drm.c
@@ -107,17 +107,12 @@ DECLARE_WAIT_QUEUE_HEAD(sWaitForInit);
 IMG_BOOL bInitComplete;
 IMG_BOOL bInitFailed;
 
-static int PVRSRVDRMLoad(struct drm_device *dev, unsigned long flags)
+int PVRSRVDRMLoad(struct drm_device *dev, unsigned long flags)
 {
        int iRes;
 
        PVR_TRACE(("PVRSRVDRMLoad"));
 
-#if defined(LDM_PLATFORM)
-       /* The equivalent is done for PCI modesetting drivers by 
drm_get_pci_dev() */
-       platform_set_drvdata(dev->platformdev, dev);
-#endif
-
        /* Module initialisation */
        iRes = PVRSRVSystemInit(dev);
        if (iRes != 0)
@@ -141,21 +136,6 @@ static int PVRSRVDRMLoad(struct drm_device *dev, unsigned 
long flags)
        return iRes;
 }
 
-static int PVRSRVDRMUnload(struct drm_device *dev)
-{
-#if defined(LDM_PLATFORM)
-       LDM_DEV *pDevice = dev->platformdev;
-#elif defined(LDM_PCI)
-       LDM_DEV *pDevice = dev->pdev;
-#endif
-
-       PVR_TRACE(("PVRSRVDRMUnload"));
-
-       PVRSRVSystemDeInit(pDevice);
-
-       return 0;
-}
-
 static int PVRSRVDRMOpen(struct drm_device *dev, struct drm_file *file)
 {
        while (!bInitComplete)
@@ -306,8 +286,6 @@ struct drm_driver sPVRDRMDriver =
        .driver_features        = DRIVER_MODESET | DRIVER_RENDER,
 
        .dev_priv_size          = 0,
-       .load                   = PVRSRVDRMLoad,
-       .unload                 = PVRSRVDRMUnload,
        .open                   = PVRSRVDRMOpen,
        .postclose              = PVRSRVRelease,
 
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to