Re: problem with EHCI port status register

Alan Stern <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
On Tue, 12 Jun 2007, Tomohiro Kusumi wrote:

> 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.

The easiest solution is to replace your EHCI hardware with a non-broken 
controller.

But if you want a software workaround, here's what you can do.  During 
ehci_irq() when you see that connect-change bit is on, you should set a 
bitflag.  Turn off the bitflag in ehci_hub_control() when you get a 
ClearPortFeature request for USB_PORT_FEAT_C_CONNECTION.  Then use the 
bitflag in ehci_hub_status_data() and in the GetPortStatus case of 
ehci_hub_control(); when the flag is set turn on the appropriate bit of 
the return value.

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/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.