Commit 6bacaa9d authored by Linus Torvalds's avatar Linus Torvalds

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"
parents 2110cf02 6baa4afa
...@@ -108,13 +108,18 @@ if SND_IMX_SOC ...@@ -108,13 +108,18 @@ if SND_IMX_SOC
config SND_SOC_IMX_SSI config SND_SOC_IMX_SSI
tristate tristate
config SND_SOC_IMX_PCM_FIQ config SND_SOC_IMX_PCM
tristate tristate
config SND_SOC_IMX_PCM_FIQ
bool
select FIQ select FIQ
select SND_SOC_IMX_PCM
config SND_SOC_IMX_PCM_DMA config SND_SOC_IMX_PCM_DMA
tristate bool
select SND_SOC_DMAENGINE_PCM select SND_SOC_DMAENGINE_PCM
select SND_SOC_IMX_PCM
config SND_SOC_IMX_AUDMUX config SND_SOC_IMX_AUDMUX
tristate tristate
......
...@@ -41,10 +41,7 @@ endif ...@@ -41,10 +41,7 @@ endif
obj-$(CONFIG_SND_SOC_IMX_SSI) += snd-soc-imx-ssi.o obj-$(CONFIG_SND_SOC_IMX_SSI) += snd-soc-imx-ssi.o
obj-$(CONFIG_SND_SOC_IMX_AUDMUX) += snd-soc-imx-audmux.o obj-$(CONFIG_SND_SOC_IMX_AUDMUX) += snd-soc-imx-audmux.o
obj-$(CONFIG_SND_SOC_IMX_PCM_FIQ) += snd-soc-imx-pcm-fiq.o obj-$(CONFIG_SND_SOC_IMX_PCM) += snd-soc-imx-pcm.o
snd-soc-imx-pcm-fiq-y := imx-pcm-fiq.o imx-pcm.o
obj-$(CONFIG_SND_SOC_IMX_PCM_DMA) += snd-soc-imx-pcm-dma.o
snd-soc-imx-pcm-dma-y := imx-pcm-dma.o imx-pcm.o
# i.MX Machine Support # i.MX Machine Support
snd-soc-eukrea-tlv320-objs := eukrea-tlv320.o snd-soc-eukrea-tlv320-objs := eukrea-tlv320.o
......
...@@ -154,26 +154,7 @@ static struct snd_soc_platform_driver imx_soc_platform_mx2 = { ...@@ -154,26 +154,7 @@ static struct snd_soc_platform_driver imx_soc_platform_mx2 = {
.pcm_free = imx_pcm_free, .pcm_free = imx_pcm_free,
}; };
static int imx_soc_platform_probe(struct platform_device *pdev) int imx_pcm_dma_init(struct platform_device *pdev)
{ {
return snd_soc_register_platform(&pdev->dev, &imx_soc_platform_mx2); return snd_soc_register_platform(&pdev->dev, &imx_soc_platform_mx2);
} }
static int imx_soc_platform_remove(struct platform_device *pdev)
{
snd_soc_unregister_platform(&pdev->dev);
return 0;
}
static struct platform_driver imx_pcm_driver = {
.driver = {
.name = "imx-pcm-audio",
.owner = THIS_MODULE,
},
.probe = imx_soc_platform_probe,
.remove = imx_soc_platform_remove,
};
module_platform_driver(imx_pcm_driver);
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:imx-pcm-audio");
...@@ -281,7 +281,7 @@ static struct snd_soc_platform_driver imx_soc_platform_fiq = { ...@@ -281,7 +281,7 @@ static struct snd_soc_platform_driver imx_soc_platform_fiq = {
.pcm_free = imx_pcm_fiq_free, .pcm_free = imx_pcm_fiq_free,
}; };
static int imx_soc_platform_probe(struct platform_device *pdev) int imx_pcm_fiq_init(struct platform_device *pdev)
{ {
struct imx_ssi *ssi = platform_get_drvdata(pdev); struct imx_ssi *ssi = platform_get_drvdata(pdev);
int ret; int ret;
...@@ -314,23 +314,3 @@ static int imx_soc_platform_probe(struct platform_device *pdev) ...@@ -314,23 +314,3 @@ static int imx_soc_platform_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int imx_soc_platform_remove(struct platform_device *pdev)
{
snd_soc_unregister_platform(&pdev->dev);
return 0;
}
static struct platform_driver imx_pcm_driver = {
.driver = {
.name = "imx-fiq-pcm-audio",
.owner = THIS_MODULE,
},
.probe = imx_soc_platform_probe,
.remove = imx_soc_platform_remove,
};
module_platform_driver(imx_pcm_driver);
MODULE_LICENSE("GPL");
...@@ -31,6 +31,7 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, ...@@ -31,6 +31,7 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream,
runtime->dma_bytes); runtime->dma_bytes);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(snd_imx_pcm_mmap);
static int imx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream) static int imx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream)
{ {
...@@ -79,6 +80,7 @@ int imx_pcm_new(struct snd_soc_pcm_runtime *rtd) ...@@ -79,6 +80,7 @@ int imx_pcm_new(struct snd_soc_pcm_runtime *rtd)
out: out:
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(imx_pcm_new);
void imx_pcm_free(struct snd_pcm *pcm) void imx_pcm_free(struct snd_pcm *pcm)
{ {
...@@ -100,6 +102,39 @@ void imx_pcm_free(struct snd_pcm *pcm) ...@@ -100,6 +102,39 @@ void imx_pcm_free(struct snd_pcm *pcm)
buf->area = NULL; buf->area = NULL;
} }
} }
EXPORT_SYMBOL_GPL(imx_pcm_free);
static int imx_pcm_probe(struct platform_device *pdev)
{
if (strcmp(pdev->id_entry->name, "imx-fiq-pcm-audio") == 0)
return imx_pcm_fiq_init(pdev);
return imx_pcm_dma_init(pdev);
}
static int imx_pcm_remove(struct platform_device *pdev)
{
snd_soc_unregister_platform(&pdev->dev);
return 0;
}
static struct platform_device_id imx_pcm_devtype[] = {
{ .name = "imx-pcm-audio", },
{ .name = "imx-fiq-pcm-audio", },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(platform, imx_pcm_devtype);
static struct platform_driver imx_pcm_driver = {
.driver = {
.name = "imx-pcm",
.owner = THIS_MODULE,
},
.id_table = imx_pcm_devtype,
.probe = imx_pcm_probe,
.remove = imx_pcm_remove,
};
module_platform_driver(imx_pcm_driver);
MODULE_DESCRIPTION("Freescale i.MX PCM driver"); MODULE_DESCRIPTION("Freescale i.MX PCM driver");
MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de>"); MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de>");
......
...@@ -30,4 +30,22 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, ...@@ -30,4 +30,22 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream,
int imx_pcm_new(struct snd_soc_pcm_runtime *rtd); int imx_pcm_new(struct snd_soc_pcm_runtime *rtd);
void imx_pcm_free(struct snd_pcm *pcm); void imx_pcm_free(struct snd_pcm *pcm);
#ifdef CONFIG_SND_SOC_IMX_PCM_DMA
int imx_pcm_dma_init(struct platform_device *pdev);
#else
static inline int imx_pcm_dma_init(struct platform_device *pdev)
{
return -ENODEV;
}
#endif
#ifdef CONFIG_SND_SOC_IMX_PCM_FIQ
int imx_pcm_fiq_init(struct platform_device *pdev);
#else
static inline int imx_pcm_fiq_init(struct platform_device *pdev)
{
return -ENODEV;
}
#endif
#endif /* _IMX_PCM_H */ #endif /* _IMX_PCM_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment