History

Merge tag 'sound-3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai: "Just a couple of build regression fixes for ASoC fsl stuff. It doesn't look too trivial, but neither intrusive, so hopefully I can avoid your curse..." Hey, Takashi has a good track record, I think he gets a pass.. * tag 'sound-3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ASoC: fsl: fix snd-soc-imx-pcm module build Revert "ASoC: fsl: fix multiple definition of init_module"

Linus Torvalds committed 13 years ago

Commit 6bacaa92 parents 2110cf0 6baa4af6 files · +63 −47Browse files

Unified · Split

6 files
  1. sound/soc/fsl/Kconfig +7 −2
  2. sound/soc/fsl/Makefile +1 −4
  3. sound/soc/fsl/imx-pcm-dma.c +1 −20
  4. sound/soc/fsl/imx-pcm-fiq.c +1 −21
  5. sound/soc/fsl/imx-pcm.c +35 −0
  6. sound/soc/fsl/imx-pcm.h +18 −0
sound/soc/fsl/Kconfig+7−2
@@ -108,13 +108,18 @@ if SND_IMX_SOC · 107 unmodified lines
108108 config SND_SOC_IMX_SSI
109109 tristate
110110
111−config SND_SOC_IMX_PCM_FIQ
111+config SND_SOC_IMX_PCM
112112 tristate
113+
114+config SND_SOC_IMX_PCM_FIQ
115+ bool
113116 select FIQ
117+ select SND_SOC_IMX_PCM
114118
115119 config SND_SOC_IMX_PCM_DMA
116− tristate
120+ bool
117121 select SND_SOC_DMAENGINE_PCM
122+ select SND_SOC_IMX_PCM
118123
119124 config SND_SOC_IMX_AUDMUX
120125 tristate
sound/soc/fsl/Makefile+1−4
@@ -41,10 +41,7 @@ endif · 40 unmodified lines
4141 obj-$(CONFIG_SND_SOC_IMX_SSI) += snd-soc-imx-ssi.o
4242 obj-$(CONFIG_SND_SOC_IMX_AUDMUX) += snd-soc-imx-audmux.o
4343
44−obj-$(CONFIG_SND_SOC_IMX_PCM_FIQ) += snd-soc-imx-pcm-fiq.o
45−snd-soc-imx-pcm-fiq-y := imx-pcm-fiq.o imx-pcm.o
46−obj-$(CONFIG_SND_SOC_IMX_PCM_DMA) += snd-soc-imx-pcm-dma.o
47−snd-soc-imx-pcm-dma-y := imx-pcm-dma.o imx-pcm.o
44+obj-$(CONFIG_SND_SOC_IMX_PCM) += snd-soc-imx-pcm.o
4845
4946 # i.MX Machine Support
5047 snd-soc-eukrea-tlv320-objs := eukrea-tlv320.o
sound/soc/fsl/imx-pcm-dma.c+1−20
@@ -154,26 +154,7 @@ static struct snd_soc_platform_driver imx_soc_platform_mx2 = { · 153 unmodified lines
154154 .pcm_free = imx_pcm_free,
155155 };
156156
157−static int imx_soc_platform_probe(struct platform_device *pdev)
157+int imx_pcm_dma_init(struct platform_device *pdev)
158158 {
159159 return snd_soc_register_platform(&pdev->dev, &imx_soc_platform_mx2);
160160 }
161−
162−static int imx_soc_platform_remove(struct platform_device *pdev)
163−{
164− snd_soc_unregister_platform(&pdev->dev);
165− return 0;
166−}
167−
168−static struct platform_driver imx_pcm_driver = {
169− .driver = {
170− .name = "imx-pcm-audio",
171− .owner = THIS_MODULE,
172− },
173− .probe = imx_soc_platform_probe,
174− .remove = imx_soc_platform_remove,
175−};
176−
177−module_platform_driver(imx_pcm_driver);
178−MODULE_LICENSE("GPL");
179−MODULE_ALIAS("platform:imx-pcm-audio");
sound/soc/fsl/imx-pcm-fiq.c+1−21
@@ -281,7 +281,7 @@ static struct snd_soc_platform_driver imx_soc_platform_fiq = { · 280 unmodified lines
281281 .pcm_free = imx_pcm_fiq_free,
282282 };
283283
284−static int imx_soc_platform_probe(struct platform_device *pdev)
284+int imx_pcm_fiq_init(struct platform_device *pdev)
285285 {
286286 struct imx_ssi *ssi = platform_get_drvdata(pdev);
287287 int ret;
@@ -314,23 +314,3 @@ failed_register: · 26 unmodified lines
314314
315315 return ret;
316316 }
317−
318−static int imx_soc_platform_remove(struct platform_device *pdev)
319−{
320− snd_soc_unregister_platform(&pdev->dev);
321− return 0;
322−}
323−
324−static struct platform_driver imx_pcm_driver = {
325− .driver = {
326− .name = "imx-fiq-pcm-audio",
327− .owner = THIS_MODULE,
328− },
329−
330− .probe = imx_soc_platform_probe,
331− .remove = imx_soc_platform_remove,
332−};
333−
334−module_platform_driver(imx_pcm_driver);
335−
336−MODULE_LICENSE("GPL");
sound/soc/fsl/imx-pcm.c+35−0
@@ -31,6 +31,7 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, · 30 unmodified lines
3131 runtime->dma_bytes);
3232 return ret;
3333 }
34+EXPORT_SYMBOL_GPL(snd_imx_pcm_mmap);
3435
3536 static int imx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
3637 {
@@ -79,6 +80,7 @@ int imx_pcm_new(struct snd_soc_pcm_runtime *rtd) · 42 unmodified lines
7980 out:
8081 return ret;
8182 }
83+EXPORT_SYMBOL_GPL(imx_pcm_new);
8284
8385 void imx_pcm_free(struct snd_pcm *pcm)
8486 {
@@ -100,6 +102,39 @@ void imx_pcm_free(struct snd_pcm *pcm) · 15 unmodified lines
100102 buf->area = NULL;
101103 }
102104 }
105+EXPORT_SYMBOL_GPL(imx_pcm_free);
106+
107+static int imx_pcm_probe(struct platform_device *pdev)
108+{
109+ if (strcmp(pdev->id_entry->name, "imx-fiq-pcm-audio") == 0)
110+ return imx_pcm_fiq_init(pdev);
111+
112+ return imx_pcm_dma_init(pdev);
113+}
114+
115+static int imx_pcm_remove(struct platform_device *pdev)
116+{
117+ snd_soc_unregister_platform(&pdev->dev);
118+ return 0;
119+}
120+
121+static struct platform_device_id imx_pcm_devtype[] = {
122+ { .name = "imx-pcm-audio", },
123+ { .name = "imx-fiq-pcm-audio", },
124+ { /* sentinel */ }
125+};
126+MODULE_DEVICE_TABLE(platform, imx_pcm_devtype);
127+
128+static struct platform_driver imx_pcm_driver = {
129+ .driver = {
130+ .name = "imx-pcm",
131+ .owner = THIS_MODULE,
132+ },
133+ .id_table = imx_pcm_devtype,
134+ .probe = imx_pcm_probe,
135+ .remove = imx_pcm_remove,
136+};
137+module_platform_driver(imx_pcm_driver);
103138
104139 MODULE_DESCRIPTION("Freescale i.MX PCM driver");
105140 MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de>");
sound/soc/fsl/imx-pcm.h+18−0
@@ -30,4 +30,22 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, · 29 unmodified lines
3030 int imx_pcm_new(struct snd_soc_pcm_runtime *rtd);
3131 void imx_pcm_free(struct snd_pcm *pcm);
3232
33+#ifdef CONFIG_SND_SOC_IMX_PCM_DMA
34+int imx_pcm_dma_init(struct platform_device *pdev);
35+#else
36+static inline int imx_pcm_dma_init(struct platform_device *pdev)
37+{
38+ return -ENODEV;
39+}
40+#endif
41+
42+#ifdef CONFIG_SND_SOC_IMX_PCM_FIQ
43+int imx_pcm_fiq_init(struct platform_device *pdev);
44+#else
45+static inline int imx_pcm_fiq_init(struct platform_device *pdev)
46+{
47+ return -ENODEV;
48+}
49+#endif
50+
3351 #endif /* _IMX_PCM_H */