From: Ville Syrjälä <ville.syrj...@linux.intel.com>

We'll have need to examine both the old and new crtc states in
intel_color_prepare_commit(), so let's just pass in the whole
atomic state.

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_color.c   | 11 ++++++++---
 drivers/gpu/drm/i915/display/intel_color.h   |  3 ++-
 drivers/gpu/drm/i915/display/intel_display.c |  8 +++-----
 3 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_color.c 
b/drivers/gpu/drm/i915/display/intel_color.c
index 98553e8a5149..8cfd497c2a92 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -1902,15 +1902,20 @@ void intel_color_post_update(const struct 
intel_crtc_state *crtc_state)
                i915->display.funcs.color->color_post_update(crtc_state);
 }
 
-void intel_color_prepare_commit(struct intel_crtc_state *crtc_state)
+void intel_color_prepare_commit(struct intel_atomic_state *state,
+                               struct intel_crtc *crtc)
 {
-       struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
-       struct drm_i915_private *i915 = to_i915(crtc->base.dev);
+       struct drm_i915_private *i915 = to_i915(state->base.dev);
+       struct intel_crtc_state *crtc_state =
+               intel_atomic_get_new_crtc_state(state, crtc);
 
        if (!crtc_state->hw.active ||
            intel_crtc_needs_modeset(crtc_state))
                return;
 
+       if (!intel_crtc_needs_color_update(crtc_state))
+               return;
+
        if (!crtc_state->pre_csc_lut && !crtc_state->post_csc_lut)
                return;
 
diff --git a/drivers/gpu/drm/i915/display/intel_color.h 
b/drivers/gpu/drm/i915/display/intel_color.h
index 21ba4aa02e7b..79f230a1709a 100644
--- a/drivers/gpu/drm/i915/display/intel_color.h
+++ b/drivers/gpu/drm/i915/display/intel_color.h
@@ -19,7 +19,8 @@ int intel_color_init(struct drm_i915_private *i915);
 void intel_color_crtc_init(struct intel_crtc *crtc);
 int intel_color_check(struct intel_atomic_state *state,
                      struct intel_crtc *crtc);
-void intel_color_prepare_commit(struct intel_crtc_state *crtc_state);
+void intel_color_prepare_commit(struct intel_atomic_state *state,
+                               struct intel_crtc *crtc);
 void intel_color_cleanup_commit(struct intel_crtc_state *crtc_state);
 bool intel_color_uses_dsb(const struct intel_crtc_state *crtc_state);
 void intel_color_wait_commit(const struct intel_crtc_state *crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 0d1fbd05d655..0623cb5f4e26 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -6684,7 +6684,7 @@ int intel_atomic_check(struct drm_device *dev,
 
 static int intel_atomic_prepare_commit(struct intel_atomic_state *state)
 {
-       struct intel_crtc_state *crtc_state;
+       struct intel_crtc_state __maybe_unused *crtc_state;
        struct intel_crtc *crtc;
        int i, ret;
 
@@ -6692,10 +6692,8 @@ static int intel_atomic_prepare_commit(struct 
intel_atomic_state *state)
        if (ret < 0)
                return ret;
 
-       for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) {
-               if (intel_crtc_needs_color_update(crtc_state))
-                       intel_color_prepare_commit(crtc_state);
-       }
+       for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i)
+               intel_color_prepare_commit(state, crtc);
 
        return 0;
 }
-- 
2.44.2

Reply via email to