mhi: core: Add support to re-try requesting firmware image

In case firmware request fails to find firmware in default
location, re-try with fall back location. This is done by
adding fall back firmware image location in controller
structure and firmware request is sent again using fall
back location. Send a status call back to controller when
re-try is done.

Change-Id: I252fa2721df335cbff11b8894adb9ad8cf7bf54f
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
This commit is contained in:
Hemant Kumar 2020-04-08 11:49:08 -07:00
commit 70f0d2aabd
2 changed files with 17 additions and 2 deletions

View file

@ -566,8 +566,21 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
ret = request_firmware(&firmware, fw_name, mhi_cntrl->dev);
if (ret) {
MHI_ERR("Error loading firmware, ret:%d\n", ret);
return;
if (!mhi_cntrl->fw_image_fallback) {
MHI_ERR("Error loading fw, ret:%d\n", ret);
return;
}
/* re-try with fall back fw image */
ret = request_firmware(&firmware, mhi_cntrl->fw_image_fallback,
mhi_cntrl->dev);
if (ret) {
MHI_ERR("Error loading fw_fb, ret:%d\n", ret);
return;
}
mhi_cntrl->status_cb(mhi_cntrl, mhi_cntrl->priv_data,
MHI_CB_FW_FALLBACK_IMG);
}
size = (mhi_cntrl->fbc_download) ? mhi_cntrl->sbl_size : firmware->size;

View file

@ -45,6 +45,7 @@ enum MHI_CB {
MHI_CB_EE_MISSION_MODE,
MHI_CB_SYS_ERROR,
MHI_CB_FATAL_ERROR,
MHI_CB_FW_FALLBACK_IMG,
};
/**
@ -288,6 +289,7 @@ struct mhi_controller {
/* fw images */
const char *fw_image;
const char *fw_image_fallback;
const char *edl_image;
/* mhi host manages downloading entire fbc images */