OSDN Git Service

ALSA: aloop: Allocate resources with device-managed APIs
authorTakashi Iwai <tiwai@suse.de>
Thu, 15 Jul 2021 07:59:39 +0000 (09:59 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 19 Jul 2021 14:17:31 +0000 (16:17 +0200)
Use the new snd_devm_card_new() for the card object allocation, and
clean up the superfluous remove callback.

Link: https://lore.kernel.org/r/20210715075941.23332-78-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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,