aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/davinci/davinci-pcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/davinci/davinci-pcm.c')
-rw-r--r--sound/soc/davinci/davinci-pcm.c45
1 files changed, 32 insertions, 13 deletions
diff --git a/sound/soc/davinci/davinci-pcm.c b/sound/soc/davinci/davinci-pcm.c
index a7124116d2e0..9d35b8c1a624 100644
--- a/sound/soc/davinci/davinci-pcm.c
+++ b/sound/soc/davinci/davinci-pcm.c
@@ -653,7 +653,7 @@ static int davinci_pcm_open(struct snd_pcm_substream *substream)
653 struct davinci_pcm_dma_params *pa; 653 struct davinci_pcm_dma_params *pa;
654 struct davinci_pcm_dma_params *params; 654 struct davinci_pcm_dma_params *params;
655 655
656 pa = snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream); 656 pa = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
657 if (!pa) 657 if (!pa)
658 return -ENODEV; 658 return -ENODEV;
659 params = &pa[substream->stream]; 659 params = &pa[substream->stream];
@@ -821,7 +821,7 @@ static int davinci_pcm_new(struct snd_card *card,
821 if (!card->dev->coherent_dma_mask) 821 if (!card->dev->coherent_dma_mask)
822 card->dev->coherent_dma_mask = 0xffffffff; 822 card->dev->coherent_dma_mask = 0xffffffff;
823 823
824 if (dai->playback.channels_min) { 824 if (dai->driver->playback.channels_min) {
825 ret = davinci_pcm_preallocate_dma_buffer(pcm, 825 ret = davinci_pcm_preallocate_dma_buffer(pcm,
826 SNDRV_PCM_STREAM_PLAYBACK, 826 SNDRV_PCM_STREAM_PLAYBACK,
827 pcm_hardware_playback.buffer_bytes_max); 827 pcm_hardware_playback.buffer_bytes_max);
@@ -829,7 +829,7 @@ static int davinci_pcm_new(struct snd_card *card,
829 return ret; 829 return ret;
830 } 830 }
831 831
832 if (dai->capture.channels_min) { 832 if (dai->driver->capture.channels_min) {
833 ret = davinci_pcm_preallocate_dma_buffer(pcm, 833 ret = davinci_pcm_preallocate_dma_buffer(pcm,
834 SNDRV_PCM_STREAM_CAPTURE, 834 SNDRV_PCM_STREAM_CAPTURE,
835 pcm_hardware_capture.buffer_bytes_max); 835 pcm_hardware_capture.buffer_bytes_max);
@@ -840,25 +840,44 @@ static int davinci_pcm_new(struct snd_card *card,
840 return 0; 840 return 0;
841} 841}
842 842
843struct snd_soc_platform davinci_soc_platform = { 843static struct snd_soc_platform_driver davinci_soc_platform = {
844 .name = "davinci-audio", 844 .ops = &davinci_pcm_ops,
845 .pcm_ops = &davinci_pcm_ops,
846 .pcm_new = davinci_pcm_new, 845 .pcm_new = davinci_pcm_new,
847 .pcm_free = davinci_pcm_free, 846 .pcm_free = davinci_pcm_free,
848}; 847};
849EXPORT_SYMBOL_GPL(davinci_soc_platform);
850 848
851static int __init davinci_soc_platform_init(void) 849static int __devinit davinci_soc_platform_probe(struct platform_device *pdev)
852{ 850{
853 return snd_soc_register_platform(&davinci_soc_platform); 851 return snd_soc_register_platform(&pdev->dev, &davinci_soc_platform);
854} 852}
855module_init(davinci_soc_platform_init);
856 853
857static void __exit davinci_soc_platform_exit(void) 854static int __devexit davinci_soc_platform_remove(struct platform_device *pdev)
858{ 855{
859 snd_soc_unregister_platform(&davinci_soc_platform); 856 snd_soc_unregister_platform(&pdev->dev);
857 return 0;
858}
859
860static struct platform_driver davinci_pcm_driver = {
861 .driver = {
862 .name = "davinci-pcm-audio",
863 .owner = THIS_MODULE,
864 },
865
866 .probe = davinci_soc_platform_probe,
867 .remove = __devexit_p(davinci_soc_platform_remove),
868};
869
870static int __init snd_davinci_pcm_init(void)
871{
872 return platform_driver_register(&davinci_pcm_driver);
873}
874module_init(snd_davinci_pcm_init);
875
876static void __exit snd_davinci_pcm_exit(void)
877{
878 platform_driver_unregister(&davinci_pcm_driver);
860} 879}
861module_exit(davinci_soc_platform_exit); 880module_exit(snd_davinci_pcm_exit);
862 881
863MODULE_AUTHOR("Vladimir Barinov"); 882MODULE_AUTHOR("Vladimir Barinov");
864MODULE_DESCRIPTION("TI DAVINCI PCM DMA module"); 883MODULE_DESCRIPTION("TI DAVINCI PCM DMA module");