Skip to content

Commit 6bacaa9

Browse files
committed
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"
2 parents 2110cf0 + 6baa4af commit 6bacaa9

File tree

6 files changed

+63
-47
lines changed

6 files changed

+63
-47
lines changed

sound/soc/fsl/Kconfig

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,18 @@ if SND_IMX_SOC
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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,7 @@ endif
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

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -154,26 +154,7 @@ static struct snd_soc_platform_driver imx_soc_platform_mx2 = {
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

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ static struct snd_soc_platform_driver imx_soc_platform_fiq = {
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 @@ static int imx_soc_platform_probe(struct platform_device *pdev)
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

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream,
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)
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)
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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,22 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream,
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 */

0 commit comments

Comments
 (0)