[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