aboutsummaryrefslogtreecommitdiffstats
path: root/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1105-ASoC-AMD-add-ACP3x-i2s-ops.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1105-ASoC-AMD-add-ACP3x-i2s-ops.patch')
-rw-r--r--meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1105-ASoC-AMD-add-ACP3x-i2s-ops.patch114
1 files changed, 0 insertions, 114 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1105-ASoC-AMD-add-ACP3x-i2s-ops.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1105-ASoC-AMD-add-ACP3x-i2s-ops.patch
deleted file mode 100644
index 983855fa..00000000
--- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1105-ASoC-AMD-add-ACP3x-i2s-ops.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 913e9b53a6d75fcb5e65ed5e5a219bc852c1a09c Mon Sep 17 00:00:00 2001
-From: Maruthi Srinivas Bayyavarapu <Maruthi.Bayyavarapu@amd.com>
-Date: Wed, 29 Mar 2017 19:12:20 +0530
-Subject: [PATCH 1105/4131] ASoC: AMD: add ACP3x i2s ops
-
-ACP3x has a i2s controller block for playback and capture. This patch
-adds ACP3x i2s operations.
-
-Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
----
- sound/soc/amd/raven/acp3x-pcm-dma.c | 85 +++++++++++++++++++++++++++++++++++--
- 1 file changed, 82 insertions(+), 3 deletions(-)
-
-diff --git a/sound/soc/amd/raven/acp3x-pcm-dma.c b/sound/soc/amd/raven/acp3x-pcm-dma.c
-index 346ebcb..5e589dc 100644
---- a/sound/soc/amd/raven/acp3x-pcm-dma.c
-+++ b/sound/soc/amd/raven/acp3x-pcm-dma.c
-@@ -436,10 +436,89 @@ static struct snd_soc_platform_driver acp3x_asoc_platform = {
- .pcm_new = acp3x_dma_new,
- };
-
-+static int acp3x_dai_i2s_hwparams(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params,
-+ struct snd_soc_dai *dai)
-+{
-+ struct i2s_stream_instance *rtd = substream->runtime->private_data;
-+
-+ switch (params_format(params)) {
-+ case SNDRV_PCM_FORMAT_U8:
-+ case SNDRV_PCM_FORMAT_S8:
-+ rtd->xfer_resolution = 0x0;
-+ break;
-+ case SNDRV_PCM_FORMAT_S16_LE:
-+ rtd->xfer_resolution = 0x02;
-+ break;
-+
-+ case SNDRV_PCM_FORMAT_S24_LE:
-+ rtd->xfer_resolution = 0x04;
-+ break;
-+ case SNDRV_PCM_FORMAT_S32_LE:
-+ rtd->xfer_resolution = 0x05;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-+ rv_writel((rtd->xfer_resolution << 3),
-+ rtd->acp3x_base + mmACP_BTTDM_ITER);
-+ else
-+ rv_writel((rtd->xfer_resolution << 3),
-+ rtd->acp3x_base + mmACP_BTTDM_IRER);
-+
-+ return 0;
-+}
-+
-+static int acp3x_dai_i2s_trigger(struct snd_pcm_substream *substream,
-+ int cmd, struct snd_soc_dai *dai)
-+{
-+ int ret = 0;
-+ struct i2s_stream_instance *rtd = substream->runtime->private_data;
-+ u32 val;
-+
-+ switch (cmd) {
-+ case SNDRV_PCM_TRIGGER_START:
-+ case SNDRV_PCM_TRIGGER_RESUME:
-+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ val = rv_readl(rtd->acp3x_base + mmACP_BTTDM_ITER);
-+ val = val | BIT(0);
-+ rv_writel(val, rtd->acp3x_base + mmACP_BTTDM_ITER);
-+ } else {
-+ val = rv_readl(rtd->acp3x_base + mmACP_BTTDM_IRER);
-+ val = val | BIT(0);
-+ rv_writel(val, rtd->acp3x_base + mmACP_BTTDM_IRER);
-+ }
-+ rv_writel(1, rtd->acp3x_base + mmACP_BTTDM_IER);
-+ break;
-+
-+ case SNDRV_PCM_TRIGGER_STOP:
-+ case SNDRV_PCM_TRIGGER_SUSPEND:
-+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-+ val = rv_readl(rtd->acp3x_base + mmACP_BTTDM_ITER);
-+ val = val & ~BIT(0);
-+ rv_writel(val, rtd->acp3x_base + mmACP_BTTDM_ITER);
-+ } else {
-+ val = rv_readl(rtd->acp3x_base + mmACP_BTTDM_IRER);
-+ val = val & ~BIT(0);
-+ rv_writel(val, rtd->acp3x_base + mmACP_BTTDM_IRER);
-+ }
-+ rv_writel(0, rtd->acp3x_base + mmACP_BTTDM_IER);
-+ break;
-+ default:
-+ ret = -EINVAL;
-+ break;
-+ }
-+
-+ return ret;
-+}
-+
- struct snd_soc_dai_ops acp3x_dai_i2s_ops = {
-- .hw_params = NULL,
-- .trigger = NULL,
-- .set_fmt = NULL,
-+ .hw_params = acp3x_dai_i2s_hwparams,
-+ .trigger = acp3x_dai_i2s_trigger,
- };
-
- static struct snd_soc_dai_driver acp3x_i2s_dai_driver = {
---
-2.7.4
-