USB: musb: fix ISOC Tx programming for CPPI DMAs
authorAjay Kumar Gupta <ajay.gupta@ti.com>
Tue, 17 Nov 2009 09:52:55 +0000 (15:22 +0530)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 1 Dec 2009 00:43:16 +0000 (16:43 -0800)
Isochronous Tx DMA is getting programmed but never getting started
for CPPI and TUSB DMAs and thus Isochronous Tx doesn't work.

Fixing it by starting DMAs using musb_h_tx_dma_start().

Signed-off-by: Swaminathan S <swami.iyer@ti.com>
Signed-off-by: Babu Ravi <ravibabu@ti.com>
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/musb/musb_host.c

index cf94511..e3ab40a 100644 (file)
@@ -1301,8 +1301,11 @@ void musb_host_tx(struct musb *musb, u8 epnum)
                return;
        } else  if (usb_pipeisoc(pipe) && dma) {
                if (musb_tx_dma_program(musb->dma_controller, hw_ep, qh, urb,
-                               offset, length))
+                               offset, length)) {
+                       if (is_cppi_enabled() || tusb_dma_omap())
+                               musb_h_tx_dma_start(hw_ep);
                        return;
+               }
        } else  if (tx_csr & MUSB_TXCSR_DMAENAB) {
                DBG(1, "not complete, but DMA enabled?\n");
                return;