• Yauheni Kaliuta's avatar
    usb: musb: gadget: clear TXPKTRDY flag when set FLUSHFIFO · 4858f06e
    Yauheni Kaliuta authored
    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: default avatarYauheni Kaliuta <yauheni.kaliuta@nokia.com>
    
    [ balbi@ti.com : fixed one whitespace git complained about
    		 improved the commit log slightly ]
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    4858f06e
musb_gadget.c 58.6 KB