Skip to content

Commit

Permalink
ASoC: Convert PXA AC97 driver to probe with the platform device
Browse files Browse the repository at this point in the history
This will break any boards that don't register the AC97 controller
device due to using ASoC.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Mark Brown committed Mar 9, 2009
1 parent a381934 commit 6b849bc
Showing 1 changed file with 34 additions and 4 deletions.
38 changes: 34 additions & 4 deletions sound/soc/pxa/pxa2xx-ac97.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,13 +106,13 @@ static int pxa2xx_ac97_resume(struct snd_soc_dai *dai)
static int pxa2xx_ac97_probe(struct platform_device *pdev,
struct snd_soc_dai *dai)
{
return pxa2xx_ac97_hw_probe(pdev);
return pxa2xx_ac97_hw_probe(to_platform_device(dai->dev));
}

static void pxa2xx_ac97_remove(struct platform_device *pdev,
struct snd_soc_dai *dai)
{
pxa2xx_ac97_hw_remove(pdev);
pxa2xx_ac97_hw_remove(to_platform_device(dai->dev));
}

static int pxa2xx_ac97_hw_params(struct snd_pcm_substream *substream,
Expand Down Expand Up @@ -229,15 +229,45 @@ struct snd_soc_dai pxa_ac97_dai[] = {
EXPORT_SYMBOL_GPL(pxa_ac97_dai);
EXPORT_SYMBOL_GPL(soc_ac97_ops);

static int __init pxa_ac97_init(void)
static int __devinit pxa2xx_ac97_dev_probe(struct platform_device *pdev)
{
int i;

for (i = 0; i < ARRAY_SIZE(pxa_ac97_dai); i++)
pxa_ac97_dai[i].dev = &pdev->dev;

/* Punt most of the init to the SoC probe; we may need the machine
* driver to do interesting things with the clocking to get us up
* and running.
*/
return snd_soc_register_dais(pxa_ac97_dai, ARRAY_SIZE(pxa_ac97_dai));
}

static int __devexit pxa2xx_ac97_dev_remove(struct platform_device *pdev)
{
snd_soc_unregister_dais(pxa_ac97_dai, ARRAY_SIZE(pxa_ac97_dai));

return 0;
}

static struct platform_driver pxa2xx_ac97_driver = {
.probe = pxa2xx_ac97_dev_probe,
.remove = __devexit_p(pxa2xx_ac97_dev_remove),
.driver = {
.name = "pxa2xx-ac97",
.owner = THIS_MODULE,
},
};

static int __init pxa_ac97_init(void)
{
return platform_driver_register(&pxa2xx_ac97_driver);
}
module_init(pxa_ac97_init);

static void __exit pxa_ac97_exit(void)
{
snd_soc_unregister_dais(pxa_ac97_dai, ARRAY_SIZE(pxa_ac97_dai));
platform_driver_unregister(&pxa2xx_ac97_driver);
}
module_exit(pxa_ac97_exit);

Expand Down

0 comments on commit 6b849bc

Please sign in to comment.