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 _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel