Commit ed539fc3 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: virmidi: Allocate resources with device-managed APIs

This patch converts the card object management with devres as a clean
up.  The remove callback gets reduced by that.

This should give no user-visible functional changes.

Link: https://lore.kernel.org/r/20210715075941.23332-74-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 854577ac
...@@ -75,8 +75,8 @@ static int snd_virmidi_probe(struct platform_device *devptr) ...@@ -75,8 +75,8 @@ static int snd_virmidi_probe(struct platform_device *devptr)
int idx, err; int idx, err;
int dev = devptr->id; int dev = devptr->id;
err = snd_card_new(&devptr->dev, index[dev], id[dev], THIS_MODULE, err = snd_devm_card_new(&devptr->dev, index[dev], id[dev], THIS_MODULE,
sizeof(struct snd_card_virmidi), &card); sizeof(struct snd_card_virmidi), &card);
if (err < 0) if (err < 0)
return err; return err;
vmidi = card->private_data; vmidi = card->private_data;
...@@ -94,7 +94,7 @@ static int snd_virmidi_probe(struct platform_device *devptr) ...@@ -94,7 +94,7 @@ static int snd_virmidi_probe(struct platform_device *devptr)
err = snd_virmidi_new(card, idx, &rmidi); err = snd_virmidi_new(card, idx, &rmidi);
if (err < 0) if (err < 0)
goto __nodev; return err;
rdev = rmidi->private_data; rdev = rmidi->private_data;
vmidi->midi[idx] = rmidi; vmidi->midi[idx] = rmidi;
strcpy(rmidi->name, "Virtual Raw MIDI"); strcpy(rmidi->name, "Virtual Raw MIDI");
...@@ -106,18 +106,10 @@ static int snd_virmidi_probe(struct platform_device *devptr) ...@@ -106,18 +106,10 @@ static int snd_virmidi_probe(struct platform_device *devptr)
sprintf(card->longname, "Virtual MIDI Card %i", dev + 1); sprintf(card->longname, "Virtual MIDI Card %i", dev + 1);
err = snd_card_register(card); err = snd_card_register(card);
if (!err) { if (err)
platform_set_drvdata(devptr, card); return err;
return 0;
}
__nodev:
snd_card_free(card);
return err;
}
static int snd_virmidi_remove(struct platform_device *devptr) platform_set_drvdata(devptr, card);
{
snd_card_free(platform_get_drvdata(devptr));
return 0; return 0;
} }
...@@ -125,7 +117,6 @@ static int snd_virmidi_remove(struct platform_device *devptr) ...@@ -125,7 +117,6 @@ static int snd_virmidi_remove(struct platform_device *devptr)
static struct platform_driver snd_virmidi_driver = { static struct platform_driver snd_virmidi_driver = {
.probe = snd_virmidi_probe, .probe = snd_virmidi_probe,
.remove = snd_virmidi_remove,
.driver = { .driver = {
.name = SND_VIRMIDI_DRIVER, .name = SND_VIRMIDI_DRIVER,
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment