On Fri, Mar 05, 2021 at 05:14:01PM +0100, Loic Poulain wrote: > MHI suspend/resume are symmetric and balanced procedures. If device is > not in M3 state on a resume, that means something happened behind our > back. In this case resume is aborded and error reported, to let the > controller handling the situation. > Will fix the spelling mistakes while applying. Please try to avoid them... > This is mainly requested for system wide suspend-resume operation in > PCI context which may lead to power-down/reset of the controller which > will then lose its MHI context. In such cases, PCI driver is supposed > to recover and reinitialize the device. > > Signed-off-by: Loic Poulain <loic.poulain@xxxxxxxxxx> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx> Thanks, Mani > --- > drivers/bus/mhi/core/pm.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/bus/mhi/core/pm.c b/drivers/bus/mhi/core/pm.c > index 0cd6445..725a0b2 100644 > --- a/drivers/bus/mhi/core/pm.c > +++ b/drivers/bus/mhi/core/pm.c > @@ -916,6 +916,9 @@ int mhi_pm_resume(struct mhi_controller *mhi_cntrl) > if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state)) > return -EIO; > > + if (mhi_get_mhi_state(mhi_cntrl) != MHI_STATE_M3) > + return -EINVAL; > + > /* Notify clients about exiting LPM */ > list_for_each_entry_safe(itr, tmp, &mhi_cntrl->lpm_chans, node) { > mutex_lock(&itr->mutex); > -- > 2.7.4 >