diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2012-05-17 13:27:24 +0200 |
---|---|---|
committer | Andy Green <andy.green@linaro.org> | 2012-06-22 10:04:06 +0800 |
commit | 7994c9b4fa5f4789f559348aff3e79e147ede63d (patch) | |
tree | e9bccbe8bb4d92d9c91a154dfabd8afba83f2e67 /drivers | |
parent | 36d7b2f6040f5b4cc12f574af6820d90b4272749 (diff) | |
download | panda-7994c9b4fa5f4789f559348aff3e79e147ede63d.tar.gz |
drm: Make the CRTC gamma_set operation optional
Drivers for hardware without gamma support should not be forced to
implement a no-op gamma set operation.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Rob Clark <rob.clark@linaro.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_fb_helper.c | 3 | ||||
-rw-r--r-- | drivers/staging/omapdrm/omap_crtc.c | 7 |
3 files changed, 8 insertions, 7 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index c79870a75c2..b4b4e6c8f4f 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -3227,6 +3227,11 @@ int drm_mode_gamma_get_ioctl(struct drm_device *dev, } crtc = obj_to_crtc(obj); + if (crtc->funcs->gamma_set == NULL) { + ret = -ENOSYS; + goto out; + } + /* memcpy into gamma store */ if (crtc_lut->gamma_size != crtc->gamma_size) { ret = -EINVAL; diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index a0d6e894d97..3eec1b9bb0e 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -136,6 +136,9 @@ static void drm_fb_helper_restore_lut_atomic(struct drm_crtc *crtc) { uint16_t *r_base, *g_base, *b_base; + if (crtc->funcs->gamma_set == NULL) + return; + r_base = crtc->gamma_store; g_base = r_base + crtc->gamma_size; b_base = g_base + crtc->gamma_size; diff --git a/drivers/staging/omapdrm/omap_crtc.c b/drivers/staging/omapdrm/omap_crtc.c index 490a7f15604..8b864afb40b 100644 --- a/drivers/staging/omapdrm/omap_crtc.c +++ b/drivers/staging/omapdrm/omap_crtc.c @@ -36,12 +36,6 @@ struct omap_crtc { struct drm_framebuffer *old_fb; }; -static void omap_crtc_gamma_set(struct drm_crtc *crtc, - u16 *red, u16 *green, u16 *blue, uint32_t start, uint32_t size) -{ - /* not supported.. at least not yet */ -} - static void omap_crtc_destroy(struct drm_crtc *crtc) { struct omap_crtc *omap_crtc = to_omap_crtc(crtc); @@ -198,7 +192,6 @@ static int omap_crtc_page_flip_locked(struct drm_crtc *crtc, } static const struct drm_crtc_funcs omap_crtc_funcs = { - .gamma_set = omap_crtc_gamma_set, .set_config = drm_crtc_helper_set_config, .destroy = omap_crtc_destroy, .page_flip = omap_crtc_page_flip_locked, |