Commit 4da3fe78 authored by Shawn Guo's avatar Shawn Guo Committed by Mark Brown

ASoC: mxs: mxs-pcm does not need to be a plaform_driver

Same as the commit 518de86b (ASoC: tegra: register 'platform' from DAIs,
get rid of pdev), it makes mxs-pcm not a platform_driver but helper to
register "platform", so that the platform_device for mxs-pcm can be
saved completely.
Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 065899c9
...@@ -220,28 +220,16 @@ static struct snd_soc_platform_driver mxs_soc_platform = { ...@@ -220,28 +220,16 @@ static struct snd_soc_platform_driver mxs_soc_platform = {
.pcm_free = mxs_pcm_free, .pcm_free = mxs_pcm_free,
}; };
static int __devinit mxs_soc_platform_probe(struct platform_device *pdev) int __devinit mxs_pcm_platform_register(struct device *dev)
{ {
return snd_soc_register_platform(&pdev->dev, &mxs_soc_platform); return snd_soc_register_platform(dev, &mxs_soc_platform);
} }
EXPORT_SYMBOL_GPL(mxs_pcm_platform_register);
static int __devexit mxs_soc_platform_remove(struct platform_device *pdev) void __devexit mxs_pcm_platform_unregister(struct device *dev)
{ {
snd_soc_unregister_platform(&pdev->dev); snd_soc_unregister_platform(dev);
return 0;
} }
EXPORT_SYMBOL_GPL(mxs_pcm_platform_unregister);
static struct platform_driver mxs_pcm_driver = {
.driver = {
.name = "mxs-pcm-audio",
.owner = THIS_MODULE,
},
.probe = mxs_soc_platform_probe,
.remove = __devexit_p(mxs_soc_platform_remove),
};
module_platform_driver(mxs_pcm_driver);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:mxs-pcm-audio");
...@@ -24,4 +24,7 @@ struct mxs_pcm_dma_params { ...@@ -24,4 +24,7 @@ struct mxs_pcm_dma_params {
int chan_num; int chan_num;
}; };
int mxs_pcm_platform_register(struct device *dev);
void mxs_pcm_platform_unregister(struct device *dev);
#endif #endif
...@@ -708,24 +708,14 @@ static int __devinit mxs_saif_probe(struct platform_device *pdev) ...@@ -708,24 +708,14 @@ static int __devinit mxs_saif_probe(struct platform_device *pdev)
goto failed_get_resource; goto failed_get_resource;
} }
saif->soc_platform_pdev = platform_device_alloc( ret = mxs_pcm_platform_register(&pdev->dev);
"mxs-pcm-audio", pdev->id);
if (!saif->soc_platform_pdev) {
ret = -ENOMEM;
goto failed_pdev_alloc;
}
platform_set_drvdata(saif->soc_platform_pdev, saif);
ret = platform_device_add(saif->soc_platform_pdev);
if (ret) { if (ret) {
dev_err(&pdev->dev, "failed to add soc platform device\n"); dev_err(&pdev->dev, "register PCM failed: %d\n", ret);
goto failed_pdev_add; goto failed_pdev_alloc;
} }
return 0; return 0;
failed_pdev_add:
platform_device_put(saif->soc_platform_pdev);
failed_pdev_alloc: failed_pdev_alloc:
snd_soc_unregister_dai(&pdev->dev); snd_soc_unregister_dai(&pdev->dev);
failed_get_resource: failed_get_resource:
...@@ -738,7 +728,7 @@ static int __devexit mxs_saif_remove(struct platform_device *pdev) ...@@ -738,7 +728,7 @@ static int __devexit mxs_saif_remove(struct platform_device *pdev)
{ {
struct mxs_saif *saif = platform_get_drvdata(pdev); struct mxs_saif *saif = platform_get_drvdata(pdev);
platform_device_unregister(saif->soc_platform_pdev); mxs_pcm_platform_unregister(&pdev->dev);
snd_soc_unregister_dai(&pdev->dev); snd_soc_unregister_dai(&pdev->dev);
clk_put(saif->clk); clk_put(saif->clk);
......
...@@ -123,7 +123,6 @@ struct mxs_saif { ...@@ -123,7 +123,6 @@ struct mxs_saif {
unsigned int cur_rate; unsigned int cur_rate;
unsigned int ongoing; unsigned int ongoing;
struct platform_device *soc_platform_pdev;
u32 fifo_underrun; u32 fifo_underrun;
u32 fifo_overrun; u32 fifo_overrun;
}; };
......
...@@ -90,7 +90,7 @@ static struct snd_soc_dai_link mxs_sgtl5000_dai[] = { ...@@ -90,7 +90,7 @@ static struct snd_soc_dai_link mxs_sgtl5000_dai[] = {
.codec_dai_name = "sgtl5000", .codec_dai_name = "sgtl5000",
.codec_name = "sgtl5000.0-000a", .codec_name = "sgtl5000.0-000a",
.cpu_dai_name = "mxs-saif.0", .cpu_dai_name = "mxs-saif.0",
.platform_name = "mxs-pcm-audio.0", .platform_name = "mxs-saif.0",
.ops = &mxs_sgtl5000_hifi_ops, .ops = &mxs_sgtl5000_hifi_ops,
}, { }, {
.name = "HiFi Rx", .name = "HiFi Rx",
...@@ -98,7 +98,7 @@ static struct snd_soc_dai_link mxs_sgtl5000_dai[] = { ...@@ -98,7 +98,7 @@ static struct snd_soc_dai_link mxs_sgtl5000_dai[] = {
.codec_dai_name = "sgtl5000", .codec_dai_name = "sgtl5000",
.codec_name = "sgtl5000.0-000a", .codec_name = "sgtl5000.0-000a",
.cpu_dai_name = "mxs-saif.1", .cpu_dai_name = "mxs-saif.1",
.platform_name = "mxs-pcm-audio.1", .platform_name = "mxs-saif.1",
.ops = &mxs_sgtl5000_hifi_ops, .ops = &mxs_sgtl5000_hifi_ops,
}, },
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment