Re: ohci: USB devices only detected at boot time

Alan Stern <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
On Tue, 13 Feb 2007, Raphael Assenat wrote:

> Hello,
> I have some pxa270 based single board computers which have an 
> IT8152G companion chip. This chip has a built-in USB Host controller 
> which is (according to the datasheet) register compatible with OHCI 
> specification version 1.0.
> 
> During boot, I see that the OHCI controller is detected properly. 
> Devices that were already connected to the USB ports handled by this 
> chip are also detected at boot time. And they work correcly.
> 
> But when I connect a new device to a free port, nothing happens.

Is that true even if there was also a device attached at boot time, or 
does it happen only when you connect a new device and all the ports are 
unoccupied?

>  No 
> messages in dmesg, and the device does not seem to initialize. (eg: 
> Led under optical mouse does not turn on). I have verified, and 
> there is power on the USB power pins. If I disconnect a device that 
> was present at boot time and reconnect it, it is not re-detected.
> 
> Here is a list of kernel version I was able to test with, and the 
> results:
> 2.6.20 -> Same problems as described above.
> 2.6.18 -> Same problems as described above.
> 2.6.17.5 -> Same problems as described above.
> 2.6.16.12 -> Everything works fine.
> 
> Suspecting that this could be a bug in the chip's implementation 
> exposed by some new features, I started looking at the code in the 
> hope to find stuff like controller specific work arounds, quirks, 
> etc to try. but I found nothing that was applicable to my problem...

It sounds like your chip doesn't obey the RHSC bit in the
HcInterruptEnable register.  But the problem might be something else.

> I eventually decided to try the modification below, and now it works 
> correctly! But I dont understand why as I have very little knowledge 
> on the subject.
> 
> Any ideas?
> 
> --- linux-2.6.20/drivers/usb/host/ohci-hub.c
> +++ linux-2.6.20-8d/drivers/usb/host/ohci-hub.c
> @@ -413,7 +413,7 @@
>   {
>      struct ohci_hcd *ohci = hcd_to_ohci (hcd);
>      int     i, changed = 0, length = 1;
> -   int     any_connected = 0;
> +   int     any_connected = RH_PS_CCS;

That variable is a binary value.  You might as well just set it to 1; 
storing RH_PS_CCS there means nothing.

> Detection messages:
> ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
> ohci_hcd 0000:00:01.4: OHCI Host Controller
> ohci_hcd 0000:00:01.4: new USB bus registered, assigned bus number 2
> ohci_hcd 0000:00:01.4: irq 167, io mem 0x10000000

If you want to get useful information from the system log, you have to 
turn on CONFIG_USB_DEBUG.

Alan Stern


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[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.