diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1108-ASoC-AMD-Add-ACP3x-system-resume-pm-op.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1108-ASoC-AMD-Add-ACP3x-system-resume-pm-op.patch | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1108-ASoC-AMD-Add-ACP3x-system-resume-pm-op.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1108-ASoC-AMD-Add-ACP3x-system-resume-pm-op.patch deleted file mode 100644 index 1f24dc53..00000000 --- a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1108-ASoC-AMD-Add-ACP3x-system-resume-pm-op.patch +++ /dev/null @@ -1,83 +0,0 @@ -From bcec114624961692bfa27db57442c1c5d6e7e7ba Mon Sep 17 00:00:00 2001 -From: Maruthi Srinivas Bayyavarapu <Maruthi.Bayyavarapu@amd.com> -Date: Thu, 30 Mar 2017 15:47:49 +0530 -Subject: [PATCH 1108/4131] ASoC: AMD: Add ACP3x system resume pm op - -When audio usecase in progress and system wide suspend happens, ACP will -be powered off and when system resumes, for audio usecase to continue, -all the runtime configuration data needs to be programmed again. Added -'resume'pm call back to ACP pm ops. - -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 | 46 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 46 insertions(+) - -diff --git a/sound/soc/amd/raven/acp3x-pcm-dma.c b/sound/soc/amd/raven/acp3x-pcm-dma.c -index a5d3807..5246d28 100644 ---- a/sound/soc/amd/raven/acp3x-pcm-dma.c -+++ b/sound/soc/amd/raven/acp3x-pcm-dma.c -@@ -709,6 +709,51 @@ static int acp3x_audio_remove(struct platform_device *pdev) - return 0; - } - -+static int acp3x_resume(struct device *dev) -+{ -+ int status; -+ u32 val; -+ struct i2s_dev_data *adata = dev_get_drvdata(dev); -+ -+ status = acp3x_init(adata->acp3x_base); -+ if (status) -+ return -ENODEV; -+ -+ if (adata->play_stream && adata->play_stream->runtime) { -+ struct i2s_stream_instance *rtd = -+ adata->play_stream->runtime->private_data; -+ config_acp3x_dma(rtd, SNDRV_PCM_STREAM_PLAYBACK); -+ rv_writel((rtd->xfer_resolution << 3), -+ rtd->acp3x_base + mmACP_BTTDM_ITER); -+ if (adata->tdm_mode == true) { -+ rv_writel(adata->tdm_fmt, adata->acp3x_base + -+ mmACP_BTTDM_TXFRMT); -+ val = rv_readl(adata->acp3x_base + mmACP_BTTDM_ITER); -+ rv_writel((val | 0x2), adata->acp3x_base + -+ mmACP_BTTDM_ITER); -+ } -+ } -+ -+ if (adata->capture_stream && adata->capture_stream->runtime) { -+ struct i2s_stream_instance *rtd = -+ adata->capture_stream->runtime->private_data; -+ config_acp3x_dma(rtd, SNDRV_PCM_STREAM_CAPTURE); -+ rv_writel((rtd->xfer_resolution << 3), -+ rtd->acp3x_base + mmACP_BTTDM_IRER); -+ if (adata->tdm_mode == true) { -+ rv_writel(adata->tdm_fmt, adata->acp3x_base + -+ mmACP_BTTDM_RXFRMT); -+ val = rv_readl(adata->acp3x_base + mmACP_BTTDM_IRER); -+ rv_writel((val | 0x2), adata->acp3x_base + -+ mmACP_BTTDM_IRER); -+ } -+ } -+ -+ rv_writel(1, adata->acp3x_base + mmACP_EXTERNAL_INTR_ENB); -+ return 0; -+} -+ -+ - static int acp3x_pcm_runtime_suspend(struct device *dev) - { - int status; -@@ -740,6 +785,7 @@ static int acp3x_pcm_runtime_resume(struct device *dev) - static const struct dev_pm_ops acp3x_pm_ops = { - .runtime_suspend = acp3x_pcm_runtime_suspend, - .runtime_resume = acp3x_pcm_runtime_resume, -+ .resume = acp3x_resume, - }; - - static struct platform_driver acp3x_dma_driver = { --- -2.7.4 - |