From ebe0f2442cc4c5493a85c875d2d8a44ffecc1175 Mon Sep 17 00:00:00 2001
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date: Thu, 17 May 2012 13:27:24 +0200
Subject: drm: Make the CRTC gamma_set operation optional
Git-commit: ebe0f2442cc4c5493a85c875d2d8a44ffecc1175
Patch-mainline: v3.5-rc1

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>
Acked-by: Michal Srb <msrb@suse.com>
---
 drivers/gpu/drm/drm_crtc.c          |    5 +++++
 drivers/gpu/drm/drm_fb_helper.c     |    3 +++
 drivers/staging/omapdrm/omap_crtc.c |    7 -------
 3 files changed, 8 insertions(+), 7 deletions(-)

Index: linux-3.0-SLE11-SP3/drivers/gpu/drm/drm_crtc.c
===================================================================
--- linux-3.0-SLE11-SP3.orig/drivers/gpu/drm/drm_crtc.c
+++ linux-3.0-SLE11-SP3/drivers/gpu/drm/drm_crtc.c
@@ -3331,6 +3331,11 @@ int drm_mode_gamma_set_ioctl(struct drm_
 	}
 	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;
Index: linux-3.0-SLE11-SP3/drivers/gpu/drm/drm_fb_helper.c
===================================================================
--- linux-3.0-SLE11-SP3.orig/drivers/gpu/drm/drm_fb_helper.c
+++ linux-3.0-SLE11-SP3/drivers/gpu/drm/drm_fb_helper.c
@@ -136,6 +136,9 @@ static void drm_fb_helper_restore_lut_at
 {
 	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;
