Also remove superfluous snd_card_set_dev() calls.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
        int dev = devptr->id;
        int err;
 
-       err = snd_card_create(index[dev], id[dev], THIS_MODULE,
-                             sizeof(struct loopback), &card);
+       err = snd_card_new(&devptr->dev, index[dev], id[dev], THIS_MODULE,
+                          sizeof(struct loopback), &card);
        if (err < 0)
                return err;
        loopback = card->private_data;
 
        int idx, err;
        int dev = devptr->id;
 
-       err = snd_card_create(index[dev], id[dev], THIS_MODULE,
-                             sizeof(struct snd_dummy), &card);
+       err = snd_card_new(&devptr->dev, index[dev], id[dev], THIS_MODULE,
+                          sizeof(struct snd_dummy), &card);
        if (err < 0)
                return err;
        dummy = card->private_data;
 
        dummy_proc_init(dummy);
 
-       snd_card_set_dev(card, &devptr->dev);
-
        err = snd_card_register(card);
        if (err == 0) {
                platform_set_drvdata(devptr, card);
 
        if (!enable[dev])
                return -ENOENT;
 
-       err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
+       err = snd_card_new(&pfdev->dev, index[dev], id[dev], THIS_MODULE,
+                          0, &card);
        if (err < 0)
                return err;
        err = snd_ml403_ac97cr_create(card, pfdev, &ml403_ac97cr);
                (unsigned long)ml403_ac97cr->port, ml403_ac97cr->irq,
                ml403_ac97cr->capture_irq, dev + 1);
 
-       snd_card_set_dev(card, &pfdev->dev);
-
        err = snd_card_register(card);
        if (err < 0) {
                snd_card_free(card);
 
 static int pnp_registered;
 static unsigned int snd_mpu401_devices;
 
-static int snd_mpu401_create(int dev, struct snd_card **rcard)
+static int snd_mpu401_create(struct device *devptr, int dev,
+                            struct snd_card **rcard)
 {
        struct snd_card *card;
        int err;
                snd_printk(KERN_ERR "the uart_enter option is obsolete; remove it\n");
 
        *rcard = NULL;
-       err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
+       err = snd_card_new(devptr, index[dev], id[dev], THIS_MODULE,
+                          0, &card);
        if (err < 0)
                return err;
        strcpy(card->driver, "MPU-401 UART");
                snd_printk(KERN_ERR "specify or disable IRQ\n");
                return -EINVAL;
        }
-       err = snd_mpu401_create(dev, &card);
+       err = snd_mpu401_create(&devptr->dev, dev, &card);
        if (err < 0)
                return err;
-       snd_card_set_dev(card, &devptr->dev);
        if ((err = snd_card_register(card)) < 0) {
                snd_card_free(card);
                return err;
                err = snd_mpu401_pnp(dev, pnp_dev, id);
                if (err < 0)
                        return err;
-               err = snd_mpu401_create(dev, &card);
+               err = snd_mpu401_create(&pnp_dev->dev, dev, &card);
                if (err < 0)
                        return err;
                if ((err = snd_card_register(card)) < 0) {
                        snd_card_free(card);
                        return err;
                }
-               snd_card_set_dev(card, &pnp_dev->dev);
                pnp_set_drvdata(pnp_dev, card);
                snd_mpu401_devices++;
                ++dev;
 
        int err;
        struct mtpav *mtp_card;
 
-       err = snd_card_create(index, id, THIS_MODULE, sizeof(*mtp_card), &card);
+       err = snd_card_new(&dev->dev, index, id, THIS_MODULE,
+                          sizeof(*mtp_card), &card);
        if (err < 0)
                return err;
 
 
        snd_mtpav_portscan(mtp_card);
 
-       snd_card_set_dev(card, &dev->dev);
        err = snd_card_register(mtp_card->card);
        if (err < 0)
                goto __error;
 
        if ((err = snd_mts64_probe_port(p)) < 0)
                return err;
 
-       err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
+       err = snd_card_new(&pdev->dev, index[dev], id[dev], THIS_MODULE,
+                          0, &card);
        if (err < 0) {
                snd_printd("Cannot create card\n");
                return err;
 
        platform_set_drvdata(pdev, card);
 
-       snd_card_set_dev(card, &pdev->dev);
-
        /* At this point card will be usable */
        if ((err = snd_card_register(card)) < 0) {
                snd_printd("Cannot register card\n");
 
        hrtimer_init(&pcsp_chip.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
        pcsp_chip.timer.function = pcsp_do_timer;
 
-       err = snd_card_create(index, id, THIS_MODULE, 0, &card);
+       err = snd_card_new(dev, index, id, THIS_MODULE, 0, &card);
        if (err < 0)
                return err;
 
                return err;
        }
 
-       snd_card_set_dev(pcsp_chip.card, dev);
-
        strcpy(card->driver, "PC-Speaker");
        strcpy(card->shortname, "pcsp");
        sprintf(card->longname, "Internal PC-Speaker at port 0x%x",
 
        if ((err = snd_portman_probe_port(p)) < 0)
                return err;
 
-       err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
+       err = snd_card_new(&pdev->dev, index[dev], id[dev], THIS_MODULE,
+                          0, &card);
        if (err < 0) {
                snd_printd("Cannot create card\n");
                return err;
 
        platform_set_drvdata(pdev, card);
 
-       snd_card_set_dev(card, &pdev->dev);
-
        /* At this point card will be usable */
        if ((err = snd_card_register(card)) < 0) {
                snd_printd("Cannot register card\n");
 
                return -ENODEV;
        }
 
-       err  = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
+       err  = snd_card_new(&devptr->dev, index[dev], id[dev], THIS_MODULE,
+                           0, &card);
        if (err < 0)
                return err;
 
                uart->base,
                uart->irq);
 
-       snd_card_set_dev(card, &devptr->dev);
-
        if ((err = snd_card_register(card)) < 0)
                goto _err;
 
 
        int idx, err;
        int dev = devptr->id;
 
-       err = snd_card_create(index[dev], id[dev], THIS_MODULE,
-                             sizeof(struct snd_card_virmidi), &card);
+       err = snd_card_new(&devptr->dev, index[dev], id[dev], THIS_MODULE,
+                          sizeof(struct snd_card_virmidi), &card);
        if (err < 0)
                return err;
        vmidi = card->private_data;
        strcpy(card->shortname, "VirMIDI");
        sprintf(card->longname, "Virtual MIDI Card %i", dev + 1);
 
-       snd_card_set_dev(card, &devptr->dev);
-
        if ((err = snd_card_register(card)) == 0) {
                platform_set_drvdata(devptr, card);
                return 0;