Apart from checking if squashing can be performed,
accommodate accessing in-flight cdclk state for any changes
that are needed during commit phase.

Cc: Jani Nikula <jani.nik...@intel.com>
Signed-off-by: Anusha Srivatsa <anusha.sriva...@intel.com>
---
 drivers/gpu/drm/i915/display/intel_cdclk.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c 
b/drivers/gpu/drm/i915/display/intel_cdclk.c
index 8888fda8b701..1f879af15d87 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -1973,10 +1973,11 @@ static bool intel_cdclk_can_crawl(struct 
drm_i915_private *dev_priv,
                a->ref == b->ref;
 }
 
-static bool intel_cdclk_can_squash(struct drm_i915_private *dev_priv,
-                                  const struct intel_cdclk_config *a,
-                                  const struct intel_cdclk_config *b)
+static bool intel_cdclk_squash(struct drm_i915_private *dev_priv,
+                              const struct intel_cdclk_state *a,
+                              struct intel_cdclk_state *b)
 {
+
        /*
         * FIXME should store a bit more state in intel_cdclk_config
         * to differentiate squasher vs. cd2x divider properly. For
@@ -1986,10 +1987,10 @@ static bool intel_cdclk_can_squash(struct 
drm_i915_private *dev_priv,
        if (!has_cdclk_squasher(dev_priv))
                return false;
 
-       return a->cdclk != b->cdclk &&
-               a->vco != 0 &&
-               a->vco == b->vco &&
-               a->ref == b->ref;
+       return a->actual.cdclk != b->actual.cdclk &&
+               a->actual.vco != 0 &&
+               a->actual.vco == b->actual.vco &&
+               a->actual.ref == b->actual.ref;
 }
 
 /**
@@ -2776,9 +2777,9 @@ int intel_modeset_calc_cdclk(struct intel_atomic_state 
*state)
                        pipe = INVALID_PIPE;
        }
 
-       if (intel_cdclk_can_squash(dev_priv,
-                                  &old_cdclk_state->actual,
-                                  &new_cdclk_state->actual)) {
+       if (intel_cdclk_squash(dev_priv,
+                              old_cdclk_state,
+                              new_cdclk_state)) {
                drm_dbg_kms(&dev_priv->drm,
                            "Can change cdclk via squasher\n");
        } else if (intel_cdclk_can_crawl(dev_priv,
-- 
2.25.1

Reply via email to