From c61705f68b2c704f1f3039a68cd06ccc09a2ba6b Mon Sep 17 00:00:00 2001 From: Hemant Kumar Date: Mon, 17 Aug 2020 21:37:06 -0700 Subject: [PATCH] mhi: core: Skip RDDM download if execution env is unknown If mhi_get_exec_env API returns MHI_EE_MAX skip RDDM download. API returns this value if BHI offset read failed or BHI_EXECENV register read fails. This indicates the underlying transport is unresponsive so there is no need to trigger RDDM using SYSERR or request SOC reset. Change-Id: I0cc85af84f19b425c94fe8aea987ab03af6de032 Signed-off-by: Hemant Kumar --- drivers/bus/mhi/core/mhi_boot.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/bus/mhi/core/mhi_boot.c b/drivers/bus/mhi/core/mhi_boot.c index 6fda43f72242..5df5ad6f985e 100644 --- a/drivers/bus/mhi/core/mhi_boot.c +++ b/drivers/bus/mhi/core/mhi_boot.c @@ -217,6 +217,9 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) * waiting for image download completion. */ ee = mhi_get_exec_env(mhi_cntrl); + if (ee == MHI_EE_MAX) + goto err_no_rddm; + if (ee != MHI_EE_RDDM) { MHI_CNTRL_LOG("Trigger device into RDDM mode using SYSERR\n"); @@ -265,10 +268,12 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) ee = mhi_get_exec_env(mhi_cntrl); ret = mhi_read_reg(mhi_cntrl, base, BHIE_RXVECSTATUS_OFFS, &rx_status); - MHI_CNTRL_ERR("Did not complete RDDM transfer\n"); - MHI_CNTRL_ERR("Current EE:%s\n", TO_MHI_EXEC_STR(ee)); MHI_CNTRL_ERR("RXVEC_STATUS:0x%x, ret:%d\n", rx_status, ret); +err_no_rddm: + MHI_CNTRL_ERR("Current EE:%s\n", TO_MHI_EXEC_STR(ee)); + MHI_CNTRL_ERR("Did not complete RDDM transfer\n"); + return -EIO; }