fengwei yin wrote:

I read datasheet & our kernel source again and found that there is a control
in our ochi controller.It was set to perform endian swap.So I cleared it to
deny endian swap by ohci controller.When some usb device connect to 2-port hub,

What data does that swap though? OHCI should be reading and writing all its data in little endian format; and its registers, accessed through PCI BAR 0 by word reads, will always appear in host byte order.


2-port hub can read correct hub port status.But when usb_set_address was called, there is a oops. ..

...

???; 800f9ab0 <dl_done_list+7c/2a4> <=====

...


I digged more and found that there is a urb point to 0 in function dl_done_list().

...
while (td_list) {
td_list_next = td_list->next_dl_td;
urb = td_list->urb; ----> urb is 0;
urb_priv = urb->hcpriv;
...
If I enable endian swap by ohci controller,urb is correct value.
I think that some urb is freed but didn't unlink from td_list.
But why endian cause such problem?

That's a fine question. Do you know for a fact that the controller is only writing the fields (in TD and ED) that the OHCI spec says it's allowed to write? And that DMA into those structures is cache-coherent? It might need to use uncached memory ...

The TD (and ED) structures have two parts.  The first part is what's
specified in the OHCI spec -- hardware reads it, and writes some
fields; always little-endian.  The second part is just for the driver;
always in host byte-order.  If for some reason your controller is
confused and is overwriting the software's part, that could be trouble.


You can try using a later kernel.

Sorry,I can't update kernel now because there are many modification & porting for our board based on this version.

A 2.4.17 kernel IS quite old. You might even just try grabbing the usb-ohci code from 2.4.27-pre ... it's had bugfixes since then, though none that I think should affect that. There's a backport of the ohci-hcd driver available too, but it won't run on anything that old.

- Dave




------------------------------------------------------- This SF.Net email is sponsored by: SourceForge.net Broadband Sign-up now for SourceForge Broadband and get the fastest 6.0/768 connection for only $19.95/mo for the first 3 months! http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to