The load/unload callbacks in struct drm_driver are deprecated. Remove them and call functions explicitly.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de --- drivers/gpu/drm/mgag200/mgag200_drv.c | 44 +++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c index d43951caeea0..30b3b827adf8 100644 --- a/drivers/gpu/drm/mgag200/mgag200_drv.c +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c @@ -6,13 +6,13 @@ * Dave Airlie */
-#include <linux/module.h> #include <linux/console.h> +#include <linux/module.h> +#include <linux/pci.h>
#include <drm/drm_drv.h> #include <drm/drm_file.h> #include <drm/drm_ioctl.h> -#include <drm/drm_pci.h> #include <drm/drm_pciids.h>
#include "mgag200_drv.h" @@ -48,16 +48,50 @@ MODULE_DEVICE_TABLE(pci, pciidlist);
static int mga_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { + struct drm_device *dev; + int ret; + drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "mgag200drmfb");
- return drm_get_pci_dev(pdev, ent, &driver); + ret = pci_enable_device(pdev); + if (ret) + return ret; + + dev = drm_dev_alloc(&driver, &pdev->dev); + if (IS_ERR(dev)) { + ret = PTR_ERR(dev); + goto err_pci_disable_device; + } + + dev->pdev = pdev; + pci_set_drvdata(pdev, dev); + + ret = mgag200_driver_load(dev, ent->driver_data); + if (ret) + goto err_drm_dev_put; + + ret = drm_dev_register(dev, ent->driver_data); + if (ret) + goto err_mgag200_driver_unload; + + return 0; + +err_mgag200_driver_unload: + mgag200_driver_unload(dev); +err_drm_dev_put: + drm_dev_put(dev); +err_pci_disable_device: + pci_disable_device(pdev); + return ret; }
static void mga_pci_remove(struct pci_dev *pdev) { struct drm_device *dev = pci_get_drvdata(pdev);
- drm_put_dev(dev); + drm_dev_unregister(dev); + mgag200_driver_unload(dev); + drm_dev_put(dev); }
DEFINE_DRM_GEM_FOPS(mgag200_driver_fops); @@ -93,8 +127,6 @@ int mgag200_driver_dumb_create(struct drm_file *file,
static struct drm_driver driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET, - .load = mgag200_driver_load, - .unload = mgag200_driver_unload, .fops = &mgag200_driver_fops, .name = DRIVER_NAME, .desc = DRIVER_DESC, -- 2.23.0
On Thu, Dec 5, 2019 at 10:02 AM Thomas Zimmermann tzimmermann@suse.de wrote:
The load/unload callbacks in struct drm_driver are deprecated. Remove them and call functions explicitly.
Signed-off-by: Thomas Zimmermann tzimmermann@suse.de
Acked-by: Daniel Vetter daniel.vetter@ffwll.ch
The even fancier version of this would be to embed the drm_device and switch over to drm_dev_init(). -Daniel
drivers/gpu/drm/mgag200/mgag200_drv.c | 44 +++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c index d43951caeea0..30b3b827adf8 100644 --- a/drivers/gpu/drm/mgag200/mgag200_drv.c +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c @@ -6,13 +6,13 @@
Dave Airlie
*/
-#include <linux/module.h> #include <linux/console.h> +#include <linux/module.h> +#include <linux/pci.h>
#include <drm/drm_drv.h> #include <drm/drm_file.h> #include <drm/drm_ioctl.h> -#include <drm/drm_pci.h> #include <drm/drm_pciids.h>
#include "mgag200_drv.h" @@ -48,16 +48,50 @@ MODULE_DEVICE_TABLE(pci, pciidlist);
static int mga_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) {
struct drm_device *dev;
int ret;
drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "mgag200drmfb");
return drm_get_pci_dev(pdev, ent, &driver);
ret = pci_enable_device(pdev);
if (ret)
return ret;
dev = drm_dev_alloc(&driver, &pdev->dev);
if (IS_ERR(dev)) {
ret = PTR_ERR(dev);
goto err_pci_disable_device;
}
dev->pdev = pdev;
pci_set_drvdata(pdev, dev);
ret = mgag200_driver_load(dev, ent->driver_data);
if (ret)
goto err_drm_dev_put;
ret = drm_dev_register(dev, ent->driver_data);
if (ret)
goto err_mgag200_driver_unload;
return 0;
+err_mgag200_driver_unload:
mgag200_driver_unload(dev);
+err_drm_dev_put:
drm_dev_put(dev);
+err_pci_disable_device:
pci_disable_device(pdev);
return ret;
}
static void mga_pci_remove(struct pci_dev *pdev) { struct drm_device *dev = pci_get_drvdata(pdev);
drm_put_dev(dev);
drm_dev_unregister(dev);
mgag200_driver_unload(dev);
drm_dev_put(dev);
}
DEFINE_DRM_GEM_FOPS(mgag200_driver_fops); @@ -93,8 +127,6 @@ int mgag200_driver_dumb_create(struct drm_file *file,
static struct drm_driver driver = { .driver_features = DRIVER_GEM | DRIVER_MODESET,
.load = mgag200_driver_load,
.unload = mgag200_driver_unload, .fops = &mgag200_driver_fops, .name = DRIVER_NAME, .desc = DRIVER_DESC,
-- 2.23.0
dri-devel@lists.freedesktop.org