Skip to content

Commit f4b1889

Browse files
kv2019ijlahtine-intel
authored andcommitted
drm/i915: Limit audio CDCLK>=2*BCLK constraint back to GLK only
Revert changes done in commit f6ec948 ("drm/i915: extend audio CDCLK>=2*BCLK constraint to more platforms"). Audio drivers communicate with i915 over HDA bus multiple times during system boot-up and each of these transactions result in matching get_power/put_power calls to i915, and depending on the platform, a modeset change causing visible flicker. GLK is the only platform with minimum CDCLK significantly lower than BCLK, and thus for GLK setting a higher CDCLK is mandatory. For other platforms, minimum CDCLK is close but below 2*BCLK (e.g. on ICL, CDCLK=176.4kHz with BCLK=96kHz). Spec-wise the constraint should be set, but in practise no communication errors have been reported and the downside if set is the flicker observed at boot-time. Revert to old behaviour until better mechanism to manage probe-time clocks is available. The full CDCLK>=2*BCLK constraint is still enforced at pipe enable time in intel_crtc_compute_min_cdclk(). Bugzilla: https://gitlab.freedesktop.org/drm/intel/issues/913 Fixes: f6ec948 ("drm/i915: extend audio CDCLK>=2*BCLK constraint to more platforms") Signed-off-by: Kai Vehmanen <[email protected]> Reviewed-by: Matt Roper <[email protected]> Signed-off-by: Matt Roper <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] (cherry picked from commit 1ee48a6) Signed-off-by: Joonas Lahtinen <[email protected]>
1 parent 1325008 commit f4b1889

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -856,7 +856,7 @@ static unsigned long i915_audio_component_get_power(struct device *kdev)
856856
}
857857

858858
/* Force CDCLK to 2*BCLK as long as we need audio powered. */
859-
if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
859+
if (IS_GEMINILAKE(dev_priv))
860860
glk_force_audio_cdclk(dev_priv, true);
861861

862862
if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
@@ -875,7 +875,7 @@ static void i915_audio_component_put_power(struct device *kdev,
875875

876876
/* Stop forcing CDCLK to 2*BCLK if no need for audio to be powered. */
877877
if (--dev_priv->audio_power_refcount == 0)
878-
if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
878+
if (IS_GEMINILAKE(dev_priv))
879879
glk_force_audio_cdclk(dev_priv, false);
880880

881881
intel_display_power_put(dev_priv, POWER_DOMAIN_AUDIO, cookie);

0 commit comments

Comments
 (0)