On Tue, May 05, 2020 at 03:47:10PM -0700, Bhaumik Bhatt wrote: > When loading AMSS firmware using BHIe protocol, return -ETIMEDOUT if no > response is received within the timeout or return -EIO in case of a > protocol returned failure or an MHI error state. > > Signed-off-by: Bhaumik Bhatt <bbhatt@xxxxxxxxxxxxxx> > Reviewed-by: Jeffrey Hugo <jhugo@xxxxxxxxxxxxxx> > --- > drivers/bus/mhi/core/boot.c | 23 ++++++++++++----------- > 1 file changed, 12 insertions(+), 11 deletions(-) > > diff --git a/drivers/bus/mhi/core/boot.c b/drivers/bus/mhi/core/boot.c > index 17c636b..05627fe 100644 > --- a/drivers/bus/mhi/core/boot.c > +++ b/drivers/bus/mhi/core/boot.c > @@ -176,6 +176,7 @@ static int mhi_fw_load_amss(struct mhi_controller *mhi_cntrl, > void __iomem *base = mhi_cntrl->bhie; > rwlock_t *pm_lock = &mhi_cntrl->pm_lock; > u32 tx_status, sequence_id; > + int ret; > > read_lock_bh(pm_lock); > if (!MHI_REG_ACCESS_VALID(mhi_cntrl->pm_state)) { > @@ -198,19 +199,19 @@ static int mhi_fw_load_amss(struct mhi_controller *mhi_cntrl, > read_unlock_bh(pm_lock); > > /* Wait for the image download to complete */ > - wait_event_timeout(mhi_cntrl->state_event, > - MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state) || > - mhi_read_reg_field(mhi_cntrl, base, > - BHIE_TXVECSTATUS_OFFS, > - BHIE_TXVECSTATUS_STATUS_BMSK, > - BHIE_TXVECSTATUS_STATUS_SHFT, > - &tx_status) || tx_status, > - msecs_to_jiffies(mhi_cntrl->timeout_ms)); > - > - if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state)) > + ret = wait_event_timeout(mhi_cntrl->state_event, > + MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state) || > + mhi_read_reg_field(mhi_cntrl, base, > + BHIE_TXVECSTATUS_OFFS, > + BHIE_TXVECSTATUS_STATUS_BMSK, > + BHIE_TXVECSTATUS_STATUS_SHFT, If you want to prevent some parameters to be within 80 characters that is fine but do it for all to look uniform: mhi_read_reg_field(mhi_cntrl, base, BHIE_TXVECSTATUS_OFFS, BHIE_TXVECSTATUS_STATUS_BMSK, BHIE_TXVECSTATUS_STATUS_SHFT, &tx_status) || tx_status, Thanks, Mani > + &tx_status) || tx_status, > + msecs_to_jiffies(mhi_cntrl->timeout_ms)); > + if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state) || > + tx_status != BHIE_TXVECSTATUS_STATUS_XFER_COMPL) > return -EIO; > > - return (tx_status == BHIE_TXVECSTATUS_STATUS_XFER_COMPL) ? 0 : -EIO; > + return (!ret) ? -ETIMEDOUT : 0; > } > > static int mhi_fw_load_sbl(struct mhi_controller *mhi_cntrl, > -- > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project >