Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6
[sfrench/cifs-2.6.git] / sound / isa / sscape.c
index 48e5552d34448bc562257a62613907469eedaac1..b1f25823c652cb8708226d1e38cac5eae86cdd61 100644 (file)
@@ -897,11 +897,10 @@ static int __devinit create_mpu401(struct snd_card *card, int devnum, unsigned l
        struct snd_rawmidi *rawmidi;
        int err;
 
-#define MPU401_SHARE_HARDWARE  1
        if ((err = snd_mpu401_uart_new(card, devnum,
                                       MPU401_HW_MPU401,
-                                      port, MPU401_SHARE_HARDWARE,
-                                      irq, SA_INTERRUPT,
+                                      port, MPU401_INFO_INTEGRATED,
+                                      irq, IRQF_DISABLED,
                                       &rawmidi)) == 0) {
                struct snd_mpu401 *mpu = (struct snd_mpu401 *) rawmidi->private_data;
                mpu->open_input = mpu401_open;
@@ -1427,8 +1426,8 @@ static int __init sscape_manual_probe(void)
                    dma[i] == SNDRV_AUTO_DMA) {
                        printk(KERN_INFO
                               "sscape: insufficient parameters, need IO, IRQ, MPU-IRQ and DMA\n");
-                       ret = -ENXIO;
-                       goto errout;
+                       sscape_unregister_all();
+                       return -ENXIO;
                }
 
                /*
@@ -1436,17 +1435,15 @@ static int __init sscape_manual_probe(void)
                 */
                device = platform_device_register_simple(SSCAPE_DRIVER,
                                                         i, NULL, 0);
-               if (IS_ERR(device)) {
-                       ret = PTR_ERR(device);
-                       goto errout;
+               if (IS_ERR(device))
+                       continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
                }
                platform_devices[i] = device;
        }
        return 0;
-
- errout:
-       sscape_unregister_all();
-       return ret;
 }
 
 static void sscape_exit(void)