diff options
Diffstat (limited to 'sound/soc/omap/omap-pcm.c')
-rw-r--r-- | sound/soc/omap/omap-pcm.c | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c index 1e521904ea64..8caeb8d305c3 100644 --- a/sound/soc/omap/omap-pcm.c +++ b/sound/soc/omap/omap-pcm.c | |||
@@ -101,9 +101,10 @@ static int omap_pcm_hw_params(struct snd_pcm_substream *substream, | |||
101 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 101 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
102 | struct omap_runtime_data *prtd = runtime->private_data; | 102 | struct omap_runtime_data *prtd = runtime->private_data; |
103 | struct omap_pcm_dma_data *dma_data; | 103 | struct omap_pcm_dma_data *dma_data; |
104 | |||
104 | int err = 0; | 105 | int err = 0; |
105 | 106 | ||
106 | dma_data = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream); | 107 | dma_data = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream); |
107 | 108 | ||
108 | /* return if this is a bufferless transfer e.g. | 109 | /* return if this is a bufferless transfer e.g. |
109 | * codec <--> BT codec or GSM modem -- lg FIXME */ | 110 | * codec <--> BT codec or GSM modem -- lg FIXME */ |
@@ -374,14 +375,14 @@ static int omap_pcm_new(struct snd_card *card, struct snd_soc_dai *dai, | |||
374 | if (!card->dev->coherent_dma_mask) | 375 | if (!card->dev->coherent_dma_mask) |
375 | card->dev->coherent_dma_mask = DMA_BIT_MASK(64); | 376 | card->dev->coherent_dma_mask = DMA_BIT_MASK(64); |
376 | 377 | ||
377 | if (dai->playback.channels_min) { | 378 | if (dai->driver->playback.channels_min) { |
378 | ret = omap_pcm_preallocate_dma_buffer(pcm, | 379 | ret = omap_pcm_preallocate_dma_buffer(pcm, |
379 | SNDRV_PCM_STREAM_PLAYBACK); | 380 | SNDRV_PCM_STREAM_PLAYBACK); |
380 | if (ret) | 381 | if (ret) |
381 | goto out; | 382 | goto out; |
382 | } | 383 | } |
383 | 384 | ||
384 | if (dai->capture.channels_min) { | 385 | if (dai->driver->capture.channels_min) { |
385 | ret = omap_pcm_preallocate_dma_buffer(pcm, | 386 | ret = omap_pcm_preallocate_dma_buffer(pcm, |
386 | SNDRV_PCM_STREAM_CAPTURE); | 387 | SNDRV_PCM_STREAM_CAPTURE); |
387 | if (ret) | 388 | if (ret) |
@@ -392,25 +393,45 @@ out: | |||
392 | return ret; | 393 | return ret; |
393 | } | 394 | } |
394 | 395 | ||
395 | struct snd_soc_platform omap_soc_platform = { | 396 | static struct snd_soc_platform_driver omap_soc_platform = { |
396 | .name = "omap-pcm-audio", | 397 | .ops = &omap_pcm_ops, |
397 | .pcm_ops = &omap_pcm_ops, | ||
398 | .pcm_new = omap_pcm_new, | 398 | .pcm_new = omap_pcm_new, |
399 | .pcm_free = omap_pcm_free_dma_buffers, | 399 | .pcm_free = omap_pcm_free_dma_buffers, |
400 | }; | 400 | }; |
401 | EXPORT_SYMBOL_GPL(omap_soc_platform); | ||
402 | 401 | ||
403 | static int __init omap_soc_platform_init(void) | 402 | static __devinit int omap_pcm_probe(struct platform_device *pdev) |
403 | { | ||
404 | return snd_soc_register_platform(&pdev->dev, | ||
405 | &omap_soc_platform); | ||
406 | } | ||
407 | |||
408 | static int __devexit omap_pcm_remove(struct platform_device *pdev) | ||
409 | { | ||
410 | snd_soc_unregister_platform(&pdev->dev); | ||
411 | return 0; | ||
412 | } | ||
413 | |||
414 | static struct platform_driver omap_pcm_driver = { | ||
415 | .driver = { | ||
416 | .name = "omap-pcm-audio", | ||
417 | .owner = THIS_MODULE, | ||
418 | }, | ||
419 | |||
420 | .probe = omap_pcm_probe, | ||
421 | .remove = __devexit_p(omap_pcm_remove), | ||
422 | }; | ||
423 | |||
424 | static int __init snd_omap_pcm_init(void) | ||
404 | { | 425 | { |
405 | return snd_soc_register_platform(&omap_soc_platform); | 426 | return platform_driver_register(&omap_pcm_driver); |
406 | } | 427 | } |
407 | module_init(omap_soc_platform_init); | 428 | module_init(snd_omap_pcm_init); |
408 | 429 | ||
409 | static void __exit omap_soc_platform_exit(void) | 430 | static void __exit snd_omap_pcm_exit(void) |
410 | { | 431 | { |
411 | snd_soc_unregister_platform(&omap_soc_platform); | 432 | platform_driver_unregister(&omap_pcm_driver); |
412 | } | 433 | } |
413 | module_exit(omap_soc_platform_exit); | 434 | module_exit(snd_omap_pcm_exit); |
414 | 435 | ||
415 | MODULE_AUTHOR("Jarkko Nikula <jhnikula@gmail.com>"); | 436 | MODULE_AUTHOR("Jarkko Nikula <jhnikula@gmail.com>"); |
416 | MODULE_DESCRIPTION("OMAP PCM DMA module"); | 437 | MODULE_DESCRIPTION("OMAP PCM DMA module"); |