diff options
-rw-r--r-- | sound/soc/davinci/davinci-mcasp.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c index 4f75cac462d1..b4c5cf58b030 100644 --- a/sound/soc/davinci/davinci-mcasp.c +++ b/sound/soc/davinci/davinci-mcasp.c | |||
@@ -716,22 +716,7 @@ static int davinci_mcasp_trigger(struct snd_pcm_substream *substream, | |||
716 | return ret; | 716 | return ret; |
717 | } | 717 | } |
718 | 718 | ||
719 | static int davinci_mcasp_startup(struct snd_pcm_substream *substream, | ||
720 | struct snd_soc_dai *dai) | ||
721 | { | ||
722 | struct davinci_mcasp *mcasp = snd_soc_dai_get_drvdata(dai); | ||
723 | |||
724 | if (mcasp->version == MCASP_VERSION_4) | ||
725 | snd_soc_dai_set_dma_data(dai, substream, | ||
726 | &mcasp->dma_data[substream->stream]); | ||
727 | else | ||
728 | snd_soc_dai_set_dma_data(dai, substream, mcasp->dma_params); | ||
729 | |||
730 | return 0; | ||
731 | } | ||
732 | |||
733 | static const struct snd_soc_dai_ops davinci_mcasp_dai_ops = { | 719 | static const struct snd_soc_dai_ops davinci_mcasp_dai_ops = { |
734 | .startup = davinci_mcasp_startup, | ||
735 | .trigger = davinci_mcasp_trigger, | 720 | .trigger = davinci_mcasp_trigger, |
736 | .hw_params = davinci_mcasp_hw_params, | 721 | .hw_params = davinci_mcasp_hw_params, |
737 | .set_fmt = davinci_mcasp_set_dai_fmt, | 722 | .set_fmt = davinci_mcasp_set_dai_fmt, |
@@ -739,6 +724,25 @@ static const struct snd_soc_dai_ops davinci_mcasp_dai_ops = { | |||
739 | .set_sysclk = davinci_mcasp_set_sysclk, | 724 | .set_sysclk = davinci_mcasp_set_sysclk, |
740 | }; | 725 | }; |
741 | 726 | ||
727 | static int davinci_mcasp_dai_probe(struct snd_soc_dai *dai) | ||
728 | { | ||
729 | struct davinci_mcasp *mcasp = snd_soc_dai_get_drvdata(dai); | ||
730 | |||
731 | if (mcasp->version == MCASP_VERSION_4) { | ||
732 | /* Using dmaengine PCM */ | ||
733 | dai->playback_dma_data = | ||
734 | &mcasp->dma_data[SNDRV_PCM_STREAM_PLAYBACK]; | ||
735 | dai->capture_dma_data = | ||
736 | &mcasp->dma_data[SNDRV_PCM_STREAM_CAPTURE]; | ||
737 | } else { | ||
738 | /* Using davinci-pcm */ | ||
739 | dai->playback_dma_data = mcasp->dma_params; | ||
740 | dai->capture_dma_data = mcasp->dma_params; | ||
741 | } | ||
742 | |||
743 | return 0; | ||
744 | } | ||
745 | |||
742 | #ifdef CONFIG_PM_SLEEP | 746 | #ifdef CONFIG_PM_SLEEP |
743 | static int davinci_mcasp_suspend(struct snd_soc_dai *dai) | 747 | static int davinci_mcasp_suspend(struct snd_soc_dai *dai) |
744 | { | 748 | { |
@@ -792,6 +796,7 @@ static int davinci_mcasp_resume(struct snd_soc_dai *dai) | |||
792 | static struct snd_soc_dai_driver davinci_mcasp_dai[] = { | 796 | static struct snd_soc_dai_driver davinci_mcasp_dai[] = { |
793 | { | 797 | { |
794 | .name = "davinci-mcasp.0", | 798 | .name = "davinci-mcasp.0", |
799 | .probe = davinci_mcasp_dai_probe, | ||
795 | .suspend = davinci_mcasp_suspend, | 800 | .suspend = davinci_mcasp_suspend, |
796 | .resume = davinci_mcasp_resume, | 801 | .resume = davinci_mcasp_resume, |
797 | .playback = { | 802 | .playback = { |
@@ -811,6 +816,7 @@ static struct snd_soc_dai_driver davinci_mcasp_dai[] = { | |||
811 | }, | 816 | }, |
812 | { | 817 | { |
813 | .name = "davinci-mcasp.1", | 818 | .name = "davinci-mcasp.1", |
819 | .probe = davinci_mcasp_dai_probe, | ||
814 | .playback = { | 820 | .playback = { |
815 | .channels_min = 1, | 821 | .channels_min = 1, |
816 | .channels_max = 384, | 822 | .channels_max = 384, |