X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=sound%2Fisa%2Fcmi8330.c;h=3c1e9fd56fe00143e3c1a26ca81c5acc9affa4e8;hb=dbe1ab9514c231c9b062140a107d9dea0eabefcc;hp=fa63048a8b9d75960a7ec13a030d0b6b7abcf0a8;hpb=bac30d1a78d0f11c613968fc8b351a91ed465386;p=~andy%2Flinux diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c index fa63048a8b9..3c1e9fd56fe 100644 --- a/sound/isa/cmi8330.c +++ b/sound/isa/cmi8330.c @@ -693,15 +693,17 @@ static int __init alsa_card_cmi8330_init(void) if ((err = platform_driver_register(&snd_cmi8330_driver)) < 0) return err; - for (i = 0; i < SNDRV_CARDS && enable[i]; i++) { + for (i = 0; i < SNDRV_CARDS; i++) { struct platform_device *device; - if (is_isapnp_selected(i)) + if (! enable[i] || is_isapnp_selected(i)) continue; device = platform_device_register_simple(CMI8330_DRIVER, i, NULL, 0); - if (IS_ERR(device)) { - err = PTR_ERR(device); - goto errout; + if (IS_ERR(device)) + continue; + if (!platform_get_drvdata(device)) { + platform_device_unregister(device); + continue; } platform_devices[i] = device; cards++; @@ -719,14 +721,10 @@ static int __init alsa_card_cmi8330_init(void) #ifdef MODULE snd_printk(KERN_ERR "CMI8330 not found or device busy\n"); #endif - err = -ENODEV; - goto errout; + snd_cmi8330_unregister_all(); + return -ENODEV; } return 0; - - errout: - snd_cmi8330_unregister_all(); - return err; } static void __exit alsa_card_cmi8330_exit(void)