Hi Alan > This could be a problem with the BIOS. You might try going through the > BIOS setup and turning off support for Legacy USB or anything else > which might cause the BIOS to interfere with USB operations.
Thanks for pointing out the possible BIOS problem regarding the EHCI port status register problem a few weeks ago. I went through the BIOS setup but all the Legacy USB stuffs are turned off. Changing USB settings didn't affect the result. So right now I'm trying to see if I can make workaround by changing ehci_hub_status_data() function. As I've explained before, the problem is that the port status register is 0x1005 when it should be something like 0x1803. As a result ehci_hub_status_data() returns 0 and mod_timer(hcd->rh_timer, jiffies+HZ/4) is called forever. I tried to write 0x1803 to the register when it has 0x1005, but it didn't work. It got back to 0x1005 when ehci_hub_status_data() is called next time. Up until the 2.6.21 kernel (I'm using 2.6.9) it seems that the logic hasn't been changed much, which continues to do ehci_hub_status_data() until certain bits are turned on. Is it possible to get out of this timer function loop, and let the driver detect the USB device? Any suggestions would be helpful. Thanks, Tomohiro Kusumi Alan Stern wrote: > On Fri, 18 May 2007, Tomohiro Kusumi wrote: > >> Hi >> >> I'm using HP storageworks USB DAT device on RHEL4 (based on kernel 2.6.9). >> It works okay most of the times, but sometimes the driver does not detect >> the device (about 1 out of 10 times). No other USB devices are used on the >> system. Let me explain some details. >> >> I turned on the CONFIG_USB_DEBUG option and put some orignal debug printk >> into the EHCI and core driver code. I found out that the >> ehci_hub_status_data() >> returns 0 when the DAT device is not detected. As a result the URB is not >> given back to the URB's complete function which is hub_irq(). If the function >> returns non zero, khubd is woken up as a sequence of hub_irq() and the setup >> control packets will be sent to the newly detected device. Am I right? >> >> The reason why ehci_hub_status_data() returns 0 is because the EHCI's port >> status register for the DAT is 0x1005 (PORT_POWER | PORT_PE | PORT_CONNECT), >> although it should be something like 0x1803 if the device is detected >> properly. >> As far as I know, the port status becomes 0x1005 only after the device is >> detected. Since the port status is 0x1005 when ehci_hub_status_data() is >> executed, the driver assumes that the device has already been detected, >> so it does not try to detect it as I mentioned above. >> >> Have any of you ever seen the same situation before? Or is there any way >> to fix this issue regarding the port status? Any suggestions would be >> helpful. > > This could be a problem with the BIOS. You might try going through the > BIOS setup and turning off support for Legacy USB or anything else > which might cause the BIOS to interfere with USB operations. > > Alan Stern > > > ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel