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>
This commit is contained in:
committed by
Jaroslav Kysela
parent
f7cf0a7ce5
commit
418c8f8991
@@ -590,7 +590,7 @@ static int __devinit add_aicamixer_controls(struct snd_card_aica
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int snd_aica_remove(struct platform_device *devptr)
|
static int __devexit snd_aica_remove(struct platform_device *devptr)
|
||||||
{
|
{
|
||||||
struct snd_card_aica *dreamcastcard;
|
struct snd_card_aica *dreamcastcard;
|
||||||
dreamcastcard = platform_get_drvdata(devptr);
|
dreamcastcard = platform_get_drvdata(devptr);
|
||||||
@@ -602,7 +602,7 @@ static int snd_aica_remove(struct platform_device *devptr)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init snd_aica_probe(struct platform_device *devptr)
|
static int __devinit snd_aica_probe(struct platform_device *devptr)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
struct snd_card_aica *dreamcastcard;
|
struct snd_card_aica *dreamcastcard;
|
||||||
@@ -651,7 +651,7 @@ static int __init snd_aica_probe(struct platform_device *devptr)
|
|||||||
|
|
||||||
static struct platform_driver snd_aica_driver = {
|
static struct platform_driver snd_aica_driver = {
|
||||||
.probe = snd_aica_probe,
|
.probe = snd_aica_probe,
|
||||||
.remove = snd_aica_remove,
|
.remove = __devexit_p(snd_aica_remove),
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = SND_AICA_DRIVER},
|
.name = SND_AICA_DRIVER},
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user