Dear All,
Recently I'm falling in trouble with the USB problems. Hopefully somebody can give me any advice.
We're running wince with BSquare's 6.11 BSP, and we connect the host subsystem's port 2 with ISP1504. Now we're facing problems during device enumration. According to the description of the BSP documentation, the FS/LS device's plugging in leads to owership transferring from EHCI to OHCI host controller, and due to the fact that OCHI cann't talk to devices through ULPI bus, the host subsystem will not work. So we connect a hub chip which supports high-speed mode with HS port 2, and it seems to work.
However, the enumration sometimes fails! The debug information is as follows:
CHub(Root tier 0)::HubStatusChangeThread - port 2, change = 0x0001, status = 0x0501
If successful, the device attachment is done then; If failed, nothing happens. Then I trace the information in wince public code, I found them in cdevice.cpp.
The information of hub status change causes the EHCI driver to try to do device attachment, but first it will reset the port and then get its status again to get information of devices connected(High speed or full speed). The problem happens right here! Normally after reset is done, the value read from port 2 status register indicates the device connected is supporting high speed mode(of course, the hub chip SMSC USB 2512A we used does support high speed), but sometimes the value indicates that the device connected does not support high speed mode, then the owership is released and the companion host controller take it own, and then the system doesn't work again!
I'm confused with the fact that high-speed handshake failed between OMAP and the hub chip, it should not happen normally. Does OMAP3530 work not properly with some hub chips or there is something I have't noticed.
I hope somebody can help me, I'm very depressed these days. Thanks!