aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/omap/omap-mcpdm.c
diff options
context:
space:
mode:
authorDaniel Mack <daniel@caiaq.de>2010-03-22 10:11:15 +0100
committerMark Brown <broonie@opensource.wolfsonmicro.com>2010-04-05 19:14:11 +0100
commit5f712b2b73a9fc87fcc52124cfe8adefaa0c92f5 (patch)
tree0e7ab3cedba6b50cdf603c433b79ceebf23972b0 /sound/soc/omap/omap-mcpdm.c
parentd522ffbfb9fccf6eca283cd2e8b03cf3d21fb616 (diff)
downloadmrst-s0i3-test-5f712b2b73a9fc87fcc52124cfe8adefaa0c92f5.tar.gz
mrst-s0i3-test-5f712b2b73a9fc87fcc52124cfe8adefaa0c92f5.tar.xz
mrst-s0i3-test-5f712b2b73a9fc87fcc52124cfe8adefaa0c92f5.zip
ALSA: ASoC: move dma_data from snd_soc_dai to snd_soc_pcm_stream
This fixes a memory corruption when ASoC devices are used in full-duplex mode. Specifically for pxa-ssp code, where this pointer is dynamically allocated for each direction and destroyed upon each stream start. All other platforms are fixed blindly, I couldn't even compile-test them. Sorry for any breakage I may have caused. [Note that this is a backported version for 2.6.34. Upstream commit is fd23b7dee] Signed-off-by: Daniel Mack <daniel@caiaq.de> Reported-by: Sven Neumann <s.neumann@raumfeld.com> Reported-by: Michael Hirsch <m.hirsch@raumfeld.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/omap/omap-mcpdm.c')
-rw-r--r--sound/soc/omap/omap-mcpdm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/soc/omap/omap-mcpdm.c b/sound/soc/omap/omap-mcpdm.c
index 25f19e4728b..b7f4f7e015f 100644
--- a/sound/soc/omap/omap-mcpdm.c
+++ b/sound/soc/omap/omap-mcpdm.c
@@ -150,7 +150,8 @@ static int omap_mcpdm_dai_hw_params(struct snd_pcm_substream *substream,
int stream = substream->stream;
int channels, err, link_mask = 0;
- cpu_dai->dma_data = &omap_mcpdm_dai_dma_params[stream];
+ snd_soc_dai_set_dma_data(cpu_dai, substream,
+ &omap_mcpdm_dai_dma_params[stream]);
channels = params_channels(params);
switch (channels) {