Don't use __init but __devinit to define probe function. A pointer to sa11xx_uda1341_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_SA11XX_UDA1341=m the following probably oopses: echo -n sa11xx_uda1341.1 > /sys/bus/platform/driver/sa11xx_uda1341/unbind echo -n sa11xx_uda1341.1 > /sys/bus/platform/driver/sa11xx_uda1341/bind Signed-off-by: Uwe Kleine-König <ukleinek@xxxxxxxxxxxxxxxxxxxxxxxxxx> Cc: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx> Cc: Jaroslav Kysela <perex@xxxxxxxx> Cc: Brian Avery <b.avery@xxxxxx> Cc: alsa-devel@xxxxxxxxxxxxxxxx Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- Hello, uups, I forgot to add the right cc:. Sorry. @Andrew, I have a few more patches of this type pending. Is it OK for you if they go via you? This would ease the process a bit for me. Uwe sound/arm/sa11xx-uda1341.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/sound/arm/sa11xx-uda1341.c b/sound/arm/sa11xx-uda1341.c index b9c51bf..da25b41 100644 --- a/sound/arm/sa11xx-uda1341.c +++ b/sound/arm/sa11xx-uda1341.c @@ -879,7 +879,7 @@ void snd_sa11xx_uda1341_free(struct snd_card *card) audio_dma_free(&chip->s[SNDRV_PCM_STREAM_CAPTURE]); } -static int __init sa11xx_uda1341_probe(struct platform_device *devptr) +static int __devinit sa11xx_uda1341_probe(struct platform_device *devptr) { int err; struct snd_card *card; -- tg: (7686ad5..) t/sectionfixes/sa11xx_uda1341 (depends on: t/sectionfixes/sa11xx_uda1341) -- Uwe Kleine-König http://www.google.com/search?q=1+electron+mass%3D _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel