From 0e367830b28e95e56278f8fbedb4acd34bd2d6fe Mon Sep 17 00:00:00 2001 From: Dipesh Gandhi Date: Tue, 18 Oct 2016 16:33:40 +0530 Subject: [PATCH] tegra-alt: admaif: fix fifo sizes and start addrs amdaif fifo sizes and start addresses were being set such that amdaif x and admaif x+16 fifos were overlapping causing audio data corruption when used simultaneously. use the reset values for fifo sizes and start adddresses to avoid this overlap Bug 1748018 Change-Id: I8a87e83d1cbebcd6dc2f487a5925756fd47004a3 Signed-off-by: Dipesh Gandhi Reviewed-on: http://git-master/r/1171651 (cherry picked from commit efef0eaf1434b550e93016264491a16555d7b3de) Reviewed-on: http://git-master/r/1238417 GVS: Gerrit_Virtual_Submit Reviewed-by: Nitin Pai --- sound/soc/tegra-alt/tegra210_admaif_alt.c | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/sound/soc/tegra-alt/tegra210_admaif_alt.c b/sound/soc/tegra-alt/tegra210_admaif_alt.c index 7f1d8c76..0074c857 100644 --- a/sound/soc/tegra-alt/tegra210_admaif_alt.c +++ b/sound/soc/tegra-alt/tegra210_admaif_alt.c @@ -319,7 +319,7 @@ static int tegra210_admaif_hw_params(struct snd_pcm_substream *substream, struct device *dev = dai->dev; struct tegra210_admaif *admaif = snd_soc_dai_get_drvdata(dai); struct tegra210_xbar_cif_conf cif_conf; - unsigned int reg, fifo_ctrl, fifo_size; + unsigned int reg; int valid_bit; memset(&cif_conf, 0, sizeof(struct tegra210_xbar_cif_conf)); @@ -360,29 +360,14 @@ static int tegra210_admaif_hw_params(struct snd_pcm_substream *substream, if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { reg = TEGRA210_ADMAIF_CHAN_ACIF_TX_CTRL + (dai->id * TEGRA210_ADMAIF_CHANNEL_REG_STRIDE); - fifo_ctrl = TEGRA210_ADMAIF_XBAR_TX_FIFO_CTRL + - (dai->id * TEGRA210_ADMAIF_CHANNEL_REG_STRIDE); - fifo_size = 3; } else { reg = TEGRA210_ADMAIF_CHAN_ACIF_RX_CTRL + (dai->id * TEGRA210_ADMAIF_CHANNEL_REG_STRIDE); - fifo_ctrl = TEGRA210_ADMAIF_XBAR_RX_FIFO_CTRL + - (dai->id * TEGRA210_ADMAIF_CHANNEL_REG_STRIDE); - fifo_size = 3; } tegra210_admaif_set_pack_mode(admaif->regmap, reg, valid_bit); admaif->soc_data->set_audio_cif(admaif->regmap, reg, &cif_conf); - regmap_update_bits(admaif->regmap, fifo_ctrl, - TEGRA210_ADMAIF_XBAR_DMA_FIFO_SIZE_MASK, - fifo_size << TEGRA210_ADMAIF_XBAR_DMA_FIFO_SIZE_SHIFT); - - regmap_update_bits(admaif->regmap, fifo_ctrl, - TEGRA210_ADMAIF_XBAR_DMA_FIFO_START_ADDR_MASK, - (0x4 * dai->id) - << TEGRA210_ADMAIF_XBAR_DMA_FIFO_START_ADDR_SHIFT); - return 0; }