summaryrefslogtreecommitdiffstats
path: root/meta/packages/linux/linux-openmoko/soc-core-suspend.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/packages/linux/linux-openmoko/soc-core-suspend.patch')
-rw-r--r--meta/packages/linux/linux-openmoko/soc-core-suspend.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/meta/packages/linux/linux-openmoko/soc-core-suspend.patch b/meta/packages/linux/linux-openmoko/soc-core-suspend.patch
new file mode 100644
index 0000000000..7fb6cc7f7a
--- /dev/null
+++ b/meta/packages/linux/linux-openmoko/soc-core-suspend.patch
@@ -0,0 +1,47 @@
1From 6c868238a5e083dca4d74439a7fd467b5c7726b0 Mon Sep 17 00:00:00 2001
2From: Liam Girdwood <liam@localhost.localdomain>
3Date: Fri, 1 Jun 2007 12:56:55 +0100
4Subject: [PATCH] This fixes a bug whereby PCM's were not being suspended when the rest of the audio subsystem was suspended.
5
6---
7 include/sound/soc.h | 3 +++
8 sound/soc/soc-core.c | 8 ++++++++
9 2 files changed, 11 insertions(+), 0 deletions(-)
10
11Index: linux-2.6.22/include/sound/soc.h
12===================================================================
13--- linux-2.6.22.orig/include/sound/soc.h 2007-07-09 00:32:17.000000000 +0100
14+++ linux-2.6.22/include/sound/soc.h 2007-11-09 16:13:08.000000000 +0000
15@@ -411,6 +411,9 @@
16
17 /* codec/machine specific init - e.g. add machine controls */
18 int (*init)(struct snd_soc_codec *codec);
19+
20+ /* DAI pcm */
21+ struct snd_pcm *pcm;
22 };
23
24 /* SoC machine */
25Index: linux-2.6.22/sound/soc/soc-core.c
26===================================================================
27--- linux-2.6.22.orig/sound/soc/soc-core.c 2007-07-09 00:32:17.000000000 +0100
28+++ linux-2.6.22/sound/soc/soc-core.c 2007-11-09 16:18:45.000000000 +0000
29@@ -639,6 +639,10 @@
30 dai->dai_ops.digital_mute(dai, 1);
31 }
32
33+ /* suspend all pcm's */
34+ for(i = 0; i < machine->num_links; i++)
35+ snd_pcm_suspend_all(machine->dai_link[i].pcm);
36+
37 if (machine->suspend_pre)
38 machine->suspend_pre(pdev, state);
39
40@@ -873,6 +877,7 @@
41 return ret;
42 }
43
44+ dai_link->pcm = pcm;
45 pcm->private_data = rtd;
46 soc_pcm_ops.mmap = socdev->platform->pcm_ops->mmap;
47 soc_pcm_ops.pointer = socdev->platform->pcm_ops->pointer;