> > 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-omap" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html