Loading drivers/bus/mhi/core/mhi_main.c +1 −5 Original line number Diff line number Diff line Loading @@ -1478,13 +1478,10 @@ int mhi_process_bw_scale_ev_ring(struct mhi_controller *mhi_cntrl, read_unlock_bh(&mhi_cntrl->pm_lock); spin_unlock_bh(&mhi_event->lock); atomic_inc(&mhi_cntrl->pending_pkts); ret = mhi_device_get_sync(mhi_cntrl->mhi_dev, MHI_VOTE_DEVICE | MHI_VOTE_BUS); if (ret) { atomic_dec(&mhi_cntrl->pending_pkts); if (ret) goto exit_bw_scale_process; } mutex_lock(&mhi_cntrl->pm_mutex); Loading @@ -1502,7 +1499,6 @@ int mhi_process_bw_scale_ev_ring(struct mhi_controller *mhi_cntrl, read_unlock_bh(&mhi_cntrl->pm_lock); mhi_device_put(mhi_cntrl->mhi_dev, MHI_VOTE_DEVICE | MHI_VOTE_BUS); atomic_dec(&mhi_cntrl->pending_pkts); mutex_unlock(&mhi_cntrl->pm_mutex); Loading drivers/bus/mhi/core/mhi_pm.c +5 −2 Original line number Diff line number Diff line Loading @@ -1241,6 +1241,7 @@ int mhi_pm_fast_suspend(struct mhi_controller *mhi_cntrl, bool notify_client) int ret; enum MHI_PM_STATE new_state; struct mhi_chan *itr, *tmp; struct mhi_device *mhi_dev = mhi_cntrl->mhi_dev; if (mhi_cntrl->pm_state == MHI_PM_DISABLE) return -EINVAL; Loading @@ -1249,7 +1250,8 @@ int mhi_pm_fast_suspend(struct mhi_controller *mhi_cntrl, bool notify_client) return -EIO; /* do a quick check to see if any pending votes to keep us busy */ if (atomic_read(&mhi_cntrl->pending_pkts)) { if (atomic_read(&mhi_cntrl->pending_pkts) || atomic_read(&mhi_dev->bus_vote)) { MHI_VERB("Busy, aborting M3\n"); return -EBUSY; } Loading @@ -1268,7 +1270,8 @@ int mhi_pm_fast_suspend(struct mhi_controller *mhi_cntrl, bool notify_client) * Check the votes once more to see if we should abort * suspend. */ if (atomic_read(&mhi_cntrl->pending_pkts)) { if (atomic_read(&mhi_cntrl->pending_pkts) || atomic_read(&mhi_dev->bus_vote)) { MHI_VERB("Busy, aborting M3\n"); ret = -EBUSY; goto error_suspend; Loading Loading
drivers/bus/mhi/core/mhi_main.c +1 −5 Original line number Diff line number Diff line Loading @@ -1478,13 +1478,10 @@ int mhi_process_bw_scale_ev_ring(struct mhi_controller *mhi_cntrl, read_unlock_bh(&mhi_cntrl->pm_lock); spin_unlock_bh(&mhi_event->lock); atomic_inc(&mhi_cntrl->pending_pkts); ret = mhi_device_get_sync(mhi_cntrl->mhi_dev, MHI_VOTE_DEVICE | MHI_VOTE_BUS); if (ret) { atomic_dec(&mhi_cntrl->pending_pkts); if (ret) goto exit_bw_scale_process; } mutex_lock(&mhi_cntrl->pm_mutex); Loading @@ -1502,7 +1499,6 @@ int mhi_process_bw_scale_ev_ring(struct mhi_controller *mhi_cntrl, read_unlock_bh(&mhi_cntrl->pm_lock); mhi_device_put(mhi_cntrl->mhi_dev, MHI_VOTE_DEVICE | MHI_VOTE_BUS); atomic_dec(&mhi_cntrl->pending_pkts); mutex_unlock(&mhi_cntrl->pm_mutex); Loading
drivers/bus/mhi/core/mhi_pm.c +5 −2 Original line number Diff line number Diff line Loading @@ -1241,6 +1241,7 @@ int mhi_pm_fast_suspend(struct mhi_controller *mhi_cntrl, bool notify_client) int ret; enum MHI_PM_STATE new_state; struct mhi_chan *itr, *tmp; struct mhi_device *mhi_dev = mhi_cntrl->mhi_dev; if (mhi_cntrl->pm_state == MHI_PM_DISABLE) return -EINVAL; Loading @@ -1249,7 +1250,8 @@ int mhi_pm_fast_suspend(struct mhi_controller *mhi_cntrl, bool notify_client) return -EIO; /* do a quick check to see if any pending votes to keep us busy */ if (atomic_read(&mhi_cntrl->pending_pkts)) { if (atomic_read(&mhi_cntrl->pending_pkts) || atomic_read(&mhi_dev->bus_vote)) { MHI_VERB("Busy, aborting M3\n"); return -EBUSY; } Loading @@ -1268,7 +1270,8 @@ int mhi_pm_fast_suspend(struct mhi_controller *mhi_cntrl, bool notify_client) * Check the votes once more to see if we should abort * suspend. */ if (atomic_read(&mhi_cntrl->pending_pkts)) { if (atomic_read(&mhi_cntrl->pending_pkts) || atomic_read(&mhi_dev->bus_vote)) { MHI_VERB("Busy, aborting M3\n"); ret = -EBUSY; goto error_suspend; Loading