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

[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
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -984,11 +984,15 @@ static int __init sa11xx_uda1341_init(void)
	if ((err = platform_driver_register(&sa11xx_uda1341_driver)) < 0)
		return err;
	device = platform_device_register_simple(SA11XX_UDA1341_DRIVER, -1, NULL, 0);
	if (IS_ERR(device)) {
		platform_driver_unregister(&sa11xx_uda1341_driver);
		return PTR_ERR(device);
	}
	if (!IS_ERR(device)) {
		if (platform_get_drvdata(device))
			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)
+4 −0
Original line number Diff line number Diff line
@@ -677,6 +677,10 @@ static int __init alsa_card_dummy_init(void)
							 i, NULL, 0);
		if (IS_ERR(device))
			continue;
		if (!platform_get_drvdata(device)) {
			platform_device_unregister(device);
			continue;
		}
		devices[i] = device;
		cards++;
	}
+4 −0
Original line number Diff line number Diff line
@@ -253,6 +253,10 @@ static int __init alsa_card_mpu401_init(void)
							 i, NULL, 0);
		if (IS_ERR(device))
			continue;
		if (!platform_get_drvdata(device)) {
			platform_device_unregister(device);
			continue;
		}
		platform_devices[i] = device;
		snd_mpu401_devices++;
	}
+9 −5
Original line number Diff line number Diff line
@@ -770,11 +770,15 @@ static int __init alsa_card_mtpav_init(void)
		return err;

	device = platform_device_register_simple(SND_MTPAV_DRIVER, -1, NULL, 0);
	if (IS_ERR(device)) {
		platform_driver_unregister(&snd_mtpav_driver);
		return PTR_ERR(device);
	}
	if (!IS_ERR(device)) {
		if (platform_get_drvdata(device))
			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)
+4 −0
Original line number Diff line number Diff line
@@ -998,6 +998,10 @@ static int __init alsa_card_serial_init(void)
							 i, NULL, 0);
		if (IS_ERR(device))
			continue;
		if (!platform_get_drvdata(device)) {
			platform_device_unregister(device);
			continue;
		}
		devices[i] = device;
		cards++;
	}
Loading