From: Ville Syrjälä <[email protected]>

Apparently PTL+ no longer has the cd2x pipe select field in
CDCLK_CTL. Take that into account during CDCLK sanitization.

This currently triggers a spurious CDCLK sanitization during
driver load on PTL+ which will causes a visible glitch on all
active displays.

Cc: [email protected]
Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/8550
Fixes: 3f9de66f8acb ("drm/i915/cdclk: Fix up CDCLK_FREQ_DECIMAL without a full 
PLL re-enable")
Signed-off-by: Ville Syrjälä <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_cdclk.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c 
b/drivers/gpu/drm/i915/display/intel_cdclk.c
index a53d88727177..9e5e15b0c4d1 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -2381,8 +2381,10 @@ static void bxt_sanitize_cdclk(struct intel_display 
*display)
         * dividers both syncing to an active pipe, or asynchronously
         * (PIPE_NONE).
         */
-       cdctl &= ~bxt_cdclk_cd2x_pipe_mask(display);
-       cdctl |= bxt_cdclk_cd2x_pipe(display, INVALID_PIPE);
+       if (DISPLAY_VER(display) < 30) {
+               cdctl &= ~bxt_cdclk_cd2x_pipe_mask(display);
+               cdctl |= bxt_cdclk_cd2x_pipe(display, INVALID_PIPE);
+       }
 
        if (cdctl != expected) {
                if (DISPLAY_VER(display) < 20) {
-- 
2.54.0

Reply via email to