Skip to content

Commit

Permalink
ASoC: fsl: mpc5200 combine psc_dma platform data
Browse files Browse the repository at this point in the history
The mpc5200_psc_ac97 and mpc5200_psc_i2s modules rely on shared platform data
with mpc5200_dma.

Signed-off-by: Eric Millbrandt <emillbrandt@dekaresearch.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Eric Millbrandt authored and Mark Brown committed Sep 19, 2012
1 parent f3a50c9 commit f515b67
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 20 deletions.
24 changes: 4 additions & 20 deletions sound/soc/fsl/mpc5200_dma.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -487,8 +487,9 @@ static int mpc5200_hpcd_probe(struct platform_device *op)
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);

Expand All @@ -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");
Expand Down
3 changes: 3 additions & 0 deletions sound/soc/fsl/mpc5200_dma.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 changes: 5 additions & 0 deletions sound/soc/fsl/mpc5200_psc_ac97.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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;
}
Expand Down
5 changes: 5 additions & 0 deletions sound/soc/fsl/mpc5200_psc_i2s.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit f515b67

Please sign in to comment.