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"
Unified · Split
| @@ -108,13 +108,18 @@ if SND_IMX_SOC · 107 unmodified lines | ||
| 108 | 108 | config SND_SOC_IMX_SSI |
| 109 | 109 | tristate |
| 110 | 110 | |
| 111 | −config SND_SOC_IMX_PCM_FIQ | |
| 111 | +config SND_SOC_IMX_PCM | |
| 112 | 112 | tristate |
| 113 | + | |
| 114 | +config SND_SOC_IMX_PCM_FIQ | |
| 115 | + bool | |
| 113 | 116 | select FIQ |
| 117 | + select SND_SOC_IMX_PCM | |
| 114 | 118 | |
| 115 | 119 | config SND_SOC_IMX_PCM_DMA |
| 116 | − tristate | |
| 120 | + bool | |
| 117 | 121 | select SND_SOC_DMAENGINE_PCM |
| 122 | + select SND_SOC_IMX_PCM | |
| 118 | 123 | |
| 119 | 124 | config SND_SOC_IMX_AUDMUX |
| 120 | 125 | tristate |
| @@ -41,10 +41,7 @@ endif · 40 unmodified lines | ||
| 41 | 41 | obj-$(CONFIG_SND_SOC_IMX_SSI) += snd-soc-imx-ssi.o |
| 42 | 42 | obj-$(CONFIG_SND_SOC_IMX_AUDMUX) += snd-soc-imx-audmux.o |
| 43 | 43 | |
| 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 | |
| 48 | 45 | |
| 49 | 46 | # i.MX Machine Support |
| 50 | 47 | snd-soc-eukrea-tlv320-objs := eukrea-tlv320.o |
| @@ -154,26 +154,7 @@ static struct snd_soc_platform_driver imx_soc_platform_mx2 = { · 153 unmodified lines | ||
| 154 | 154 | .pcm_free = imx_pcm_free, |
| 155 | 155 | }; |
| 156 | 156 | |
| 157 | −static int imx_soc_platform_probe(struct platform_device *pdev) | |
| 157 | +int imx_pcm_dma_init(struct platform_device *pdev) | |
| 158 | 158 | { |
| 159 | 159 | return snd_soc_register_platform(&pdev->dev, &imx_soc_platform_mx2); |
| 160 | 160 | } |
| 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"); | |
| @@ -281,7 +281,7 @@ static struct snd_soc_platform_driver imx_soc_platform_fiq = { · 280 unmodified lines | ||
| 281 | 281 | .pcm_free = imx_pcm_fiq_free, |
| 282 | 282 | }; |
| 283 | 283 | |
| 284 | −static int imx_soc_platform_probe(struct platform_device *pdev) | |
| 284 | +int imx_pcm_fiq_init(struct platform_device *pdev) | |
| 285 | 285 | { |
| 286 | 286 | struct imx_ssi *ssi = platform_get_drvdata(pdev); |
| 287 | 287 | int ret; |
| @@ -314,23 +314,3 @@ failed_register: · 26 unmodified lines | ||
| 314 | 314 | |
| 315 | 315 | return ret; |
| 316 | 316 | } |
| 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"); | |
| @@ -31,6 +31,7 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, · 30 unmodified lines | ||
| 31 | 31 | runtime->dma_bytes); |
| 32 | 32 | return ret; |
| 33 | 33 | } |
| 34 | +EXPORT_SYMBOL_GPL(snd_imx_pcm_mmap); | |
| 34 | 35 | |
| 35 | 36 | static int imx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream) |
| 36 | 37 | { |
| @@ -79,6 +80,7 @@ int imx_pcm_new(struct snd_soc_pcm_runtime *rtd) · 42 unmodified lines | ||
| 79 | 80 | out: |
| 80 | 81 | return ret; |
| 81 | 82 | } |
| 83 | +EXPORT_SYMBOL_GPL(imx_pcm_new); | |
| 82 | 84 | |
| 83 | 85 | void imx_pcm_free(struct snd_pcm *pcm) |
| 84 | 86 | { |
| @@ -100,6 +102,39 @@ void imx_pcm_free(struct snd_pcm *pcm) · 15 unmodified lines | ||
| 100 | 102 | buf->area = NULL; |
| 101 | 103 | } |
| 102 | 104 | } |
| 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); | |
| 103 | 138 | |
| 104 | 139 | MODULE_DESCRIPTION("Freescale i.MX PCM driver"); |
| 105 | 140 | MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de>"); |
| @@ -30,4 +30,22 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, · 29 unmodified lines | ||
| 30 | 30 | int imx_pcm_new(struct snd_soc_pcm_runtime *rtd); |
| 31 | 31 | void imx_pcm_free(struct snd_pcm *pcm); |
| 32 | 32 | |
| 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 | + | |
| 33 | 51 | #endif /* _IMX_PCM_H */ |