musb_gadget: Fix for spurious interrupts on endpoint zero.
authorHans Petter Selasky <hselasky@c2i.net>
Fri, 2 Sep 2011 06:17:17 +0000 (08:17 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 9 Sep 2011 22:58:02 +0000 (15:58 -0700)
commitde76cc2ba2116322f1bcc26f5b22d6092bb63a0d
tree5ad5f66be6dd9bb938aa095049056d7a7a660a18
parentc5a48592d874ddef8c7880311581eccf0eb30c3b
musb_gadget: Fix for spurious interrupts on endpoint zero.

There is a multi-year old bug in the MUSB hardware which is not documented.
It causes spurious interrupts and have various symptoms, like endless
"SetupEnd came in a wrong ep0stage" messages. The fix is taken from the
FreeBSD's musb driver.

How to reproduce:
For example issue clear-stall on a couple of endpoints very fast,
like one request per 125us. After a while the bug triggers and the
musb-chip becomes unusable until next re-enumeration.

Signed-off-by: Hans Petter Selasky <hps@bitfrost.no>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/musb/musb_gadget_ep0.c