From: Kausal Malladi <kausalmalladi@xxxxxxxxx> 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.sharma@xxxxxxxxx> Signed-off-by: Kausal Malladi <kausalmalladi@xxxxxxxxx> --- 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 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel