aboutsummaryrefslogtreecommitdiffstats
path: root/sound/isa/es1688/es1688.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/isa/es1688/es1688.c')
-rw-r--r--sound/isa/es1688/es1688.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/sound/isa/es1688/es1688.c b/sound/isa/es1688/es1688.c
index 2b69fc829265..e90689ee162f 100644
--- a/sound/isa/es1688/es1688.c
+++ b/sound/isa/es1688/es1688.c
@@ -213,9 +213,11 @@ static int __init alsa_card_es1688_init(void)
213 continue; 213 continue;
214 device = platform_device_register_simple(ES1688_DRIVER, 214 device = platform_device_register_simple(ES1688_DRIVER,
215 i, NULL, 0); 215 i, NULL, 0);
216 if (IS_ERR(device)) { 216 if (IS_ERR(device))
217 err = PTR_ERR(device); 217 continue;
218 goto errout; 218 if (!platform_get_drvdata(device)) {
219 platform_device_unregister(device);
220 continue;
219 } 221 }
220 devices[i] = device; 222 devices[i] = device;
221 cards++; 223 cards++;
@@ -224,14 +226,10 @@ static int __init alsa_card_es1688_init(void)
224#ifdef MODULE 226#ifdef MODULE
225 printk(KERN_ERR "ESS AudioDrive ES1688 soundcard not found or device busy\n"); 227 printk(KERN_ERR "ESS AudioDrive ES1688 soundcard not found or device busy\n");
226#endif 228#endif
227 err = -ENODEV; 229 snd_es1688_unregister_all();
228 goto errout; 230 return -ENODEV;
229 } 231 }
230 return 0; 232 return 0;
231
232 errout:
233 snd_es1688_unregister_all();
234 return err;
235} 233}
236 234
237static void __exit alsa_card_es1688_exit(void) 235static void __exit alsa_card_es1688_exit(void)