diff options
author | Hsiu-Chang Chen <hsiuchangchen@google.com> | 2022-09-06 13:32:49 +0800 |
---|---|---|
committer | Hsiu-Chang Chen <hsiuchangchen@google.com> | 2022-09-06 13:32:49 +0800 |
commit | 846e21e9f4ff37895a01274539511fdc0cd51ed2 (patch) | |
tree | 0680cfbfdc532a4461c9a6bd847a28d818983758 /mhi | |
parent | 4194a4d73a9ac567654a7515082b351d2bc6447a (diff) | |
download | cnss2-846e21e9f4ff37895a01274539511fdc0cd51ed2.tar.gz |
wcn6740: Update cnss/mhi/qmi/qrtr drivers
Migrate wlan codes to PostCS release
Bug: 245009352
Test: Regression Test
Change-Id: Icb90ab318ced3f028a19d6e329d509a23c3774a6
Diffstat (limited to 'mhi')
-rw-r--r-- | mhi/core/internal.h | 1 | ||||
-rw-r--r-- | mhi/core/misc.c | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/mhi/core/internal.h b/mhi/core/internal.h index b53c8e3..aa5a269 100644 --- a/mhi/core/internal.h +++ b/mhi/core/internal.h @@ -677,6 +677,7 @@ void mhi_ring_cmd_db(struct mhi_controller *mhi_cntrl, struct mhi_cmd *mhi_cmd); void mhi_ring_chan_db(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan); void *mhi_to_virtual(struct mhi_ring *ring, dma_addr_t addr); +dma_addr_t mhi_to_physical(struct mhi_ring *ring, void *addr); /* Initialization methods */ int mhi_init_mmio(struct mhi_controller *mhi_cntrl); diff --git a/mhi/core/misc.c b/mhi/core/misc.c index fffef3e..a04be2d 100644 --- a/mhi/core/misc.c +++ b/mhi/core/misc.c @@ -1263,6 +1263,18 @@ int mhi_process_misc_bw_ev_ring(struct mhi_controller *mhi_cntrl, spin_lock_bh(&mhi_event->lock); dev_rp = mhi_to_virtual(ev_ring, er_ctxt->rp); + /** + * Check the ev ring local pointer is same as ctxt pointer + * if both are same do not process ev ring. + */ + if (ev_ring->rp == dev_rp) { + MHI_VERB("Ignore received BW event:0x%llx ev_ring RP:0x%llx\n", + dev_rp->ptr, + (u64)mhi_to_physical(ev_ring, ev_ring->rp)); + spin_unlock_bh(&mhi_event->lock); + return 0; + } + /* if rp points to base, we need to wrap it around */ if (dev_rp == ev_ring->base) dev_rp = ev_ring->base + ev_ring->len; |