[PATCH 0/2] usb: musb: fix bogus rx endpoint interrupt

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

This fixes a long standing musb bogus rx interrupt problem. I am not sure on
other platforms, but on AM335x with CPPI DMA enabled, occasionally any of the
following kernel messages shows up from musb driver. (The endpoint number is
random, of cause.)

    musb_host_rx 1853: BOGUS RX2 ready, csr 0000, count 0

    musb_host_rx 1936: RX3 dma busy, csr 2020

In one of the test cases with FT4232H I observed the issue when sometimes
closing the uart port. It turns out the issue is that during handling urb
dequeue, the controller is still receiving data while the CPPI channel is
already aborted, then musb core generates endpoint rx interrupt, instead of
rx dma interrupt in normal rx transfer.

Based on the inline comments, the fix is to call the new platform ops to clear
the rx ep interrupt in musb_cleanup_urb().

I am not sure if this fix should be back ported to all stable trees, but I
only tested up to v4.1, so cc'd stable v4.1+.

Regards,
-Bin.
---

Bin Liu (2):
  usb: musb: core: add clear_ep_rxintr() to musb_platform_ops
  usb: musb: dsps: implement clear_ep_rxintr() callback

 drivers/usb/musb/musb_core.h |  7 +++++++
 drivers/usb/musb/musb_dsps.c | 12 ++++++++++++
 drivers/usb/musb/musb_host.c | 10 ++++------
 3 files changed, 23 insertions(+), 6 deletions(-)

-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]