mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
ALSA: mips: sgio2audio: Use devres card management
The sgio2audio driver's remove callback is nothing but a simple snd_card_free() call, so let's use the devres for managing the card, for simplifying the handling. Now the card is created via snd_devm_card_new() that is auto-cleaned up at probe for errors. Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20261003105719.1070427-3-tiwai@suse.de
This commit is contained in:
parent
07188c32ad
commit
10290ed901
|
|
@ -859,30 +859,24 @@ static int snd_sgio2audio_create(struct snd_card *card,
|
|||
|
||||
static int snd_sgio2audio_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct snd_card *card;
|
||||
struct snd_card *card __free(snd_card_free) = NULL;
|
||||
struct snd_sgio2audio *chip;
|
||||
int err;
|
||||
|
||||
err = snd_card_new(&pdev->dev, index, id, THIS_MODULE, 0, &card);
|
||||
err = snd_devm_card_new(&pdev->dev, index, id, THIS_MODULE, 0, &card);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
err = snd_sgio2audio_create(card, &chip);
|
||||
if (err < 0) {
|
||||
snd_card_free(card);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
err = snd_sgio2audio_new_pcm(chip);
|
||||
if (err < 0) {
|
||||
snd_card_free(card);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
err = snd_sgio2audio_new_mixer(chip);
|
||||
if (err < 0) {
|
||||
snd_card_free(card);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
strscpy(card->driver, "SGI O2 Audio");
|
||||
strscpy(card->shortname, "SGI O2 Audio");
|
||||
|
|
@ -892,24 +886,16 @@ static int snd_sgio2audio_probe(struct platform_device *pdev)
|
|||
MACEISA_AUDIO3_MERR_IRQ);
|
||||
|
||||
err = snd_card_register(card);
|
||||
if (err < 0) {
|
||||
snd_card_free(card);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, card);
|
||||
card = NULL; /* probe succeeded, don't release as error */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void snd_sgio2audio_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct snd_card *card = platform_get_drvdata(pdev);
|
||||
|
||||
snd_card_free(card);
|
||||
}
|
||||
|
||||
static struct platform_driver sgio2audio_driver = {
|
||||
.probe = snd_sgio2audio_probe,
|
||||
.remove = snd_sgio2audio_remove,
|
||||
.driver = {
|
||||
.name = "sgio2audio",
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user