return -ENOENT;
        }
 
-       err = snd_card_create(index[dev_num], id[dev_num], THIS_MODULE, 0,
-                             &card);
+       err = snd_card_new(&op->dev, index[dev_num], id[dev_num],
+                          THIS_MODULE, 0, &card);
        if (err < 0)
                return err;
 
 
 
 static int dev;
 
-static int cs4231_attach_begin(struct snd_card **rcard)
+static int cs4231_attach_begin(struct platform_device *op,
+                              struct snd_card **rcard)
 {
        struct snd_card *card;
        struct snd_cs4231 *chip;
                return -ENOENT;
        }
 
-       err = snd_card_create(index[dev], id[dev], THIS_MODULE,
-                             sizeof(struct snd_cs4231), &card);
+       err = snd_card_new(&op->dev, index[dev], id[dev], THIS_MODULE,
+                          sizeof(struct snd_cs4231), &card);
        if (err < 0)
                return err;
 
        struct snd_card *card;
        int err;
 
-       err = cs4231_attach_begin(&card);
+       err = cs4231_attach_begin(op, &card);
        if (err)
                return err;
 
        struct snd_card *card;
        int err;
 
-       err = cs4231_attach_begin(&card);
+       err = cs4231_attach_begin(op, &card);
        if (err)
                return err;
 
 
                return -ENODEV;
        }
 
-       err = snd_card_create(index[dev], id[dev], THIS_MODULE,
-                             sizeof(struct snd_dbri), &card);
+       err = snd_card_new(&op->dev, index[dev], id[dev], THIS_MODULE,
+                          sizeof(struct snd_dbri), &card);
        if (err < 0)
                return err;