aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/pxa/pxa2xx-pcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/pxa/pxa2xx-pcm.c')
-rw-r--r--sound/soc/pxa/pxa2xx-pcm.c46
1 files changed, 32 insertions, 14 deletions
diff --git a/sound/soc/pxa/pxa2xx-pcm.c b/sound/soc/pxa/pxa2xx-pcm.c
index adc7e6f15f93..02fb66416ddc 100644
--- a/sound/soc/pxa/pxa2xx-pcm.c
+++ b/sound/soc/pxa/pxa2xx-pcm.c
@@ -16,7 +16,6 @@
16#include <sound/soc.h> 16#include <sound/soc.h>
17#include <sound/pxa2xx-lib.h> 17#include <sound/pxa2xx-lib.h>
18 18
19#include "pxa2xx-pcm.h"
20#include "../../arm/pxa2xx-pcm.h" 19#include "../../arm/pxa2xx-pcm.h"
21 20
22static int pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream, 21static int pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream,
@@ -28,7 +27,7 @@ static int pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream,
28 struct pxa2xx_pcm_dma_params *dma; 27 struct pxa2xx_pcm_dma_params *dma;
29 int ret; 28 int ret;
30 29
31 dma = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream); 30 dma = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
32 31
33 /* return if this is a bufferless transfer e.g. 32 /* return if this is a bufferless transfer e.g.
34 * codec <--> BT codec or GSM modem -- lg FIXME */ 33 * codec <--> BT codec or GSM modem -- lg FIXME */
@@ -95,14 +94,14 @@ static int pxa2xx_soc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
95 if (!card->dev->coherent_dma_mask) 94 if (!card->dev->coherent_dma_mask)
96 card->dev->coherent_dma_mask = DMA_BIT_MASK(32); 95 card->dev->coherent_dma_mask = DMA_BIT_MASK(32);
97 96
98 if (dai->playback.channels_min) { 97 if (dai->driver->playback.channels_min) {
99 ret = pxa2xx_pcm_preallocate_dma_buffer(pcm, 98 ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
100 SNDRV_PCM_STREAM_PLAYBACK); 99 SNDRV_PCM_STREAM_PLAYBACK);
101 if (ret) 100 if (ret)
102 goto out; 101 goto out;
103 } 102 }
104 103
105 if (dai->capture.channels_min) { 104 if (dai->driver->capture.channels_min) {
106 ret = pxa2xx_pcm_preallocate_dma_buffer(pcm, 105 ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
107 SNDRV_PCM_STREAM_CAPTURE); 106 SNDRV_PCM_STREAM_CAPTURE);
108 if (ret) 107 if (ret)
@@ -112,25 +111,44 @@ static int pxa2xx_soc_pcm_new(struct snd_card *card, struct snd_soc_dai *dai,
112 return ret; 111 return ret;
113} 112}
114 113
115struct snd_soc_platform pxa2xx_soc_platform = { 114static struct snd_soc_platform_driver pxa2xx_soc_platform = {
116 .name = "pxa2xx-audio", 115 .ops = &pxa2xx_pcm_ops,
117 .pcm_ops = &pxa2xx_pcm_ops,
118 .pcm_new = pxa2xx_soc_pcm_new, 116 .pcm_new = pxa2xx_soc_pcm_new,
119 .pcm_free = pxa2xx_pcm_free_dma_buffers, 117 .pcm_free = pxa2xx_pcm_free_dma_buffers,
120}; 118};
121EXPORT_SYMBOL_GPL(pxa2xx_soc_platform);
122 119
123static int __init pxa2xx_soc_platform_init(void) 120static int __devinit pxa2xx_soc_platform_probe(struct platform_device *pdev)
124{ 121{
125 return snd_soc_register_platform(&pxa2xx_soc_platform); 122 return snd_soc_register_platform(&pdev->dev, &pxa2xx_soc_platform);
126} 123}
127module_init(pxa2xx_soc_platform_init);
128 124
129static void __exit pxa2xx_soc_platform_exit(void) 125static int __devexit pxa2xx_soc_platform_remove(struct platform_device *pdev)
130{ 126{
131 snd_soc_unregister_platform(&pxa2xx_soc_platform); 127 snd_soc_unregister_platform(&pdev->dev);
128 return 0;
129}
130
131static struct platform_driver pxa_pcm_driver = {
132 .driver = {
133 .name = "pxa-pcm-audio",
134 .owner = THIS_MODULE,
135 },
136
137 .probe = pxa2xx_soc_platform_probe,
138 .remove = __devexit_p(pxa2xx_soc_platform_remove),
139};
140
141static int __init snd_pxa_pcm_init(void)
142{
143 return platform_driver_register(&pxa_pcm_driver);
144}
145module_init(snd_pxa_pcm_init);
146
147static void __exit snd_pxa_pcm_exit(void)
148{
149 platform_driver_unregister(&pxa_pcm_driver);
132} 150}
133module_exit(pxa2xx_soc_platform_exit); 151module_exit(snd_pxa_pcm_exit);
134 152
135MODULE_AUTHOR("Nicolas Pitre"); 153MODULE_AUTHOR("Nicolas Pitre");
136MODULE_DESCRIPTION("Intel PXA2xx PCM DMA module"); 154MODULE_DESCRIPTION("Intel PXA2xx PCM DMA module");