Loading drivers/bus/mhi/core/mhi_init.c +7 −1 Original line number Diff line number Diff line Loading @@ -1395,12 +1395,14 @@ static int mhi_driver_remove(struct device *dev) mutex_lock(&mhi_chan->mutex); write_lock_irq(&mhi_chan->lock); ch_state[dir] = mhi_chan->ch_state; mhi_chan->ch_state = MHI_CH_STATE_DISABLED; mhi_chan->ch_state = MHI_CH_STATE_SUSPENDED; write_unlock_irq(&mhi_chan->lock); /* reset the channel */ if (!mhi_chan->offload_ch) mhi_reset_chan(mhi_cntrl, mhi_chan); mutex_unlock(&mhi_chan->mutex); } /* destroy the device */ Loading @@ -1413,10 +1415,14 @@ static int mhi_driver_remove(struct device *dev) if (!mhi_chan) continue; mutex_lock(&mhi_chan->mutex); if (ch_state[dir] == MHI_CH_STATE_ENABLED && !mhi_chan->offload_ch) mhi_deinit_chan_ctxt(mhi_cntrl, mhi_chan); mhi_chan->ch_state = MHI_CH_STATE_DISABLED; /* remove associated device */ mhi_chan->mhi_dev = NULL; Loading drivers/bus/mhi/core/mhi_main.c +19 −10 Original line number Diff line number Diff line Loading @@ -363,7 +363,7 @@ int mhi_queue_skb(struct mhi_device *mhi_dev, read_lock_bh(&mhi_cntrl->pm_lock); if (unlikely(MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state))) { MHI_ERR("MHI is not in activate state, pm_state:%s\n", MHI_VERB("MHI is not in activate state, pm_state:%s\n", to_mhi_pm_state_str(mhi_cntrl->pm_state)); read_unlock_bh(&mhi_cntrl->pm_lock); Loading Loading @@ -498,18 +498,12 @@ int mhi_queue_buf(struct mhi_device *mhi_dev, * which is not fatal so we do not need to hold pm_lock */ if (unlikely(MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state))) { MHI_ERR("MHI is not in active state, pm_state:%s\n", MHI_VERB("MHI is not in active state, pm_state:%s\n", to_mhi_pm_state_str(mhi_cntrl->pm_state)); return -EIO; } /* 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); } tre_ring = &mhi_chan->tre_ring; if (mhi_is_ring_full(mhi_cntrl, tre_ring)) return -ENOMEM; Loading @@ -520,6 +514,12 @@ 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); } /* * For UL channels always assert WAKE until work is done, * For DL channels only assert if MHI is in a LPM Loading Loading @@ -1329,6 +1329,15 @@ static int __mhi_prepare_channel(struct mhi_controller *mhi_cntrl, } mutex_lock(&mhi_chan->mutex); /* if channel is not disable state do not allow to start */ if (mhi_chan->ch_state != MHI_CH_STATE_DISABLED) { ret = -EIO; MHI_LOG("channel:%d is not in disabled state, ch_state%d\n", mhi_chan->chan, mhi_chan->ch_state); goto error_init_chan; } /* client manages channel context for offload channels */ if (!mhi_chan->offload_ch) { ret = mhi_init_chan_ctxt(mhi_cntrl, mhi_chan); Loading Loading
drivers/bus/mhi/core/mhi_init.c +7 −1 Original line number Diff line number Diff line Loading @@ -1395,12 +1395,14 @@ static int mhi_driver_remove(struct device *dev) mutex_lock(&mhi_chan->mutex); write_lock_irq(&mhi_chan->lock); ch_state[dir] = mhi_chan->ch_state; mhi_chan->ch_state = MHI_CH_STATE_DISABLED; mhi_chan->ch_state = MHI_CH_STATE_SUSPENDED; write_unlock_irq(&mhi_chan->lock); /* reset the channel */ if (!mhi_chan->offload_ch) mhi_reset_chan(mhi_cntrl, mhi_chan); mutex_unlock(&mhi_chan->mutex); } /* destroy the device */ Loading @@ -1413,10 +1415,14 @@ static int mhi_driver_remove(struct device *dev) if (!mhi_chan) continue; mutex_lock(&mhi_chan->mutex); if (ch_state[dir] == MHI_CH_STATE_ENABLED && !mhi_chan->offload_ch) mhi_deinit_chan_ctxt(mhi_cntrl, mhi_chan); mhi_chan->ch_state = MHI_CH_STATE_DISABLED; /* remove associated device */ mhi_chan->mhi_dev = NULL; Loading
drivers/bus/mhi/core/mhi_main.c +19 −10 Original line number Diff line number Diff line Loading @@ -363,7 +363,7 @@ int mhi_queue_skb(struct mhi_device *mhi_dev, read_lock_bh(&mhi_cntrl->pm_lock); if (unlikely(MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state))) { MHI_ERR("MHI is not in activate state, pm_state:%s\n", MHI_VERB("MHI is not in activate state, pm_state:%s\n", to_mhi_pm_state_str(mhi_cntrl->pm_state)); read_unlock_bh(&mhi_cntrl->pm_lock); Loading Loading @@ -498,18 +498,12 @@ int mhi_queue_buf(struct mhi_device *mhi_dev, * which is not fatal so we do not need to hold pm_lock */ if (unlikely(MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state))) { MHI_ERR("MHI is not in active state, pm_state:%s\n", MHI_VERB("MHI is not in active state, pm_state:%s\n", to_mhi_pm_state_str(mhi_cntrl->pm_state)); return -EIO; } /* 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); } tre_ring = &mhi_chan->tre_ring; if (mhi_is_ring_full(mhi_cntrl, tre_ring)) return -ENOMEM; Loading @@ -520,6 +514,12 @@ 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); } /* * For UL channels always assert WAKE until work is done, * For DL channels only assert if MHI is in a LPM Loading Loading @@ -1329,6 +1329,15 @@ static int __mhi_prepare_channel(struct mhi_controller *mhi_cntrl, } mutex_lock(&mhi_chan->mutex); /* if channel is not disable state do not allow to start */ if (mhi_chan->ch_state != MHI_CH_STATE_DISABLED) { ret = -EIO; MHI_LOG("channel:%d is not in disabled state, ch_state%d\n", mhi_chan->chan, mhi_chan->ch_state); goto error_init_chan; } /* client manages channel context for offload channels */ if (!mhi_chan->offload_ch) { ret = mhi_init_chan_ctxt(mhi_cntrl, mhi_chan); Loading