aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0630-Audio-issue-fix-EMBSWDEV-6837.patch
diff options
context:
space:
mode:
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.patch102
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
+