From ba43ff99240a7e4871540248061b5867f14cd1b7 Mon Sep 17 00:00:00 2001 From: Sudheesh Mavila Date: Tue, 19 Mar 2019 15:52:27 +0530 Subject: [PATCH 0630/2940] Audio issue fix EMBSWDEV-6837 Signed-off-by: Sudheesh Mavila --- sound/soc/amd/raven/acp3x-dummy5102.c | 2 +- sound/soc/amd/raven/acp3x-pcm-dma.c | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/sound/soc/amd/raven/acp3x-dummy5102.c b/sound/soc/amd/raven/acp3x-dummy5102.c index 5ea717f26a4c..9b0f523fd571 100755 --- a/sound/soc/amd/raven/acp3x-dummy5102.c +++ b/sound/soc/amd/raven/acp3x-dummy5102.c @@ -88,7 +88,7 @@ static struct snd_soc_dai_link acp3x_dai_w5102[] = { .cpu_dai_name = "acp3x_rv_i2s.0", .codec_dai_name = "dummy_w5102_dai", .codec_name = "dummy_w5102.0", - .dai_fmt = SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_NB_NF + .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM, .ops = &acp3x_wm5102_ops, .init = acp3x_init, diff --git a/sound/soc/amd/raven/acp3x-pcm-dma.c b/sound/soc/amd/raven/acp3x-pcm-dma.c index 06388f3a938d..fb7d4849afd5 100755 --- a/sound/soc/amd/raven/acp3x-pcm-dma.c +++ b/sound/soc/amd/raven/acp3x-pcm-dma.c @@ -66,7 +66,7 @@ static const struct snd_pcm_hardware acp3x_pcm_hardware_playback = { SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE, .channels_min = 2, - .channels_max = 6, + .channels_max = 8, .rates = SNDRV_PCM_RATE_8000_96000, .rate_min = 8000, .rate_max = 96000, @@ -504,22 +504,22 @@ static int acp3x_dai_set_tdm_slot(struct snd_soc_dai *cpu_dai, u32 tx_mask, u32 rx_mask, int slots, int slot_width) { u32 val = 0; - u16 slot_len; + u16 resolution; struct i2s_dev_data *adata = snd_soc_dai_get_drvdata(cpu_dai); switch (slot_width) { case 8: - slot_len = 8; + resolution = 0; break; case 16: - slot_len = 16; + resolution = 2; break; case 24: - slot_len = 24; + resolution = 4; break; case 32: - slot_len = 0; + resolution = 5; break; default: return -EINVAL; @@ -531,7 +531,7 @@ static int acp3x_dai_set_tdm_slot(struct snd_soc_dai *cpu_dai, u32 tx_mask, val = rv_readl(adata->acp3x_base + mmACP_BTTDM_IRER); rv_writel((val | 0x2), adata->acp3x_base + mmACP_BTTDM_IRER); - val = (FRM_LEN | ((slots) << 15) | (slot_len << 18)); + val = (FRM_LEN | ((slots-1) << 15) | (resolution << 18)); rv_writel(val, adata->acp3x_base + mmACP_BTTDM_TXFRMT); rv_writel(val, adata->acp3x_base + mmACP_BTTDM_RXFRMT); @@ -543,7 +543,6 @@ static int acp3x_dai_i2s_hwparams(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) { - u32 val = 0; struct i2s_stream_instance *rtd = substream->runtime->private_data; switch (params_format(params)) { @@ -565,12 +564,12 @@ static int acp3x_dai_i2s_hwparams(struct snd_pcm_substream *substream, return -EINVAL; } - val = rv_readl(rtd->acp3x_base + mmACP_BTTDM_ITER); - val = val | (rtd->xfer_resolution << 3); if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) - rv_writel(val, rtd->acp3x_base + mmACP_BTTDM_ITER); + rv_writel((rtd->xfer_resolution << 3), + rtd->acp3x_base + mmACP_BTTDM_ITER); else - rv_writel(val, rtd->acp3x_base + mmACP_BTTDM_IRER); + rv_writel((rtd->xfer_resolution << 3), + rtd->acp3x_base + mmACP_BTTDM_IRER); return 0; } -- 2.17.1