usb: musb: clear AUTOSET while clearing DMAENAB
authorMian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com>
Tue, 15 Mar 2011 15:24:24 +0000 (16:24 +0100)
committerFelipe Balbi <balbi@ti.com>
Wed, 13 Apr 2011 08:50:55 +0000 (11:50 +0300)
On the completion of tx dma, dma is disabled by clearing MUSB_TXCSR_DMAENAB in
TXCSR. If MUSB_TXCSR_AUTOSET was set in txstate() it will remain set although
it is not needed in PIO mode. Clear it as soon as it is not needed.

Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musb_gadget.c

index 98519c5d8b5cc23e5407dac87a521004d8885f59..9ecb057902ef1a63d3f2590db171c02c0ae490c8 100644 (file)
@@ -535,7 +535,7 @@ void musb_g_tx(struct musb *musb, u8 epnum)
                        is_dma = 1;
                        csr |= MUSB_TXCSR_P_WZC_BITS;
                        csr &= ~(MUSB_TXCSR_DMAENAB | MUSB_TXCSR_P_UNDERRUN |
-                                MUSB_TXCSR_TXPKTRDY);
+                                MUSB_TXCSR_TXPKTRDY | MUSB_TXCSR_AUTOSET);
                        musb_writew(epio, MUSB_TXCSR, csr);
                        /* Ensure writebuffer is empty. */
                        csr = musb_readw(epio, MUSB_TXCSR);