On Wed, 12 May 2004, fengwei yin wrote: > Hi,everyone > > I have a 4-port usb hub.If on pc,every thing is ok. > > When I use it on my board based mips(big endian),it can be > detected by 2-port hub-on-board.But When I connect some usb > device on this 4-port hub,usb_get_port_status of 4-poprt hub > return 0x1010100(should be 0x10101, 0x1010100=le32_to_cpu(0x10101)). > So hub driver think there is nothing connect.
The oldest kernel I've got is 2.4.20, which might not be the same as your 2.4.17. However, in my kernel usb_get_port_status() doesn't return a 32-bit value at all. What it returns is the status of the transfer (which should be 0) -- the data itself is stored using a pointer to a struct usb_port_status, which defines the first 16-bit part as wHubStatus and the second 16-bit part as the wHubChange. There's no way these values can get interchanged. > If I connect this usb device directly to 2-port hub, > usb_get_port_status of 2-port hub-on-board return 0x10101. > > I wonder why 2-port hub and 4-port hub return different port status. > Is there big endian hub & little endian hub? > > I google for this problem,but get nothing. > > BTW,2-port hub is hub on my mips board.linux kernel is linux-2.4.17 > from MontaVista. You can try using a later kernel. Alan Stern ------------------------------------------------------- This SF.Net email is sponsored by Sleepycat Software Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to deliver higher performing products faster, at low TCO. http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3 _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel