dreamcastcard = kmalloc(sizeof(struct snd_card_aica), GFP_KERNEL);
        if (unlikely(!dreamcastcard))
                return -ENOMEM;
-       err = snd_card_create(index, SND_AICA_DRIVER, THIS_MODULE, 0,
-                             &dreamcastcard->card);
+       err = snd_card_new(&devptr->dev, index, SND_AICA_DRIVER,
+                          THIS_MODULE, 0, &dreamcastcard->card);
        if (unlikely(err < 0)) {
                kfree(dreamcastcard);
                return err;
        err = snd_aicapcmchip(dreamcastcard, 0);
        if (unlikely(err < 0))
                goto freedreamcast;
-       snd_card_set_dev(dreamcastcard->card, &devptr->dev);
        dreamcastcard->timer.data = 0;
        dreamcastcard->channel = NULL;
        /* Add basic controls */
 
        struct snd_card *card;
        int err;
 
-       err = snd_card_create(index, id, THIS_MODULE, 0, &card);
+       err = snd_card_new(&devptr->dev, index, id, THIS_MODULE, 0, &card);
        if (err < 0) {
                        snd_printk(KERN_ERR "cannot allocate the card\n");
                        return err;