Merge branch 'topic/snd_card_new-err' into topic/cs423x-merge
[linux-2.6.git] / sound / isa / gus / interwave.c
index 418d49e..534a6ec 100644 (file)
@@ -628,20 +628,22 @@ static void snd_interwave_free(struct snd_card *card)
                free_irq(iwcard->irq, (void *)iwcard);
 }
 
-static struct snd_card *snd_interwave_card_new(int dev)
+static int snd_interwave_card_new(int dev, struct snd_card **cardp)
 {
        struct snd_card *card;
        struct snd_interwave *iwcard;
+       int err;
 
-       card = snd_card_new(index[dev], id[dev], THIS_MODULE,
-                           sizeof(struct snd_interwave));
-       if (card == NULL)
-               return NULL;
+       err = snd_card_create(index[dev], id[dev], THIS_MODULE,
+                             sizeof(struct snd_interwave), &card);
+       if (err < 0)
+               return err;
        iwcard = card->private_data;
        iwcard->card = card;
        iwcard->irq = -1;
        card->private_free = snd_interwave_free;
-       return card;
+       *cardp = card;
+       return 0;
 }
 
 static int __devinit snd_interwave_probe(struct snd_card *card, int dev)
@@ -780,9 +782,9 @@ static int __devinit snd_interwave_isa_probe1(int dev, struct device *devptr)
        struct snd_card *card;
        int err;
 
-       card = snd_interwave_card_new(dev);
-       if (! card)
-               return -ENOMEM;
+       err = snd_interwave_card_new(dev, &card);
+       if (err < 0)
+               return err;
 
        snd_card_set_dev(card, devptr);
        if ((err = snd_interwave_probe(card, dev)) < 0) {
@@ -878,9 +880,9 @@ static int __devinit snd_interwave_pnp_detect(struct pnp_card_link *pcard,
        if (dev >= SNDRV_CARDS)
                return -ENODEV;
                                
-       card = snd_interwave_card_new(dev);
-       if (! card)
-               return -ENOMEM;
+       res = snd_interwave_card_new(dev, &card);
+       if (res < 0)
+               return res;
 
        if ((res = snd_interwave_pnp(dev, card->private_data, pcard, pid)) < 0) {
                snd_card_free(card);