diff options
Diffstat (limited to 'sound/soc/pxa/pxa2xx-ac97.c')
-rw-r--r-- | sound/soc/pxa/pxa2xx-ac97.c | 45 |
1 files changed, 12 insertions, 33 deletions
diff --git a/sound/soc/pxa/pxa2xx-ac97.c b/sound/soc/pxa/pxa2xx-ac97.c index d314115e3dd7..9c2bafa112ad 100644 --- a/sound/soc/pxa/pxa2xx-ac97.c +++ b/sound/soc/pxa/pxa2xx-ac97.c | |||
@@ -104,24 +104,21 @@ static int pxa2xx_ac97_resume(struct snd_soc_dai *dai) | |||
104 | #define pxa2xx_ac97_resume NULL | 104 | #define pxa2xx_ac97_resume NULL |
105 | #endif | 105 | #endif |
106 | 106 | ||
107 | static int pxa2xx_ac97_probe(struct platform_device *pdev, | 107 | static int pxa2xx_ac97_probe(struct snd_soc_dai *dai) |
108 | struct snd_soc_dai *dai) | ||
109 | { | 108 | { |
110 | return pxa2xx_ac97_hw_probe(to_platform_device(dai->dev)); | 109 | return pxa2xx_ac97_hw_probe(to_platform_device(dai->dev)); |
111 | } | 110 | } |
112 | 111 | ||
113 | static void pxa2xx_ac97_remove(struct platform_device *pdev, | 112 | static int pxa2xx_ac97_remove(struct snd_soc_dai *dai) |
114 | struct snd_soc_dai *dai) | ||
115 | { | 113 | { |
116 | pxa2xx_ac97_hw_remove(to_platform_device(dai->dev)); | 114 | pxa2xx_ac97_hw_remove(to_platform_device(dai->dev)); |
115 | return 0; | ||
117 | } | 116 | } |
118 | 117 | ||
119 | static int pxa2xx_ac97_hw_params(struct snd_pcm_substream *substream, | 118 | static int pxa2xx_ac97_hw_params(struct snd_pcm_substream *substream, |
120 | struct snd_pcm_hw_params *params, | 119 | struct snd_pcm_hw_params *params, |
121 | struct snd_soc_dai *dai) | 120 | struct snd_soc_dai *cpu_dai) |
122 | { | 121 | { |
123 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | ||
124 | struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai; | ||
125 | struct pxa2xx_pcm_dma_params *dma_data; | 122 | struct pxa2xx_pcm_dma_params *dma_data; |
126 | 123 | ||
127 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) | 124 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) |
@@ -136,10 +133,8 @@ static int pxa2xx_ac97_hw_params(struct snd_pcm_substream *substream, | |||
136 | 133 | ||
137 | static int pxa2xx_ac97_hw_aux_params(struct snd_pcm_substream *substream, | 134 | static int pxa2xx_ac97_hw_aux_params(struct snd_pcm_substream *substream, |
138 | struct snd_pcm_hw_params *params, | 135 | struct snd_pcm_hw_params *params, |
139 | struct snd_soc_dai *dai) | 136 | struct snd_soc_dai *cpu_dai) |
140 | { | 137 | { |
141 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | ||
142 | struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai; | ||
143 | struct pxa2xx_pcm_dma_params *dma_data; | 138 | struct pxa2xx_pcm_dma_params *dma_data; |
144 | 139 | ||
145 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) | 140 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) |
@@ -154,11 +149,8 @@ static int pxa2xx_ac97_hw_aux_params(struct snd_pcm_substream *substream, | |||
154 | 149 | ||
155 | static int pxa2xx_ac97_hw_mic_params(struct snd_pcm_substream *substream, | 150 | static int pxa2xx_ac97_hw_mic_params(struct snd_pcm_substream *substream, |
156 | struct snd_pcm_hw_params *params, | 151 | struct snd_pcm_hw_params *params, |
157 | struct snd_soc_dai *dai) | 152 | struct snd_soc_dai *cpu_dai) |
158 | { | 153 | { |
159 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | ||
160 | struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai; | ||
161 | |||
162 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) | 154 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) |
163 | return -ENODEV; | 155 | return -ENODEV; |
164 | else | 156 | else |
@@ -188,10 +180,9 @@ static struct snd_soc_dai_ops pxa_ac97_mic_dai_ops = { | |||
188 | * There is only 1 physical AC97 interface for pxa2xx, but it | 180 | * There is only 1 physical AC97 interface for pxa2xx, but it |
189 | * has extra fifo's that can be used for aux DACs and ADCs. | 181 | * has extra fifo's that can be used for aux DACs and ADCs. |
190 | */ | 182 | */ |
191 | struct snd_soc_dai pxa_ac97_dai[] = { | 183 | static struct snd_soc_dai_driver pxa_ac97_dai[] = { |
192 | { | 184 | { |
193 | .name = "pxa2xx-ac97", | 185 | .name = "pxa2xx-ac97", |
194 | .id = 0, | ||
195 | .ac97_control = 1, | 186 | .ac97_control = 1, |
196 | .probe = pxa2xx_ac97_probe, | 187 | .probe = pxa2xx_ac97_probe, |
197 | .remove = pxa2xx_ac97_remove, | 188 | .remove = pxa2xx_ac97_remove, |
@@ -213,7 +204,6 @@ struct snd_soc_dai pxa_ac97_dai[] = { | |||
213 | }, | 204 | }, |
214 | { | 205 | { |
215 | .name = "pxa2xx-ac97-aux", | 206 | .name = "pxa2xx-ac97-aux", |
216 | .id = 1, | ||
217 | .ac97_control = 1, | 207 | .ac97_control = 1, |
218 | .playback = { | 208 | .playback = { |
219 | .stream_name = "AC97 Aux Playback", | 209 | .stream_name = "AC97 Aux Playback", |
@@ -231,7 +221,6 @@ struct snd_soc_dai pxa_ac97_dai[] = { | |||
231 | }, | 221 | }, |
232 | { | 222 | { |
233 | .name = "pxa2xx-ac97-mic", | 223 | .name = "pxa2xx-ac97-mic", |
234 | .id = 2, | ||
235 | .ac97_control = 1, | 224 | .ac97_control = 1, |
236 | .capture = { | 225 | .capture = { |
237 | .stream_name = "AC97 Mic Capture", | 226 | .stream_name = "AC97 Mic Capture", |
@@ -243,36 +232,26 @@ struct snd_soc_dai pxa_ac97_dai[] = { | |||
243 | }, | 232 | }, |
244 | }; | 233 | }; |
245 | 234 | ||
246 | EXPORT_SYMBOL_GPL(pxa_ac97_dai); | ||
247 | EXPORT_SYMBOL_GPL(soc_ac97_ops); | 235 | EXPORT_SYMBOL_GPL(soc_ac97_ops); |
248 | 236 | ||
249 | static int __devinit pxa2xx_ac97_dev_probe(struct platform_device *pdev) | 237 | static __devinit int pxa2xx_ac97_dev_probe(struct platform_device *pdev) |
250 | { | 238 | { |
251 | int i; | 239 | if (pdev->id != -1) { |
252 | pxa2xx_audio_ops_t *pdata = pdev->dev.platform_data; | ||
253 | |||
254 | if (pdev->id >= 0) { | ||
255 | dev_err(&pdev->dev, "PXA2xx has only one AC97 port.\n"); | 240 | dev_err(&pdev->dev, "PXA2xx has only one AC97 port.\n"); |
256 | return -ENXIO; | 241 | return -ENXIO; |
257 | } | 242 | } |
258 | 243 | ||
259 | for (i = 0; i < ARRAY_SIZE(pxa_ac97_dai); i++) { | ||
260 | pxa_ac97_dai[i].dev = &pdev->dev; | ||
261 | if (pdata && pdata->codec_pdata[0]) | ||
262 | pxa_ac97_dai[i].ac97_pdata = pdata->codec_pdata[0]; | ||
263 | } | ||
264 | |||
265 | /* Punt most of the init to the SoC probe; we may need the machine | 244 | /* Punt most of the init to the SoC probe; we may need the machine |
266 | * driver to do interesting things with the clocking to get us up | 245 | * driver to do interesting things with the clocking to get us up |
267 | * and running. | 246 | * and running. |
268 | */ | 247 | */ |
269 | return snd_soc_register_dais(pxa_ac97_dai, ARRAY_SIZE(pxa_ac97_dai)); | 248 | return snd_soc_register_dais(&pdev->dev, pxa_ac97_dai, |
249 | ARRAY_SIZE(pxa_ac97_dai)); | ||
270 | } | 250 | } |
271 | 251 | ||
272 | static int __devexit pxa2xx_ac97_dev_remove(struct platform_device *pdev) | 252 | static int __devexit pxa2xx_ac97_dev_remove(struct platform_device *pdev) |
273 | { | 253 | { |
274 | snd_soc_unregister_dais(pxa_ac97_dai, ARRAY_SIZE(pxa_ac97_dai)); | 254 | snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(pxa_ac97_dai)); |
275 | |||
276 | return 0; | 255 | return 0; |
277 | } | 256 | } |
278 | 257 | ||