Commit 1daddbc8 authored by Fabio Rafael da Rosa's avatar Fabio Rafael da Rosa Committed by Greg Kroah-Hartman

staging: vboxvideo: Update driver to use drm_dev_register.

The use of load and unload hooks is deprecated. DRM drivers should
use drm_dev_alloc|drm_dev_init and drm_dev_register for initialization
and publishing.
Signed-off-by: default avatarFabio Rafael da Rosa <fdr@pid42.net>
Reviewed-by: default avatarNicholas Mc Guire <der.herr@hofr.at>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 089a137a
TODO: TODO:
-Move the driver over to the atomic API -Move the driver over to the atomic API
-Stop using old load / unload drm_driver hooks
-Get a full review from the drm-maintainers on dri-devel done on this driver -Get a full review from the drm-maintainers on dri-devel done on this driver
-Extend this TODO with the results of that review -Extend this TODO with the results of that review
......
...@@ -51,14 +51,42 @@ MODULE_DEVICE_TABLE(pci, pciidlist); ...@@ -51,14 +51,42 @@ MODULE_DEVICE_TABLE(pci, pciidlist);
static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{ {
return drm_get_pci_dev(pdev, ent, &driver); struct drm_device *dev = NULL;
int ret = 0;
dev = drm_dev_alloc(&driver, &pdev->dev);
if (IS_ERR(dev)) {
ret = PTR_ERR(dev);
goto err_drv_alloc;
}
dev->pdev = pdev;
pci_set_drvdata(pdev, dev);
ret = vbox_driver_load(dev);
if (ret)
goto err_vbox_driver_load;
ret = drm_dev_register(dev, 0);
if (ret)
goto err_drv_dev_register;
return ret;
err_drv_dev_register:
vbox_driver_unload(dev);
err_vbox_driver_load:
drm_dev_put(dev);
err_drv_alloc:
return ret;
} }
static void vbox_pci_remove(struct pci_dev *pdev) static void vbox_pci_remove(struct pci_dev *pdev)
{ {
struct drm_device *dev = pci_get_drvdata(pdev); struct drm_device *dev = pci_get_drvdata(pdev);
drm_put_dev(dev); drm_dev_unregister(dev);
vbox_driver_unload(dev);
drm_dev_put(dev);
} }
static int vbox_drm_freeze(struct drm_device *dev) static int vbox_drm_freeze(struct drm_device *dev)
...@@ -227,8 +255,6 @@ static struct drm_driver driver = { ...@@ -227,8 +255,6 @@ static struct drm_driver driver = {
DRIVER_PRIME, DRIVER_PRIME,
.dev_priv_size = 0, .dev_priv_size = 0,
.load = vbox_driver_load,
.unload = vbox_driver_unload,
.lastclose = vbox_driver_lastclose, .lastclose = vbox_driver_lastclose,
.master_set = vbox_master_set, .master_set = vbox_master_set,
.master_drop = vbox_master_drop, .master_drop = vbox_master_drop,
......
...@@ -126,7 +126,7 @@ struct vbox_private { ...@@ -126,7 +126,7 @@ struct vbox_private {
#undef CURSOR_PIXEL_COUNT #undef CURSOR_PIXEL_COUNT
#undef CURSOR_DATA_SIZE #undef CURSOR_DATA_SIZE
int vbox_driver_load(struct drm_device *dev, unsigned long flags); int vbox_driver_load(struct drm_device *dev);
void vbox_driver_unload(struct drm_device *dev); void vbox_driver_unload(struct drm_device *dev);
void vbox_driver_lastclose(struct drm_device *dev); void vbox_driver_lastclose(struct drm_device *dev);
......
...@@ -350,7 +350,7 @@ static void vbox_hw_fini(struct vbox_private *vbox) ...@@ -350,7 +350,7 @@ static void vbox_hw_fini(struct vbox_private *vbox)
pci_iounmap(vbox->dev->pdev, vbox->guest_heap); pci_iounmap(vbox->dev->pdev, vbox->guest_heap);
} }
int vbox_driver_load(struct drm_device *dev, unsigned long flags) int vbox_driver_load(struct drm_device *dev)
{ {
struct vbox_private *vbox; struct vbox_private *vbox;
int ret = 0; int ret = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment