[AMD Official Use Only - Internal Distribution Only] -----Original Message----- From: Agrawal, Akshu <Akshu.Agrawal@xxxxxxx> Sent: Friday, March 20, 2020 9:39 AM To: RAVULAPATI, VISHNU VARDHAN RAO <Vishnuvardhanrao.Ravulapati@xxxxxxx> Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx>; broonie@xxxxxxxxxx; Liam Girdwood <lgirdwood@xxxxxxxxx>; Jaroslav Kysela <perex@xxxxxxxx>; Takashi Iwai <tiwai@xxxxxxxx>; Agrawal, Akshu <Akshu.Agrawal@xxxxxxx>; Wei Yongjun <weiyongjun1@xxxxxxxxxx>; moderated list:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM... <alsa-devel@xxxxxxxxxxxxxxxx>; open list <linux-kernel@xxxxxxxxxxxxxxx> Subject: Re: [PATCH] ASoC: amd: Changing Audio Format does not reflect. On 3/19/2020 4:52 PM, Ravulapati Vishnu vardhan rao wrote: > 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); Clearing the entire register might result in issues. IMO better fix is to have a sample_len mask for ITER and IRER register. Use it to clear sample length bits in acp3x_i2s_hwparams function before setting the new format resolution. Thanks, Akshu When stream is open once again all the values will be set. So with clearing ITER/IRER to 0 when device closes there will be no issues. -Vishnu