Commit f515b673 authored by Eric Millbrandt's avatar Eric Millbrandt Committed by Mark Brown
Browse files

ASoC: fsl: mpc5200 combine psc_dma platform data



The mpc5200_psc_ac97 and mpc5200_psc_i2s modules rely on shared platform data
with mpc5200_dma.

Signed-off-by: default avatarEric Millbrandt <emillbrandt@dekaresearch.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent f3a50c95
Loading
Loading
Loading
Loading
+4 −20
Original line number Diff line number Diff line
@@ -370,7 +370,7 @@ static struct snd_soc_platform_driver mpc5200_audio_dma_platform = {
	.pcm_free	= &psc_dma_free,
};

static int mpc5200_hpcd_probe(struct platform_device *op)
int mpc5200_audio_dma_create(struct platform_device *op)
{
	phys_addr_t fifo;
	struct psc_dma *psc_dma;
@@ -487,8 +487,9 @@ out_unmap:
	iounmap(regs);
	return ret;
}
EXPORT_SYMBOL_GPL(mpc5200_audio_dma_create);

static int mpc5200_hpcd_remove(struct platform_device *op)
int mpc5200_audio_dma_destroy(struct platform_device *op)
{
	struct psc_dma *psc_dma = dev_get_drvdata(&op->dev);

@@ -510,24 +511,7 @@ static int mpc5200_hpcd_remove(struct platform_device *op)

	return 0;
}

static struct of_device_id mpc5200_hpcd_match[] = {
	{ .compatible = "fsl,mpc5200-pcm", },
	{}
};
MODULE_DEVICE_TABLE(of, mpc5200_hpcd_match);

static struct platform_driver mpc5200_hpcd_of_driver = {
	.probe		= mpc5200_hpcd_probe,
	.remove		= mpc5200_hpcd_remove,
	.driver = {
		.owner		= THIS_MODULE,
		.name		= "mpc5200-pcm-audio",
		.of_match_table    = mpc5200_hpcd_match,
	}
};

module_platform_driver(mpc5200_hpcd_of_driver);
EXPORT_SYMBOL_GPL(mpc5200_audio_dma_destroy);

MODULE_AUTHOR("Grant Likely <grant.likely@secretlab.ca>");
MODULE_DESCRIPTION("Freescale MPC5200 PSC in DMA mode ASoC Driver");
+3 −0
Original line number Diff line number Diff line
@@ -81,4 +81,7 @@ to_psc_dma_stream(struct snd_pcm_substream *substream, struct psc_dma *psc_dma)
	return &psc_dma->playback;
}

int mpc5200_audio_dma_create(struct platform_device *op);
int mpc5200_audio_dma_destroy(struct platform_device *op);

#endif /* __SOUND_SOC_FSL_MPC5200_DMA_H__ */
+5 −0
Original line number Diff line number Diff line
@@ -278,6 +278,10 @@ static int __devinit psc_ac97_of_probe(struct platform_device *op)
	struct snd_ac97 ac97;
	struct mpc52xx_psc __iomem *regs;

	rc = mpc5200_audio_dma_create(op);
	if (rc != 0)
		return rc;

	rc = snd_soc_register_dais(&op->dev, psc_ac97_dai, ARRAY_SIZE(psc_ac97_dai));
	if (rc != 0) {
		dev_err(&op->dev, "Failed to register DAI\n");
@@ -303,6 +307,7 @@ static int __devinit psc_ac97_of_probe(struct platform_device *op)

static int __devexit psc_ac97_of_remove(struct platform_device *op)
{
	mpc5200_audio_dma_destroy(op);
	snd_soc_unregister_dais(&op->dev, ARRAY_SIZE(psc_ac97_dai));
	return 0;
}
+5 −0
Original line number Diff line number Diff line
@@ -156,6 +156,10 @@ static int __devinit psc_i2s_of_probe(struct platform_device *op)
	struct psc_dma *psc_dma;
	struct mpc52xx_psc __iomem *regs;

	rc = mpc5200_audio_dma_create(op);
	if (rc != 0)
		return rc;

	rc = snd_soc_register_dais(&op->dev, psc_i2s_dai, ARRAY_SIZE(psc_i2s_dai));
	if (rc != 0) {
		pr_err("Failed to register DAI\n");
@@ -200,6 +204,7 @@ static int __devinit psc_i2s_of_probe(struct platform_device *op)

static int __devexit psc_i2s_of_remove(struct platform_device *op)
{
	mpc5200_audio_dma_destroy(op);
	snd_soc_unregister_dais(&op->dev, ARRAY_SIZE(psc_i2s_dai));
	return 0;
}