Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4bb57cb8 authored by Hemant Kumar's avatar Hemant Kumar
Browse files

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: default avatarHemant Kumar <hemantk@codeaurora.org>
parent fbad67d3
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -565,10 +565,23 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)

	ret = request_firmware(&firmware, fw_name, mhi_cntrl->dev);
	if (ret) {
		MHI_CNTRL_ERR("Error loading firmware, ret:%d\n", ret);
		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;

	/* the sbl size provided is maximum size, not necessarily image size */
+2 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ enum MHI_CB {
	MHI_CB_EE_MISSION_MODE,
	MHI_CB_SYS_ERROR,
	MHI_CB_FATAL_ERROR,
	MHI_CB_FW_FALLBACK_IMG,
};

/**
@@ -282,6 +283,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 */