usb: musb: gadget: clear TXPKTRDY flag when set FLUSHFIFO
authorYauheni Kaliuta <yauheni.kaliuta@nokia.com>
Wed, 8 Jun 2011 14:12:02 +0000 (17:12 +0300)
committerFelipe Balbi <balbi@ti.com>
Thu, 9 Jun 2011 09:01:03 +0000 (12:01 +0300)
commit4858f06e7d92ed2ebdb29ccbc079c127e675a89c
tree6fe442179b78f4968de1a5180d0bad6b439733be
parent72887c8644384c0cc43b9298ae0659de383f2e9c
usb: musb: gadget: clear TXPKTRDY flag when set FLUSHFIFO

Fixes mis-use of MUSB's hardware feature where it won't
flush FIFOs when TXPKTRDY flag was set before and we are
flushing setting both FLUSHFIFO and TXPKTRDY.

In other words, we need to ensure that when we try to
flush FIFOs, we don't accidentaly set TXPKTRDY bit too
due to a read-back of the register.

The MUSB Programming Guide says "May be set simultaneously
with TxPktRdy to abort the packet that is currently being
loaded into the FIFO". This is a situation where TXPKTRDY
hasn't been set yet, but some data already loaded into the
fifo. It looks, that if TXPKTRDY has been set before, and
there is no loading in progress, but we set FLUSHFIFO with
the TXPKTRDY, controller tries to use the same logic to
abort loading and as the result just does nothing (because
there is no packet been loaded currently)

Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@nokia.com>
[ balbi@ti.com : fixed one whitespace git complained about
 improved the commit log slightly ]

Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musb_gadget.c