16.04.2019 18:16, Thierry Reding пишет:
> From: Thierry Reding <tred...@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.ziswi...@toradex.com>
> Signed-off-by: Thierry Reding <tred...@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 <dig...@gmail.com>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to