[PATCH v2] drm/tegra: hdmi: Setup audio only if configured

Dmitry Osipenko digetx at gmail.com
Tue Apr 16 17:42:04 UTC 2019


16.04.2019 18:16, Thierry Reding пишет:
> From: Thierry Reding <treding at nvidia.com>
> 
> The audio configuration is only valid if the HDMI codec has been
> properly set up. Do not attempt to set up audio before that happens
> because it causes a division by zero.
> 
> Note that this is only problematic on Tegra20 and Tegra30. Later chips
> implement the division instructions which return zero when dividing by
> zero and don't throw an exception.
> 
> Fixes: db5adf4d6dce ("drm/tegra: hdmi: Fix audio to work with any pixel clock rate")
> Reported-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>
> Signed-off-by: Thierry Reding <treding at nvidia.com>
> ---
> Changes in v2:
> - setup audio at ->enable() time if it has been configured, otherwise
>   audio playback needs to be restarted after the display goes through
>   a disable/enable cycle
> 
>  drivers/gpu/drm/tegra/hdmi.c | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
> index 47c55974756d..d23c4bfde790 100644
> --- a/drivers/gpu/drm/tegra/hdmi.c
> +++ b/drivers/gpu/drm/tegra/hdmi.c
> @@ -1260,9 +1260,15 @@ static void tegra_hdmi_encoder_enable(struct drm_encoder *encoder)
>  
>  	hdmi->dvi = !tegra_output_is_hdmi(output);
>  	if (!hdmi->dvi) {
> -		err = tegra_hdmi_setup_audio(hdmi);
> -		if (err < 0)
> -			hdmi->dvi = true;
> +		/*
> +		 * Make sure that the audio format has been configured before
> +		 * enabling audio, otherwise we may try to divide by zero.
> +		*/
> +		if (hdmi->format.sample_rate > 0) {
> +			err = tegra_hdmi_setup_audio(hdmi);
> +			if (err < 0)
> +				hdmi->dvi = true;
> +		}
>  	}
>  
>  	if (hdmi->config->has_hda)
> 

Thank you very much!

Tested-by: Dmitry Osipenko <digetx at gmail.com>


More information about the dri-devel mailing list