mirror of
https://github.com/torvalds/linux.git
synced 2026-09-13 15:40:03 +02:00
ASoC: Intel: catpt: 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. Cc: Cezary Rojewski <cezary.rojewski@intel.com> Acked-by: Cezary Rojewski <cezary.rojewski@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20260806140006.1412298-28-tiwai@suse.de Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
6a052cf54f
commit
a0dae90ea9
|
|
@ -568,27 +568,24 @@ static int catpt_request_load_firmware(struct catpt_dev *cdev, struct dma_chan *
|
|||
const char *name, bool restore)
|
||||
{
|
||||
struct catpt_fw_hdr *fw;
|
||||
struct firmware *img;
|
||||
dma_addr_t paddr;
|
||||
void *vaddr;
|
||||
int ret;
|
||||
|
||||
ret = request_firmware((const struct firmware **)&img, name, cdev->dev);
|
||||
const struct firmware *img __free(firmware) = NULL;
|
||||
ret = request_firmware(&img, name, cdev->dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
fw = (struct catpt_fw_hdr *)img->data;
|
||||
if (strncmp(fw->signature, FW_SIGNATURE, FW_SIGNATURE_SIZE)) {
|
||||
dev_err(cdev->dev, "firmware signature mismatch\n");
|
||||
ret = -EINVAL;
|
||||
goto release_fw;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
vaddr = dma_alloc_coherent(cdev->dev, img->size, &paddr, GFP_KERNEL);
|
||||
if (!vaddr) {
|
||||
ret = -ENOMEM;
|
||||
goto release_fw;
|
||||
}
|
||||
if (!vaddr)
|
||||
return -ENOMEM;
|
||||
|
||||
memcpy(vaddr, img->data, img->size);
|
||||
fw = (struct catpt_fw_hdr *)vaddr;
|
||||
|
|
@ -598,8 +595,6 @@ static int catpt_request_load_firmware(struct catpt_dev *cdev, struct dma_chan *
|
|||
ret = catpt_load_firmware(cdev, chan, paddr, fw);
|
||||
|
||||
dma_free_coherent(cdev->dev, img->size, vaddr, paddr);
|
||||
release_fw:
|
||||
release_firmware(img);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user