Hi,
We are developing a board using the AMCC PPC440EPx CPU, and we've
included the NEC PD720101 host controller on the PCI bus. I've tested
a similar configuration using the Sequoia reference board with a
Belkin card containing the same NEC chip, and EHCI works fine there.
However, on our board, I am seeing some issues.
When I plug in a high-speed hub, the EHCI driver hangs. I added a lot
of debugging to usbcore to try to find the failure, and it seems that
the very first URB sent to the device times out, and cannot be
reclaimed by the HCD.
usb 2-1: new high speed USB device using ehci_hcd and address 2
usb 2-1: done setting up TT records
usb 2-1: get descriptor, try 1/2
usb 2-1: issue GET_DESCRIPTOR
start wait for urb (cf91c3c0/c05bde68), timeout 1000
ehci_urb_enqueue cf91c3c0
timed out
usb 2-1: khubd timed out on ep0in len=0/64
killing timed out urb
usb_kill_urb cf91c3c0
usb_hcd_unlink urb cf91c3c0
get urb lock
get hcd data lock
do unlink1
ehci_urb_dequeue cf91c3c0
unlink1 done
usb_hcd_unlink_urb is done
wait for use_count=0
use_count is now 1
The final messages are in usb_kill_urb. The use_count on the urb never
reaches 0, and ehci-hcd can't be unloaded (rmmod hangs). I dumped the
async schedule using sysfs and saw:
reclaim =
qh/ff106080 dev0 hs ep0 40406000 40000000 (00000000 data0 nak0)
ff107180+setup len=8 00080e80 urb cf91c3c0
ff1070c0 in len=64 80400d80 urb cf91c3c0
ff107120 out len=0 80008c80 urb cf91c3c0
So the URB is still outstanding, if I am reading this correctly. Any
idea what could be going on here? I'm very familiar with OHCI's queue
management now, but not at all with EHCI's, so I'm not sure what
condition the HCD is waiting for to free that URB. I'm hoping we made
an obvious mistake on our design but I'm not sure what to look for.
The only differences specific to the USB hardware that I know of are:
1) we are using a 48MHz clock instead of 30MHz, and 2) we do not
support port power control. We have set the appropriate bits in the
device to reflect those changes.
Thanks,
Mike Nuss
-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html