aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/davinci/davinci-mcasp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/davinci/davinci-mcasp.c')
-rw-r--r--sound/soc/davinci/davinci-mcasp.c32
1 files changed, 13 insertions, 19 deletions
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
index b24720894af6..c8e97dcbfff4 100644
--- a/sound/soc/davinci/davinci-mcasp.c
+++ b/sound/soc/davinci/davinci-mcasp.c
@@ -422,7 +422,7 @@ static void davinci_mcasp_stop(struct davinci_audio_dev *dev, int stream)
422static int davinci_mcasp_set_dai_fmt(struct snd_soc_dai *cpu_dai, 422static int davinci_mcasp_set_dai_fmt(struct snd_soc_dai *cpu_dai,
423 unsigned int fmt) 423 unsigned int fmt)
424{ 424{
425 struct davinci_audio_dev *dev = cpu_dai->private_data; 425 struct davinci_audio_dev *dev = snd_soc_dai_get_drvdata(cpu_dai);
426 void __iomem *base = dev->base; 426 void __iomem *base = dev->base;
427 427
428 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { 428 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
@@ -709,12 +709,15 @@ static int davinci_mcasp_hw_params(struct snd_pcm_substream *substream,
709 struct snd_pcm_hw_params *params, 709 struct snd_pcm_hw_params *params,
710 struct snd_soc_dai *cpu_dai) 710 struct snd_soc_dai *cpu_dai)
711{ 711{
712 struct davinci_audio_dev *dev = cpu_dai->private_data; 712 struct davinci_audio_dev *dev = snd_soc_dai_get_drvdata(cpu_dai);
713 struct davinci_pcm_dma_params *dma_params = 713 struct davinci_pcm_dma_params *dma_params =
714 &dev->dma_params[substream->stream]; 714 &dev->dma_params[substream->stream];
715 int word_length; 715 int word_length;
716 u8 fifo_level; 716 u8 fifo_level;
717 717
718 cpu_dai->capture_dma_data = dev->dma_params;
719 cpu_dai->playback_dma_data = dev->dma_params;
720
718 davinci_hw_common_param(dev, substream->stream); 721 davinci_hw_common_param(dev, substream->stream);
719 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) 722 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
720 fifo_level = dev->txnumevt; 723 fifo_level = dev->txnumevt;
@@ -761,8 +764,7 @@ static int davinci_mcasp_hw_params(struct snd_pcm_substream *substream,
761static int davinci_mcasp_trigger(struct snd_pcm_substream *substream, 764static int davinci_mcasp_trigger(struct snd_pcm_substream *substream,
762 int cmd, struct snd_soc_dai *cpu_dai) 765 int cmd, struct snd_soc_dai *cpu_dai)
763{ 766{
764 struct snd_soc_pcm_runtime *rtd = substream->private_data; 767 struct davinci_audio_dev *dev = snd_soc_dai_get_drvdata(cpu_dai);
765 struct davinci_audio_dev *dev = rtd->dai->cpu_dai->private_data;
766 int ret = 0; 768 int ret = 0;
767 769
768 switch (cmd) { 770 switch (cmd) {
@@ -804,10 +806,9 @@ static struct snd_soc_dai_ops davinci_mcasp_dai_ops = {
804 806
805}; 807};
806 808
807struct snd_soc_dai davinci_mcasp_dai[] = { 809static struct snd_soc_dai_driver davinci_mcasp_dai[] = {
808 { 810 {
809 .name = "davinci-i2s", 811 .name = "davinci-mcasp.0",
810 .id = 0,
811 .playback = { 812 .playback = {
812 .channels_min = 2, 813 .channels_min = 2,
813 .channels_max = 2, 814 .channels_max = 2,
@@ -828,8 +829,7 @@ struct snd_soc_dai davinci_mcasp_dai[] = {
828 829
829 }, 830 },
830 { 831 {
831 .name = "davinci-dit", 832 "davinci-mcasp.1",
832 .id = 1,
833 .playback = { 833 .playback = {
834 .channels_min = 1, 834 .channels_min = 1,
835 .channels_max = 384, 835 .channels_max = 384,
@@ -840,7 +840,6 @@ struct snd_soc_dai davinci_mcasp_dai[] = {
840 }, 840 },
841 841
842}; 842};
843EXPORT_SYMBOL_GPL(davinci_mcasp_dai);
844 843
845static int davinci_mcasp_probe(struct platform_device *pdev) 844static int davinci_mcasp_probe(struct platform_device *pdev)
846{ 845{
@@ -917,11 +916,8 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
917 } 916 }
918 917
919 dma_data->channel = res->start; 918 dma_data->channel = res->start;
920 davinci_mcasp_dai[pdata->op_mode].private_data = dev; 919 dev_set_drvdata(&pdev->dev, dev);
921 davinci_mcasp_dai[pdata->op_mode].capture.dma_data = dev->dma_params; 920 ret = snd_soc_register_dai(&pdev->dev, &davinci_mcasp_dai[pdata->op_mode]);
922 davinci_mcasp_dai[pdata->op_mode].playback.dma_data = dev->dma_params;
923 davinci_mcasp_dai[pdata->op_mode].dev = &pdev->dev;
924 ret = snd_soc_register_dai(&davinci_mcasp_dai[pdata->op_mode]);
925 921
926 if (ret != 0) 922 if (ret != 0)
927 goto err_release_region; 923 goto err_release_region;
@@ -937,12 +933,10 @@ err_release_data:
937 933
938static int davinci_mcasp_remove(struct platform_device *pdev) 934static int davinci_mcasp_remove(struct platform_device *pdev)
939{ 935{
940 struct snd_platform_data *pdata = pdev->dev.platform_data; 936 struct davinci_audio_dev *dev = dev_get_drvdata(&pdev->dev);
941 struct davinci_audio_dev *dev;
942 struct resource *mem; 937 struct resource *mem;
943 938
944 snd_soc_unregister_dai(&davinci_mcasp_dai[pdata->op_mode]); 939 snd_soc_unregister_dai(&pdev->dev);
945 dev = davinci_mcasp_dai[pdata->op_mode].private_data;
946 clk_disable(dev->clk); 940 clk_disable(dev->clk);
947 clk_put(dev->clk); 941 clk_put(dev->clk);
948 dev->clk = NULL; 942 dev->clk = NULL;