Re: [PATCH] drm/i915/audio: set minimum CD clock to twice the BCLK

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 18 Apr 2018, Jani Nikula <jani.nikula@xxxxxxxxx> wrote:
> From: Abhay Kumar <abhay.kumar@xxxxxxxxx>
>
> 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: stable@xxxxxxxxxxxxxxx
> Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@xxxxxxxxx>
> Cc: Wenkai Du <wenkai.du@xxxxxxxxx>
> Reviewed-by: Wenkai Du <wenkai.du@xxxxxxxxx>
> Tested-by: Wenkai Du <wenkai.du@xxxxxxxxx>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102937
> Signed-off-by: Abhay Kumar <abhay.kumar@xxxxxxxxx>
> Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx>

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



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]