Skip to content

Commit

Permalink
[ALSA] unregister platform device again if probe was unsuccessful
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
  • Loading branch information
Rene Herman authored and Jaroslav Kysela committed Jun 22, 2006
1 parent 79ca4f3 commit 7152447
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 15 deletions.
14 changes: 9 additions & 5 deletions sound/arm/sa11xx-uda1341.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
return 0;
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)
Expand Down
4 changes: 4 additions & 0 deletions sound/drivers/dummy.c
Original file line number Diff line number Diff line change
Expand Up @@ -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++;
}
Expand Down
4 changes: 4 additions & 0 deletions sound/drivers/mpu401/mpu401.c
Original file line number Diff line number Diff line change
Expand Up @@ -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++;
}
Expand Down
14 changes: 9 additions & 5 deletions sound/drivers/mtpav.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
return 0;
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)
Expand Down
4 changes: 4 additions & 0 deletions sound/drivers/serial-u16550.c
Original file line number Diff line number Diff line change
Expand Up @@ -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++;
}
Expand Down
4 changes: 4 additions & 0 deletions sound/drivers/virmidi.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,10 @@ static int __init alsa_card_virmidi_init(void)
i, NULL, 0);
if (IS_ERR(device))
continue;
if (!platform_get_drvdata(device)) {
platform_device_unregister(device);
continue;
}
devices[i] = device;
cards++;
}
Expand Down
14 changes: 9 additions & 5 deletions sound/ppc/powermac.c
Original file line number Diff line number Diff line change
Expand Up @@ -188,11 +188,15 @@ static int __init alsa_card_pmac_init(void)
if ((err = platform_driver_register(&snd_pmac_driver)) < 0)
return err;
device = platform_device_register_simple(SND_PMAC_DRIVER, -1, NULL, 0);
if (IS_ERR(device)) {
platform_driver_unregister(&snd_pmac_driver);
return PTR_ERR(device);
}
return 0;
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_pmac_driver);
return err;

}

Expand Down

0 comments on commit 7152447

Please sign in to comment.