aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2014-07-11 09:45:07 -0400
committerMark Brown <broonie@linaro.org>2014-07-14 14:53:10 -0400
commit8f501c7b4414d46a3ea6650f962b0fe9a69d9787 (patch)
tree266ff9ac65a9337979a4267e304004b4f54d5480 /sound
parentd788cbd3f9065d829351746f94417d469f14eaaf (diff)
ASoC: samsung: s3c24xx dmaengine follow-up
Commit ae602456e83c92 ("ASoC: samsung: drop support for legacy S3C24XX DMA API") removed the old code for the samsung specific DMA interfaces, now that everybody can use dmaengine. This picks up the few remaining pieces left over by that patch: The most important one is the removal of the dma_data->ops->started() calls in ac97. My understanding is that these are only required for drivers that do not support cyclic transfers, which the new dma engine driver now does, so we can simply remove them. This would also fix at least one bug in the ac97 driver on newer machines, which currently gives us a NULL pointer dereference from trying to call dma_data->ops->started(). Further, we must no longer 'select' S3C2410_DMA, which conflicts with the dmaengine driver. The SND_S3C_DMA symbol is now useless, because it is always selected, so we can remove it and build the dmaengine support unconditionally. Finally, we should not 'select' S3C24XX_DMAC or S3C64XX_PL080, which may have additional dependencies. This replaces it with 'depends on', to be more conservative. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/samsung/Kconfig10
-rw-r--r--sound/soc/samsung/Makefile2
-rw-r--r--sound/soc/samsung/ac97.c17
3 files changed, 3 insertions, 26 deletions
diff --git a/sound/soc/samsung/Kconfig b/sound/soc/samsung/Kconfig
index 91ee5023668b..55a38697443d 100644
--- a/sound/soc/samsung/Kconfig
+++ b/sound/soc/samsung/Kconfig
@@ -1,18 +1,14 @@
1config SND_SOC_SAMSUNG 1config SND_SOC_SAMSUNG
2 tristate "ASoC support for Samsung" 2 tristate "ASoC support for Samsung"
3 depends on PLAT_SAMSUNG 3 depends on PLAT_SAMSUNG
4 select S3C24XX_DMAC if ARCH_S3C24XX 4 depends on S3C64XX_PL080 || !ARCH_S3C64XX
5 select S3C64XX_PL080 if ARCH_S3C64XX 5 depends on S3C24XX_DMAC || !ARCH_S3C24XX
6 select SND_S3C_DMA
7 select SND_SOC_GENERIC_DMAENGINE_PCM 6 select SND_SOC_GENERIC_DMAENGINE_PCM
8 help 7 help
9 Say Y or M if you want to add support for codecs attached to 8 Say Y or M if you want to add support for codecs attached to
10 the Samsung SoCs' Audio interfaces. You will also need to 9 the Samsung SoCs' Audio interfaces. You will also need to
11 select the audio interfaces to support below. 10 select the audio interfaces to support below.
12 11
13config SND_S3C_DMA
14 tristate
15
16config SND_S3C24XX_I2S 12config SND_S3C24XX_I2S
17 tristate 13 tristate
18 14
@@ -77,7 +73,6 @@ config SND_SOC_SAMSUNG_SMDK_WM8994
77config SND_SOC_SAMSUNG_SMDK2443_WM9710 73config SND_SOC_SAMSUNG_SMDK2443_WM9710
78 tristate "SoC AC97 Audio support for SMDK2443 - WM9710" 74 tristate "SoC AC97 Audio support for SMDK2443 - WM9710"
79 depends on SND_SOC_SAMSUNG && MACH_SMDK2443 75 depends on SND_SOC_SAMSUNG && MACH_SMDK2443
80 select S3C2410_DMA
81 select AC97_BUS 76 select AC97_BUS
82 select SND_SOC_AC97_CODEC 77 select SND_SOC_AC97_CODEC
83 select SND_SAMSUNG_AC97 78 select SND_SAMSUNG_AC97
@@ -88,7 +83,6 @@ config SND_SOC_SAMSUNG_SMDK2443_WM9710
88config SND_SOC_SAMSUNG_LN2440SBC_ALC650 83config SND_SOC_SAMSUNG_LN2440SBC_ALC650
89 tristate "SoC AC97 Audio support for LN2440SBC - ALC650" 84 tristate "SoC AC97 Audio support for LN2440SBC - ALC650"
90 depends on SND_SOC_SAMSUNG && ARCH_S3C24XX 85 depends on SND_SOC_SAMSUNG && ARCH_S3C24XX
91 select S3C2410_DMA
92 select AC97_BUS 86 select AC97_BUS
93 select SND_SOC_AC97_CODEC 87 select SND_SOC_AC97_CODEC
94 select SND_SAMSUNG_AC97 88 select SND_SAMSUNG_AC97
diff --git a/sound/soc/samsung/Makefile b/sound/soc/samsung/Makefile
index e8d9ccdc41fd..91505ddaaf95 100644
--- a/sound/soc/samsung/Makefile
+++ b/sound/soc/samsung/Makefile
@@ -9,7 +9,7 @@ snd-soc-samsung-spdif-objs := spdif.o
9snd-soc-pcm-objs := pcm.o 9snd-soc-pcm-objs := pcm.o
10snd-soc-i2s-objs := i2s.o 10snd-soc-i2s-objs := i2s.o
11 11
12obj-$(CONFIG_SND_S3C_DMA) += snd-soc-s3c-dma.o 12obj-$(CONFIG_SND_SOC_SAMSUNG) += snd-soc-s3c-dma.o
13obj-$(CONFIG_SND_S3C24XX_I2S) += snd-soc-s3c24xx-i2s.o 13obj-$(CONFIG_SND_S3C24XX_I2S) += snd-soc-s3c24xx-i2s.o
14obj-$(CONFIG_SND_SAMSUNG_AC97) += snd-soc-ac97.o 14obj-$(CONFIG_SND_SAMSUNG_AC97) += snd-soc-ac97.o
15obj-$(CONFIG_SND_S3C2412_SOC_I2S) += snd-soc-s3c2412-i2s.o 15obj-$(CONFIG_SND_S3C2412_SOC_I2S) += snd-soc-s3c2412-i2s.o
diff --git a/sound/soc/samsung/ac97.c b/sound/soc/samsung/ac97.c
index 68d9303047e8..2aa24d052a4a 100644
--- a/sound/soc/samsung/ac97.c
+++ b/sound/soc/samsung/ac97.c
@@ -19,7 +19,6 @@
19 19
20#include <sound/soc.h> 20#include <sound/soc.h>
21 21
22#include <mach/dma.h>
23#include "regs-ac97.h" 22#include "regs-ac97.h"
24#include <linux/platform_data/asoc-s3c.h> 23#include <linux/platform_data/asoc-s3c.h>
25 24
@@ -225,9 +224,6 @@ static int s3c_ac97_trigger(struct snd_pcm_substream *substream, int cmd,
225 struct snd_soc_dai *dai) 224 struct snd_soc_dai *dai)
226{ 225{
227 u32 ac_glbctrl; 226 u32 ac_glbctrl;
228 struct snd_soc_pcm_runtime *rtd = substream->private_data;
229 struct s3c_dma_params *dma_data =
230 snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
231 227
232 ac_glbctrl = readl(s3c_ac97.regs + S3C_AC97_GLBCTRL); 228 ac_glbctrl = readl(s3c_ac97.regs + S3C_AC97_GLBCTRL);
233 if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) 229 if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
@@ -253,11 +249,6 @@ static int s3c_ac97_trigger(struct snd_pcm_substream *substream, int cmd,
253 249
254 writel(ac_glbctrl, s3c_ac97.regs + S3C_AC97_GLBCTRL); 250 writel(ac_glbctrl, s3c_ac97.regs + S3C_AC97_GLBCTRL);
255 251
256 if (!dma_data->ops)
257 dma_data->ops = samsung_dma_get_ops();
258
259 dma_data->ops->started(dma_data->channel);
260
261 return 0; 252 return 0;
262} 253}
263 254
@@ -265,9 +256,6 @@ static int s3c_ac97_mic_trigger(struct snd_pcm_substream *substream,
265 int cmd, struct snd_soc_dai *dai) 256 int cmd, struct snd_soc_dai *dai)
266{ 257{
267 u32 ac_glbctrl; 258 u32 ac_glbctrl;
268 struct snd_soc_pcm_runtime *rtd = substream->private_data;
269 struct s3c_dma_params *dma_data =
270 snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
271 259
272 ac_glbctrl = readl(s3c_ac97.regs + S3C_AC97_GLBCTRL); 260 ac_glbctrl = readl(s3c_ac97.regs + S3C_AC97_GLBCTRL);
273 ac_glbctrl &= ~S3C_AC97_GLBCTRL_MICINTM_MASK; 261 ac_glbctrl &= ~S3C_AC97_GLBCTRL_MICINTM_MASK;
@@ -287,11 +275,6 @@ static int s3c_ac97_mic_trigger(struct snd_pcm_substream *substream,
287 275
288 writel(ac_glbctrl, s3c_ac97.regs + S3C_AC97_GLBCTRL); 276 writel(ac_glbctrl, s3c_ac97.regs + S3C_AC97_GLBCTRL);
289 277
290 if (!dma_data->ops)
291 dma_data->ops = samsung_dma_get_ops();
292
293 dma_data->ops->started(dma_data->channel);
294
295 return 0; 278 return 0;
296} 279}
297 280