diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2009-11-04 09:43:00 +0100 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-11-19 04:02:53 +0100 |
commit | 3bea21b64c0e3f380814de990ef57ff1f08dbf95 (patch) | |
tree | 89a510111ceac1d2de0b3de2149df867381767e4 | |
parent | drm: set the type of the drm_framebuffer::fbdev field (diff) | |
download | linux-3bea21b64c0e3f380814de990ef57ff1f08dbf95.tar.xz linux-3bea21b64c0e3f380814de990ef57ff1f08dbf95.zip |
drm/kms: allocate framebuffer cmap
Without an allocated colormap, FBIOGETCMAP fails. This would make
programs restore an all-black colormap ("links -g") or fail to work
altogether ("mplayer -vo fbdev2").
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | drivers/gpu/drm/drm_fb_helper.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index e812babe2122..515b838006d2 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -908,8 +908,13 @@ int drm_fb_helper_single_fb_probe(struct drm_device *dev, if (new_fb) { info->var.pixclock = 0; - if (register_framebuffer(info) < 0) + ret = fb_alloc_cmap(&info->cmap, crtc->gamma_size, 0); + if (ret) + return ret; + if (register_framebuffer(info) < 0) { + fb_dealloc_cmap(&info->cmap); return -EINVAL; + } } else { drm_fb_helper_set_par(info); } @@ -939,6 +944,7 @@ void drm_fb_helper_free(struct drm_fb_helper *helper) unregister_sysrq_key('v', &sysrq_drm_fb_helper_restore_op); } drm_fb_helper_crtc_free(helper); + fb_dealloc_cmap(&helper->fb->fbdev->cmap); } EXPORT_SYMBOL(drm_fb_helper_free); |