ASoC: tegra20: spdif: Set FIFO trigger level
[linux-2.6-microblaze.git] / sound / soc / tegra / tegra20_spdif.c
index 57a6c57..e45e371 100644 (file)
@@ -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;