Преглед изворни кода

USB: musb: fix ISOC Tx programming for CPPI DMAs

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>
Ajay Kumar Gupta пре 16 година
родитељ
комит
dfeffa531c
1 измењених фајлова са 4 додато и 1 уклоњено
  1. 4 1
      drivers/usb/musb/musb_host.c

+ 4 - 1
drivers/usb/musb/musb_host.c

@@ -1301,8 +1301,11 @@ void musb_host_tx(struct musb *musb, u8 epnum)
 		return;
 		return;
 	} else	if (usb_pipeisoc(pipe) && dma) {
 	} else	if (usb_pipeisoc(pipe) && dma) {
 		if (musb_tx_dma_program(musb->dma_controller, hw_ep, qh, urb,
 		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;
 			return;
+		}
 	} else	if (tx_csr & MUSB_TXCSR_DMAENAB) {
 	} else	if (tx_csr & MUSB_TXCSR_DMAENAB) {
 		DBG(1, "not complete, but DMA enabled?\n");
 		DBG(1, "not complete, but DMA enabled?\n");
 		return;
 		return;