Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+12 -37
+12 -37
sound/isa/azt2320.c
··· 169 169 struct snd_wss *chip; 170 170 struct snd_opl3 *opl3; 171 171 172 - error = snd_card_new(&pcard->card->dev, 173 - index[dev], id[dev], THIS_MODULE, 174 - sizeof(struct snd_card_azt2320), &card); 172 + error = snd_devm_card_new(&pcard->card->dev, 173 + index[dev], id[dev], THIS_MODULE, 174 + sizeof(struct snd_card_azt2320), &card); 175 175 if (error < 0) 176 176 return error; 177 177 acard = card->private_data; 178 178 179 179 error = snd_card_azt2320_pnp(dev, acard, pcard, pid); 180 - if (error) { 181 - snd_card_free(card); 180 + if (error) 182 181 return error; 183 - } 184 182 185 183 error = snd_card_azt2320_enable_wss(port[dev]); 186 - if (error) { 187 - snd_card_free(card); 184 + if (error) 188 185 return error; 189 - } 190 186 191 187 error = snd_wss_create(card, wss_port[dev], -1, 192 188 irq[dev], 193 189 dma1[dev], dma2[dev], 194 190 WSS_HW_DETECT, 0, &chip); 195 - if (error < 0) { 196 - snd_card_free(card); 191 + if (error < 0) 197 192 return error; 198 - } 199 193 200 194 strcpy(card->driver, "AZT2320"); 201 195 strcpy(card->shortname, "Aztech AZT2320"); ··· 197 203 card->shortname, chip->port, irq[dev], dma1[dev], dma2[dev]); 198 204 199 205 error = snd_wss_pcm(chip, 0); 200 - if (error < 0) { 201 - snd_card_free(card); 206 + if (error < 0) 202 207 return error; 203 - } 204 208 error = snd_wss_mixer(chip); 205 - if (error < 0) { 206 - snd_card_free(card); 209 + if (error < 0) 207 210 return error; 208 - } 209 211 error = snd_wss_timer(chip, 0); 210 - if (error < 0) { 211 - snd_card_free(card); 212 + if (error < 0) 212 213 return error; 213 - } 214 214 215 215 if (mpu_port[dev] > 0 && mpu_port[dev] != SNDRV_AUTO_PORT) { 216 216 if (snd_mpu401_uart_new(card, 0, MPU401_HW_AZT2320, ··· 221 233 fm_port[dev], fm_port[dev] + 2); 222 234 } else { 223 235 error = snd_opl3_timer_new(opl3, 1, 2); 224 - if (error < 0) { 225 - snd_card_free(card); 236 + if (error < 0) 226 237 return error; 227 - } 228 238 error = snd_opl3_hwdep_new(opl3, 0, 1, NULL); 229 - if (error < 0) { 230 - snd_card_free(card); 239 + if (error < 0) 231 240 return error; 232 - } 233 241 } 234 242 } 235 243 236 244 error = snd_card_register(card); 237 - if (error < 0) { 238 - snd_card_free(card); 245 + if (error < 0) 239 246 return error; 240 - } 241 247 pnp_set_card_drvdata(pcard, card); 242 248 return 0; 243 249 } ··· 255 273 return 0; 256 274 } 257 275 return -ENODEV; 258 - } 259 - 260 - static void snd_azt2320_pnp_remove(struct pnp_card_link *pcard) 261 - { 262 - snd_card_free(pnp_get_card_drvdata(pcard)); 263 - pnp_set_card_drvdata(pcard, NULL); 264 276 } 265 277 266 278 #ifdef CONFIG_PM ··· 286 310 .name = "azt2320", 287 311 .id_table = snd_azt2320_pnpids, 288 312 .probe = snd_azt2320_pnp_detect, 289 - .remove = snd_azt2320_pnp_remove, 290 313 #ifdef CONFIG_PM 291 314 .suspend = snd_azt2320_pnp_suspend, 292 315 .resume = snd_azt2320_pnp_resume,