aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/soc/davinci/davinci-mcasp.c36
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
719static 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
733static const struct snd_soc_dai_ops davinci_mcasp_dai_ops = { 719static 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
727static 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
743static int davinci_mcasp_suspend(struct snd_soc_dai *dai) 747static 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)
792static struct snd_soc_dai_driver davinci_mcasp_dai[] = { 796static 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,