Message ID | 1604622869-40212-7-git-send-email-bbhatt@codeaurora.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Minor bug fixes and clean-up for MHI host driver | expand |
On Thu, Nov 05, 2020 at 04:34:29PM -0800, Bhaumik Bhatt wrote: > If MHI is unable to determine the execution environment during > the panic path, host must skip the RDDM download. This can happen > if the BHI offset read or the BHI_EXECENV register read fails > indicating that the underlying transport is unresponsive. Hence, > there is no need to trigger an RDDM using SYSERR or request an > SOC reset. > > Suggested-by: Hemant Kumar <hemantk@codeaurora.org> > Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org> > --- > drivers/bus/mhi/core/boot.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/bus/mhi/core/boot.c b/drivers/bus/mhi/core/boot.c > index 16244cc..40606e5 100644 > --- a/drivers/bus/mhi/core/boot.c > +++ b/drivers/bus/mhi/core/boot.c > @@ -92,6 +92,9 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) > * image download completion. > */ > ee = mhi_get_exec_env(mhi_cntrl); > + if (ee == MHI_EE_MAX) > + goto error_exit_rddm; > + > if (ee != MHI_EE_RDDM) { > dev_dbg(dev, "Trigger device into RDDM mode using SYS ERR\n"); > mhi_set_mhi_state(mhi_cntrl, MHI_STATE_SYS_ERR); > @@ -140,9 +143,11 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) > ret = mhi_read_reg(mhi_cntrl, base, BHIE_RXVECSTATUS_OFFS, &rx_status); > > dev_err(dev, "Did not complete RDDM transfer\n"); > - dev_err(dev, "Current EE: %s\n", TO_MHI_EXEC_STR(ee)); > dev_err(dev, "RXVEC_STATUS: 0x%x\n", rx_status); > > +error_exit_rddm: > + dev_err(dev, "Current EE: %s\n", TO_MHI_EXEC_STR(ee)); Can this error message improved? It doesn't make much sense if error path is taken. Thanks, Mani > + > return -EIO; > } > > -- > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project >
diff --git a/drivers/bus/mhi/core/boot.c b/drivers/bus/mhi/core/boot.c index 16244cc..40606e5 100644 --- a/drivers/bus/mhi/core/boot.c +++ b/drivers/bus/mhi/core/boot.c @@ -92,6 +92,9 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) * image download completion. */ ee = mhi_get_exec_env(mhi_cntrl); + if (ee == MHI_EE_MAX) + goto error_exit_rddm; + if (ee != MHI_EE_RDDM) { dev_dbg(dev, "Trigger device into RDDM mode using SYS ERR\n"); mhi_set_mhi_state(mhi_cntrl, MHI_STATE_SYS_ERR); @@ -140,9 +143,11 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) ret = mhi_read_reg(mhi_cntrl, base, BHIE_RXVECSTATUS_OFFS, &rx_status); dev_err(dev, "Did not complete RDDM transfer\n"); - dev_err(dev, "Current EE: %s\n", TO_MHI_EXEC_STR(ee)); dev_err(dev, "RXVEC_STATUS: 0x%x\n", rx_status); +error_exit_rddm: + dev_err(dev, "Current EE: %s\n", TO_MHI_EXEC_STR(ee)); + return -EIO; }
If MHI is unable to determine the execution environment during the panic path, host must skip the RDDM download. This can happen if the BHI offset read or the BHI_EXECENV register read fails indicating that the underlying transport is unresponsive. Hence, there is no need to trigger an RDDM using SYSERR or request an SOC reset. Suggested-by: Hemant Kumar <hemantk@codeaurora.org> Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org> --- drivers/bus/mhi/core/boot.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)