[PATCH] ASoC: amd: Changing Audio Format does not reflect.

From: Ravulapati Vishnu vardhan rao
Date: Thu Mar 19 2020 - 07:26:08 EST


When you run aplay subsequently as below by changing the stream format:

aplay -Dhw:2,0 -c2 -fS16_LE -r48000 /dev/zero -vv -d 5;aplay -Dhw:2,0
-c2 -fS24_LE -r48000 /dev/zero -vv
as a single command, the format gets corrupted and audio does not play.

So clear the ACP_(I2S/BT)TDM_ITER/IRER register when dma stops.

Signed-off-by: Ravulapati Vishnu vardhan rao <Vishnuvardhanrao.Ravulapati@xxxxxxx>
---
sound/soc/amd/raven/acp3x-i2s.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/sound/soc/amd/raven/acp3x-i2s.c b/sound/soc/amd/raven/acp3x-i2s.c
index 3a3c47e..b07c50a 100644
--- a/sound/soc/amd/raven/acp3x-i2s.c
+++ b/sound/soc/amd/raven/acp3x-i2s.c
@@ -240,9 +240,7 @@ static int acp3x_i2s_trigger(struct snd_pcm_substream *substream,
reg_val = mmACP_I2STDM_IRER;
}
}
- val = rv_readl(rtd->acp3x_base + reg_val);
- val = val & ~BIT(0);
- rv_writel(val, rtd->acp3x_base + reg_val);
+ rv_writel(0, rtd->acp3x_base + reg_val);

if (!(rv_readl(rtd->acp3x_base + mmACP_BTTDM_ITER) & BIT(0)) &&
!(rv_readl(rtd->acp3x_base + mmACP_BTTDM_IRER) & BIT(0)))
--
2.7.4