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