OSDN Git Service

usb: musb: core: add clear_ep_rxintr() to musb_platform_ops
authorBin Liu <b-liu@ti.com>
Wed, 4 Jan 2017 00:13:46 +0000 (18:13 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Jan 2017 10:22:43 +0000 (11:22 +0100)
commit2a0e2a89cc414349d259e7e06187b467abb07596
treee36ac387f95101e5cc67d4efef30aeb4cf731205
parente72575d2d76ed9eea122b76eb3d47781cc115dab
usb: musb: core: add clear_ep_rxintr() to musb_platform_ops

commit 6def85a396ce7796bd9f4561c6ae8138833f7a52 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.

Clearing ep interrupt is platform dependent, so this patch adds a
platform callback to allow glue driver to clear the ep interrupt.

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_core.h
drivers/usb/musb/musb_host.c