diff options
Diffstat (limited to 'sound/soc/davinci/davinci-mcasp.c')
-rw-r--r-- | sound/soc/davinci/davinci-mcasp.c | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c index b24720894af6..86918ee12419 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) | |||
422 | static int davinci_mcasp_set_dai_fmt(struct snd_soc_dai *cpu_dai, | 422 | static 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, | |||
761 | static int davinci_mcasp_trigger(struct snd_pcm_substream *substream, | 764 | static 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 | ||
807 | struct snd_soc_dai davinci_mcasp_dai[] = { | 809 | static 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 | }; |
843 | EXPORT_SYMBOL_GPL(davinci_mcasp_dai); | ||
844 | 843 | ||
845 | static int davinci_mcasp_probe(struct platform_device *pdev) | 844 | static int davinci_mcasp_probe(struct platform_device *pdev) |
846 | { | 845 | { |
@@ -899,6 +898,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev) | |||
899 | res = platform_get_resource(pdev, IORESOURCE_DMA, 0); | 898 | res = platform_get_resource(pdev, IORESOURCE_DMA, 0); |
900 | if (!res) { | 899 | if (!res) { |
901 | dev_err(&pdev->dev, "no DMA resource\n"); | 900 | dev_err(&pdev->dev, "no DMA resource\n"); |
901 | ret = -ENODEV; | ||
902 | goto err_release_region; | 902 | goto err_release_region; |
903 | } | 903 | } |
904 | 904 | ||
@@ -913,15 +913,13 @@ static int davinci_mcasp_probe(struct platform_device *pdev) | |||
913 | res = platform_get_resource(pdev, IORESOURCE_DMA, 1); | 913 | res = platform_get_resource(pdev, IORESOURCE_DMA, 1); |
914 | if (!res) { | 914 | if (!res) { |
915 | dev_err(&pdev->dev, "no DMA resource\n"); | 915 | dev_err(&pdev->dev, "no DMA resource\n"); |
916 | ret = -ENODEV; | ||
916 | goto err_release_region; | 917 | goto err_release_region; |
917 | } | 918 | } |
918 | 919 | ||
919 | dma_data->channel = res->start; | 920 | dma_data->channel = res->start; |
920 | davinci_mcasp_dai[pdata->op_mode].private_data = dev; | 921 | dev_set_drvdata(&pdev->dev, dev); |
921 | davinci_mcasp_dai[pdata->op_mode].capture.dma_data = dev->dma_params; | 922 | 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 | 923 | ||
926 | if (ret != 0) | 924 | if (ret != 0) |
927 | goto err_release_region; | 925 | goto err_release_region; |
@@ -937,12 +935,10 @@ err_release_data: | |||
937 | 935 | ||
938 | static int davinci_mcasp_remove(struct platform_device *pdev) | 936 | static int davinci_mcasp_remove(struct platform_device *pdev) |
939 | { | 937 | { |
940 | struct snd_platform_data *pdata = pdev->dev.platform_data; | 938 | struct davinci_audio_dev *dev = dev_get_drvdata(&pdev->dev); |
941 | struct davinci_audio_dev *dev; | ||
942 | struct resource *mem; | 939 | struct resource *mem; |
943 | 940 | ||
944 | snd_soc_unregister_dai(&davinci_mcasp_dai[pdata->op_mode]); | 941 | snd_soc_unregister_dai(&pdev->dev); |
945 | dev = davinci_mcasp_dai[pdata->op_mode].private_data; | ||
946 | clk_disable(dev->clk); | 942 | clk_disable(dev->clk); |
947 | clk_put(dev->clk); | 943 | clk_put(dev->clk); |
948 | dev->clk = NULL; | 944 | dev->clk = NULL; |