summaryrefslogtreecommitdiffstats
path: root/drivers/bus/mhi/ep/sm.c
diff options
context:
space:
mode:
authorManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>2022-04-05 15:57:53 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-04-26 13:17:42 +0200
commite4b7b5f0f30aaa4677126e04220677a02839e1c4 (patch)
tree42328e7bd2c3e87e2e54981935520d83f7e0459a /drivers/bus/mhi/ep/sm.c
parentbus: mhi: ep: Add support for queueing SKBs to the host (diff)
downloadlinux-e4b7b5f0f30aaa4677126e04220677a02839e1c4.tar.xz
linux-e4b7b5f0f30aaa4677126e04220677a02839e1c4.zip
bus: mhi: ep: Add support for suspending and resuming channels
Add support for suspending and resuming the channels in MHI endpoint stack. The channels will be moved to the suspended state during M3 state transition and will be resumed during M0 transition. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Link: https://lore.kernel.org/r/20220405135754.6622-18-manivannan.sadhasivam@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to '')
-rw-r--r--drivers/bus/mhi/ep/sm.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/bus/mhi/ep/sm.c b/drivers/bus/mhi/ep/sm.c
index e3865b85399d..3655c19e23c7 100644
--- a/drivers/bus/mhi/ep/sm.c
+++ b/drivers/bus/mhi/ep/sm.c
@@ -62,8 +62,11 @@ int mhi_ep_set_m0_state(struct mhi_ep_cntrl *mhi_cntrl)
enum mhi_state old_state;
int ret;
+ /* If MHI is in M3, resume suspended channels */
spin_lock_bh(&mhi_cntrl->state_lock);
old_state = mhi_cntrl->mhi_state;
+ if (old_state == MHI_STATE_M3)
+ mhi_ep_resume_channels(mhi_cntrl);
ret = mhi_ep_set_mhi_state(mhi_cntrl, MHI_STATE_M0);
spin_unlock_bh(&mhi_cntrl->state_lock);
@@ -106,6 +109,8 @@ int mhi_ep_set_m3_state(struct mhi_ep_cntrl *mhi_cntrl)
return ret;
}
+ mhi_ep_suspend_channels(mhi_cntrl);
+
/* Signal host that the device moved to M3 */
ret = mhi_ep_send_state_change_event(mhi_cntrl, MHI_STATE_M3);
if (ret) {