Hi Dave,

Thanks for your patch, I tried it, but still got problems.
As I understand, the patch is mainly done in function
musb_bulk_rx_nak_timeout(), which is called in musb_host_rx():

@@ -1420,18 +1461,26 @@ void musb_host_rx(struct musb *musb, u8
        } else if (rx_csr & MUSB_RXCSR_DATAERROR) {

                if (USB_ENDPOINT_XFER_ISOC != qh->type) {
                        ......
-                       DBG(6, "RX end %d NAK timeout\n", epnum);
+                       if (usb_pipebulk(urb->pipe)
+                                       && qh->mux == 1
+                                       && !list_is_singular(&musb->in_bulk)) {
+                               musb_bulk_rx_nak_timeout(musb, hw_ep);
+                               return;
+                       }

However I can never get it called here because the rx_csr was not
MUSB_RXCSR_DATAERROR.

What I need to mention is, I commented out this line when I was
patching my kernel:

+                                       && qh->mux == 1

Because the kernel we are using is 2.6.22, which doesn't have this
field. Would this be the key point?

Also I tried to move the codes out of the "else if" clause, it did
work for DMA mode but not for PIO, so I'm still trying.


Thanks
Hongjun


On Thu, Mar 5, 2009 at 12:36 PM, David Brownell <[email protected]> wrote:
> On Thursday 05 March 2009, ququ wrote:
>> Since you mentioned that the patch is in queue for being merged into
>> kernel, is there anyway I can get it now? We need it badly. Thanks.
>
> Grab it from the queue ...
>
>  http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-04-usb/
>
>
>

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to