aboutsummaryrefslogtreecommitdiffstats
path: root/sound/sh/aica.c
diff options
context:
space:
mode:
authorUwe Kleine-König <ukleinek@informatik.uni-freiburg.de>2008-09-14 15:32:33 -0400
committerJaroslav Kysela <perex@perex.cz>2008-09-23 02:17:58 -0400
commit418c8f89911dd3d4930221def3bd56b38b051789 (patch)
treeafef7286cb6e10ef767c86c79c4eeefbc4f7d902 /sound/sh/aica.c
parentf7cf0a7ce56eb91752fa441cff2669f8d61d4e5e (diff)
ALSA: Fix section for snd-aica platform driver
Don't use __init but __devinit to define probe function. A pointer to snd_aica_probe is passed to the core via platform_driver_register and so the function must not disappear after the module is loaded. Using __init and having HOTPLUG=y and SND_AICA=m the following probably oopses: echo -n AICA > /sys/bus/platform/driver/AICA/unbind echo -n AICA > /sys/bus/platform/driver/AICA/bind Strange enough add_aicamixer_controls which is only called by snd_aica_probe was already using __devinit. While at it move the remove function to .devexit.text section. Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de> Cc: Adrian McMenamin <adrian@mcmen.demon.co.uk> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Jaroslav Kysela <perex@perex.cz> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'sound/sh/aica.c')
-rw-r--r--sound/sh/aica.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sound/sh/aica.c b/sound/sh/aica.c
index 55031d0a6558..7c920f3e7fe3 100644
--- a/sound/sh/aica.c
+++ b/sound/sh/aica.c
@@ -590,7 +590,7 @@ static int __devinit add_aicamixer_controls(struct snd_card_aica
590 return 0; 590 return 0;
591} 591}
592 592
593static int snd_aica_remove(struct platform_device *devptr) 593static int __devexit snd_aica_remove(struct platform_device *devptr)
594{ 594{
595 struct snd_card_aica *dreamcastcard; 595 struct snd_card_aica *dreamcastcard;
596 dreamcastcard = platform_get_drvdata(devptr); 596 dreamcastcard = platform_get_drvdata(devptr);
@@ -602,7 +602,7 @@ static int snd_aica_remove(struct platform_device *devptr)
602 return 0; 602 return 0;
603} 603}
604 604
605static int __init snd_aica_probe(struct platform_device *devptr) 605static int __devinit snd_aica_probe(struct platform_device *devptr)
606{ 606{
607 int err; 607 int err;
608 struct snd_card_aica *dreamcastcard; 608 struct snd_card_aica *dreamcastcard;
@@ -651,7 +651,7 @@ static int __init snd_aica_probe(struct platform_device *devptr)
651 651
652static struct platform_driver snd_aica_driver = { 652static struct platform_driver snd_aica_driver = {
653 .probe = snd_aica_probe, 653 .probe = snd_aica_probe,
654 .remove = snd_aica_remove, 654 .remove = __devexit_p(snd_aica_remove),
655 .driver = { 655 .driver = {
656 .name = SND_AICA_DRIVER}, 656 .name = SND_AICA_DRIVER},
657}; 657};