Merge tag 'arc-5.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc
[linux-2.6-microblaze.git] / sound / drivers / aloop.c
index 80b814b..9b4a7cd 100644 (file)
@@ -1712,8 +1712,8 @@ static int loopback_probe(struct platform_device *devptr)
        int dev = devptr->id;
        int err;
 
-       err = snd_card_new(&devptr->dev, index[dev], id[dev], THIS_MODULE,
-                          sizeof(struct loopback), &card);
+       err = snd_devm_card_new(&devptr->dev, index[dev], id[dev], THIS_MODULE,
+                               sizeof(struct loopback), &card);
        if (err < 0)
                return err;
        loopback = card->private_data;
@@ -1730,13 +1730,13 @@ static int loopback_probe(struct platform_device *devptr)
 
        err = loopback_pcm_new(loopback, 0, pcm_substreams[dev]);
        if (err < 0)
-               goto __nodev;
+               return err;
        err = loopback_pcm_new(loopback, 1, pcm_substreams[dev]);
        if (err < 0)
-               goto __nodev;
+               return err;
        err = loopback_mixer_new(loopback, pcm_notify[dev] ? 1 : 0);
        if (err < 0)
-               goto __nodev;
+               return err;
        loopback_cable_proc_new(loopback, 0);
        loopback_cable_proc_new(loopback, 1);
        loopback_timer_source_proc_new(loopback);
@@ -1744,18 +1744,9 @@ static int loopback_probe(struct platform_device *devptr)
        strcpy(card->shortname, "Loopback");
        sprintf(card->longname, "Loopback %i", dev + 1);
        err = snd_card_register(card);
-       if (!err) {
-               platform_set_drvdata(devptr, card);
-               return 0;
-       }
-      __nodev:
-       snd_card_free(card);
-       return err;
-}
-
-static int loopback_remove(struct platform_device *devptr)
-{
-       snd_card_free(platform_get_drvdata(devptr));
+       if (err < 0)
+               return err;
+       platform_set_drvdata(devptr, card);
        return 0;
 }
 
@@ -1786,7 +1777,6 @@ static SIMPLE_DEV_PM_OPS(loopback_pm, loopback_suspend, loopback_resume);
 
 static struct platform_driver loopback_driver = {
        .probe          = loopback_probe,
-       .remove         = loopback_remove,
        .driver         = {
                .name   = SND_LOOPBACK_DRIVER,
                .pm     = LOOPBACK_PM_OPS,