mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-24 10:11:26 +03:00
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 <dipeshg@nvidia.com> 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 <npai@nvidia.com>
This commit is contained in:
committed by
Sameer Pujar
parent
4a5d4c683c
commit
0e367830b2
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user