]> Pileus Git - ~andy/linux/commitdiff
usb: musb: host: Disable MUSB DMA mode incase of DMA channel request failure
authorMantesh Sarasetti <mantesh@ti.com>
Fri, 1 Jun 2012 11:54:30 +0000 (14:54 +0300)
committerFelipe Balbi <balbi@ti.com>
Mon, 4 Jun 2012 15:37:18 +0000 (18:37 +0300)
Currently in case of MUSB DMA channel request failure we are not
clearing MUSB_RXCSR_DMAENAB, MUSB_RXCSR_H_AUTOREQ and
MUSB_RXCSR_AUTOCLEAR bits of MUSB RXCSR of MUSB DMA. Which is
causing failure in receipt of data packets in next transfer.

Fix is to disable the MUSB DMA mode and related bits incase of
DMA channel request fails

Signed-off-by: Mantesh Sarashetti <mantesh@ti.com>
Signed-off-by: Ruslan Bilovol <ruslan.bilovol@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musb_host.c

index ef8d744800ac29c58dc24e089a645211fcd665ff..33fc45151b8f189e0e121abe79a3a04d5269f32e 100644 (file)
@@ -1736,7 +1736,11 @@ void musb_host_rx(struct musb *musb, u8 epnum)
                                c->channel_release(dma);
                                hw_ep->rx_channel = NULL;
                                dma = NULL;
-                               /* REVISIT reset CSR */
+                               val = musb_readw(epio, MUSB_RXCSR);
+                               val &= ~(MUSB_RXCSR_DMAENAB
+                                       | MUSB_RXCSR_H_AUTOREQ
+                                       | MUSB_RXCSR_AUTOCLEAR);
+                               musb_writew(epio, MUSB_RXCSR, val);
                        }
                }
 #endif /* Mentor DMA */