ASoC: AMD: Clear format bits before setting them
authorAkshu Agrawal <akshu.agrawal@amd.com>
Sat, 28 Mar 2020 09:39:16 +0000 (03:39 -0600)
committerMark Brown <broonie@kernel.org>
Mon, 30 Mar 2020 14:32:35 +0000 (15:32 +0100)
This avoids residual bit form previous format when the format is changed.
Hence, the resultant format is not an invalid one.

Signed-off-by: Akshu Agrawal <akshu.agrawal@amd.com>
Signed-off-by: Ravulapati Vishnu vardhan rao <Vishnuvardhanrao.Ravulapati@amd.com>
Link: https://lore.kernel.org/r/20200328093921.32211-1-akshu.agrawal@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/amd/raven/acp3x-i2s.c
sound/soc/amd/raven/acp3x.h

index 3a3c47e..f160d35 100644 (file)
@@ -139,6 +139,7 @@ static int acp3x_i2s_hwparams(struct snd_pcm_substream *substream,
                rv_writel(adata->tdm_fmt, rtd->acp3x_base + frmt_reg);
        }
        val = rv_readl(rtd->acp3x_base + reg_val);
+       val &= ~ACP3x_ITER_IRER_SAMP_LEN_MASK;
        val = val | (rtd->xfer_resolution  << 3);
        rv_writel(val, rtd->acp3x_base + reg_val);
        return 0;
index 21e7ac0..03fe939 100644 (file)
@@ -76,6 +76,8 @@
 #define ACP_POWERED_OFF                        0x02
 #define ACP_POWER_OFF_IN_PROGRESS      0x03
 
+#define ACP3x_ITER_IRER_SAMP_LEN_MASK  0x38
+
 struct acp3x_platform_info {
        u16 play_i2s_instance;
        u16 cap_i2s_instance;