Commit 7152447d authored by Rene Herman's avatar Rene Herman Committed by Jaroslav Kysela

[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: default avatarRene Herman <rene.herman@keyaccess.nl>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 79ca4f3f
...@@ -984,11 +984,15 @@ static int __init sa11xx_uda1341_init(void) ...@@ -984,11 +984,15 @@ static int __init sa11xx_uda1341_init(void)
if ((err = platform_driver_register(&sa11xx_uda1341_driver)) < 0) if ((err = platform_driver_register(&sa11xx_uda1341_driver)) < 0)
return err; return err;
device = platform_device_register_simple(SA11XX_UDA1341_DRIVER, -1, NULL, 0); device = platform_device_register_simple(SA11XX_UDA1341_DRIVER, -1, NULL, 0);
if (IS_ERR(device)) { if (!IS_ERR(device)) {
platform_driver_unregister(&sa11xx_uda1341_driver); if (platform_get_drvdata(device))
return PTR_ERR(device);
}
return 0; return 0;
platform_device_unregister(device);
err = -ENODEV
} else
err = PTR_ERR(device);
platform_driver_unregister(&sa11xx_uda1341_driver);
return err;
} }
static void __exit sa11xx_uda1341_exit(void) static void __exit sa11xx_uda1341_exit(void)
......
...@@ -677,6 +677,10 @@ static int __init alsa_card_dummy_init(void) ...@@ -677,6 +677,10 @@ static int __init alsa_card_dummy_init(void)
i, NULL, 0); i, NULL, 0);
if (IS_ERR(device)) if (IS_ERR(device))
continue; continue;
if (!platform_get_drvdata(device)) {
platform_device_unregister(device);
continue;
}
devices[i] = device; devices[i] = device;
cards++; cards++;
} }
......
...@@ -253,6 +253,10 @@ static int __init alsa_card_mpu401_init(void) ...@@ -253,6 +253,10 @@ static int __init alsa_card_mpu401_init(void)
i, NULL, 0); i, NULL, 0);
if (IS_ERR(device)) if (IS_ERR(device))
continue; continue;
if (!platform_get_drvdata(device)) {
platform_device_unregister(device);
continue;
}
platform_devices[i] = device; platform_devices[i] = device;
snd_mpu401_devices++; snd_mpu401_devices++;
} }
......
...@@ -770,11 +770,15 @@ static int __init alsa_card_mtpav_init(void) ...@@ -770,11 +770,15 @@ static int __init alsa_card_mtpav_init(void)
return err; return err;
device = platform_device_register_simple(SND_MTPAV_DRIVER, -1, NULL, 0); device = platform_device_register_simple(SND_MTPAV_DRIVER, -1, NULL, 0);
if (IS_ERR(device)) { if (!IS_ERR(device)) {
platform_driver_unregister(&snd_mtpav_driver); if (platform_get_drvdata(device))
return PTR_ERR(device);
}
return 0; return 0;
platform_device_unregister(device);
err = -ENODEV;
} else
err = PTR_ERR(device);
platform_driver_unregister(&snd_mtpav_driver);
return err;
} }
static void __exit alsa_card_mtpav_exit(void) static void __exit alsa_card_mtpav_exit(void)
......
...@@ -998,6 +998,10 @@ static int __init alsa_card_serial_init(void) ...@@ -998,6 +998,10 @@ static int __init alsa_card_serial_init(void)
i, NULL, 0); i, NULL, 0);
if (IS_ERR(device)) if (IS_ERR(device))
continue; continue;
if (!platform_get_drvdata(device)) {
platform_device_unregister(device);
continue;
}
devices[i] = device; devices[i] = device;
cards++; cards++;
} }
......
...@@ -171,6 +171,10 @@ static int __init alsa_card_virmidi_init(void) ...@@ -171,6 +171,10 @@ static int __init alsa_card_virmidi_init(void)
i, NULL, 0); i, NULL, 0);
if (IS_ERR(device)) if (IS_ERR(device))
continue; continue;
if (!platform_get_drvdata(device)) {
platform_device_unregister(device);
continue;
}
devices[i] = device; devices[i] = device;
cards++; cards++;
} }
......
...@@ -188,11 +188,15 @@ static int __init alsa_card_pmac_init(void) ...@@ -188,11 +188,15 @@ static int __init alsa_card_pmac_init(void)
if ((err = platform_driver_register(&snd_pmac_driver)) < 0) if ((err = platform_driver_register(&snd_pmac_driver)) < 0)
return err; return err;
device = platform_device_register_simple(SND_PMAC_DRIVER, -1, NULL, 0); device = platform_device_register_simple(SND_PMAC_DRIVER, -1, NULL, 0);
if (IS_ERR(device)) { if (!IS_ERR(device)) {
platform_driver_unregister(&snd_pmac_driver); if (platform_get_drvdata(device))
return PTR_ERR(device);
}
return 0; return 0;
platform_device_unregister(device);
err = -ENODEV;
} else
err = PTR_ERR(device);
platform_driver_unregister(&snd_pmac_driver);
return err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment