diff options
author | Takashi Iwai <tiwai@suse.de> | 2021-07-15 09:59:20 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2021-07-19 16:17:17 +0200 |
commit | 39c4f9aa761ab147f32cdea7c8d0b2c1fba2b082 (patch) | |
tree | 109ba6fc481a22d04a6bd542f38a3f137ae0aaea | |
parent | 749cadc7f53f99691e0e0b518980a5ab454cc844 (diff) | |
download | linux-39c4f9aa761ab147f32cdea7c8d0b2c1fba2b082.tar.bz2 |
ALSA: azt2320: Allocate resources with device-managed APIs
This patch converts the resource management in ISA azt2320 driver with
devres as a clean up. Each manual resource management is converted
with the corresponding devres helper. The remove callback became
superfluous and dropped.
This should give no user-visible functional changes.
Link: https://lore.kernel.org/r/20210715075941.23332-59-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/isa/azt2320.c | 49 |
1 files changed, 12 insertions, 37 deletions
diff --git a/sound/isa/azt2320.c b/sound/isa/azt2320.c index dd5c059b3744..761cd198df2b 100644 --- a/sound/isa/azt2320.c +++ b/sound/isa/azt2320.c @@ -169,33 +169,27 @@ static int snd_card_azt2320_probe(int dev, struct snd_wss *chip; struct snd_opl3 *opl3; - error = snd_card_new(&pcard->card->dev, - index[dev], id[dev], THIS_MODULE, - sizeof(struct snd_card_azt2320), &card); + error = snd_devm_card_new(&pcard->card->dev, + index[dev], id[dev], THIS_MODULE, + sizeof(struct snd_card_azt2320), &card); if (error < 0) return error; acard = card->private_data; error = snd_card_azt2320_pnp(dev, acard, pcard, pid); - if (error) { - snd_card_free(card); + if (error) return error; - } error = snd_card_azt2320_enable_wss(port[dev]); - if (error) { - snd_card_free(card); + if (error) return error; - } error = snd_wss_create(card, wss_port[dev], -1, irq[dev], dma1[dev], dma2[dev], WSS_HW_DETECT, 0, &chip); - if (error < 0) { - snd_card_free(card); + if (error < 0) return error; - } strcpy(card->driver, "AZT2320"); strcpy(card->shortname, "Aztech AZT2320"); @@ -203,20 +197,14 @@ static int snd_card_azt2320_probe(int dev, card->shortname, chip->port, irq[dev], dma1[dev], dma2[dev]); error = snd_wss_pcm(chip, 0); - if (error < 0) { - snd_card_free(card); + if (error < 0) return error; - } error = snd_wss_mixer(chip); - if (error < 0) { - snd_card_free(card); + if (error < 0) return error; - } error = snd_wss_timer(chip, 0); - if (error < 0) { - snd_card_free(card); + if (error < 0) return error; - } if (mpu_port[dev] > 0 && mpu_port[dev] != SNDRV_AUTO_PORT) { if (snd_mpu401_uart_new(card, 0, MPU401_HW_AZT2320, @@ -233,23 +221,17 @@ static int snd_card_azt2320_probe(int dev, fm_port[dev], fm_port[dev] + 2); } else { error = snd_opl3_timer_new(opl3, 1, 2); - if (error < 0) { - snd_card_free(card); + if (error < 0) return error; - } error = snd_opl3_hwdep_new(opl3, 0, 1, NULL); - if (error < 0) { - snd_card_free(card); + if (error < 0) return error; - } } } error = snd_card_register(card); - if (error < 0) { - snd_card_free(card); + if (error < 0) return error; - } pnp_set_card_drvdata(pcard, card); return 0; } @@ -275,12 +257,6 @@ static int snd_azt2320_pnp_detect(struct pnp_card_link *card, return -ENODEV; } -static void snd_azt2320_pnp_remove(struct pnp_card_link *pcard) -{ - snd_card_free(pnp_get_card_drvdata(pcard)); - pnp_set_card_drvdata(pcard, NULL); -} - #ifdef CONFIG_PM static int snd_azt2320_pnp_suspend(struct pnp_card_link *pcard, pm_message_t state) { @@ -310,7 +286,6 @@ static struct pnp_card_driver azt2320_pnpc_driver = { .name = "azt2320", .id_table = snd_azt2320_pnpids, .probe = snd_azt2320_pnp_detect, - .remove = snd_azt2320_pnp_remove, #ifdef CONFIG_PM .suspend = snd_azt2320_pnp_suspend, .resume = snd_azt2320_pnp_resume, |