aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/ast/ast_drv.c
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2020-07-30 15:52:00 +0200
committerThomas Zimmermann <tzimmermann@suse.de>2020-08-03 09:04:01 +0200
commitfbe01716ed4a93ff90a289c2b75313319bf08573 (patch)
tree48400ce7cfba6a9559429faeb7c9432cd3c0a52f /drivers/gpu/drm/ast/ast_drv.c
parentdrm/ast: Separate DRM driver from PCI code (diff)
downloadlinux-dev-fbe01716ed4a93ff90a289c2b75313319bf08573.tar.xz
linux-dev-fbe01716ed4a93ff90a289c2b75313319bf08573.zip
drm/ast: Replace driver load/unload functions with device create/destroy
The ast driver's load and unload functions are left-overs from when struct drm_driver.load/unload was still in use. The PCI probe helper allocated the DRM device and ran load to initialize it. This patch replaces this code with device create and destroy. The main difference is that the device's create function allocates the DRM device and ast structures in the same place. This will be required for switching ast to managed allocations. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Acked-by: Sam Ravnborg <sam@ravnborg.org> Link: https://patchwork.freedesktop.org/patch/msgid/20200730135206.30239-4-tzimmermann@suse.de
Diffstat (limited to 'drivers/gpu/drm/ast/ast_drv.c')
-rw-r--r--drivers/gpu/drm/ast/ast_drv.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index 9d04f2b5225c..ad93c35b4cf7 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -109,6 +109,7 @@ static void ast_kick_out_firmware_fb(struct pci_dev *pdev)
static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
+ struct ast_private *ast;
struct drm_device *dev;
int ret;
@@ -118,27 +119,23 @@ static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (ret)
return ret;
- dev = drm_dev_alloc(&ast_driver, &pdev->dev);
- if (IS_ERR(dev))
- return PTR_ERR(dev);
-
- dev->pdev = pdev;
- pci_set_drvdata(pdev, dev);
-
- ret = ast_driver_load(dev, ent->driver_data);
- if (ret)
+ ast = ast_device_create(&ast_driver, pdev, ent->driver_data);
+ if (IS_ERR(ast)) {
+ ret = PTR_ERR(ast);
goto err_drm_dev_put;
+ }
+ dev = ast->dev;
ret = drm_dev_register(dev, ent->driver_data);
if (ret)
- goto err_ast_driver_unload;
+ goto err_ast_device_destroy;
drm_fbdev_generic_setup(dev, 32);
return 0;
-err_ast_driver_unload:
- ast_driver_unload(dev);
+err_ast_device_destroy:
+ ast_device_destroy(ast);
err_drm_dev_put:
drm_dev_put(dev);
return ret;
@@ -147,9 +144,10 @@ err_drm_dev_put:
static void ast_pci_remove(struct pci_dev *pdev)
{
struct drm_device *dev = pci_get_drvdata(pdev);
+ struct ast_private *ast = to_ast_private(dev);
drm_dev_unregister(dev);
- ast_driver_unload(dev);
+ ast_device_destroy(ast);
drm_dev_put(dev);
}