Re: [PATCH] ASoC: tegra: Fix Master Volume Control

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

 



On Tue, 13 Jun 2023 11:34:53 +0200,
Jon Hunter wrote:
> 
> Commit 3ed2b549b39f ("ALSA: pcm: fix wait_time calculations") corrected
> the PCM wait_time calculations and in doing so reduced the calculated
> wait_time. This exposed an issue with the Tegra Master Volume Control
> (MVC) device where the reduced wait_time caused the MVC to fail. For now
> fix this by setting the default wait_time for Tegra to be 500ms.
> 
> Fixes: 3ed2b549b39f ("ALSA: pcm: fix wait_time calculations")
> Signed-off-by: Jon Hunter <jonathanh@xxxxxxxxxx>

Hm, it's still not clear why it fails.  The commit above changes the
timeout of wait_for_avail() to the full-buffer + 10% margin.  In
thoery, the loop should abort after the full buffer read, and that
must be enough.  If there were a large FIFO behind, it might be
overflow, but the fifo_size of Tegra driver seems 4, so it's
negligible.

If extending the timeout "fixes" the problem, it might indicate that
the period update IRQ is triggered too late.  Could you measure the
timing of each snd_pcm_period_elapsed() and wait_for_avail() call?


thanks,

Takashi


> ---
>  sound/soc/tegra/tegra_pcm.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/sound/soc/tegra/tegra_pcm.c b/sound/soc/tegra/tegra_pcm.c
> index 468c8e77de21..0b69cebc9a33 100644
> --- a/sound/soc/tegra/tegra_pcm.c
> +++ b/sound/soc/tegra/tegra_pcm.c
> @@ -117,6 +117,9 @@ int tegra_pcm_open(struct snd_soc_component *component,
>  		return ret;
>  	}
>  
> +	/* Set wait time to 500ms by default */
> +	substream->wait_time = 500;
> +
>  	return 0;
>  }
>  EXPORT_SYMBOL_GPL(tegra_pcm_open);
> -- 
> 2.34.1
> 



[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux