From: Kausal Malladi <kausalmall...@gmail.com>

This patch initializes gamma color correction proeprty
for Gen8 and higher platforms.

It does the following :
1. Load pipe Gamma color correction capabilities for BDW/SKL/BXT
2. Attach the color properties to CRTC

Signed-off-by: Shashank Sharma <shashank.sha...@intel.com>
Signed-off-by: Kausal Malladi <kausalmall...@gmail.com>
---
 drivers/gpu/drm/i915/intel_color_manager.c | 30 +++++++++++++++++++++++++++++-
 drivers/gpu/drm/i915/intel_color_manager.h |  3 +++
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_color_manager.c 
b/drivers/gpu/drm/i915/intel_color_manager.c
index 5fa575b..bc77ab5 100644
--- a/drivers/gpu/drm/i915/intel_color_manager.c
+++ b/drivers/gpu/drm/i915/intel_color_manager.c
@@ -475,11 +475,39 @@ int get_chv_pipe_gamma_capabilities(struct drm_device 
*dev,
        return 0;
 }
 
+int get_gen9_pipe_gamma_capabilities(struct drm_device *dev,
+               struct drm_palette_caps *palette_caps, struct drm_crtc *crtc)
+{
+       struct drm_property_blob *blob = NULL;
+
+       /*
+        * This function exposes best capability for DeGamma and Gamma
+        * For BXT, the DeGamma LUT has 512 entries
+        * and the best Gamma capability has 512 entries
+        */
+       palette_caps->version = GEN9_PALETTE_STRUCT_VERSION;
+       palette_caps->num_samples_before_ctm =
+               GEN9_SPLITGAMMA_MAX_VALS;
+       palette_caps->num_samples_after_ctm =
+               GEN9_SPLITGAMMA_MAX_VALS;
+
+       blob = drm_property_create_blob(dev, sizeof(struct drm_palette_caps),
+                       (const void *) palette_caps);
+
+       if (blob)
+               return blob->base.id;
+
+       return 0;
+}
+
 int get_pipe_gamma_capabilities(struct drm_device *dev,
                struct drm_palette_caps *palette_caps, struct drm_crtc *crtc)
 {
        if (IS_CHERRYVIEW(dev))
                return get_chv_pipe_gamma_capabilities(dev, palette_caps, crtc);
+       if (IS_BROADWELL(dev) || IS_GEN9(dev))
+               return get_gen9_pipe_gamma_capabilities(dev,
+                               palette_caps, crtc);
        return -EINVAL;
 }
 
@@ -491,7 +519,7 @@ void intel_attach_color_properties_to_crtc(struct 
drm_device *dev,
        struct drm_crtc *crtc;
        int capabilities_blob_id;
 
-       if (IS_CHERRYVIEW(dev)) {
+       if (IS_CHERRYVIEW(dev) || IS_BROADWELL(dev) || IS_GEN9(dev)) {
                crtc = obj_to_crtc(mode_obj);
 
                palette_caps = kzalloc(sizeof(struct drm_palette_caps),
diff --git a/drivers/gpu/drm/i915/intel_color_manager.h 
b/drivers/gpu/drm/i915/intel_color_manager.h
index b2ee847..78de1a2 100644
--- a/drivers/gpu/drm/i915/intel_color_manager.h
+++ b/drivers/gpu/drm/i915/intel_color_manager.h
@@ -35,6 +35,9 @@
 #define CHV_DEGAMMA_MAX_VALS                   65
 #define CHV_10BIT_GAMMA_MAX_VALS               257
 
+#define GEN9_PALETTE_STRUCT_VERSION            1
+#define GEN9_SPLITGAMMA_MAX_VALS               512
+
 /* Gamma correction */
 #define CHV_GAMMA_DATA_STRUCT_VERSION          1
 #define CHV_10BIT_GAMMA_MAX_VALS               257
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to