Gupta, Ajay Kumar wrote:
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*.
I think you are aware that there are multiple packets within same isochronous urb and musb_start_urb() programs only for first packet. ============================================================ case USB_ENDPOINT_XFER_ISOC: qh->iso_idx = 0; qh->frame = 0; offset = urb->iso_frame_desc[0].offset; len = urb->iso_frame_desc[0].length; ============================================================
Sure. What I'm still not aware of is where and how the TXCSR DMA bits are cleared after the first fragment. Hopefully, testing will reveal this...
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