diff options
Diffstat (limited to 'sound/soc/atmel/atmel-pcm.c')
-rw-r--r-- | sound/soc/atmel/atmel-pcm.c | 59 |
1 files changed, 36 insertions, 23 deletions
diff --git a/sound/soc/atmel/atmel-pcm.c b/sound/soc/atmel/atmel-pcm.c index dc5249fba85c..d0e75323ec19 100644 --- a/sound/soc/atmel/atmel-pcm.c +++ b/sound/soc/atmel/atmel-pcm.c | |||
@@ -179,7 +179,7 @@ static int atmel_pcm_hw_params(struct snd_pcm_substream *substream, | |||
179 | snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer); | 179 | snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer); |
180 | runtime->dma_bytes = params_buffer_bytes(params); | 180 | runtime->dma_bytes = params_buffer_bytes(params); |
181 | 181 | ||
182 | prtd->params = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream); | 182 | prtd->params = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream); |
183 | prtd->params->dma_intr_handler = atmel_pcm_dma_irq; | 183 | prtd->params->dma_intr_handler = atmel_pcm_dma_irq; |
184 | 184 | ||
185 | prtd->dma_buffer = runtime->dma_addr; | 185 | prtd->dma_buffer = runtime->dma_addr; |
@@ -374,14 +374,14 @@ static int atmel_pcm_new(struct snd_card *card, | |||
374 | if (!card->dev->coherent_dma_mask) | 374 | if (!card->dev->coherent_dma_mask) |
375 | card->dev->coherent_dma_mask = 0xffffffff; | 375 | card->dev->coherent_dma_mask = 0xffffffff; |
376 | 376 | ||
377 | if (dai->playback.channels_min) { | 377 | if (dai->driver->playback.channels_min) { |
378 | ret = atmel_pcm_preallocate_dma_buffer(pcm, | 378 | ret = atmel_pcm_preallocate_dma_buffer(pcm, |
379 | SNDRV_PCM_STREAM_PLAYBACK); | 379 | SNDRV_PCM_STREAM_PLAYBACK); |
380 | if (ret) | 380 | if (ret) |
381 | goto out; | 381 | goto out; |
382 | } | 382 | } |
383 | 383 | ||
384 | if (dai->capture.channels_min) { | 384 | if (dai->driver->capture.channels_min) { |
385 | pr_debug("at32-pcm:" | 385 | pr_debug("at32-pcm:" |
386 | "Allocating PCM capture DMA buffer\n"); | 386 | "Allocating PCM capture DMA buffer\n"); |
387 | ret = atmel_pcm_preallocate_dma_buffer(pcm, | 387 | ret = atmel_pcm_preallocate_dma_buffer(pcm, |
@@ -414,12 +414,9 @@ static void atmel_pcm_free_dma_buffers(struct snd_pcm *pcm) | |||
414 | } | 414 | } |
415 | 415 | ||
416 | #ifdef CONFIG_PM | 416 | #ifdef CONFIG_PM |
417 | static int atmel_pcm_suspend(struct snd_soc_dai_link *dai_link) | 417 | static int atmel_pcm_suspend(struct snd_soc_dai *dai) |
418 | { | 418 | { |
419 | struct snd_pcm *pcm = dai_link->pcm; | 419 | struct snd_pcm_runtime *runtime = dai->runtime; |
420 | struct snd_pcm_str *stream = &pcm->streams[0]; | ||
421 | struct snd_pcm_substream *substream = stream->substream; | ||
422 | struct snd_pcm_runtime *runtime = substream->runtime; | ||
423 | struct atmel_runtime_data *prtd; | 420 | struct atmel_runtime_data *prtd; |
424 | struct atmel_pcm_dma_params *params; | 421 | struct atmel_pcm_dma_params *params; |
425 | 422 | ||
@@ -441,12 +438,9 @@ static int atmel_pcm_suspend(struct snd_soc_dai_link *dai_link) | |||
441 | return 0; | 438 | return 0; |
442 | } | 439 | } |
443 | 440 | ||
444 | static int atmel_pcm_resume(struct snd_soc_dai_link *dai_link) | 441 | static int atmel_pcm_resume(struct snd_soc_dai *dai) |
445 | { | 442 | { |
446 | struct snd_pcm *pcm = dai_link->pcm; | 443 | struct snd_pcm_runtime *runtime = dai->runtime; |
447 | struct snd_pcm_str *stream = &pcm->streams[0]; | ||
448 | struct snd_pcm_substream *substream = stream->substream; | ||
449 | struct snd_pcm_runtime *runtime = substream->runtime; | ||
450 | struct atmel_runtime_data *prtd; | 444 | struct atmel_runtime_data *prtd; |
451 | struct atmel_pcm_dma_params *params; | 445 | struct atmel_pcm_dma_params *params; |
452 | 446 | ||
@@ -470,27 +464,46 @@ static int atmel_pcm_resume(struct snd_soc_dai_link *dai_link) | |||
470 | #define atmel_pcm_resume NULL | 464 | #define atmel_pcm_resume NULL |
471 | #endif | 465 | #endif |
472 | 466 | ||
473 | struct snd_soc_platform atmel_soc_platform = { | 467 | static struct snd_soc_platform_driver atmel_soc_platform = { |
474 | .name = "atmel-audio", | 468 | .ops = &atmel_pcm_ops, |
475 | .pcm_ops = &atmel_pcm_ops, | ||
476 | .pcm_new = atmel_pcm_new, | 469 | .pcm_new = atmel_pcm_new, |
477 | .pcm_free = atmel_pcm_free_dma_buffers, | 470 | .pcm_free = atmel_pcm_free_dma_buffers, |
478 | .suspend = atmel_pcm_suspend, | 471 | .suspend = atmel_pcm_suspend, |
479 | .resume = atmel_pcm_resume, | 472 | .resume = atmel_pcm_resume, |
480 | }; | 473 | }; |
481 | EXPORT_SYMBOL_GPL(atmel_soc_platform); | ||
482 | 474 | ||
483 | static int __init atmel_pcm_modinit(void) | 475 | static int __devinit atmel_soc_platform_probe(struct platform_device *pdev) |
476 | { | ||
477 | return snd_soc_register_platform(&pdev->dev, &atmel_soc_platform); | ||
478 | } | ||
479 | |||
480 | static int __devexit atmel_soc_platform_remove(struct platform_device *pdev) | ||
481 | { | ||
482 | snd_soc_unregister_platform(&pdev->dev); | ||
483 | return 0; | ||
484 | } | ||
485 | |||
486 | static struct platform_driver atmel_pcm_driver = { | ||
487 | .driver = { | ||
488 | .name = "atmel-pcm-audio", | ||
489 | .owner = THIS_MODULE, | ||
490 | }, | ||
491 | |||
492 | .probe = atmel_soc_platform_probe, | ||
493 | .remove = __devexit_p(atmel_soc_platform_remove), | ||
494 | }; | ||
495 | |||
496 | static int __init snd_atmel_pcm_init(void) | ||
484 | { | 497 | { |
485 | return snd_soc_register_platform(&atmel_soc_platform); | 498 | return platform_driver_register(&atmel_pcm_driver); |
486 | } | 499 | } |
487 | module_init(atmel_pcm_modinit); | 500 | module_init(snd_atmel_pcm_init); |
488 | 501 | ||
489 | static void __exit atmel_pcm_modexit(void) | 502 | static void __exit snd_atmel_pcm_exit(void) |
490 | { | 503 | { |
491 | snd_soc_unregister_platform(&atmel_soc_platform); | 504 | platform_driver_unregister(&atmel_pcm_driver); |
492 | } | 505 | } |
493 | module_exit(atmel_pcm_modexit); | 506 | module_exit(snd_atmel_pcm_exit); |
494 | 507 | ||
495 | MODULE_AUTHOR("Sedji Gaouaou <sedji.gaouaou@atmel.com>"); | 508 | MODULE_AUTHOR("Sedji Gaouaou <sedji.gaouaou@atmel.com>"); |
496 | MODULE_DESCRIPTION("Atmel PCM module"); | 509 | MODULE_DESCRIPTION("Atmel PCM module"); |