> > We have tested and it doesn't work with current driver. Have you tested > it and was it working for you ? > > > > Not with the current driver, I must admit. I'll try it today... > > >>> diff --git a/drivers/usb/musb/musb_host.c > b/drivers/usb/musb/musb_host.c > >>> index cf94511..e3ab40a 100644 > >>> --- a/drivers/usb/musb/musb_host.c > >>> +++ b/drivers/usb/musb/musb_host.c > >>> @@ -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; > >>> > >>> > >> It will have been already started by this moment -- from > >> musb_start_urb() which is enough . Otherwise it wouldn't work, and I've > >> made sure it *does* work. > >> > > > > This part is being done at musb_host_rx() > > You're doing it in musb_host_tx() actually. Although musb_host_rx() > is also broken WRT the isochronous transfers. > > > doing next packet programming within same urb and *not* starting next > urb. Thus musb_start_urb() doesn't come into this path. > > What? Read the code, please -- musb_start_urb() call should always > precede musb_host_tx() which handles the DMA interrupt. Unless something > clears DMAReqEnab after musb_start_urb() call, setting it only once > should work. musb_start_urb() call does precede musb_host_tx() but when urb is *completed*. check the 'done' flag and musb_advance_schedule getting called in the path. if (done) { /* set status */ urb->status = status; urb->actual_length = qh->offset; musb_advance_schedule(musb, urb, hw_ep, USB_DIR_OUT); return; } else if (usb_pipeisoc(pipe) && dma) { if (musb_tx_dma_program(musb->dma_controller, hw_ep, qh, urb, offset, length)) { if (is_cppi_enabled() || tusb_dma_omap() || is_cppi41_enabled()) musb_h_tx_dma_start(hw_ep); return; } > > > So it wouldn't start the DMAs. > > > > How musb_host_tx() can be called without musb_start_urb()? > > > In case of PIO, it does load the FIFO and sets the TXPKTREADY. > > > > Only is URB_ISO_ASAP is not set. > > WBR, Sergei > > > -Ajay > > WBR, Sergei > > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html