Hi Shashank, On 9 October 2015 at 20:29, Shashank Sharma <shashank.sharma@xxxxxxxxx> wrote: > The color correction blob values are loaded during set_property > calls. This patch adds a function to find the blob and apply the > correction values to the display registers, during the atomic > commit call. > > Signed-off-by: Shashank Sharma <shashank.sharma@xxxxxxxxx> > Signed-off-by: Kausal Malladi <kausalmalladi@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_color_manager.c | 44 ++++++++++++++++++++++++++++++ > drivers/gpu/drm/i915/intel_display.c | 2 ++ > drivers/gpu/drm/i915/intel_drv.h | 3 ++ > 3 files changed, 49 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_color_manager.c b/drivers/gpu/drm/i915/intel_color_manager.c > index 433e50a..d5315b2 100644 > --- a/drivers/gpu/drm/i915/intel_color_manager.c > +++ b/drivers/gpu/drm/i915/intel_color_manager.c > @@ -307,6 +307,50 @@ static int chv_set_gamma(struct drm_device *dev, struct drm_property_blob *blob, > return ret; > } > > +void intel_color_manager_crtc_commit(struct drm_device *dev, > + struct drm_crtc_state *crtc_state) > +{ > + struct drm_property_blob *blob; > + struct drm_crtc *crtc = crtc_state->crtc; > + int ret = -EINVAL; Most places/people advise against pre-emptively initializing ret. > + > + blob = crtc_state->palette_after_ctm_blob; > + if (blob) { > + /* Gamma correction is platform specific */ > + if (IS_CHERRYVIEW(dev)) > + ret = chv_set_gamma(dev, blob, crtc); > + > + if (ret) > + DRM_ERROR("set Gamma correction failed\n"); Do we really want to spam dmesg on for each non Cherryview device ? > + else > + DRM_DEBUG_DRIVER("Gamma correction success\n"); > + } > + > + blob = crtc_state->palette_before_ctm_blob; > + if (blob) { > + /* Degamma correction */ > + if (IS_CHERRYVIEW(dev)) > + ret = chv_set_degamma(dev, blob, crtc); > + > + if (ret) > + DRM_ERROR("set degamma correction failed\n"); > + else > + DRM_DEBUG_DRIVER("degamma correction success\n"); > + } > + > + blob = crtc_state->ctm_blob; > + if (blob) { > + /* CSC correction */ > + if (IS_CHERRYVIEW(dev)) > + ret = chv_set_csc(dev, blob, crtc); > + > + if (ret) > + DRM_ERROR("set CSC correction failed\n"); > + else > + DRM_DEBUG_DRIVER("CSC correction success\n"); > + } > +} > + > void intel_attach_color_properties_to_crtc(struct drm_device *dev, > struct drm_crtc *crtc) > { > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 98cc97a..8235341 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -13528,6 +13528,8 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc, > intel_update_pipe_config(intel_crtc, old_intel_state); > else if (INTEL_INFO(dev)->gen >= 9) > skl_detach_scalers(intel_crtc); > + > + intel_color_manager_crtc_commit(dev, crtc->state); > } > > static void intel_finish_crtc_commit(struct drm_crtc *crtc, > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index ed66a4f..d100e81 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -1469,4 +1469,7 @@ void intel_plane_destroy_state(struct drm_plane *plane, > struct drm_plane_state *state); > extern const struct drm_plane_helper_funcs intel_plane_helper_funcs; > > +/* intel_color_mnager.c */ Typo -> manager. Regards, Emil _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel