diff options
author | Rene Herman <rene.herman@keyaccess.nl> | 2006-04-13 06:58:06 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-06-22 15:32:42 -0400 |
commit | 7152447df98b3981d621224be947a2c8d77aed06 (patch) | |
tree | 33419b17c13ee13c757c2d2fff9a09d47cc01af6 | |
parent | 79ca4f3f625e14212310f953b096e2e45110ac6b (diff) |
[ALSA] unregister platform device again if probe was unsuccessful
This second one unregisters the platform device again when the probe is
unsuccesful for sound/drivers, sound/arm/sa11xx-uda1341.c and
sound/ppc/powermac.c. This gets them all.
Signed-off-by: Rene Herman <rene.herman@keyaccess.nl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/arm/sa11xx-uda1341.c | 14 | ||||
-rw-r--r-- | sound/drivers/dummy.c | 4 | ||||
-rw-r--r-- | sound/drivers/mpu401/mpu401.c | 4 | ||||
-rw-r--r-- | sound/drivers/mtpav.c | 14 | ||||
-rw-r--r-- | sound/drivers/serial-u16550.c | 4 | ||||
-rw-r--r-- | sound/drivers/virmidi.c | 4 | ||||
-rw-r--r-- | sound/ppc/powermac.c | 14 |
7 files changed, 43 insertions, 15 deletions
diff --git a/sound/arm/sa11xx-uda1341.c b/sound/arm/sa11xx-uda1341.c index 13057d92f08a..9211348824a7 100644 --- a/sound/arm/sa11xx-uda1341.c +++ b/sound/arm/sa11xx-uda1341.c | |||
@@ -984,11 +984,15 @@ static int __init sa11xx_uda1341_init(void) | |||
984 | if ((err = platform_driver_register(&sa11xx_uda1341_driver)) < 0) | 984 | if ((err = platform_driver_register(&sa11xx_uda1341_driver)) < 0) |
985 | return err; | 985 | return err; |
986 | device = platform_device_register_simple(SA11XX_UDA1341_DRIVER, -1, NULL, 0); | 986 | device = platform_device_register_simple(SA11XX_UDA1341_DRIVER, -1, NULL, 0); |
987 | if (IS_ERR(device)) { | 987 | if (!IS_ERR(device)) { |
988 | platform_driver_unregister(&sa11xx_uda1341_driver); | 988 | if (platform_get_drvdata(device)) |
989 | return PTR_ERR(device); | 989 | return 0; |
990 | } | 990 | platform_device_unregister(device); |
991 | return 0; | 991 | err = -ENODEV |
992 | } else | ||
993 | err = PTR_ERR(device); | ||
994 | platform_driver_unregister(&sa11xx_uda1341_driver); | ||
995 | return err; | ||
992 | } | 996 | } |
993 | 997 | ||
994 | static void __exit sa11xx_uda1341_exit(void) | 998 | static void __exit sa11xx_uda1341_exit(void) |
diff --git a/sound/drivers/dummy.c b/sound/drivers/dummy.c index ae0df549fac7..ffeafaf2ecca 100644 --- a/sound/drivers/dummy.c +++ b/sound/drivers/dummy.c | |||
@@ -677,6 +677,10 @@ static int __init alsa_card_dummy_init(void) | |||
677 | i, NULL, 0); | 677 | i, NULL, 0); |
678 | if (IS_ERR(device)) | 678 | if (IS_ERR(device)) |
679 | continue; | 679 | continue; |
680 | if (!platform_get_drvdata(device)) { | ||
681 | platform_device_unregister(device); | ||
682 | continue; | ||
683 | } | ||
680 | devices[i] = device; | 684 | devices[i] = device; |
681 | cards++; | 685 | cards++; |
682 | } | 686 | } |
diff --git a/sound/drivers/mpu401/mpu401.c b/sound/drivers/mpu401/mpu401.c index 77b06009735d..d3cbbb047582 100644 --- a/sound/drivers/mpu401/mpu401.c +++ b/sound/drivers/mpu401/mpu401.c | |||
@@ -253,6 +253,10 @@ static int __init alsa_card_mpu401_init(void) | |||
253 | i, NULL, 0); | 253 | i, NULL, 0); |
254 | if (IS_ERR(device)) | 254 | if (IS_ERR(device)) |
255 | continue; | 255 | continue; |
256 | if (!platform_get_drvdata(device)) { | ||
257 | platform_device_unregister(device); | ||
258 | continue; | ||
259 | } | ||
256 | platform_devices[i] = device; | 260 | platform_devices[i] = device; |
257 | snd_mpu401_devices++; | 261 | snd_mpu401_devices++; |
258 | } | 262 | } |
diff --git a/sound/drivers/mtpav.c b/sound/drivers/mtpav.c index b7a0b42813e1..474eed06e70f 100644 --- a/sound/drivers/mtpav.c +++ b/sound/drivers/mtpav.c | |||
@@ -770,11 +770,15 @@ static int __init alsa_card_mtpav_init(void) | |||
770 | return err; | 770 | return err; |
771 | 771 | ||
772 | device = platform_device_register_simple(SND_MTPAV_DRIVER, -1, NULL, 0); | 772 | device = platform_device_register_simple(SND_MTPAV_DRIVER, -1, NULL, 0); |
773 | if (IS_ERR(device)) { | 773 | if (!IS_ERR(device)) { |
774 | platform_driver_unregister(&snd_mtpav_driver); | 774 | if (platform_get_drvdata(device)) |
775 | return PTR_ERR(device); | 775 | return 0; |
776 | } | 776 | platform_device_unregister(device); |
777 | return 0; | 777 | err = -ENODEV; |
778 | } else | ||
779 | err = PTR_ERR(device); | ||
780 | platform_driver_unregister(&snd_mtpav_driver); | ||
781 | return err; | ||
778 | } | 782 | } |
779 | 783 | ||
780 | static void __exit alsa_card_mtpav_exit(void) | 784 | static void __exit alsa_card_mtpav_exit(void) |
diff --git a/sound/drivers/serial-u16550.c b/sound/drivers/serial-u16550.c index c01b4c5118b9..2330fec505da 100644 --- a/sound/drivers/serial-u16550.c +++ b/sound/drivers/serial-u16550.c | |||
@@ -998,6 +998,10 @@ static int __init alsa_card_serial_init(void) | |||
998 | i, NULL, 0); | 998 | i, NULL, 0); |
999 | if (IS_ERR(device)) | 999 | if (IS_ERR(device)) |
1000 | continue; | 1000 | continue; |
1001 | if (!platform_get_drvdata(device)) { | ||
1002 | platform_device_unregister(device); | ||
1003 | continue; | ||
1004 | } | ||
1001 | devices[i] = device; | 1005 | devices[i] = device; |
1002 | cards++; | 1006 | cards++; |
1003 | } | 1007 | } |
diff --git a/sound/drivers/virmidi.c b/sound/drivers/virmidi.c index 26eb2499d442..59171f8200df 100644 --- a/sound/drivers/virmidi.c +++ b/sound/drivers/virmidi.c | |||
@@ -171,6 +171,10 @@ static int __init alsa_card_virmidi_init(void) | |||
171 | i, NULL, 0); | 171 | i, NULL, 0); |
172 | if (IS_ERR(device)) | 172 | if (IS_ERR(device)) |
173 | continue; | 173 | continue; |
174 | if (!platform_get_drvdata(device)) { | ||
175 | platform_device_unregister(device); | ||
176 | continue; | ||
177 | } | ||
174 | devices[i] = device; | 178 | devices[i] = device; |
175 | cards++; | 179 | cards++; |
176 | } | 180 | } |
diff --git a/sound/ppc/powermac.c b/sound/ppc/powermac.c index f4902a219e50..875f1f7bdc58 100644 --- a/sound/ppc/powermac.c +++ b/sound/ppc/powermac.c | |||
@@ -188,11 +188,15 @@ static int __init alsa_card_pmac_init(void) | |||
188 | if ((err = platform_driver_register(&snd_pmac_driver)) < 0) | 188 | if ((err = platform_driver_register(&snd_pmac_driver)) < 0) |
189 | return err; | 189 | return err; |
190 | device = platform_device_register_simple(SND_PMAC_DRIVER, -1, NULL, 0); | 190 | device = platform_device_register_simple(SND_PMAC_DRIVER, -1, NULL, 0); |
191 | if (IS_ERR(device)) { | 191 | if (!IS_ERR(device)) { |
192 | platform_driver_unregister(&snd_pmac_driver); | 192 | if (platform_get_drvdata(device)) |
193 | return PTR_ERR(device); | 193 | return 0; |
194 | } | 194 | platform_device_unregister(device); |
195 | return 0; | 195 | err = -ENODEV; |
196 | } else | ||
197 | err = PTR_ERR(device); | ||
198 | platform_driver_unregister(&snd_pmac_driver); | ||
199 | return err; | ||
196 | 200 | ||
197 | } | 201 | } |
198 | 202 | ||