53 lines
1.6 KiB
Diff
53 lines
1.6 KiB
Diff
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
|
|
|