i3c: mipi-i3c-hci: Process multiple IBIs per interrupt
INTR_IBI_READY indicates that one or more IBI Status Descriptors are
present in the IBI ring. After clearing interrupt status, the interrupt
handler processes only a single IBI even though additional IBIs may
already be queued.
The controller does not reassert INTR_IBI_READY solely because entries
remain in the ring after interrupt status has been cleared. Consequently,
the remaining IBIs are not processed until some later interrupt occurs,
and can accumulate if IBIs arrive more often than the interrupt handler
runs.
Process all IBIs that are pending when the handler runs: capture the IBI
enqueue pointer up front and continue until the dequeue pointer reaches
that position.
Google-Bug-Id: 445435578
Upstream-Status: Submitted [https://lore.kernel.org/all/20260914113003.183150-10-adrian.hunter@intel.com/]
Fixes: 9ad9a52cce28 ("i3c/master: introduce the mipi-i3c-hci driver")
Change-Id: Id7c846879baa3b3f8cb16bc0d5cef7d874553aa5
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Sam Agazaryan <samagazaryan@google.com>
1 file changed