aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/davinci
diff options
context:
space:
mode:
authorHebbar, Gururaja <gururaja.hebbar@ti.com>2012-08-27 09:26:39 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-08-27 14:12:08 -0400
commitf08095a408bf6489b4a710d794ae6d5475a007ef (patch)
tree8ca802466c185cee5d9e371501781660903f19e9 /sound/soc/davinci
parentc24fdc886fde9ce7bda8115b9c2b338818796c65 (diff)
ASoC: davinci: davinci-pcm does not need to be a plaform_driver
Same as the commit 518de86 (ASoC: tegra: register 'platform' from DAIs, get rid of pdev). It makes davinci-pcm not a platform_driver but helper to register "platform", so that the platform_device for davinci-pcm can be saved completely. Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/davinci')
-rw-r--r--sound/soc/davinci/davinci-evm.c15
-rw-r--r--sound/soc/davinci/davinci-i2s.c10
-rw-r--r--sound/soc/davinci/davinci-mcasp.c10
-rw-r--r--sound/soc/davinci/davinci-pcm.c23
-rw-r--r--sound/soc/davinci/davinci-pcm.h3
-rw-r--r--sound/soc/davinci/davinci-sffsdr.c2
-rw-r--r--sound/soc/davinci/davinci-vcif.c8
7 files changed, 46 insertions, 25 deletions
diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
index c80c20a89b11..4b37e2ac4685 100644
--- a/sound/soc/davinci/davinci-evm.c
+++ b/sound/soc/davinci/davinci-evm.c
@@ -159,7 +159,7 @@ static struct snd_soc_dai_link dm6446_evm_dai = {
159 .cpu_dai_name = "davinci-mcbsp", 159 .cpu_dai_name = "davinci-mcbsp",
160 .codec_dai_name = "tlv320aic3x-hifi", 160 .codec_dai_name = "tlv320aic3x-hifi",
161 .codec_name = "tlv320aic3x-codec.1-001b", 161 .codec_name = "tlv320aic3x-codec.1-001b",
162 .platform_name = "davinci-pcm-audio", 162 .platform_name = "davinci-mcbsp",
163 .init = evm_aic3x_init, 163 .init = evm_aic3x_init,
164 .ops = &evm_ops, 164 .ops = &evm_ops,
165}; 165};
@@ -170,7 +170,7 @@ static struct snd_soc_dai_link dm355_evm_dai = {
170 .cpu_dai_name = "davinci-mcbsp.1", 170 .cpu_dai_name = "davinci-mcbsp.1",
171 .codec_dai_name = "tlv320aic3x-hifi", 171 .codec_dai_name = "tlv320aic3x-hifi",
172 .codec_name = "tlv320aic3x-codec.1-001b", 172 .codec_name = "tlv320aic3x-codec.1-001b",
173 .platform_name = "davinci-pcm-audio", 173 .platform_name = "davinci-mcbsp.1",
174 .init = evm_aic3x_init, 174 .init = evm_aic3x_init,
175 .ops = &evm_ops, 175 .ops = &evm_ops,
176}; 176};
@@ -184,14 +184,15 @@ static struct snd_soc_dai_link dm365_evm_dai = {
184 .init = evm_aic3x_init, 184 .init = evm_aic3x_init,
185 .codec_name = "tlv320aic3x-codec.1-0018", 185 .codec_name = "tlv320aic3x-codec.1-0018",
186 .ops = &evm_ops, 186 .ops = &evm_ops,
187 .platform_name = "davinci-mcbsp",
187#elif defined(CONFIG_SND_DM365_VOICE_CODEC) 188#elif defined(CONFIG_SND_DM365_VOICE_CODEC)
188 .name = "Voice Codec - CQ93VC", 189 .name = "Voice Codec - CQ93VC",
189 .stream_name = "CQ93", 190 .stream_name = "CQ93",
190 .cpu_dai_name = "davinci-vcif", 191 .cpu_dai_name = "davinci-vcif",
191 .codec_dai_name = "cq93vc-hifi", 192 .codec_dai_name = "cq93vc-hifi",
192 .codec_name = "cq93vc-codec", 193 .codec_name = "cq93vc-codec",
194 .platform_name = "avinci-vcif",
193#endif 195#endif
194 .platform_name = "davinci-pcm-audio",
195}; 196};
196 197
197static struct snd_soc_dai_link dm6467_evm_dai[] = { 198static struct snd_soc_dai_link dm6467_evm_dai[] = {
@@ -200,7 +201,7 @@ static struct snd_soc_dai_link dm6467_evm_dai[] = {
200 .stream_name = "AIC3X", 201 .stream_name = "AIC3X",
201 .cpu_dai_name= "davinci-mcasp.0", 202 .cpu_dai_name= "davinci-mcasp.0",
202 .codec_dai_name = "tlv320aic3x-hifi", 203 .codec_dai_name = "tlv320aic3x-hifi",
203 .platform_name ="davinci-pcm-audio", 204 .platform_name = "davinci-mcasp.0",
204 .codec_name = "tlv320aic3x-codec.0-001a", 205 .codec_name = "tlv320aic3x-codec.0-001a",
205 .init = evm_aic3x_init, 206 .init = evm_aic3x_init,
206 .ops = &evm_ops, 207 .ops = &evm_ops,
@@ -211,7 +212,7 @@ static struct snd_soc_dai_link dm6467_evm_dai[] = {
211 .cpu_dai_name= "davinci-mcasp.1", 212 .cpu_dai_name= "davinci-mcasp.1",
212 .codec_dai_name = "dit-hifi", 213 .codec_dai_name = "dit-hifi",
213 .codec_name = "spdif_dit", 214 .codec_name = "spdif_dit",
214 .platform_name = "davinci-pcm-audio", 215 .platform_name = "davinci-mcasp.1",
215 .ops = &evm_spdif_ops, 216 .ops = &evm_spdif_ops,
216 }, 217 },
217}; 218};
@@ -222,7 +223,7 @@ static struct snd_soc_dai_link da830_evm_dai = {
222 .cpu_dai_name = "davinci-mcasp.1", 223 .cpu_dai_name = "davinci-mcasp.1",
223 .codec_dai_name = "tlv320aic3x-hifi", 224 .codec_dai_name = "tlv320aic3x-hifi",
224 .codec_name = "tlv320aic3x-codec.1-0018", 225 .codec_name = "tlv320aic3x-codec.1-0018",
225 .platform_name = "davinci-pcm-audio", 226 .platform_name = "davinci-mcasp.1",
226 .init = evm_aic3x_init, 227 .init = evm_aic3x_init,
227 .ops = &evm_ops, 228 .ops = &evm_ops,
228}; 229};
@@ -233,7 +234,7 @@ static struct snd_soc_dai_link da850_evm_dai = {
233 .cpu_dai_name= "davinci-mcasp.0", 234 .cpu_dai_name= "davinci-mcasp.0",
234 .codec_dai_name = "tlv320aic3x-hifi", 235 .codec_dai_name = "tlv320aic3x-hifi",
235 .codec_name = "tlv320aic3x-codec.1-0018", 236 .codec_name = "tlv320aic3x-codec.1-0018",
236 .platform_name = "davinci-pcm-audio", 237 .platform_name = "davinci-mcasp.0",
237 .init = evm_aic3x_init, 238 .init = evm_aic3x_init,
238 .ops = &evm_ops, 239 .ops = &evm_ops,
239}; 240};
diff --git a/sound/soc/davinci/davinci-i2s.c b/sound/soc/davinci/davinci-i2s.c
index 0a74b9587a2c..407df7233d6d 100644
--- a/sound/soc/davinci/davinci-i2s.c
+++ b/sound/soc/davinci/davinci-i2s.c
@@ -732,8 +732,16 @@ static int davinci_i2s_probe(struct platform_device *pdev)
732 if (ret != 0) 732 if (ret != 0)
733 goto err_release_clk; 733 goto err_release_clk;
734 734
735 ret = davinci_soc_platform_register(&pdev->dev);
736 if (ret) {
737 dev_err(&pdev->dev, "register PCM failed: %d\n", ret);
738 goto err_unregister_dai;
739 }
740
735 return 0; 741 return 0;
736 742
743err_unregister_dai:
744 snd_soc_unregister_dai(&pdev->dev);
737err_release_clk: 745err_release_clk:
738 clk_disable(dev->clk); 746 clk_disable(dev->clk);
739 clk_put(dev->clk); 747 clk_put(dev->clk);
@@ -745,6 +753,8 @@ static int davinci_i2s_remove(struct platform_device *pdev)
745 struct davinci_mcbsp_dev *dev = dev_get_drvdata(&pdev->dev); 753 struct davinci_mcbsp_dev *dev = dev_get_drvdata(&pdev->dev);
746 754
747 snd_soc_unregister_dai(&pdev->dev); 755 snd_soc_unregister_dai(&pdev->dev);
756 davinci_soc_platform_unregister(&pdev->dev);
757
748 clk_disable(dev->clk); 758 clk_disable(dev->clk);
749 clk_put(dev->clk); 759 clk_put(dev->clk);
750 dev->clk = NULL; 760 dev->clk = NULL;
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
index d919fb8de7a3..8f3c5a4cf537 100644
--- a/sound/soc/davinci/davinci-mcasp.c
+++ b/sound/soc/davinci/davinci-mcasp.c
@@ -945,8 +945,17 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
945 945
946 if (ret != 0) 946 if (ret != 0)
947 goto err_release_clk; 947 goto err_release_clk;
948
949 ret = davinci_soc_platform_register(&pdev->dev);
950 if (ret) {
951 dev_err(&pdev->dev, "register PCM failed: %d\n", ret);
952 goto err_unregister_dai;
953 }
954
948 return 0; 955 return 0;
949 956
957err_unregister_dai:
958 snd_soc_unregister_dai(&pdev->dev);
950err_release_clk: 959err_release_clk:
951 pm_runtime_put_sync(&pdev->dev); 960 pm_runtime_put_sync(&pdev->dev);
952 pm_runtime_disable(&pdev->dev); 961 pm_runtime_disable(&pdev->dev);
@@ -957,6 +966,7 @@ static int davinci_mcasp_remove(struct platform_device *pdev)
957{ 966{
958 967
959 snd_soc_unregister_dai(&pdev->dev); 968 snd_soc_unregister_dai(&pdev->dev);
969 davinci_soc_platform_unregister(&pdev->dev);
960 970
961 pm_runtime_put_sync(&pdev->dev); 971 pm_runtime_put_sync(&pdev->dev);
962 pm_runtime_disable(&pdev->dev); 972 pm_runtime_disable(&pdev->dev);
diff --git a/sound/soc/davinci/davinci-pcm.c b/sound/soc/davinci/davinci-pcm.c
index 97d77b298968..4b70828beedb 100644
--- a/sound/soc/davinci/davinci-pcm.c
+++ b/sound/soc/davinci/davinci-pcm.c
@@ -864,28 +864,17 @@ static struct snd_soc_platform_driver davinci_soc_platform = {
864 .pcm_free = davinci_pcm_free, 864 .pcm_free = davinci_pcm_free,
865}; 865};
866 866
867static int __devinit davinci_soc_platform_probe(struct platform_device *pdev) 867int davinci_soc_platform_register(struct device *dev)
868{ 868{
869 return snd_soc_register_platform(&pdev->dev, &davinci_soc_platform); 869 return snd_soc_register_platform(dev, &davinci_soc_platform);
870} 870}
871EXPORT_SYMBOL_GPL(davinci_soc_platform_register);
871 872
872static int __devexit davinci_soc_platform_remove(struct platform_device *pdev) 873void davinci_soc_platform_unregister(struct device *dev)
873{ 874{
874 snd_soc_unregister_platform(&pdev->dev); 875 snd_soc_unregister_platform(dev);
875 return 0;
876} 876}
877 877EXPORT_SYMBOL_GPL(davinci_soc_platform_unregister);
878static struct platform_driver davinci_pcm_driver = {
879 .driver = {
880 .name = "davinci-pcm-audio",
881 .owner = THIS_MODULE,
882 },
883
884 .probe = davinci_soc_platform_probe,
885 .remove = __devexit_p(davinci_soc_platform_remove),
886};
887
888module_platform_driver(davinci_pcm_driver);
889 878
890MODULE_AUTHOR("Vladimir Barinov"); 879MODULE_AUTHOR("Vladimir Barinov");
891MODULE_DESCRIPTION("TI DAVINCI PCM DMA module"); 880MODULE_DESCRIPTION("TI DAVINCI PCM DMA module");
diff --git a/sound/soc/davinci/davinci-pcm.h b/sound/soc/davinci/davinci-pcm.h
index c0d6c9be4b4d..5e5516460461 100644
--- a/sound/soc/davinci/davinci-pcm.h
+++ b/sound/soc/davinci/davinci-pcm.h
@@ -28,4 +28,7 @@ struct davinci_pcm_dma_params {
28 unsigned int fifo_level; 28 unsigned int fifo_level;
29}; 29};
30 30
31int davinci_soc_platform_register(struct device *dev);
32void davinci_soc_platform_unregister(struct device *dev);
33
31#endif 34#endif
diff --git a/sound/soc/davinci/davinci-sffsdr.c b/sound/soc/davinci/davinci-sffsdr.c
index f71175b29e38..5be65aae7e0e 100644
--- a/sound/soc/davinci/davinci-sffsdr.c
+++ b/sound/soc/davinci/davinci-sffsdr.c
@@ -86,7 +86,7 @@ static struct snd_soc_dai_link sffsdr_dai = {
86 .cpu_dai_name = "davinci-mcbsp", 86 .cpu_dai_name = "davinci-mcbsp",
87 .codec_dai_name = "pcm3008-hifi", 87 .codec_dai_name = "pcm3008-hifi",
88 .codec_name = "pcm3008-codec", 88 .codec_name = "pcm3008-codec",
89 .platform_name = "davinci-pcm-audio", 89 .platform_name = "davinci-mcbsp",
90 .ops = &sffsdr_ops, 90 .ops = &sffsdr_ops,
91}; 91};
92 92
diff --git a/sound/soc/davinci/davinci-vcif.c b/sound/soc/davinci/davinci-vcif.c
index da030ff883d5..07bde2e6f84e 100644
--- a/sound/soc/davinci/davinci-vcif.c
+++ b/sound/soc/davinci/davinci-vcif.c
@@ -240,12 +240,20 @@ static int davinci_vcif_probe(struct platform_device *pdev)
240 return ret; 240 return ret;
241 } 241 }
242 242
243 ret = davinci_soc_platform_register(&pdev->dev);
244 if (ret) {
245 dev_err(&pdev->dev, "register PCM failed: %d\n", ret);
246 snd_soc_unregister_dai(&pdev->dev);
247 return ret;
248 }
249
243 return 0; 250 return 0;
244} 251}
245 252
246static int davinci_vcif_remove(struct platform_device *pdev) 253static int davinci_vcif_remove(struct platform_device *pdev)
247{ 254{
248 snd_soc_unregister_dai(&pdev->dev); 255 snd_soc_unregister_dai(&pdev->dev);
256 davinci_soc_platform_unregister(&pdev->dev);
249 257
250 return 0; 258 return 0;
251} 259}