On Wed, 18 Apr 2018, Jani Nikula <[email protected]> wrote:
> From: Abhay Kumar <[email protected]>
>
> In GLK when the device boots with only 1366x768 panel without audio, HDA
> codec doesn't come up. In this case, the CDCLK is less than twice the
> BCLK. Even though audio isn't being enabled, having a too low CDCLK
> leads to audio probe failing altogether.
>
> Require CDCLK to be at least twice the BLCK regardless of audio. This is
> a minimal fix to improve things. Unfortunately, this a) leads to too
> high CDCLK being used when audio is not used, and b) is still not enough
> to fix audio probe when no outputs are connected at probe time.
>
> The proper fix would be to increase CDCLK dynamically from the audio
> component hooks.
>
> v2:
>     - Address comment (Jani)
>     - New design approach
> v3: - Typo fix on top of v1
>
> v4 by Jani: rewrite commit message, add comment in code
>
> Cc: [email protected]
> Cc: Ville Syrjälä <[email protected]>
> Cc: Dhinakaran Pandiyan <[email protected]>
> Cc: Wenkai Du <[email protected]>
> Reviewed-by: Wenkai Du <[email protected]>
> Tested-by: Wenkai Du <[email protected]>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102937
> Signed-off-by: Abhay Kumar <[email protected]>
> Signed-off-by: Jani Nikula <[email protected]>

Pushed to dinq with Ville's Ack on another thread.

BR,
Jani.


> ---
>  drivers/gpu/drm/i915/intel_cdclk.c | 16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_cdclk.c 
> b/drivers/gpu/drm/i915/intel_cdclk.c
> index fc8b2c6e3508..32d24c69da3c 100644
> --- a/drivers/gpu/drm/i915/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/intel_cdclk.c
> @@ -2140,10 +2140,22 @@ int intel_crtc_compute_min_cdclk(const struct 
> intel_crtc_state *crtc_state)
>               }
>       }
>  
> -     /* According to BSpec, "The CD clock frequency must be at least twice
> +     /*
> +      * According to BSpec, "The CD clock frequency must be at least twice
>        * the frequency of the Azalia BCLK." and BCLK is 96 MHz by default.
> +      *
> +      * FIXME: Check the actual, not default, BCLK being used.
> +      *
> +      * FIXME: This does not depend on ->has_audio because the higher CDCLK
> +      * is required for audio probe, also when there are no audio capable
> +      * displays connected at probe time. This leads to unnecessarily high
> +      * CDCLK when audio is not required.
> +      *
> +      * FIXME: This limit is only applied when there are displays connected
> +      * at probe time. If we probe without displays, we'll still end up using
> +      * the platform minimum CDCLK, failing audio probe.
>        */
> -     if (crtc_state->has_audio && INTEL_GEN(dev_priv) >= 9)
> +     if (INTEL_GEN(dev_priv) >= 9)
>               min_cdclk = max(2 * 96000, min_cdclk);
>  
>       /*

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to