diff --git a/drivers/platform/msm/mhi/mhi_main.c b/drivers/platform/msm/mhi/mhi_main.c index 8dc8bf7bd966..887f39a88418 100644 --- a/drivers/platform/msm/mhi/mhi_main.c +++ b/drivers/platform/msm/mhi/mhi_main.c @@ -1035,6 +1035,19 @@ enum MHI_STATUS recycle_trb_and_ring(struct mhi_device_ctxt *mhi_dev_ctxt, (union mhi_xfer_pkt *)added_element; added_xfer_pkt->data_tx_pkt = *(struct mhi_tx_pkt *)removed_xfer_pkt; + } else if (MHI_RING_TYPE_EVENT_RING == ring_type && + mhi_dev_ctxt->counters.m0_m3 > 0 && + IS_HARDWARE_CHANNEL(ring_index)) { + spinlock_t *lock = NULL; + unsigned long flags = 0; + lock = &mhi_dev_ctxt->mhi_ev_spinlock_list[ring_index]; + spin_lock_irqsave(lock, flags); + mhi_update_ctxt(mhi_dev_ctxt, + mhi_dev_ctxt->event_db_addr, + ring_index, db_value); + mhi_dev_ctxt->mhi_ev_db_order[ring_index] = 1; + mhi_dev_ctxt->ev_counter[ring_index]++; + spin_unlock_irqrestore(lock, flags); } atomic_inc(&mhi_dev_ctxt->flags.data_pending); /* Asserting Device Wake here, will imediately wake mdm */