diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/fsl/Kconfig | 9 | ||||
-rw-r--r-- | sound/soc/fsl/Makefile | 5 | ||||
-rw-r--r-- | sound/soc/fsl/imx-pcm-dma.c | 21 | ||||
-rw-r--r-- | sound/soc/fsl/imx-pcm-fiq.c | 22 | ||||
-rw-r--r-- | sound/soc/fsl/imx-pcm.c | 35 | ||||
-rw-r--r-- | sound/soc/fsl/imx-pcm.h | 18 |
6 files changed, 63 insertions, 47 deletions
diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig index a210c8d7b4bc..3b98159d9645 100644 --- a/sound/soc/fsl/Kconfig +++ b/sound/soc/fsl/Kconfig | |||
@@ -108,13 +108,18 @@ if SND_IMX_SOC | |||
108 | config SND_SOC_IMX_SSI | 108 | config SND_SOC_IMX_SSI |
109 | tristate | 109 | tristate |
110 | 110 | ||
111 | config SND_SOC_IMX_PCM_FIQ | 111 | config SND_SOC_IMX_PCM |
112 | tristate | 112 | tristate |
113 | |||
114 | config SND_SOC_IMX_PCM_FIQ | ||
115 | bool | ||
113 | select FIQ | 116 | select FIQ |
117 | select SND_SOC_IMX_PCM | ||
114 | 118 | ||
115 | config SND_SOC_IMX_PCM_DMA | 119 | config SND_SOC_IMX_PCM_DMA |
116 | tristate | 120 | bool |
117 | select SND_SOC_DMAENGINE_PCM | 121 | select SND_SOC_DMAENGINE_PCM |
122 | select SND_SOC_IMX_PCM | ||
118 | 123 | ||
119 | config SND_SOC_IMX_AUDMUX | 124 | config SND_SOC_IMX_AUDMUX |
120 | tristate | 125 | tristate |
diff --git a/sound/soc/fsl/Makefile b/sound/soc/fsl/Makefile index ec1457915d7c..afd34794db53 100644 --- a/sound/soc/fsl/Makefile +++ b/sound/soc/fsl/Makefile | |||
@@ -41,10 +41,7 @@ endif | |||
41 | obj-$(CONFIG_SND_SOC_IMX_SSI) += snd-soc-imx-ssi.o | 41 | obj-$(CONFIG_SND_SOC_IMX_SSI) += snd-soc-imx-ssi.o |
42 | obj-$(CONFIG_SND_SOC_IMX_AUDMUX) += snd-soc-imx-audmux.o | 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 | 44 | obj-$(CONFIG_SND_SOC_IMX_PCM) += snd-soc-imx-pcm.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 | ||
48 | 45 | ||
49 | # i.MX Machine Support | 46 | # i.MX Machine Support |
50 | snd-soc-eukrea-tlv320-objs := eukrea-tlv320.o | 47 | snd-soc-eukrea-tlv320-objs := eukrea-tlv320.o |
diff --git a/sound/soc/fsl/imx-pcm-dma.c b/sound/soc/fsl/imx-pcm-dma.c index bf363d8d044a..500f8ce55d78 100644 --- a/sound/soc/fsl/imx-pcm-dma.c +++ b/sound/soc/fsl/imx-pcm-dma.c | |||
@@ -154,26 +154,7 @@ static struct snd_soc_platform_driver imx_soc_platform_mx2 = { | |||
154 | .pcm_free = imx_pcm_free, | 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 | return snd_soc_register_platform(&pdev->dev, &imx_soc_platform_mx2); | 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"); | ||
diff --git a/sound/soc/fsl/imx-pcm-fiq.c b/sound/soc/fsl/imx-pcm-fiq.c index 5ec362ae4d01..920f945cb2f4 100644 --- a/sound/soc/fsl/imx-pcm-fiq.c +++ b/sound/soc/fsl/imx-pcm-fiq.c | |||
@@ -281,7 +281,7 @@ static struct snd_soc_platform_driver imx_soc_platform_fiq = { | |||
281 | .pcm_free = imx_pcm_fiq_free, | 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 | struct imx_ssi *ssi = platform_get_drvdata(pdev); | 286 | struct imx_ssi *ssi = platform_get_drvdata(pdev); |
287 | int ret; | 287 | int ret; |
@@ -314,23 +314,3 @@ failed_register: | |||
314 | 314 | ||
315 | return ret; | 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"); | ||
diff --git a/sound/soc/fsl/imx-pcm.c b/sound/soc/fsl/imx-pcm.c index 0c9f188ddc68..0d0625bfcb65 100644 --- a/sound/soc/fsl/imx-pcm.c +++ b/sound/soc/fsl/imx-pcm.c | |||
@@ -31,6 +31,7 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, | |||
31 | runtime->dma_bytes); | 31 | runtime->dma_bytes); |
32 | return ret; | 32 | return ret; |
33 | } | 33 | } |
34 | EXPORT_SYMBOL_GPL(snd_imx_pcm_mmap); | ||
34 | 35 | ||
35 | static int imx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream) | 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) | |||
79 | out: | 80 | out: |
80 | return ret; | 81 | return ret; |
81 | } | 82 | } |
83 | EXPORT_SYMBOL_GPL(imx_pcm_new); | ||
82 | 84 | ||
83 | void imx_pcm_free(struct snd_pcm *pcm) | 85 | void imx_pcm_free(struct snd_pcm *pcm) |
84 | { | 86 | { |
@@ -100,6 +102,39 @@ void imx_pcm_free(struct snd_pcm *pcm) | |||
100 | buf->area = NULL; | 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 | MODULE_DESCRIPTION("Freescale i.MX PCM driver"); | 139 | MODULE_DESCRIPTION("Freescale i.MX PCM driver"); |
105 | MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de>"); | 140 | MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de>"); |
diff --git a/sound/soc/fsl/imx-pcm.h b/sound/soc/fsl/imx-pcm.h index 83c0ed7d55c9..5ae13a13a353 100644 --- a/sound/soc/fsl/imx-pcm.h +++ b/sound/soc/fsl/imx-pcm.h | |||
@@ -30,4 +30,22 @@ int snd_imx_pcm_mmap(struct snd_pcm_substream *substream, | |||
30 | int imx_pcm_new(struct snd_soc_pcm_runtime *rtd); | 30 | int imx_pcm_new(struct snd_soc_pcm_runtime *rtd); |
31 | void imx_pcm_free(struct snd_pcm *pcm); | 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 | #endif /* _IMX_PCM_H */ | 51 | #endif /* _IMX_PCM_H */ |