Loading drivers/bus/mhi/core/mhi_internal.h +7 −0 Original line number Diff line number Diff line Loading @@ -716,6 +716,13 @@ int mhi_send_cmd(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan, enum MHI_CMD cmd); int __mhi_device_get_sync(struct mhi_controller *mhi_cntrl); static inline void mhi_trigger_resume(struct mhi_controller *mhi_cntrl) { mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); pm_wakeup_event(&mhi_cntrl->mhi_dev->dev, 0); } /* queue transfer buffer */ int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan, void *buf, void *cb, size_t buf_len, enum MHI_FLAGS flags); Loading drivers/bus/mhi/core/mhi_main.c +7 −14 Original line number Diff line number Diff line Loading @@ -373,10 +373,8 @@ int mhi_queue_skb(struct mhi_device *mhi_dev, } /* we're in M3 or transitioning to M3 */ if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) { mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); } if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) mhi_trigger_resume(mhi_cntrl); /* toggle wake to exit out of M2 */ mhi_cntrl->wake_toggle(mhi_cntrl); Loading Loading @@ -451,10 +449,8 @@ int mhi_queue_dma(struct mhi_device *mhi_dev, } /* we're in M3 or transitioning to M3 */ if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) { mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); } if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) mhi_trigger_resume(mhi_cntrl); /* toggle wake to exit out of M2 */ mhi_cntrl->wake_toggle(mhi_cntrl); Loading Loading @@ -588,10 +584,8 @@ int mhi_queue_buf(struct mhi_device *mhi_dev, read_lock_irqsave(&mhi_cntrl->pm_lock, flags); /* we're in M3 or transitioning to M3 */ if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) { mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); } if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) mhi_trigger_resume(mhi_cntrl); /* toggle wake to exit out of M2 */ mhi_cntrl->wake_toggle(mhi_cntrl); Loading Loading @@ -1423,8 +1417,7 @@ void mhi_ctrl_ev_task(unsigned long data) * process it since we probably in a suspended state, * trigger a resume. */ mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); mhi_trigger_resume(mhi_cntrl); return; } Loading drivers/bus/mhi/core/mhi_pm.c +5 −9 Original line number Diff line number Diff line Loading @@ -1324,11 +1324,8 @@ int __mhi_device_get_sync(struct mhi_controller *mhi_cntrl) read_lock_bh(&mhi_cntrl->pm_lock); mhi_cntrl->wake_get(mhi_cntrl, true); if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) { pm_wakeup_event(&mhi_cntrl->mhi_dev->dev, 0); mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); } if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) mhi_trigger_resume(mhi_cntrl); read_unlock_bh(&mhi_cntrl->pm_lock); ret = wait_event_timeout(mhi_cntrl->state_event, Loading Loading @@ -1405,10 +1402,9 @@ void mhi_device_put(struct mhi_device *mhi_dev, int vote) if (vote & MHI_VOTE_DEVICE) { atomic_dec(&mhi_dev->dev_vote); read_lock_bh(&mhi_cntrl->pm_lock); if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) { mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); } if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) mhi_trigger_resume(mhi_cntrl); mhi_cntrl->wake_put(mhi_cntrl, false); read_unlock_bh(&mhi_cntrl->pm_lock); } Loading Loading
drivers/bus/mhi/core/mhi_internal.h +7 −0 Original line number Diff line number Diff line Loading @@ -716,6 +716,13 @@ int mhi_send_cmd(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan, enum MHI_CMD cmd); int __mhi_device_get_sync(struct mhi_controller *mhi_cntrl); static inline void mhi_trigger_resume(struct mhi_controller *mhi_cntrl) { mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); pm_wakeup_event(&mhi_cntrl->mhi_dev->dev, 0); } /* queue transfer buffer */ int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan, void *buf, void *cb, size_t buf_len, enum MHI_FLAGS flags); Loading
drivers/bus/mhi/core/mhi_main.c +7 −14 Original line number Diff line number Diff line Loading @@ -373,10 +373,8 @@ int mhi_queue_skb(struct mhi_device *mhi_dev, } /* we're in M3 or transitioning to M3 */ if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) { mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); } if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) mhi_trigger_resume(mhi_cntrl); /* toggle wake to exit out of M2 */ mhi_cntrl->wake_toggle(mhi_cntrl); Loading Loading @@ -451,10 +449,8 @@ int mhi_queue_dma(struct mhi_device *mhi_dev, } /* we're in M3 or transitioning to M3 */ if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) { mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); } if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) mhi_trigger_resume(mhi_cntrl); /* toggle wake to exit out of M2 */ mhi_cntrl->wake_toggle(mhi_cntrl); Loading Loading @@ -588,10 +584,8 @@ int mhi_queue_buf(struct mhi_device *mhi_dev, read_lock_irqsave(&mhi_cntrl->pm_lock, flags); /* we're in M3 or transitioning to M3 */ if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) { mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); } if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) mhi_trigger_resume(mhi_cntrl); /* toggle wake to exit out of M2 */ mhi_cntrl->wake_toggle(mhi_cntrl); Loading Loading @@ -1423,8 +1417,7 @@ void mhi_ctrl_ev_task(unsigned long data) * process it since we probably in a suspended state, * trigger a resume. */ mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); mhi_trigger_resume(mhi_cntrl); return; } Loading
drivers/bus/mhi/core/mhi_pm.c +5 −9 Original line number Diff line number Diff line Loading @@ -1324,11 +1324,8 @@ int __mhi_device_get_sync(struct mhi_controller *mhi_cntrl) read_lock_bh(&mhi_cntrl->pm_lock); mhi_cntrl->wake_get(mhi_cntrl, true); if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) { pm_wakeup_event(&mhi_cntrl->mhi_dev->dev, 0); mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); } if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) mhi_trigger_resume(mhi_cntrl); read_unlock_bh(&mhi_cntrl->pm_lock); ret = wait_event_timeout(mhi_cntrl->state_event, Loading Loading @@ -1405,10 +1402,9 @@ void mhi_device_put(struct mhi_device *mhi_dev, int vote) if (vote & MHI_VOTE_DEVICE) { atomic_dec(&mhi_dev->dev_vote); read_lock_bh(&mhi_cntrl->pm_lock); if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) { mhi_cntrl->runtime_get(mhi_cntrl, mhi_cntrl->priv_data); mhi_cntrl->runtime_put(mhi_cntrl, mhi_cntrl->priv_data); } if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state)) mhi_trigger_resume(mhi_cntrl); mhi_cntrl->wake_put(mhi_cntrl, false); read_unlock_bh(&mhi_cntrl->pm_lock); } Loading