summaryrefslogtreecommitdiff
path: root/mhi
diff options
context:
space:
mode:
authorHsiu-Chang Chen <hsiuchangchen@google.com>2022-09-06 13:32:49 +0800
committerHsiu-Chang Chen <hsiuchangchen@google.com>2022-09-06 13:32:49 +0800
commit846e21e9f4ff37895a01274539511fdc0cd51ed2 (patch)
tree0680cfbfdc532a4461c9a6bd847a28d818983758 /mhi
parent4194a4d73a9ac567654a7515082b351d2bc6447a (diff)
downloadcnss2-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.h1
-rw-r--r--mhi/core/misc.c12
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;