|
@@ -115,27 +115,28 @@ static int skl_load_base_firmware(struct sst_dsp *ctx)
|
|
|
dev_err(ctx->dev,
|
|
|
"Timeout waiting for ROM init done, reg:0x%x\n", reg);
|
|
|
ret = -EIO;
|
|
|
- goto skl_load_base_firmware_failed;
|
|
|
+ goto transfer_firmware_failed;
|
|
|
}
|
|
|
|
|
|
ret = skl_transfer_firmware(ctx, ctx->fw->data, ctx->fw->size);
|
|
|
if (ret < 0) {
|
|
|
dev_err(ctx->dev, "Transfer firmware failed%d\n", ret);
|
|
|
- goto skl_load_base_firmware_failed;
|
|
|
+ goto transfer_firmware_failed;
|
|
|
} else {
|
|
|
ret = wait_event_timeout(skl->boot_wait, skl->boot_complete,
|
|
|
msecs_to_jiffies(SKL_IPC_BOOT_MSECS));
|
|
|
if (ret == 0) {
|
|
|
dev_err(ctx->dev, "DSP boot failed, FW Ready timed-out\n");
|
|
|
ret = -EIO;
|
|
|
- goto skl_load_base_firmware_failed;
|
|
|
+ goto transfer_firmware_failed;
|
|
|
}
|
|
|
|
|
|
dev_dbg(ctx->dev, "Download firmware successful%d\n", ret);
|
|
|
skl_dsp_set_state_locked(ctx, SKL_DSP_RUNNING);
|
|
|
}
|
|
|
return 0;
|
|
|
-
|
|
|
+transfer_firmware_failed:
|
|
|
+ ctx->cl_dev.ops.cl_cleanup_controller(ctx);
|
|
|
skl_load_base_firmware_failed:
|
|
|
skl_dsp_disable_core(ctx);
|
|
|
release_firmware(ctx->fw);
|
|
@@ -277,7 +278,6 @@ EXPORT_SYMBOL_GPL(skl_sst_dsp_init);
|
|
|
void skl_sst_dsp_cleanup(struct device *dev, struct skl_sst *ctx)
|
|
|
{
|
|
|
skl_ipc_free(&ctx->ipc);
|
|
|
- ctx->dsp->cl_dev.ops.cl_cleanup_controller(ctx->dsp);
|
|
|
ctx->dsp->ops->free(ctx->dsp);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(skl_sst_dsp_cleanup);
|