Message ID | 1574415866-29715-5-git-send-email-Vishnuvardhanrao.Ravulapati@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [RESEND,v12,1/6] ASoC: amd:Create multiple I2S platform device endpoint | expand |
On 11/22/2019 3:14 PM, Ravulapati Vishnu vardhan rao wrote: > ACP3x I2S (CPU DAI) can act in normal I2S and TDM modes. Added support > for TDM mode. Desired mode can be selected from ASoC machine driver. > > Signed-off-by: Ravulapati Vishnu vardhan rao <Vishnuvardhanrao.Ravulapati@amd.com> > --- > sound/soc/amd/raven/acp3x-i2s.c | 24 ++++++++++++++++++++---- > sound/soc/amd/raven/acp3x.h | 1 + > 2 files changed, 21 insertions(+), 4 deletions(-) > > diff --git a/sound/soc/amd/raven/acp3x-i2s.c b/sound/soc/amd/raven/acp3x-i2s.c > index 7f05782..cea7311 100644 > --- a/sound/soc/amd/raven/acp3x-i2s.c > +++ b/sound/soc/amd/raven/acp3x-i2s.c > @@ -70,11 +70,27 @@ static int acp3x_i2s_set_tdm_slot(struct snd_soc_dai *cpu_dai, > > frm_len = FRM_LEN | (slots << 15) | (slot_len << 18); > if (adata->substream_type == SNDRV_PCM_STREAM_PLAYBACK) { > - reg_val = mmACP_BTTDM_ITER; > - frmt_val = mmACP_BTTDM_TXFRMT; > + switch (adata->i2s_instance) { > + case I2S_BT_INSTANCE: > + reg_val = mmACP_BTTDM_ITER; > + frmt_reg = mmACP_BTTDM_TXFRMT; Patch 2 of this series declares frmt_val, frmt_reg should cause build errors. Thanks, Akshu
diff --git a/sound/soc/amd/raven/acp3x-i2s.c b/sound/soc/amd/raven/acp3x-i2s.c index 7f05782..cea7311 100644 --- a/sound/soc/amd/raven/acp3x-i2s.c +++ b/sound/soc/amd/raven/acp3x-i2s.c @@ -70,11 +70,27 @@ static int acp3x_i2s_set_tdm_slot(struct snd_soc_dai *cpu_dai, frm_len = FRM_LEN | (slots << 15) | (slot_len << 18); if (adata->substream_type == SNDRV_PCM_STREAM_PLAYBACK) { - reg_val = mmACP_BTTDM_ITER; - frmt_val = mmACP_BTTDM_TXFRMT; + switch (adata->i2s_instance) { + case I2S_BT_INSTANCE: + reg_val = mmACP_BTTDM_ITER; + frmt_reg = mmACP_BTTDM_TXFRMT; + break; + case I2S_SP_INSTANCE: + default: + reg_val = mmACP_I2STDM_ITER; + frmt_reg = mmACP_I2STDM_TXFRMT; + } } else { - reg_val = mmACP_BTTDM_IRER; - frmt_val = mmACP_BTTDM_RXFRMT; + switch (adata->i2s_instance) { + case I2S_BT_INSTANCE: + reg_val = mmACP_BTTDM_IRER; + frmt_reg = mmACP_BTTDM_RXFRMT; + break; + case I2S_SP_INSTANCE: + default: + reg_val = mmACP_I2STDM_IRER; + frmt_reg = mmACP_I2STDM_RXFRMT; + } } val = rv_readl(adata->acp3x_base + reg_val); rv_writel(val | 0x2, adata->acp3x_base + reg_val); diff --git a/sound/soc/amd/raven/acp3x.h b/sound/soc/amd/raven/acp3x.h index ed1acbc..3c28644 100644 --- a/sound/soc/amd/raven/acp3x.h +++ b/sound/soc/amd/raven/acp3x.h @@ -78,6 +78,7 @@ struct acp3x_platform_info { struct i2s_dev_data { bool tdm_mode; unsigned int i2s_irq; + u16 i2s_instance; u32 tdm_fmt; u32 substream_type; void __iomem *acp3x_base;
ACP3x I2S (CPU DAI) can act in normal I2S and TDM modes. Added support for TDM mode. Desired mode can be selected from ASoC machine driver. Signed-off-by: Ravulapati Vishnu vardhan rao <Vishnuvardhanrao.Ravulapati@amd.com> --- sound/soc/amd/raven/acp3x-i2s.c | 24 ++++++++++++++++++++---- sound/soc/amd/raven/acp3x.h | 1 + 2 files changed, 21 insertions(+), 4 deletions(-)