OSDN Git Service

usb: musb: dsps: implement clear_ep_rxintr() callback
authorBin Liu <b-liu@ti.com>
Wed, 4 Jan 2017 00:13:47 +0000 (18:13 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Jan 2017 10:22:43 +0000 (11:22 +0100)
commit96175db0a64753c89909158cb1baa3a11ed8be03
tree32e62406767b5c281a9c9d23e701e762bf146429
parent2a0e2a89cc414349d259e7e06187b467abb07596
usb: musb: dsps: implement clear_ep_rxintr() callback

commit c48400baa02155a5ddad63e8554602e48782278c upstream.

During dma teardown for dequque urb, if musb load is high, musb might
generate bogus rx ep interrupt even when the rx fifo is flushed. In such
case any of the follow log messages could happen.

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

    musb_host_rx 1936: RX3 dma busy, csr 2020

As mentioned in the current inline comment, clearing ep interrupt in the
teardown path avoids the bogus interrupt, so implement clear_ep_rxintr()
callback.

This bug seems to be existing since the initial driver for musb support,
but I only validated the fix back to v4.1, so only cc stable for v4.1+.

Signed-off-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/musb/musb_dsps.c