Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+6 −18
Original line number Diff line number Diff line
@@ -220,28 +220,16 @@ static struct snd_soc_platform_driver mxs_soc_platform = {
	.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);

	return 0;
	snd_soc_unregister_platform(dev);
}

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);
EXPORT_SYMBOL_GPL(mxs_pcm_platform_unregister);

MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:mxs-pcm-audio");
+3 −0
Original line number Diff line number Diff line
@@ -24,4 +24,7 @@ struct mxs_pcm_dma_params {
	int chan_num;
};

int mxs_pcm_platform_register(struct device *dev);
void mxs_pcm_platform_unregister(struct device *dev);

#endif
+4 −14
Original line number Diff line number Diff line
@@ -708,24 +708,14 @@ static int __devinit mxs_saif_probe(struct platform_device *pdev)
		goto failed_get_resource;
	}

	saif->soc_platform_pdev = platform_device_alloc(
					"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);
	ret = mxs_pcm_platform_register(&pdev->dev);
	if (ret) {
		dev_err(&pdev->dev, "failed to add soc platform device\n");
		goto failed_pdev_add;
		dev_err(&pdev->dev, "register PCM failed: %d\n", ret);
		goto failed_pdev_alloc;
	}

	return 0;

failed_pdev_add:
	platform_device_put(saif->soc_platform_pdev);
failed_pdev_alloc:
	snd_soc_unregister_dai(&pdev->dev);
failed_get_resource:
@@ -738,7 +728,7 @@ static int __devexit mxs_saif_remove(struct platform_device *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);
	clk_put(saif->clk);

+0 −1
Original line number Diff line number Diff line
@@ -123,7 +123,6 @@ struct mxs_saif {
	unsigned int cur_rate;
	unsigned int ongoing;

	struct platform_device *soc_platform_pdev;
	u32 fifo_underrun;
	u32 fifo_overrun;
};
+2 −2
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ static struct snd_soc_dai_link mxs_sgtl5000_dai[] = {
		.codec_dai_name	= "sgtl5000",
		.codec_name	= "sgtl5000.0-000a",
		.cpu_dai_name	= "mxs-saif.0",
		.platform_name	= "mxs-pcm-audio.0",
		.platform_name	= "mxs-saif.0",
		.ops		= &mxs_sgtl5000_hifi_ops,
	}, {
		.name		= "HiFi Rx",
@@ -98,7 +98,7 @@ static struct snd_soc_dai_link mxs_sgtl5000_dai[] = {
		.codec_dai_name	= "sgtl5000",
		.codec_name	= "sgtl5000.0-000a",
		.cpu_dai_name	= "mxs-saif.1",
		.platform_name	= "mxs-pcm-audio.1",
		.platform_name	= "mxs-saif.1",
		.ops		= &mxs_sgtl5000_hifi_ops,
	},
};