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