mirror of
https://github.com/torvalds/linux.git
synced 2026-09-12 04:23:03 +02:00
ALSA: wavefront: Use auto-cleanup for firmware loading
Simplify the code to manage the firmware loading with __free(firmware) auto-cleanup. Only the code refactoring, no functional changes. Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20260729083735.120219-9-tiwai@suse.de
This commit is contained in:
parent
0585a0c7ab
commit
5f8fc08a65
|
|
@ -232,41 +232,32 @@ snd_wavefront_fx_start (snd_wavefront_t *dev)
|
|||
{
|
||||
unsigned int i;
|
||||
int err;
|
||||
const struct firmware *firmware = NULL;
|
||||
const struct firmware *firmware __free(firmware) = NULL;
|
||||
|
||||
if (dev->fx_initialized)
|
||||
return 0;
|
||||
|
||||
err = request_firmware(&firmware, "yamaha/yss225_registers.bin",
|
||||
dev->card->dev);
|
||||
if (err < 0) {
|
||||
err = -1;
|
||||
goto out;
|
||||
}
|
||||
if (err < 0)
|
||||
return -1;
|
||||
|
||||
for (i = 0; i + 1 < firmware->size; i += 2) {
|
||||
if (firmware->data[i] >= 8 && firmware->data[i] < 16) {
|
||||
outb(firmware->data[i + 1],
|
||||
dev->base + firmware->data[i]);
|
||||
} else if (firmware->data[i] == WAIT_IDLE) {
|
||||
if (!wavefront_fx_idle(dev)) {
|
||||
err = -1;
|
||||
goto out;
|
||||
}
|
||||
if (!wavefront_fx_idle(dev))
|
||||
return -1;
|
||||
} else {
|
||||
dev_err(dev->card->dev,
|
||||
"invalid address in register data\n");
|
||||
err = -1;
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
dev->fx_initialized = 1;
|
||||
err = 0;
|
||||
|
||||
out:
|
||||
release_firmware(firmware);
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
MODULE_FIRMWARE("yamaha/yss225_registers.bin");
|
||||
|
|
|
|||
|
|
@ -2053,7 +2053,7 @@ wavefront_download_firmware (snd_wavefront_t *dev, char *path)
|
|||
const unsigned char *buf;
|
||||
int len, err;
|
||||
int section_cnt_downloaded = 0;
|
||||
const struct firmware *firmware;
|
||||
const struct firmware *firmware __free(firmware) = NULL;
|
||||
|
||||
err = request_firmware(&firmware, path, dev->card->dev);
|
||||
if (err < 0) {
|
||||
|
|
@ -2108,11 +2108,9 @@ wavefront_download_firmware (snd_wavefront_t *dev, char *path)
|
|||
section_cnt_downloaded++;
|
||||
}
|
||||
|
||||
release_firmware(firmware);
|
||||
return 0;
|
||||
|
||||
failure:
|
||||
release_firmware(firmware);
|
||||
dev_err(dev->card->dev, "firmware download failed!!!\n");
|
||||
return 1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user