提交 f515b673 编写于 作者: E Eric Millbrandt 提交者: Mark Brown

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: NEric Millbrandt <emillbrandt@dekaresearch.com>
Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
上级 f3a50c95
...@@ -370,7 +370,7 @@ static struct snd_soc_platform_driver mpc5200_audio_dma_platform = { ...@@ -370,7 +370,7 @@ static struct snd_soc_platform_driver mpc5200_audio_dma_platform = {
.pcm_free = &psc_dma_free, .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; phys_addr_t fifo;
struct psc_dma *psc_dma; struct psc_dma *psc_dma;
...@@ -487,8 +487,9 @@ static int mpc5200_hpcd_probe(struct platform_device *op) ...@@ -487,8 +487,9 @@ static int mpc5200_hpcd_probe(struct platform_device *op)
iounmap(regs); iounmap(regs);
return ret; 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); struct psc_dma *psc_dma = dev_get_drvdata(&op->dev);
...@@ -510,24 +511,7 @@ static int mpc5200_hpcd_remove(struct platform_device *op) ...@@ -510,24 +511,7 @@ static int mpc5200_hpcd_remove(struct platform_device *op)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(mpc5200_audio_dma_destroy);
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);
MODULE_AUTHOR("Grant Likely <grant.likely@secretlab.ca>"); MODULE_AUTHOR("Grant Likely <grant.likely@secretlab.ca>");
MODULE_DESCRIPTION("Freescale MPC5200 PSC in DMA mode ASoC Driver"); MODULE_DESCRIPTION("Freescale MPC5200 PSC in DMA mode ASoC Driver");
......
...@@ -81,4 +81,7 @@ to_psc_dma_stream(struct snd_pcm_substream *substream, struct psc_dma *psc_dma) ...@@ -81,4 +81,7 @@ to_psc_dma_stream(struct snd_pcm_substream *substream, struct psc_dma *psc_dma)
return &psc_dma->playback; 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__ */ #endif /* __SOUND_SOC_FSL_MPC5200_DMA_H__ */
...@@ -278,6 +278,10 @@ static int __devinit psc_ac97_of_probe(struct platform_device *op) ...@@ -278,6 +278,10 @@ static int __devinit psc_ac97_of_probe(struct platform_device *op)
struct snd_ac97 ac97; struct snd_ac97 ac97;
struct mpc52xx_psc __iomem *regs; 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)); rc = snd_soc_register_dais(&op->dev, psc_ac97_dai, ARRAY_SIZE(psc_ac97_dai));
if (rc != 0) { if (rc != 0) {
dev_err(&op->dev, "Failed to register DAI\n"); dev_err(&op->dev, "Failed to register DAI\n");
...@@ -303,6 +307,7 @@ static int __devinit psc_ac97_of_probe(struct platform_device *op) ...@@ -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) 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)); snd_soc_unregister_dais(&op->dev, ARRAY_SIZE(psc_ac97_dai));
return 0; return 0;
} }
......
...@@ -156,6 +156,10 @@ static int __devinit psc_i2s_of_probe(struct platform_device *op) ...@@ -156,6 +156,10 @@ static int __devinit psc_i2s_of_probe(struct platform_device *op)
struct psc_dma *psc_dma; struct psc_dma *psc_dma;
struct mpc52xx_psc __iomem *regs; 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)); rc = snd_soc_register_dais(&op->dev, psc_i2s_dai, ARRAY_SIZE(psc_i2s_dai));
if (rc != 0) { if (rc != 0) {
pr_err("Failed to register DAI\n"); pr_err("Failed to register DAI\n");
...@@ -200,6 +204,7 @@ static int __devinit psc_i2s_of_probe(struct platform_device *op) ...@@ -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) 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)); snd_soc_unregister_dais(&op->dev, ARRAY_SIZE(psc_i2s_dai));
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册