[PATCH 3/3] drm/i915/display: CDCLK 0 scenario

Anusha Srivatsa anusha.srivatsa at intel.com
Tue Oct 11 19:01:57 UTC 2022


In cases where we are still enabling display, when cdclk is 0
do a modeset and not a squash.

Add the check to make sure PLLs are on before looking up
the waveforms.

Signed-off-by: Anusha Srivatsa <anusha.srivatsa at intel.com>
---
 drivers/gpu/drm/i915/display/intel_cdclk.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index 53f7a4a04d95..1daf4e9c5ace 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -1685,7 +1685,7 @@ static u32 cdclk_squash_waveform(struct drm_i915_private *dev_priv,
 	const struct intel_cdclk_vals *table = dev_priv->display.cdclk.table;
 	int i;
 
-	if (cdclk == dev_priv->display.cdclk.hw.bypass)
+	if (cdclk == dev_priv->display.cdclk.hw.bypass || cdclk == 0)
 		return 0;
 
 	for (i = 0; table[i].refclk; i++)
@@ -2029,12 +2029,15 @@ static bool intel_cdclk_can_crawl_and_squash(struct drm_i915_private *i915,
 {
 	u16 old_waveform = cdclk_squash_waveform(i915, a->cdclk);
 	u16 new_waveform = cdclk_squash_waveform(i915, b->cdclk);
+	
+	if (a->vco == 0 || b->vco == 0)
+		return false;
 
 	if (!HAS_CDCLK_CRAWL(i915) || !has_cdclk_squasher(i915))
 		return false;
 
 	return a->vco != b->vco &&
-	       old_waveform == new_waveform;
+	       old_waveform != new_waveform;
 }
 
 static bool intel_cdclk_can_crawl(struct drm_i915_private *dev_priv,
-- 
2.25.1



More information about the Intel-gfx-trybot mailing list