diff options
Diffstat (limited to 'sound/arm/aaci.c')
| -rw-r--r-- | sound/arm/aaci.c | 62 |
1 files changed, 23 insertions, 39 deletions
diff --git a/sound/arm/aaci.c b/sound/arm/aaci.c index b37b702a3a6..0e83a73efb1 100644 --- a/sound/arm/aaci.c +++ b/sound/arm/aaci.c @@ -753,7 +753,7 @@ static struct snd_pcm_ops aaci_capture_ops = { * Power Management. */ #ifdef CONFIG_PM -static int aaci_do_suspend(struct snd_card *card, unsigned int state) +static int aaci_do_suspend(struct snd_card *card) { struct aaci *aaci = card->private_data; snd_power_change_state(card, SNDRV_CTL_POWER_D3cold); @@ -761,32 +761,32 @@ static int aaci_do_suspend(struct snd_card *card, unsigned int state) return 0; } -static int aaci_do_resume(struct snd_card *card, unsigned int state) +static int aaci_do_resume(struct snd_card *card) { snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; } -static int aaci_suspend(struct amba_device *dev, pm_message_t state) +static int aaci_suspend(struct device *dev) { - struct snd_card *card = amba_get_drvdata(dev); + struct snd_card *card = dev_get_drvdata(dev); return card ? aaci_do_suspend(card) : 0; } -static int aaci_resume(struct amba_device *dev) +static int aaci_resume(struct device *dev) { - struct snd_card *card = amba_get_drvdata(dev); + struct snd_card *card = dev_get_drvdata(dev); return card ? aaci_do_resume(card) : 0; } + +static SIMPLE_DEV_PM_OPS(aaci_dev_pm_ops, aaci_suspend, aaci_resume); +#define AACI_DEV_PM_OPS (&aaci_dev_pm_ops) #else -#define aaci_do_suspend NULL -#define aaci_do_resume NULL -#define aaci_suspend NULL -#define aaci_resume NULL +#define AACI_DEV_PM_OPS NULL #endif -static struct ac97_pcm ac97_defs[] __devinitdata = { +static struct ac97_pcm ac97_defs[] = { [0] = { /* Front PCM */ .exclusive = 1, .r = { @@ -832,7 +832,7 @@ static struct snd_ac97_bus_ops aaci_bus_ops = { .read = aaci_ac97_read, }; -static int __devinit aaci_probe_ac97(struct aaci *aaci) +static int aaci_probe_ac97(struct aaci *aaci) { struct snd_ac97_template ac97_template; struct snd_ac97_bus *ac97_bus; @@ -893,14 +893,14 @@ static void aaci_free_card(struct snd_card *card) iounmap(aaci->base); } -static struct aaci * __devinit aaci_init_card(struct amba_device *dev) +static struct aaci *aaci_init_card(struct amba_device *dev) { struct aaci *aaci; struct snd_card *card; int err; - err = snd_card_create(SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1, - THIS_MODULE, sizeof(struct aaci), &card); + err = snd_card_new(&dev->dev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1, + THIS_MODULE, sizeof(struct aaci), &card); if (err < 0) return NULL; @@ -926,7 +926,7 @@ static struct aaci * __devinit aaci_init_card(struct amba_device *dev) return aaci; } -static int __devinit aaci_init_pcm(struct aaci *aaci) +static int aaci_init_pcm(struct aaci *aaci) { struct snd_pcm *pcm; int ret; @@ -948,7 +948,7 @@ static int __devinit aaci_init_pcm(struct aaci *aaci) return ret; } -static unsigned int __devinit aaci_size_fifo(struct aaci *aaci) +static unsigned int aaci_size_fifo(struct aaci *aaci) { struct aaci_runtime *aacirun = &aaci->playback; int i; @@ -984,8 +984,8 @@ static unsigned int __devinit aaci_size_fifo(struct aaci *aaci) return i; } -static int __devinit aaci_probe(struct amba_device *dev, - const struct amba_id *id) +static int aaci_probe(struct amba_device *dev, + const struct amba_id *id) { struct aaci *aaci; int ret, i; @@ -1055,8 +1055,6 @@ static int __devinit aaci_probe(struct amba_device *dev, if (ret) goto out; - snd_card_set_dev(aaci->card, &dev->dev); - ret = snd_card_register(aaci->card); if (ret == 0) { dev_info(&dev->dev, "%s\n", aaci->card->longname); @@ -1072,12 +1070,10 @@ static int __devinit aaci_probe(struct amba_device *dev, return ret; } -static int __devexit aaci_remove(struct amba_device *dev) +static int aaci_remove(struct amba_device *dev) { struct snd_card *card = amba_get_drvdata(dev); - amba_set_drvdata(dev, NULL); - if (card) { struct aaci *aaci = card->private_data; writel(0, aaci->base + AACI_MAINCR); @@ -1102,26 +1098,14 @@ MODULE_DEVICE_TABLE(amba, aaci_ids); static struct amba_driver aaci_driver = { .drv = { .name = DRIVER_NAME, + .pm = AACI_DEV_PM_OPS, }, .probe = aaci_probe, - .remove = __devexit_p(aaci_remove), - .suspend = aaci_suspend, - .resume = aaci_resume, + .remove = aaci_remove, .id_table = aaci_ids, }; -static int __init aaci_init(void) -{ - return amba_driver_register(&aaci_driver); -} - -static void __exit aaci_exit(void) -{ - amba_driver_unregister(&aaci_driver); -} - -module_init(aaci_init); -module_exit(aaci_exit); +module_amba_driver(aaci_driver); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("ARM PrimeCell PL041 Advanced Audio CODEC Interface driver"); |
