Skip to content

Commit 0c4c801

Browse files
kv2019ijnikula
authored andcommitted
drm/i915: fix regression leading to display audio probe failure on GLK
In commit 4f0b435 ("drm/i915: Extract cdclk requirements checking to separate function") the order of force_min_cdclk_changed check and intel_modeset_checks(), was reversed. This broke the mechanism to immediately force a new CDCLK minimum, and lead to driver probe errors for display audio on GLK platform with 5.9-rc1 kernel. Fix the issue by moving intel_modeset_checks() call later. [vsyrjala: It also broke the ability of planes to bump up the cdclk and thus could lead to underruns when eg. flipping from 32bpp to 64bpp framebuffer. To be clear, we still compute the new cdclk correctly but fail to actually program it to the hardware due to intel_set_cdclk_{pre,post}_plane_update() not getting called on account of state->modeset==false.] Fixes: 4f0b435 ("drm/i915: Extract cdclk requirements checking to separate function") BugLink: thesofproject#2410 Signed-off-by: Kai Vehmanen <[email protected]> Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] (cherry picked from commit cf69685) Signed-off-by: Jani Nikula <[email protected]>
1 parent f4d51df commit 0c4c801

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

drivers/gpu/drm/i915/display/intel_display.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14956,12 +14956,6 @@ static int intel_atomic_check(struct drm_device *dev,
1495614956
if (dev_priv->wm.distrust_bios_wm)
1495714957
any_ms = true;
1495814958

14959-
if (any_ms) {
14960-
ret = intel_modeset_checks(state);
14961-
if (ret)
14962-
goto fail;
14963-
}
14964-
1496514959
intel_fbc_choose_crtc(dev_priv, state);
1496614960
ret = calc_watermark_data(state);
1496714961
if (ret)
@@ -14976,6 +14970,10 @@ static int intel_atomic_check(struct drm_device *dev,
1497614970
goto fail;
1497714971

1497814972
if (any_ms) {
14973+
ret = intel_modeset_checks(state);
14974+
if (ret)
14975+
goto fail;
14976+
1497914977
ret = intel_modeset_calc_cdclk(state);
1498014978
if (ret)
1498114979
return ret;

0 commit comments

Comments
 (0)