ALSA: aloop: Allocate resources with device-managed APIs

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>
This commit is contained in:
Takashi Iwai 2021-07-15 09:59:39 +02:00
Родитель de74763295
Коммит b072e65aad
1 изменённых файлов: 8 добавлений и 18 удалений

Просмотреть файл

@ -1712,8 +1712,8 @@ static int loopback_probe(struct platform_device *devptr)
int dev = devptr->id; int dev = devptr->id;
int err; int err;
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 loopback), &card); sizeof(struct loopback), &card);
if (err < 0) if (err < 0)
return err; return err;
loopback = card->private_data; 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]); err = loopback_pcm_new(loopback, 0, pcm_substreams[dev]);
if (err < 0) if (err < 0)
goto __nodev; return err;
err = loopback_pcm_new(loopback, 1, pcm_substreams[dev]); err = loopback_pcm_new(loopback, 1, pcm_substreams[dev]);
if (err < 0) if (err < 0)
goto __nodev; return err;
err = loopback_mixer_new(loopback, pcm_notify[dev] ? 1 : 0); err = loopback_mixer_new(loopback, pcm_notify[dev] ? 1 : 0);
if (err < 0) if (err < 0)
goto __nodev; return err;
loopback_cable_proc_new(loopback, 0); loopback_cable_proc_new(loopback, 0);
loopback_cable_proc_new(loopback, 1); loopback_cable_proc_new(loopback, 1);
loopback_timer_source_proc_new(loopback); loopback_timer_source_proc_new(loopback);
@ -1744,18 +1744,9 @@ static int loopback_probe(struct platform_device *devptr)
strcpy(card->shortname, "Loopback"); strcpy(card->shortname, "Loopback");
sprintf(card->longname, "Loopback %i", dev + 1); sprintf(card->longname, "Loopback %i", dev + 1);
err = snd_card_register(card); err = snd_card_register(card);
if (!err) { if (err < 0)
platform_set_drvdata(devptr, card); return err;
return 0; platform_set_drvdata(devptr, card);
}
__nodev:
snd_card_free(card);
return err;
}
static int loopback_remove(struct platform_device *devptr)
{
snd_card_free(platform_get_drvdata(devptr));
return 0; return 0;
} }
@ -1786,7 +1777,6 @@ static SIMPLE_DEV_PM_OPS(loopback_pm, loopback_suspend, loopback_resume);
static struct platform_driver loopback_driver = { static struct platform_driver loopback_driver = {
.probe = loopback_probe, .probe = loopback_probe,
.remove = loopback_remove,
.driver = { .driver = {
.name = SND_LOOPBACK_DRIVER, .name = SND_LOOPBACK_DRIVER,
.pm = LOOPBACK_PM_OPS, .pm = LOOPBACK_PM_OPS,