diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0630-Audio-issue-fix-EMBSWDEV-6837.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/0630-Audio-issue-fix-EMBSWDEV-6837.patch | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0630-Audio-issue-fix-EMBSWDEV-6837.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0630-Audio-issue-fix-EMBSWDEV-6837.patch new file mode 100644 index 00000000..b54ed94e --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0630-Audio-issue-fix-EMBSWDEV-6837.patch @@ -0,0 +1,102 @@ +From ba43ff99240a7e4871540248061b5867f14cd1b7 Mon Sep 17 00:00:00 2001 +From: Sudheesh Mavila <sudheesh.mavila@amd.com> +Date: Tue, 19 Mar 2019 15:52:27 +0530 +Subject: [PATCH 0630/2940] Audio issue fix EMBSWDEV-6837 + +Signed-off-by: Sudheesh Mavila <sudheesh.mavila@amd.com> +--- + 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 + |