Skip to content

Commit

Permalink
drm/vgem: Add a dummy platform device
Browse files Browse the repository at this point in the history
The vgem driver is currently registered independent of any actual
device. Some usage of the dmabuf APIs require an actual device structure
to do anything. Register a dummy platform device for use with dmabuf.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Laura Abbott <labbott@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1493923548-20878-2-git-send-email-labbott@redhat.com
  • Loading branch information
Laura Abbott authored and Daniel Vetter committed May 8, 2017
1 parent f424f55 commit e2aff44
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions drivers/gpu/drm/vgem/vgem_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
#define DRIVER_MAJOR 1
#define DRIVER_MINOR 0

static struct platform_device *vgem_platform;

static void vgem_gem_free_object(struct drm_gem_object *obj)
{
struct drm_vgem_gem_object *vgem_obj = to_vgem_bo(obj);
Expand Down Expand Up @@ -335,25 +337,36 @@ static int __init vgem_init(void)
int ret;

vgem_device = drm_dev_alloc(&vgem_driver, NULL);
if (IS_ERR(vgem_device)) {
ret = PTR_ERR(vgem_device);
if (IS_ERR(vgem_device))
return PTR_ERR(vgem_device);

vgem_platform = platform_device_register_simple("vgem",
-1, NULL, 0);

if (!vgem_platform) {
ret = -ENODEV;
goto out;
}

dma_coerce_mask_and_coherent(&vgem_platform->dev,
DMA_BIT_MASK(64));

ret = drm_dev_register(vgem_device, 0);
if (ret)
goto out_unref;

return 0;

out_unref:
drm_dev_unref(vgem_device);
platform_device_unregister(vgem_platform);
out:
drm_dev_unref(vgem_device);
return ret;
}

static void __exit vgem_exit(void)
{
platform_device_unregister(vgem_platform);
drm_dev_unregister(vgem_device);
drm_dev_unref(vgem_device);
}
Expand Down

0 comments on commit e2aff44

Please sign in to comment.