diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-12-13 17:07:50 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-01-20 09:57:57 -0500 |
commit | af26ef3b3978349cfbd864163a6ebb4906b733b5 (patch) | |
tree | 38efb55b2aac85582180caa018c26b7c3202e77c /drivers/gpu/drm/mgag200/mgag200_main.c | |
parent | 0ae6d7bc0e70dafc1739d50b2b8d9d7c61968395 (diff) |
drm/<drivers>: Unified handling of unimplemented fb->create_handle
Some drivers don't have real ->create_handle callbacks.
- cirrus/ast/mga200: Returns either 0 or -EINVAL.
- udl: Didn't even bother with a callback, leading to a nice
userspace-triggerable OOPS.
- vmwgfx: This driver bothered with an implementation to return 0 as
the handle (which is the canonical no-obj gem handle).
All have in common that ->create_handle doesn't really make too much
sense for them - that ioctl is used only for seamless fb takeover in
the radeon/nouveau/i915 ddx drivers. So allow drivers to not implement
this and return a consistent -ENODEV.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/mgag200/mgag200_main.c')
-rw-r--r-- | drivers/gpu/drm/mgag200/mgag200_main.c | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c b/drivers/gpu/drm/mgag200/mgag200_main.c index 266438af61ea..64297c72464f 100644 --- a/drivers/gpu/drm/mgag200/mgag200_main.c +++ b/drivers/gpu/drm/mgag200/mgag200_main.c | |||
@@ -23,16 +23,8 @@ static void mga_user_framebuffer_destroy(struct drm_framebuffer *fb) | |||
23 | kfree(fb); | 23 | kfree(fb); |
24 | } | 24 | } |
25 | 25 | ||
26 | static int mga_user_framebuffer_create_handle(struct drm_framebuffer *fb, | ||
27 | struct drm_file *file_priv, | ||
28 | unsigned int *handle) | ||
29 | { | ||
30 | return 0; | ||
31 | } | ||
32 | |||
33 | static const struct drm_framebuffer_funcs mga_fb_funcs = { | 26 | static const struct drm_framebuffer_funcs mga_fb_funcs = { |
34 | .destroy = mga_user_framebuffer_destroy, | 27 | .destroy = mga_user_framebuffer_destroy, |
35 | .create_handle = mga_user_framebuffer_create_handle, | ||
36 | }; | 28 | }; |
37 | 29 | ||
38 | int mgag200_framebuffer_init(struct drm_device *dev, | 30 | int mgag200_framebuffer_init(struct drm_device *dev, |