mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
ASoC: tegra20: spdif: Set FIFO trigger level
FIFO trigger level must be not less than the size of DMA burst, otherwise audio will be played x4 faster that it should be because part of the DMA data will be dropped on FIFO input buffer overflow. Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Acked-by: Thierry Reding <treding@nvidia.com> Link: https://lore.kernel.org/r/20211204143725.31646-6-digetx@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
549818e5c8
commit
16736a0221
1 changed files with 8 additions and 0 deletions
|
@ -69,6 +69,14 @@ static int tegra20_spdif_hw_params(struct snd_pcm_substream *substream,
|
|||
|
||||
regmap_update_bits(spdif->regmap, TEGRA20_SPDIF_CTRL, mask, val);
|
||||
|
||||
/*
|
||||
* FIFO trigger level must be bigger than DMA burst or equal to it,
|
||||
* otherwise data is discarded on overflow.
|
||||
*/
|
||||
regmap_update_bits(spdif->regmap, TEGRA20_SPDIF_DATA_FIFO_CSR,
|
||||
TEGRA20_SPDIF_DATA_FIFO_CSR_TX_ATN_LVL_MASK,
|
||||
TEGRA20_SPDIF_DATA_FIFO_CSR_TX_ATN_LVL_TU4_WORD_FULL);
|
||||
|
||||
switch (params_rate(params)) {
|
||||
case 32000:
|
||||
spdifclock = 4096000;
|
||||
|
|
Loading…
Add table
Reference in a new issue