drm/i915: fix regression leading to display audio probe failure on GLK
In commit4f0b4352bd
("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:4f0b4352bd
("drm/i915: Extract cdclk requirements checking to separate function") BugLink: https://github.com/thesofproject/linux/issues/2410 Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200901151036.1312357-1-kai.vehmanen@linux.intel.com
This commit is contained in:
Родитель
1fa0140956
Коммит
cf696856bc
|
@ -15009,12 +15009,6 @@ static int intel_atomic_check(struct drm_device *dev,
|
|||
if (dev_priv->wm.distrust_bios_wm)
|
||||
any_ms = true;
|
||||
|
||||
if (any_ms) {
|
||||
ret = intel_modeset_checks(state);
|
||||
if (ret)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
intel_fbc_choose_crtc(dev_priv, state);
|
||||
ret = calc_watermark_data(state);
|
||||
if (ret)
|
||||
|
@ -15029,6 +15023,10 @@ static int intel_atomic_check(struct drm_device *dev,
|
|||
goto fail;
|
||||
|
||||
if (any_ms) {
|
||||
ret = intel_modeset_checks(state);
|
||||
if (ret)
|
||||
goto fail;
|
||||
|
||||
ret = intel_modeset_calc_cdclk(state);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
Загрузка…
Ссылка в новой задаче