drm: qxl: Open code teardown function for qxl
authorGabriel Krisman Bertazi <krisman@collabora.co.uk>
Thu, 19 Jan 2017 13:48:06 +0000 (11:48 -0200)
committerGustavo Padovan <gustavo.padovan@collabora.com>
Thu, 19 Jan 2017 17:33:30 +0000 (15:33 -0200)
This avoids using the deprecated drm_put_dev() and unload() hook
interfaces in the qxl driver.

Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Gustavo Padovan <gustavo.padovan@collabora.com>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170119134806.8926-2-krisman@collabora.co.uk
drivers/gpu/drm/qxl/qxl_drv.c
drivers/gpu/drm/qxl/qxl_drv.h
drivers/gpu/drm/qxl/qxl_kms.c

index 7cc29027a61250074deddec49843cfd182157fdf..6e0f8a2d8ac998b8087d3a1dbf50ac17526d0125 100644 (file)
@@ -129,8 +129,16 @@ static void
 qxl_pci_remove(struct pci_dev *pdev)
 {
        struct drm_device *dev = pci_get_drvdata(pdev);
+       struct qxl_device *qdev = dev->dev_private;
+
+       drm_dev_unregister(dev);
+
+       qxl_modeset_fini(qdev);
+       qxl_device_fini(qdev);
 
-       drm_put_dev(dev);
+       dev->dev_private = NULL;
+       kfree(qdev);
+       drm_dev_unref(dev);
 }
 
 static const struct file_operations qxl_fops = {
@@ -285,7 +293,6 @@ static struct pci_driver qxl_pci_driver = {
 static struct drm_driver qxl_driver = {
        .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME |
                           DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED,
-       .unload = qxl_driver_unload,
        .get_vblank_counter = qxl_noop_get_vblank_counter,
        .enable_vblank = qxl_noop_enable_vblank,
        .disable_vblank = qxl_noop_disable_vblank,
index 83201988394f48b3a1b467c041f4c245d7a25ed4..0d877fa6116273af8a9f1336cacdde453090c941 100644 (file)
@@ -340,8 +340,6 @@ int qxl_device_init(struct qxl_device *qdev, struct drm_device *ddev,
                    struct pci_dev *pdev,  unsigned long flags);
 void qxl_device_fini(struct qxl_device *qdev);
 
-void qxl_driver_unload(struct drm_device *dev);
-
 int qxl_modeset_init(struct qxl_device *qdev);
 void qxl_modeset_fini(struct qxl_device *qdev);
 
index 6848057d0917e6e8bbb2d43a3a7907a71f61dd3c..d0666f5dccd6af9727160d0473572796c10cd59a 100644 (file)
@@ -284,19 +284,3 @@ void qxl_device_fini(struct qxl_device *qdev)
        qdev->mode_info.num_modes = 0;
        qxl_debugfs_remove_files(qdev);
 }
-
-void qxl_driver_unload(struct drm_device *dev)
-{
-       struct qxl_device *qdev = dev->dev_private;
-
-       if (qdev == NULL)
-               return;
-
-       drm_vblank_cleanup(dev);
-
-       qxl_modeset_fini(qdev);
-       qxl_device_fini(qdev);
-
-       kfree(qdev);
-       dev->dev_private = NULL;
-}