aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.24/1005-asoc-core-suspend_resume.patch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1005-asoc-core-suspend_resume.patch.patch')
-rw-r--r--target/linux/s3c24xx/patches-2.6.24/1005-asoc-core-suspend_resume.patch.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1005-asoc-core-suspend_resume.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1005-asoc-core-suspend_resume.patch.patch
new file mode 100644
index 0000000000..6f0f08616e
--- /dev/null
+++ b/target/linux/s3c24xx/patches-2.6.24/1005-asoc-core-suspend_resume.patch.patch
@@ -0,0 +1,52 @@
+From 3ebb4e58d6f7a9f2710a4e174a3c8b59f9fa9bd5 Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 1 Jun 2007 12:56:55 +0100
+Subject: [PATCH] asoc-core-suspend_resume.patch
+ From 6c868238a5e083dca4d74439a7fd467b5c7726b0 Mon Sep 17 00:00:00 2001
+ Subject: [PATCH] This fixes a bug whereby PCM's were not being suspended when the rest of the audio subsystem was suspended.
+
+---
+ include/sound/soc.h | 3 +++
+ sound/soc/soc-core.c | 5 +++++
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/include/sound/soc.h b/include/sound/soc.h
+index f47ef1f..aedb348 100644
+--- a/include/sound/soc.h
++++ b/include/sound/soc.h
+@@ -410,6 +410,9 @@ struct snd_soc_dai_link {
+
+ /* codec/machine specific init - e.g. add machine controls */
+ int (*init)(struct snd_soc_codec *codec);
++
++ /* DAI pcm */
++ struct snd_pcm *pcm;
+ };
+
+ /* SoC machine */
+diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
+index e6a67b5..25f7818 100644
+--- a/sound/soc/soc-core.c
++++ b/sound/soc/soc-core.c
+@@ -639,6 +639,10 @@ static int soc_suspend(struct platform_device *pdev, pm_message_t state)
+ dai->dai_ops.digital_mute(dai, 1);
+ }
+
++ /* suspend all pcm's */
++ for(i = 0; i < machine->num_links; i++)
++ snd_pcm_suspend_all(machine->dai_link[i].pcm);
++
+ if (machine->suspend_pre)
+ machine->suspend_pre(pdev, state);
+
+@@ -873,6 +877,7 @@ static int soc_new_pcm(struct snd_soc_device *socdev,
+ return ret;
+ }
+
++ dai_link->pcm = pcm;
+ pcm->private_data = rtd;
+ soc_pcm_ops.mmap = socdev->platform->pcm_ops->mmap;
+ soc_pcm_ops.pointer = socdev->platform->pcm_ops->pointer;
+--
+1.5.6.5
+