Jump to content


Photo

Low-speed USB devices not recognised


  • Please log in to reply
21 replies to this topic

#1 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 31 March 2009 - 08:15 AM

I'm trying to hook up a home-built MSF clock module to the embedded controller. The device has a USB 1.1 interface implemented in software on an AVR microcontroller, so I can't get a high speed version.

When I plug the device in, it doesn't work. dmesg shows a bunch or error messages implying the device isn't responding and eventually it's disabled. Any attempt to access the device via libusb then fails.

Every other low-speed USB device I have tried behaves exactly the same, but high speed devices (USB microscope, memory sticks) are recognised OK. My clock module also works fine when connected to either a Windows or Ubuntu PC. Therefore, I don't think it's a problem with either the peripheral or the embedded controller hardware.

Here's the dmesg output when I plug first a full-speed then a low-speed USB device into the board (both devices work when connected to other computers):

Full-speed (USB Microscope):
usb 1-2: new full speed USB device using adm5120-hcd and address 3
usb 1-2: configuration #1 chosen from 1 choice
usb 1-2: USB disconnect, address 3


Low-speed (Microsoft Wireless Optical Desktop Receiver)
usb 1-2: new low speed USB device using adm5120-hcd and address 4
usb 1-2: device not accepting address 4, error -145
usb 1-2: new low speed USB device using adm5120-hcd and address 5
usb 1-2: device descriptor read/64, error -145
usb 1-2: device descriptor read/64, error -145
usb 1-2: new low speed USB device using adm5120-hcd and address 6
usb 1-2: device not accepting address 6, error -145
usb 1-2: new low speed USB device using adm5120-hcd and address 7
usb 1-2: device not accepting address 7, error -145
hub 1-0:1.0: unable to enumerate USB device on port 2
usb 1-1: reset full speed USB device using adm5120-hcd and address 2
usb 1-1: device descriptor read/64, error -145
usb 1-1: device descriptor read/64, error -145
usb 1-1: reset full speed USB device using adm5120-hcd and address 2

And this is what I've got installed:
root@OpenWrt:/home/test# opkg list_installed
base-files-adm5120 - 13-r12571 -
bitlib - 25-1 -
busybox - 1.11.1-1 -
hotplug2 - 0.9+r102-2 -
kernel - 2.6.26.3-adm5120-1 -
kmod-fs-ext2 - 2.6.26.3-adm5120-1 -
kmod-fs-mbcache - 2.6.26.3-adm5120-1 -
kmod-hid - 2.6.26.3-adm5120-1 -
kmod-input-core - 2.6.26.3-adm5120-1 -
kmod-input-evdev - 2.6.26.3-adm5120-1 -
kmod-usb-core - 1-0 -
kmod-usb-ohci - 2.6.26.3-adm5120-1 -
libgcc - 4.1.2-13 -
liblua - 5.1.4-1 -
libpthread - 0.9.29-13 -
libuci - 0.6.2-1 -
libuci-lua - 0.6.2-1 -
libusb - 0.1.12-1 -
lua - 5.1.4-1 -
luaposix - 5.1.3-1 -
opkg - 4564-1 -
python - 2.5.1-2 -
uci - 0.6.2-1 -
uclibc - 0.9.29-13 -
udevtrigger - 106-1 -
zlib - 1.2.3-5 -

(I added kmod-usb-ohci to see if it would help, but it appears to make no difference. Nor did kmod-usb-uhci)

Has anyone else had problems with low-speed USB? Any idea what's wrong?




#2 Dean

Dean

    Advanced Member

  • Members
  • PipPipPip
  • 89 posts

Posted 04 April 2009 - 06:21 PM

Hi Steve,

I was working yesterday with one of the USB flash drives and started getting "usb 1-2: device descriptor read/64, error -145" errors.

I looked at the USB flash connections and noticed that one of the two D- or D+ pins where not connected properly to the USB socket. Connecting the pin properly has resolved the issue.

I'm not sure whether this may be related to the problems you had with your device but it was reporting the same error.

Dean



#3 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 05 April 2009 - 02:21 PM

Thanks for the tip Dean. I don't have access to the hardware right now but as soon as I do I'll double check all the connections.

That said, I'm pretty certain it's not a hardware problem with any of the devices I've tried, because they all function correctly when connected to other computers, and the same errors appear whichever USB port I use on the embedded controller. (Plus the USB stick and other high speed devices work correctly with the controller)

Looking at the USB driver source, -145 is a timeout error. I've also seen error -71, which is (from memory) EPROTO. Both suggest that the low-speed devices are not responding to communications from the hub, but I'm not sure where to look next.

#4 daThird313

daThird313

    Newbie

  • Members
  • Pip
  • 2 posts

Posted 07 April 2009 - 09:08 PM

root@OpenWrt:/# opkg list_installed
base-files-adm5120 - 13-r12571 -
busybox - 1.11.1-1 -
hotplug2 - 0.9+r102-2 -
kernel - 2.6.26.3-adm5120-1 -
kmod-hid - 2.6.26.3-adm5120-1 -
kmod-input-core - 2.6.26.3-adm5120-1 -
kmod-input-evdev - 2.6.26.3-adm5120-1 -
kmod-usb-adm5120 - 2.6.26.3-adm5120-1 -
kmod-usb-core - 2.6.26.3-adm5120-1 -
kmod-usb-hid - 2.6.26.3-adm5120-1 -
kmod-usb-ohci - 2.6.26.3-adm5120-1 -
kmod-usb-serial - 2.6.26.3-adm5120-1 -
kmod-usb-serial-ftdi - 2.6.26.3-adm5120-1 -
kmod-usb-uhci - 2.6.26.3-adm5120-1 -
kmod-usb2 - 2.6.26.3-adm5120-1 -
libgcc - 4.1.2-13 -
libuci - 0.6.2-1 -
opkg - 4564-1 -
uci - 0.6.2-1 -
uclibc - 0.9.29-13 -
udevtrigger - 106-1 -

usb 1-2: new low speed USB device using adm5120-hcd and address 8
root@OpenWrt:/# usb 1-2: device not accepting address 8, error -145
usb 1-2: new low speed USB device using adm5120-hcd and address 9
usb 1-2: device descriptor read/64, error -145
usb 1-2: device descriptor read/64, error -145
usb 1-2: new low speed USB device using adm5120-hcd and address 10
usb 1-2: device not accepting address 10, error -145
usb 1-2: new low speed USB device using adm5120-hcd and address 11
usb 1-2: device not accepting address 11, error -145
hub 1-0:1.0: unable to enumerate USB device on port 2
usb 1-1: reset full speed USB device using adm5120-hcd and address 2

I'm trying plugging in a Logitech USB Mouse M/N:M-UV55a
I tried installing ohci as well but it didn't do anything

I personally think it has to do with the fact that we are having to talk to a usb 1.1 device over a usb 2.0 port which is talking to a high speed device, the USB stick.
I remember having problems with this on the WRTSL54GS way back in the day. That wasn't a problem though as I only needed the HID device and I got it working by
not having anything other than USB 1.1 devices plugged in.

#5 Dean

Dean

    Advanced Member

  • Members
  • PipPipPip
  • 89 posts

Posted 08 April 2009 - 07:19 AM

I'll have a look at the -145 errors and support for HID devices over the next week.

There are no reasons as to why HID devices such as mice, joysticks and keyboards shouldn't work as they are low speed devices.

I'll unleash the USB analyzer and try see where the problem is.

Regards,
Dean

#6 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 08 April 2009 - 01:21 PM

Reassuring (in a way) to find that it's not only me experiencing this problem. I guess that rules out hardware problems unless there's some issue with the controller design itself, which seems relatively unlikely.

Good to hear you're on the case Dean. FWIW I did a test with a "fresh" copy of Squidge (no additional packages installed) and got exactly the same result, so it doesn't seem to be the result of installing any additional drivers etc.

#7 daThird313

daThird313

    Newbie

  • Members
  • Pip
  • 2 posts

Posted 09 April 2009 - 02:23 PM

I thought that it might have to do with using the USB stick and the low speed USB devices at the same time. I think however it might be something lower down. I downloaded Kamikaze 8.09 rc2 and compiled it for ADM5120. I uploaded the firmware and got it up and running without a usb stick. I then tried the logitech mouse I tried in the earlier post, my microsoft comfort optical mouse and my microsoft natural ergonomic keyboard. No luck. I get the same 145 error

usb 1-1: new low speed USB device using adm5120-hcd and address 2
root@OpenWrt:/# usb 1-1: device not accepting address 2, error -145
usb 1-1: new low speed USB device using adm5120-hcd and address 3

root@OpenWrt:/# usb 1-1: device not accepting address 3, error -145
usb 1-1: new low speed USB device using adm5120-hcd and address 4

root@OpenWrt:/# lsmousb 1-1: device descriptor read/all, error -145 //it gave an error as I was typing lsmod
dusb 1-1: new low speed USB device using adm5120-hcd and address 5

Module Size Used by Not tainted
usbhid 16816 0
hid 35088 1 usbhid
evdev 6912 0
ehci_hcd 27888 0
uhci_hcd 18448 0
ohci_hcd 16240 0
adm5120_hcd 11328 0
ppp_async 6912 0
ppp_generic 20288 1 ppp_async
slhc 5248 1 ppp_generic
crc_ccitt 992 1 ppp_async
usbcore 100064 6 usbhid,ehci_hcd,uhci_hcd,ohci_hcd,adm5120_hcd
button_hotplug 2720 0
gpio_buttons 2080 0
input_polldev 1552 1 gpio_buttons
input_core 18768 7 usbhid,hid,evdev,button_hotplug,gpio_buttons,input_polldev
root@OpenWrt:/# usb 1-1: device descriptor read/all, error -145
hub 1-0:1.0: unable to enumerate USB device on port 1

root@OpenWrt:/# dmesg
Linux version 2.6.26.5 (santiago@santiago-desktop) (gcc version 4.1.2) #1 Thu Apr 9 02:33:11 EDT 2009
console [early0] enabled
CPU revision is: 0001800b (MIPS 4Kc)
SoC : ADM5120P revision 8, running at 175MHz
Bootdev : NOR flash
Prom : Generic
Determined physical RAM map:
memory: 01000000 @ 00000000 (usable)
Entering add_active_range(0, 0, 4096) 0 entries of 256 used
Initrd not found or empty - disabling initrd
Zone PFN ranges:
Normal 0 -> 4096
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
0: 0 -> 4096
On node 0 totalpages: 4096
Normal zone: 32 pages used for memmap
Normal zone: 0 pages reserved
Normal zone: 4064 pages, LIFO batch:0
Movable zone: 0 pages used for memmap
Built 1 zonelists in Zone order, mobility grouping off. Total pages: 4064
Kernel command line: console=ttyS0,115200 rootfstype=squashfs,yaffs2,jffs2 init=/etc/preinit
Primary instruction cache 8kB, VIPT, 2-way, linesize 16 bytes.
Primary data cache 8kB, 2-way, VIPT, no aliases, linesize 16 bytes
PID hash table entries: 64 (order: 6, 256 bytes)
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 13856k/16384k available (1816k kernel code, 2528k reserved, 317k data, 132k init, 0k highmem)
SLUB: Genslabs=6, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Calibrating delay loop... 173.56 BogoMIPS (lpj=347136)
Mount-cache hash table entries: 512
net_namespace: 484 bytes
NET: Registered protocol family 16
ADM5120: board is 'Edimax BR-6104KP'
PCI: not available on ADM5120P
Switched to high resolution mode on CPU 0
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
NET: Registered protocol family 1
squashfs: version 3.0 (2006/03/15) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2. (NAND) (SUMMARY) 2001-2006 Red Hat, Inc.
yaffs Apr 9 2009 02:29:51 Installing.
msgmni has been set to 27
io scheduler noop registered
io scheduler deadline registered (default)
Serial: AMBA driver $Revision: 1.41 $
APB:UART0: ttyS0 at MMIO 0x12600000 (irq = 9) is a AMBA
console handover: boot [early0] -> real [ttyS0]
APB:UART1: ttyS1 at MMIO 0x12800000 (irq = 10) is a AMBA
ADM5120 built-in ethernet switch driver version 0.1.1
adm5120-flash.0: probing at 0x1FC00000, size:2048KiB, width:16 bits
adm5120-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
adm5120-flash.0: CFI does not contain boot bank location. Assuming top.
adm5120-flash.0: Macronix chip detected, id:0x2249, boot location forced to bottom
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
adm5120-flash.0: found at 0x1FC00000, size:2048KiB, width:16 bits
adm5120-flash.0: adding static partitions
Creating 3 MTD partitions on "adm5120-flash.0":
0x00000000-0x00008000 : "admboot"
0x00008000-0x00010000 : "config"
0x00010000-0x00200000 : "firmware"
adm5120_wdt: Watchdog Timer version 0.1
TCP vegas registered
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
trxsplit: searching TRX header in 'admboot'
trxsplit: searching TRX header in 'config'
trxsplit: searching TRX header in 'firmware'
trxsplit: TRX header found at 0x2000
trxsplit: creating TRX partitions in 'firmware' (31,2)
Creating 2 MTD partitions on "firmware":
0x0000201c-0x000bb400 : "kernel"
mtd: partition "kernel" doesn't start on an erase block boundary -- force read-only
0x000bb400-0x001f0000 : "rootfs"
mtd: partition "rootfs" doesn't start on an erase block boundary -- force read-only
mtd: partition "rootfs" set to be root filesystem
mtd: partition "rootfs_data" created automatically, ofs=180000, len=70000
0x00180000-0x001f0000 : "rootfs_data"
VFS: Mounted root (squashfs filesystem) readonly.
Freeing unused kernel memory: 132k freed
Please be patient, while OpenWrt loads ...
Algorithmics/MIPS FPU Emulator v1.5
gpio-buttons driver version 0.1.1
input: gpio-buttons as /devices/platform/gpio-buttons/input/input0
Button Hotplug driver version 0.3.1
mini_fo: using base directory: /
mini_fo: using storage directory: /tmp/root
br-lan: Dropping NETIF_F_UFO since no NETIF_F_HW_CSUM feature.
device eth0 entered promiscuous mode
br-lan: port 1(eth0) entering learning state
br-lan: topology change detected, propagating
br-lan: port 1(eth0) entering forwarding state
br-lan: port 1(eth0) entering disabled state
br-lan: port 1(eth0) entering learning state
br-lan: topology change detected, propagating
br-lan: port 1(eth0) entering forwarding state
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
PPP generic driver version 2.4.2
admhc-hcd: ADMtek USB 1.1 Host Controller Driver version 0.25.0
admhc-hcd: block sizes: ed 64 td 64
adm5120-hcd adm5120-hcd: ADM5120 built-in USB 1.1 Host Controller
adm5120-hcd adm5120-hcd: new USB bus registered, assigned bus number 1
adm5120-hcd adm5120-hcd: irq 11, io mem 0x11200000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
USB Universal Host Controller Interface driver v3.0
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
jffs2_scan_eraseblock(): End of filesystem marker found at 0x0
jffs2_build_filesystem(): unlocking the mtd device... done.
jffs2_build_filesystem(): erasing all blocks after the end marker... done.
mini_fo: using base directory: /
mini_fo: using storage directory: /jffs
adm5120_wdt: enabling watchdog timer
usb 1-1: new low speed USB device using adm5120-hcd and address 2
usb 1-1: device not accepting address 2, error -145
usb 1-1: new low speed USB device using adm5120-hcd and address 3
usb 1-1: device not accepting address 3, error -145
usb 1-1: new low speed USB device using adm5120-hcd and address 4
usb 1-1: device descriptor read/all, error -145
usb 1-1: new low speed USB device using adm5120-hcd and address 5
usb 1-1: device descriptor read/all, error -145
hub 1-0:1.0: unable to enumerate USB device on port 1
root@OpenWrt:/# usb 1-1: new low speed USB device using adm5120-hcd and address 6
usb 1-1: device not accepting address 6, error -145
usb 1-1: new low speed USB device using adm5120-hcd and address 7
usb 1-1: device not accepting address 7, error -145
hub 1-0:1.0: cannot disable port 1 (err = -19)
hub 1-0:1.0: cannot reset port 1 (err = -19)
hub 1-0:1.0: cannot disable port 1 (err = -19)
hub 1-0:1.0: cannot reset port 1 (err = -19)
hub 1-0:1.0: cannot disable port 1 (err = -19)
hub 1-0:1.0: unable to enumerate USB device on port 1
hub 1-0:1.0: cannot disable port 1 (err = -19)
usb 1-2: new low speed USB device using adm5120-hcd and address 10
usb 1-2: device descriptor read/all, error -145
usb 1-2: new low speed USB device using adm5120-hcd and address 11
hub 1-0:1.0: cannot reset port 2 (err = -19)
hub 1-0:1.0: cannot disable port 2 (err = -19)
hub 1-0:1.0: cannot reset port 2 (err = -19)
hub 1-0:1.0: cannot disable port 2 (err = -19)
hub 1-0:1.0: cannot reset port 2 (err = -19)
hub 1-0:1.0: cannot disable port 2 (err = -19)
hub 1-0:1.0: unable to enumerate USB device on port 2
hub 1-0:1.0: cannot disable port 2 (err = -19)
usb 1-1: new low speed USB device using adm5120-hcd and address 14
usb 1-1: device not accepting address 14, error -145
usb 1-1: new low speed USB device using adm5120-hcd and address 15
usb 1-1: device not accepting address 15, error -145
usb 1-1: new low speed USB device using adm5120-hcd and address 16
usb 1-1: device descriptor read/all, error -145
usb 1-1: new low speed USB device using adm5120-hcd and address 17
usb 1-1: device descriptor read/all, error -145
hub 1-0:1.0: unable to enumerate USB device on port 1
usb 1-1: new low speed USB device using adm5120-hcd and address 18

root@OpenWrt:/# usb 1-1: device not accepting address 18, error -145
usb 1-1: new low speed USB device using adm5120-hcd and address 19
usb 1-1: device not accepting address 19, error -145
hub 1-0:1.0: cannot disable port 1 (err = -19)
hub 1-0:1.0: cannot reset port 1 (err = -19)
hub 1-0:1.0: cannot disable port 1 (err = -19)
hub 1-0:1.0: cannot reset port 1 (err = -19)
hub 1-0:1.0: cannot disable port 1 (err = -19)
hub 1-0:1.0: unable to enumerate USB device on port 1
hub 1-0:1.0: cannot disable port 1 (err = -19)


#8 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 20 April 2009 - 04:47 PM

QUOTE (Dean @ Apr 8 2009, 08:19 AM) <{POST_SNAPBACK}>
I'll have a look at the -145 errors and support for HID devices over the next week.
There are no reasons as to why HID devices such as mice, joysticks and keyboards shouldn't work as they are low speed devices.
I'll unleash the USB analyzer and try see where the problem is.
Regards,
Dean


Any progress with the USB analysis Dean?

I've spent some time scanning the USB subsystem source and all I can conclude so far is that a timeout is occurring while the controller is trying to read the device descriptor.
I've tried different settings of the use_both_schemes and old_scheme_first parameters without success - they change the order of the error messages but the -145s persist.
Connecting the device via a USB2.0 hub changes the error codes to -71 and 64 (a posititive error, not sure yet how this sneaks out) but still doesn't work.
I haven't managed to get verbose error messages out of the USB subsystem yet

I'd really appreciate any help anyone can offer: the main attraction of this board was the USB ports, and they won't talk to my devices!

#9 Dean

Dean

    Advanced Member

  • Members
  • PipPipPip
  • 89 posts

Posted 21 April 2009 - 08:50 AM

Hi,

QUOTE (steveh @ Apr 20 2009, 05:47 PM) <{POST_SNAPBACK}>
Any progress with the USB analysis Dean?


I haven't managed to make much progress as yet but I'll be working on getting PIC18f2553, mouse and keyboad hid devices working on the Embedded Controller.

Have you enabled the Hid devices option in the OpenWrt config? I'd assime that you've done this but it's worth a check.

Dean

#10 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 22 April 2009 - 07:59 AM

QUOTE (Dean @ Apr 21 2009, 09:50 AM) <{POST_SNAPBACK}>
Have you enabled the Hid devices option in the OpenWrt config? I'd assime that you've done this but it's worth a check.


Yes, HID support ie enabled.
I thiink the problem is happening at a lower level than this, since device enumeration is failing.

#11 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 30 April 2009 - 05:40 PM

This post: http://forum.openwrt...ic.php?id=16512 on the OpenWrt forum suggests the adm5120-hcd driver has problems with low-speed devices.

#12 Dean

Dean

    Advanced Member

  • Members
  • PipPipPip
  • 89 posts

Posted 30 April 2009 - 11:59 PM


Hi Steve,

QUOTE (steveh @ Apr 30 2009, 06:40 PM) <{POST_SNAPBACK}>
This post: http://forum.openwrt...ic.php?id=16512 on the OpenWrt forum suggests the adm5120-hcd driver has problems with low-speed devices.


This will likely be the case at the moment. We are looking at this at the moment and making some progress.

It seems that there is a conflict between the high speed and low speed devices. It is reported that the squash-fs only firmware can often recognise low speed devices without problems, with a report of a numeric keypad working well when connected to the Embedded controller.

The adm5120-hcd may not implement support for low speed devices properly as there are a number of ADM5120 registers that relate to low speed devices but this may not be utilised correctly. For example, the ADM5120 register LowSTh 70h (lsthresh in adm5120hcd_regs) sets the threshold for low speed transactions.

The idea is to:

- Define ADMHC_VERBOSE_DEBUG to enable tracing of the HCD data flow
- Build a squashfs only firmware
- Observe when the ADM5120 detects lows speed devices and when it doesn't, then compare the trace output from the adm5120-xxx.c files located in drivers/usb/host folder. Hopefully this will show why and when the lowspeed devices are not detected.

More info to follow soon.

Dean



#13 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 01 May 2009 - 08:21 AM

I've been looking at the code myself (hence my interest in tftp uploading elsewhere). In case it helps, here's a summary.

adm5120-hcd does not initialise lsthresh, but adding code to do so makes no difference. I first thought this was because the register defaults to 0x628 (1576 decimal) anyway, and the few code examples I found that do initialise the register also set it to 0x628. However, closer examination of the adm5120 datasheet reveals that the register is read-only, and says "The value is calculated by HCD with the consideration of transmission and setup overhead", so I have no idea why this value is exposed as a register and what you're meant to do with it. I haven't tried looking at the value while the driver is running yet.

There actually seems to be very little device-speed-sensitive code in the driver. I have been focusing on the SP (Speed) field (bit 13) of the Control Register in the Endpoint Descriptor (pp 160 onwards in the v1.6 datasheet). Function ad_get(...) in adm5120-q.c sets this bit appropriately in the endpoint descriptor depending on the speed of the device attached, but I have not yet figured out how (or whether) this ever gets passed on to the hardware.

#14 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 01 May 2009 - 08:33 PM

QUOTE (Dean @ May 1 2009, 12:59 AM) <{POST_SNAPBACK}>
The idea is to:
- Define ADMHC_VERBOSE_DEBUG to enable tracing of the HCD data flow
- Build a squashfs only firmware
- Observe when the ADM5120 detects lows speed devices and when it doesn't, then compare the trace output from the adm5120-xxx.c files located in drivers/usb/host folder. Hopefully this will show why and when the lowspeed devices are not detected.


This is effectively what daThird313 tried according to his 9 April post.
I've just done the same - OpenWrt built to boot without a USB stick fails to enumerate low-speed devices with error -145. It recognises full-speed devices OK.
I've got ADMHC_VERBOSE_DEBUG defined, so the next step is to pick through the mass of output to see if there's anything obviously wrong.

#15 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 08 May 2009 - 12:28 AM

QUOTE (steveh @ May 1 2009, 09:33 PM) <{POST_SNAPBACK}>
I've got ADMHC_VERBOSE_DEBUG defined, so the next step is to pick through the mass of output to see if there's anything obviously wrong.

This is costing me a lot of midnight oil, so far with little success. Here's a bit more detail in the hope that someone out there knows what's going on.
Here's the first part of the log when a full-speed device is plugged in to the USB:
CODE
adm5120-hcd: Root Hub Status Change
hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0004
adm5120-hcd: write port1 = 0x00010000 CSC
hub 1-0:1.0: port 2, status 0101, change 0001, 12 Mb/s
adm5120-hcd: write port1 = 0x00010000 CSC
hub 1-0:1.0: debounce: port 2: total 125ms stable 100ms status 0x101
adm5120-hcd: reset port1
adm5120-hcd: write port1 = 0x00100000 PRSC
usb 1-2: new full speed USB device using adm5120-hcd and address 3
adm5120-hcd: URB-ENQEUE 80a26b00 dev=0 ep=0in-ctrl flags=200 len=0/64 stat=-150
adm5120-hcd: DMA enabled
adm5120-hcd: admhc_urb_enqueue ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 00402000 MAX=64 FULL EP=0 DEV=0
adm5120-hcd: tds: head 00cdc180 tail 00cdc140 DATA0 td list follows
adm5120-hcd: -> td a0cdc180; urb 80a26b00 index 0; hwNextTD 00cdc1c0
adm5120-hcd: status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd: dbp 00a26500; cbl 00000008; LEN=8
adm5120-hcd: -> td a0cdc1c0; urb 80a26b00 index 1; hwNextTD 00cdc100
adm5120-hcd: status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd: dbp 00a26a00; cbl 00000040; LEN=64
adm5120-hcd: -> td a0cdc100; urb 80a26b00 index 2; hwNextTD 00cdc140
adm5120-hcd: status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 00402000 MAX=64 FULL EP=0 DEV=0
adm5120-hcd: tds: head 00cdc140 tail 00cdc140 DATA0 td list follows
adm5120-hcd: -> td a0cdc180; urb 80a26b00 index 0; hwNextTD 00cdc1c0
adm5120-hcd: status 01800000 CC=0 EC=0 DATA1 SETUP ISI=0 FN=0
adm5120-hcd: dbp 00a26508; cbl 00000000; LEN=0
adm5120-hcd: -> td a0cdc1c0; urb 80a26b00 index 1; hwNextTD 00cdc100
adm5120-hcd: status 49c00000 CC=9 EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd: dbp 00a26a00; cbl 00000012; LEN=18
adm5120-hcd: -> td a0cdc100; urb 80a26b00 index 2; hwNextTD 00cdc140
adm5120-hcd: status 01200000 CC=0 EC=0 DATA0 OUT ISI=0 FN=0
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80a26b00 dev=0 ep=0in-ctrl flags=200 len=18/64 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 40 00
adm5120-hcd: data(18/64): 12 01 00 02 00 00 00 40 45 0c 70 62 01 01 00 01... stat:0
adm5120-hcd: ED-UNLINK ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 00402000 MAX=64 FULL EP=0 DEV=0
adm5120-hcd: tds: head 00cdc140 tail 00cdc140 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 08402000 MAX=64 FULL EP=0 DEV=0
adm5120-hcd: tds: head 00cdc140 tail 00cdc140 DATA0 td list follows
adm5120-hcd: reset port1

The driver requests a 64-byte Device Descriptor, gets back 18 bytes (which is all there is) then resets the device. Note the MAX field in the Endpoint Descriptor is 64, the maximum packet size for a full-speed device.
This is the log when a low-speed device is plugged in:
CODE
adm5120-hcd: Root Hub Status Change
hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0004
adm5120-hcd: write port1 = 0x00010000 CSC
hub 1-0:1.0: port 2, status 0301, change 0001, 1.5 Mb/s
hub 1-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x301
adm5120-hcd: reset port1
adm5120-hcd: Root Hub Status Change
adm5120-hcd: write port1 = 0x00100000 PRSC
usb 1-2: new low speed USB device using adm5120-hcd and address 6
adm5120-hcd: URB-ENQEUE 80a0a780 dev=0 ep=0in-ctrl flags=200 len=0/64 stat=-150
adm5120-hcd: DMA enabled
adm5120-hcd: admhc_urb_enqueue ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd: tds: head 00ce81c0 tail 00ce8100 DATA0 td list follows
adm5120-hcd: -> td a0ce81c0; urb 80a0a780 index 0; hwNextTD 00ce8180
adm5120-hcd: status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd: dbp 00a0a480; cbl 00000008; LEN=8
adm5120-hcd: -> td a0ce8180; urb 80a0a780 index 1; hwNextTD 00ce8140
adm5120-hcd: status 81c00006 OWN CC=0 EC=0 DATA1 IN ISI=0 FN=6
adm5120-hcd: dbp 00a0ac00; cbl 00000040; LEN=64
adm5120-hcd: -> td a0ce8140; urb 80a0a780 index 2; hwNextTD 00ce8100
adm5120-hcd: status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-DEQUEUE 80a0a780 dev=0 ep=0in-ctrl flags=200 len=0/64 stat=-2
adm5120-hcd: ED-UNLINK ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd: tds: head 00ce8180 tail 00ce8100 DATA0 td list follows
adm5120-hcd: -> td a0ce81c0; urb 80a0a780 index 0; hwNextTD 00ce8180
adm5120-hcd: status 01800006 CC=0 EC=0 DATA1 SETUP ISI=0 FN=6
adm5120-hcd: dbp 00a0a488; cbl 00000000; LEN=0
adm5120-hcd: -> td a0ce8180; urb 80a0a780 index 1; hwNextTD 00ce8140
adm5120-hcd: status 81400006 OWN CC=0 EC=0 DATA0 IN ISI=0 FN=6
adm5120-hcd: dbp 00a0ac08; cbl 00000038; LEN=56
adm5120-hcd: -> td a0ce8140; urb 80a0a780 index 2; hwNextTD 00ce8100
adm5120-hcd: status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: ED-DESCHED ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 08080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd: tds: head 00ce8180 tail 00ce8100 DATA0 td list follows
adm5120-hcd: -> td a0ce81c0; urb 80a0a780 index 0; hwNextTD 00ce8180
adm5120-hcd: status 01800006 CC=0 EC=0 DATA1 SETUP ISI=0 FN=6
adm5120-hcd: dbp 00a0a488; cbl 00000000; LEN=0
adm5120-hcd: -> td a0ce8180; urb 80a0a780 index 1; hwNextTD 00ce8140
adm5120-hcd: status 81400006 OWN CC=0 EC=0 DATA0 IN ISI=0 FN=6
adm5120-hcd: dbp 00a0ac08; cbl 00000038; LEN=56
adm5120-hcd: -> td a0ce8140; urb 80a0a780 index 2; hwNextTD 00ce8100
adm5120-hcd: status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-PARTIAL 80a0a780 dev=0 ep=0in-ctrl flags=200 len=0/64 stat=1
adm5120-hcd: setup(8): 80 06 00 01 00 00 40 00
adm5120-hcd: data(0/64): stat:1
adm5120-hcd: URB-PARTIAL 80a0a780 dev=0 ep=0in-ctrl flags=200 len=0/64 stat=1
adm5120-hcd: setup(8): 80 06 00 01 00 00 40 00
adm5120-hcd: data(0/64): stat:1
adm5120-hcd: URB-PARTIAL 80a0a780 dev=0 ep=0in-ctrl flags=200 len=64/64 stat=1
adm5120-hcd: setup(8): 80 06 00 01 00 00 40 00
adm5120-hcd: data(64/64): 12 01 10 01 ff 00 00 08 00 00 00 00 00 00 00 00... stat:1
adm5120-hcd: URB-RET 80a0a780 dev=0 ep=0in-ctrl flags=200 len=64/64 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 40 00
adm5120-hcd: data(64/64): 12 01 10 01 ff 00 00 08 00 00 00 00 00 00 00 00... stat:0
usb 1-2: khubd timed out on ep0in len=64/64

The sequence starts the same, but this time the Transfer Descriptor Complete interrupt never fires, because the second TD fails to complete within the timeout period of 5 seconds (increasing the timeout makes no difference).
At the time when it fails, the device seems to have returned just 8 bytes of the Device Descriptor (see the last but one line above, beginning data(64/64)). What's there is valid, but the last 10 bytes are missing. Note that in this case the MAX field is set to 8, the (fixed) packet size for low-speed devices.
Finally, here's the sequence when the old_scheme_first variable is set to Y (echo Y > /sys/module/usbcore/parameters/old_scheme_first). This changes the startup sequence to set the device address, read the first 8 bytes of the Device Descriptor (to find out what the maximum packet size is), then read the full 18-byte Descriptor.

CODE
adm5120-hcd: Root Hub Status Change
adm5120-hcd: write port1 = 0x00010000 CSC
hub 1-0:1.0: debounce: port 2: total 150ms stable 100ms status 0x300
hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0004
adm5120-hcd: Root Hub Status Change
hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0004
adm5120-hcd: write port1 = 0x00010000 CSC
hub 1-0:1.0: port 2, status 0301, change 0001, 1.5 Mb/s
hub 1-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x301
adm5120-hcd: reset port1
adm5120-hcd: Root Hub Status Change
adm5120-hcd: write port1 = 0x00100000 PRSC
usb 1-2: new low speed USB device using adm5120-hcd and address 27
adm5120-hcd: URB-ENQEUE 80a0ff80 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=-150
adm5120-hcd: setup(8): 00 05 1b 00 00 00 00 00
adm5120-hcd: DMA enabled
adm5120-hcd: admhc_urb_enqueue ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd: tds: head 00ce8180 tail 00ce8100 DATA0 td list follows
adm5120-hcd: -> td a0ce8180; urb 80a0ff80 index 0; hwNextTD 00ce81c0
adm5120-hcd: status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd: dbp 00a0fb80; cbl 00000008; LEN=8
adm5120-hcd: -> td a0ce81c0; urb 80a0ff80 index 1; hwNextTD 00ce8100
adm5120-hcd: status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd: tds: head 00ce8100 tail 00ce8100 DATA0 td list follows
adm5120-hcd: -> td a0ce8180; urb 80a0ff80 index 0; hwNextTD 00ce81c0
adm5120-hcd: status 01800004 CC=0 EC=0 DATA1 SETUP ISI=0 FN=4
adm5120-hcd: dbp 00a0fb88; cbl 00000000; LEN=0
adm5120-hcd: -> td a0ce81c0; urb 80a0ff80 index 1; hwNextTD 00ce8100
adm5120-hcd: status 01400004 CC=0 EC=0 DATA0 IN ISI=0 FN=4
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80a0ff80 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=0
adm5120-hcd: ED-UNLINK ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd: tds: head 00ce8100 tail 00ce8100 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 08080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd: tds: head 00ce8100 tail 00ce8100 DATA0 td list follows
adm5120-hcd: EP-DISABLE ed a0ce7100 IDLE type ctrl; next ed 00000000
adm5120-hcd: info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd: tds: head 00ce8100 tail 00ce8100 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80a0f880 dev=27 ep=0in-ctrl flags=200 len=0/8 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 0008001b MAX=8 LOW EP=0 DEV=27
adm5120-hcd: tds: head 00ce8100 tail 00ce8140 DATA0 td list follows
adm5120-hcd: -> td a0ce8100; urb 80a0f880 index 0; hwNextTD 00ce81c0
adm5120-hcd: status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd: dbp 00a0f500; cbl 00000008; LEN=8
adm5120-hcd: -> td a0ce81c0; urb 80a0f880 index 1; hwNextTD 00ce8180
adm5120-hcd: status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd: dbp 00a0f800; cbl 00000008; LEN=8
adm5120-hcd: -> td a0ce8180; urb 80a0f880 index 2; hwNextTD 00ce8140
adm5120-hcd: status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 0008001b MAX=8 LOW EP=0 DEV=27
adm5120-hcd: tds: head 00ce8140 tail 00ce8140 DATA0 td list follows
adm5120-hcd: -> td a0ce8100; urb 80a0f880 index 0; hwNextTD 00ce81c0
adm5120-hcd: status 01800006 CC=0 EC=0 DATA1 SETUP ISI=0 FN=6
adm5120-hcd: dbp 00a0f508; cbl 00000000; LEN=0
adm5120-hcd: -> td a0ce81c0; urb 80a0f880 index 1; hwNextTD 00ce8180
adm5120-hcd: status 01400006 CC=0 EC=0 DATA0 IN ISI=0 FN=6
adm5120-hcd: dbp 00a0f808; cbl 00000000; LEN=0
adm5120-hcd: -> td a0ce8180; urb 80a0f880 index 2; hwNextTD 00ce8140
adm5120-hcd: status 01200007 CC=0 EC=0 DATA0 OUT ISI=0 FN=7
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80a0f880 dev=27 ep=0in-ctrl flags=200 len=8/8 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 08 00
adm5120-hcd: data(8/8): 12 01 10 01 ff 00 00 08 stat:0
adm5120-hcd: ED-UNLINK ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 0008001b MAX=8 LOW EP=0 DEV=27
adm5120-hcd: tds: head 00ce8140 tail 00ce8140 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 0808001b MAX=8 LOW EP=0 DEV=27
adm5120-hcd: tds: head 00ce8140 tail 00ce8140 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80a0f880 dev=27 ep=0in-ctrl flags=200 len=0/18 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 0008001b MAX=8 LOW EP=0 DEV=27
adm5120-hcd: tds: head 00ce8140 tail 00ce8100 DATA0 td list follows
adm5120-hcd: -> td a0ce8140; urb 80a0f880 index 0; hwNextTD 00ce8180
adm5120-hcd: status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd: dbp 00a0f500; cbl 00000008; LEN=8
adm5120-hcd: -> td a0ce8180; urb 80a0f880 index 1; hwNextTD 00ce81c0
adm5120-hcd: status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd: dbp 00a0f800; cbl 00000012; LEN=18
adm5120-hcd: -> td a0ce81c0; urb 80a0f880 index 2; hwNextTD 00ce8100
adm5120-hcd: status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-DEQUEUE 80a0f880 dev=27 ep=0in-ctrl flags=200 len=0/18 stat=-2
adm5120-hcd: ED-UNLINK ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 0008001b MAX=8 LOW EP=0 DEV=27
adm5120-hcd: tds: head 00ce8180 tail 00ce8100 DATA0 td list follows
adm5120-hcd: -> td a0ce8140; urb 80a0f880 index 0; hwNextTD 00ce8180
adm5120-hcd: status 01800002 CC=0 EC=0 DATA1 SETUP ISI=0 FN=2
adm5120-hcd: dbp 00a0f508; cbl 00000000; LEN=0
adm5120-hcd: -> td a0ce8180; urb 80a0f880 index 1; hwNextTD 00ce81c0
adm5120-hcd: status 81400002 OWN CC=0 EC=0 DATA0 IN ISI=0 FN=2
adm5120-hcd: dbp 00a0f808; cbl 0000000a; LEN=10
adm5120-hcd: -> td a0ce81c0; urb 80a0f880 index 2; hwNextTD 00ce8100
adm5120-hcd: status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: ED-DESCHED ed a0ce7100 OPER type ctrl; next ed 00ce70c0
adm5120-hcd: info 0808001b MAX=8 LOW EP=0 DEV=27
adm5120-hcd: tds: head 00ce8180 tail 00ce8100 DATA0 td list follows
adm5120-hcd: -> td a0ce8140; urb 80a0f880 index 0; hwNextTD 00ce8180
adm5120-hcd: status 01800002 CC=0 EC=0 DATA1 SETUP ISI=0 FN=2
adm5120-hcd: dbp 00a0f508; cbl 00000000; LEN=0
adm5120-hcd: -> td a0ce8180; urb 80a0f880 index 1; hwNextTD 00ce81c0
adm5120-hcd: status 81400002 OWN CC=0 EC=0 DATA0 IN ISI=0 FN=2
adm5120-hcd: dbp 00a0f808; cbl 0000000a; LEN=10
adm5120-hcd: -> td a0ce81c0; urb 80a0f880 index 2; hwNextTD 00ce8100
adm5120-hcd: status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd: dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-PARTIAL 80a0f880 dev=27 ep=0in-ctrl flags=200 len=0/18 stat=1
adm5120-hcd: setup(8): 80 06 00 01 00 00 12 00
adm5120-hcd: data(0/18): stat:1
adm5120-hcd: URB-PARTIAL 80a0f880 dev=27 ep=0in-ctrl flags=200 len=0/18 stat=1
adm5120-hcd: setup(8): 80 06 00 01 00 00 12 00
adm5120-hcd: data(0/18): stat:1
adm5120-hcd: URB-PARTIAL 80a0f880 dev=27 ep=0in-ctrl flags=200 len=18/18 stat=1
adm5120-hcd: setup(8): 80 06 00 01 00 00 12 00
adm5120-hcd: data(18/18): 12 01 10 01 ff 00 00 08 00 00 00 00 00 00 00 00... stat:1
adm5120-hcd: URB-RET 80a0f880 dev=27 ep=0in-ctrl flags=200 len=18/18 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 12 00
adm5120-hcd: data(18/18): 12 01 10 01 ff 00 00 08 00 00 00 00 00 00 00 00... stat:0
usb 1-2: khubd timed out on ep0in len=18/18

In this case everything goes fine until the request for the full 18 byte descriptor, which times out. Again, only 8 bytes (one packet) of the descriptor are returned correctly, and the last 10 bytes are missing.

So it seems that reading data from a low-speed device may be getting stuck after a single packet is received, so any request for more than 8 bytes times out. Full speed devices appear to work, but this may actually be because the packet size is 64 bytes so the enumeration sequence never reads more than one packet anyway.


#16 Dean

Dean

    Advanced Member

  • Members
  • PipPipPip
  • 89 posts

Posted 09 May 2009 - 01:56 PM

That's really useful info. I'll have a look at the details if I can spot any obvious issues.

We're arranging for one our consultants to have a look at this issue and will pass this information to them.

They are making some progress with a numeric keypad already working.

We'll keep this thread updated with any news.

Best regards,
Dean

#17 dfrmexico

dfrmexico

    Newbie

  • Members
  • Pip
  • 6 posts

Posted 15 May 2009 - 09:59 AM

HI,
I have a keypad that works, not all times but most of the time works.

Env. description:
Openwrt 8.09 Final ( there are any change in 8.09RC2 usb-adm5120 driver I can find )
Root FS in Flash mem (MTD), the only device in the usb is the keypad.

Modules ( before "insmod adm5120-hcd.ko")
root@OpenWrt:/lib/modules/2.6.26.5# lsmod
Module Size Used by Tainted: P
usbmon 16832 1
hid 59696 0
siit 7424 0
usbcore 111648 2 usbmon
button_hotplug 2720 0
gpio_buttons 2080 0
input_polldev 1552 1 gpio_buttons

Output after the "insmod adm5120-hcd.ko" ( with some additional printing )
root@OpenWrt:/lib/modules/2.6.26.5# insmod xadm5120-hcd.ko
admhc-hcd: ADMtek USB 1.1 Host Controller Driver version 0.25.0
admhc-hcd: block sizes: ed 64 td 64
adm5120-hcd adm5120-hcd: ADM5120 built-in USB 1.1 Host Controller
adm5120-hcd adm5120-hcd: new USB bus registered, assigned bus number 1
adm5120-hcd adm5120-hcd: irq 11, io mem 0x11200000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: ADM5120 built-in USB 1.1 Host Controller
usb usb1: Manufacturer: Linux 2.6.26.5 admhc-hcd
usb usb1: SerialNumber: ADM5120
hub 1-0:1.0: port 1, status 0301, change 0011, 1.5 Mb/s
root@OpenWrt:/lib/modules/2.6.26.5# hub 1-0:1.0: OJO port 1 status 0x301 change 0x0 i -1
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 i 0
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 delay 50
usb 1-1: new low speed USB device using adm5120-hcd and address 2
hub 1-0:1.0: OJO port 1 status 0x303 change 0x2 i -1
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 i 0
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 delay 50
usb 1-1: device not accepting address 2, error -145
hub 1-0:1.0: OJO port 1 status 0x301 change 0x2 i -1
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 i 0
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 delay 50
usb 1-1: new low speed USB device using adm5120-hcd and address 3
hub 1-0:1.0: OJO port 1 status 0x303 change 0x2 i -1
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 i 0
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 delay 50
usb 1-1: device not accepting address 3, error -145
hub 1-0:1.0: OJO port 1 status 0x301 change 0x2 i -1
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 i 0
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 delay 50
usb 1-1: new low speed USB device using adm5120-hcd and address 4
usb 1-1: device descriptor read/all, error -145
hub 1-0:1.0: OJO port 1 status 0x301 change 0x2 i -1
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 i 0
hub 1-0:1.0: OJO port 1 status 0x303 change 0x12 delay 50
usb 1-1: new low speed USB device using adm5120-hcd and address 5
usb 1-1: configuration #1 chosen from 1 choice
usb 1-1: New USB device found, idVendor=05a4, idProduct=9840
usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
usb 1-1: Product: USB Compliant Keypad

--------------------------------------------------------------------------------------------
Some times I get also the usbhid.ko working:

root@OpenWrt:/lib/modules/2.6.26.5# insmod xusbhid.ko
usbcore: registered new interface driver hiddev
input: USB Compliant Keypad as /devices/platform/adm5120-hcd/usb1/1-1/1-1:1.0/input/input1
input,hidraw0: USB HID v1.10 Keyboard [USB Compliant Keypad] on usb-ADM5120-1
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
root@OpenWrt:/lib/modules/2.6.26.5#

------------------------------------------------------------------------------------------------------
And I get all the module stacks I need to access the keypad:
root@OpenWrt:/lib/modules/2.6.26.5# cat /proc/bus/usb/devices

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 1, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev= 2.06
S: Manufacturer=Linux 2.6.26.5 admhc-hcd
S: Product=ADM5120 built-in USB 1.1 Host Controller
S: SerialNumber=ADM5120
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=05a4 ProdID=9840 Rev= 1.10
S: Product=USB Compliant Keypad
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 48mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=13ms
root@OpenWrt:/lib/modules/2.6.26.5#
------------------------------------------------------------------------------------

Sample output that read events keys:
root@OpenWrt:/tmp# ./k < /dev/event1
t 4 c 4 v 458841 0x 70059 01600131
t 1 c 79 v 1 0x 1 0 1
t 0 c 0 v 0 0x 0 0 0
t 4 c 4 v 458841 0x 70059 01600131
t 1 c 79 v 0 0x 0 0 0
t 0 c 0 v 0 0x 0 0 0
t 4 c 4 v 458842 0x 7005a 01600132
t 1 c 80 v 1 0x 1 0 1
t 0 c 0 v 0 0x 0 0 0
t 4 c 4 v 458842 0x 7005a 01600132
t 1 c 80 v 0 0x 0 0 0
t 0 c 0 v 0 0x 0 0 0

--------------------------------------------------------------------
here is the code, sorry about the spanish:
[root@fi1 KEYB]# cat k.c
/* keyboard para /dev/event lee del stdin */

#include <stdio.h>
#include <string.h>
#include <linux/input.h>

struct input_event a;
/***
struct input_event {
struct timeval time;
unsigned short type;
unsigned short code;
unsigned int value;
};
**/

main()
{
int r,err;
while( ( r= read(0,&a,sizeof a) ) > 0 ){
if( r == sizeof(a) ){
printf(" t %2x c %3d v %6d 0x%6x 0%6o\n",
a.type,a.code,a.value,a.value,a.value);
}
else printf(" Largo %d\n",r);
}
fprintf(stderr,"Acabo: errno %d [%s]\n",err,strerror(err));
return 0;
}

[root@fi1 KEYB]#
-------------------------------------------------------

Now, my last finding:

If I put a printk for debuging in the ed_get code of the driver, my keypad don't get the usb number, here is the code:

/* get and maybe (re)init an endpoint. init _should_ be done only as part
* of enumeration, usb_set_configuration() or usb_set_interface().
*/
static struct ed *ed_get(struct admhcd *ahcd, struct usb_host_endpoint *ep,
struct usb_device *udev, unsigned int pipe, int interval)
{
struct ed *ed;
unsigned long flags;
char tipo = '?';

spin_lock_irqsave(&ahcd->lock, flags);

ed = ep->hcpriv;
/*printk("ed_get: 0x%x pipe 0x%x\n", ed ? ed->hwINFO : 0,pipe);*/
if (!ed) {
u32 info;

/* FIXME: usbcore changes dev->devnum before SET_ADDRESS
* suceeds ... otherwise we wouldn't need "pipe".
*/
info = usb_pipedevice(pipe);
info |= (ep->desc.bEndpointAddress & ~USB_DIR_IN) << ED_EN_SHIFT;
info |= le16_to_cpu(ep->desc.wMaxPacketSize) << ED_MPS_SHIFT;
if (udev->speed == USB_SPEED_FULL){
info |= ED_SPEED_FULL;
/* OJO */

tipo = 'F';
}
else{
tipo = 'L';
}

ed = ed_create(ahcd, usb_pipetype(pipe), info);
if (ed)
ep->hcpriv = ed;
}
/*printk("ed_get %c: 0x%x\n", tipo,ed ? ed->hwINFO : 0);*/

spin_unlock_irqrestore(&ahcd->lock, flags);

return ed;
}
----------------------------------------
If I uncomment the 2 printk, I don't get the keypad to work( NOTE: I only made a few testing, 3 or 4 times)

SO I gess there is a race condition in the driver, a critical section that is not protected in the code, and the printk maybe allways create the problem.

Hope this help to find the bug!!!


#18 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 15 May 2009 - 05:41 PM

QUOTE (dfrmexico @ May 15 2009, 10:59 AM) <{POST_SNAPBACK}>
...

SO I gess there is a race condition in the driver, a critical section that is not protected in the code, and the printk maybe allways create the problem.

Hope this help to find the bug!!!


I think you're right.

I have tried 4 low-speed devices, none of which work with the embedded controller but all of which work with an Asus eee PC running Ubuntu:
1. A Microsoft wireless mouse / keyboard
2. A Velleman K8055 USB interface board
3. A DIY MSF clock module using an atmega168 with USB interface provided by AVR-USB (a software implementation of USB)
4. An Arduino Diecimila board (also atmega168-based) also running AVR-USB and configured to act as a HID

The last one I put together to use as a USB analyser, because AVR-USB can be configured to send debug output via the serial interface of the Arduino.

What I found was that the Arduino board always failed to enumerate when the debug output was disabled, but as soon as I enabled debug output, enumeration worked (though something else went wrong so the device was not recognised as a HID).

So there's definitely something timing-related going on. Generating debug output must slow down the Arduino a bit, and this is enough to get adm5120-hcd to respond correctly at least part of the time.

I'm not in front of the hardware at the moment, but later on I'll post some logs.

#19 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 17 May 2009 - 09:42 PM

What I have found by experimenting with my Arduino "USB Analyser" is:

1. With debugging output enabled, it gets further through the enumeration process than a "standard" low-speed device.

Here's the dmesg output (VERBOSE_DEBUG lives up to its name!):

CODE
adm5120-hcd: Root Hub Status Change
hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0004
adm5120-hcd: write port1 = 0x00010000 CSC
hub 1-0:1.0: port 2, status 0301, change 0001, 1.5 Mb/s
hub 1-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x301
adm5120-hcd: reset port1
adm5120-hcd: write port1 = 0x00100000 PRSC
usb 1-2: new low speed USB device using adm5120-hcd and address 16
adm5120-hcd: URB-ENQEUE 80f8e680 dev=0 ep=0in-ctrl flags=200 len=0/64 stat=-150
adm5120-hcd: DMA enabled
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6140 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80f8e680 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8e000; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8e680 index 1; hwNextTD 00ce6100
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8e900; cbl 00000040; LEN=64
adm5120-hcd:   -> td a0ce6100; urb 80f8e680 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80f8e680 index 0; hwNextTD 00ce6180
adm5120-hcd:      status 49000005 CC=9 EC=0 DATA0 SETUP ISI=0 FN=5
adm5120-hcd:      dbp 00f8e000; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80f8e680 index 1; hwNextTD 00ce6100
adm5120-hcd:      status 49c00000 CC=9 EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8e910; cbl 00000002; LEN=2
adm5120-hcd:   -> td a0ce6100; urb 80f8e680 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status 01200000 CC=0 EC=0 DATA0 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8e680 dev=0 ep=0in-ctrl flags=200 len=18/64 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 40 00
adm5120-hcd: data(18/64): 12 01 10 01 00 00 00 08 42 42 31 e1 00 01 01 02... stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: reset port1
adm5120-hcd: write port1 = 0x00100000 PRSC
adm5120-hcd: URB-ENQEUE 80f8e900 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=-150
adm5120-hcd: setup(8): 00 05 10 00 00 00 00 00
adm5120-hcd: DMA enabled
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6180 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8e900 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8e580; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 80f8e900 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8e900 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800003 CC=0 EC=0 DATA1 SETUP ISI=0 FN=3
adm5120-hcd:      dbp 00f8e588; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80f8e900 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 01400007 CC=0 EC=0 DATA0 IN ISI=0 FN=7
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8e900 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd: EP-DISABLE ed a0cd7140 UNLINK type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08084000 MAX=8 SKIP LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80f8ed00 dev=16 ep=0in-ctrl flags=200 len=0/18 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080010 MAX=8 LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6180 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce6180; urb 80f8ed00 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8e700; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 80f8ed00 index 1; hwNextTD 00ce61c0
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8e900; cbl 00000012; LEN=18
adm5120-hcd:   -> td a0ce61c0; urb 80f8ed00 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080010 MAX=8 LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce6180; urb 80f8ed00 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800006 CC=0 EC=0 DATA1 SETUP ISI=0 FN=6
adm5120-hcd:      dbp 00f8e708; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80f8ed00 index 1; hwNextTD 00ce61c0
adm5120-hcd:      status 01400001 CC=0 EC=0 DATA0 IN ISI=0 FN=1
adm5120-hcd:      dbp 00f8e912; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce61c0; urb 80f8ed00 index 2; hwNextTD 00ce6140
adm5120-hcd:      status 01200001 CC=0 EC=0 DATA0 OUT ISI=0 FN=1
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8ed00 dev=16 ep=0in-ctrl flags=200 len=18/18 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 12 00
adm5120-hcd: data(18/18): 12 01 10 01 00 00 00 08 42 42 31 e1 00 01 01 02... stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080010 MAX=8 LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080010 MAX=8 LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80f8eb80 dev=16 ep=0in-ctrl flags=200 len=0/9 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 UNLINK type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08084010 MAX=8 SKIP LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6140 tail 00ce6180 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80f8eb80 index 0; hwNextTD 00ce61c0
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8ed00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce61c0; urb 80f8eb80 index 1; hwNextTD 00ce6100
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8e700; cbl 00000009; LEN=9
adm5120-hcd:   -> td a0ce6100; urb 80f8eb80 index 2; hwNextTD 00ce6180
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080010 MAX=8 LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80f8eb80 index 0; hwNextTD 00ce61c0
adm5120-hcd:      status 01800005 CC=0 EC=0 DATA1 SETUP ISI=0 FN=5
adm5120-hcd:      dbp 00f8ed08; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce61c0; urb 80f8eb80 index 1; hwNextTD 00ce6100
adm5120-hcd:      status 01c00004 CC=0 EC=0 DATA1 IN ISI=0 FN=4
adm5120-hcd:      dbp 00f8e709; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80f8eb80 index 2; hwNextTD 00ce6180
adm5120-hcd:      status 01200004 CC=0 EC=0 DATA0 OUT ISI=0 FN=4
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8eb80 dev=16 ep=0in-ctrl flags=200 len=9/9 stat=0
adm5120-hcd: setup(8): 80 06 00 02 00 00 09 00
adm5120-hcd: data(9/9): 09 02 22 00 01 01 00 c0 32 stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080010 MAX=8 LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080010 MAX=8 LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80f8e380 dev=16 ep=0in-ctrl flags=200 len=0/34 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080010 MAX=8 LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6180 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce6180; urb 80f8e380 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb80; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 80f8e380 index 1; hwNextTD 00ce61c0
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8ed00; cbl 00000022; LEN=34
adm5120-hcd:   -> td a0ce61c0; urb 80f8e380 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-DEQUEUE 80f8e380 dev=16 ep=0in-ctrl flags=200 len=0/34 stat=-2
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080010 MAX=8 LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6100 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce6180; urb 80f8e380 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800007 CC=0 EC=0 DATA1 SETUP ISI=0 FN=7
adm5120-hcd:      dbp 00f8eb88; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80f8e380 index 1; hwNextTD 00ce61c0
adm5120-hcd:      status 81400004 OWN CC=0 EC=0 DATA0 IN ISI=0 FN=4
adm5120-hcd:      dbp 00f8ed08; cbl 0000001a; LEN=26
adm5120-hcd:   -> td a0ce61c0; urb 80f8e380 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080010 MAX=8 LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6100 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce6180; urb 80f8e380 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800007 CC=0 EC=0 DATA1 SETUP ISI=0 FN=7
adm5120-hcd:      dbp 00f8eb88; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80f8e380 index 1; hwNextTD 00ce61c0
adm5120-hcd:      status 81400004 OWN CC=0 EC=0 DATA0 IN ISI=0 FN=4
adm5120-hcd:      dbp 00f8ed08; cbl 0000001a; LEN=26
adm5120-hcd:   -> td a0ce61c0; urb 80f8e380 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-PARTIAL 80f8e380 dev=16 ep=0in-ctrl flags=200 len=0/34 stat=1
adm5120-hcd: setup(8): 80 06 00 02 00 00 22 00
adm5120-hcd: data(0/34): stat:1
adm5120-hcd: URB-PARTIAL 80f8e380 dev=16 ep=0in-ctrl flags=200 len=0/34 stat=1
adm5120-hcd: setup(8): 80 06 00 02 00 00 22 00
adm5120-hcd: data(0/34): stat:1
adm5120-hcd: URB-PARTIAL 80f8e380 dev=16 ep=0in-ctrl flags=200 len=34/34 stat=1
adm5120-hcd: setup(8): 80 06 00 02 00 00 22 00
adm5120-hcd: data(34/34): 09 02 22 00 01 01 00 c0 00 00 00 00 00 00 00 00... stat:1
adm5120-hcd: URB-RET 80f8e380 dev=16 ep=0in-ctrl flags=200 len=34/34 stat=0
adm5120-hcd: setup(8): 80 06 00 02 00 00 22 00
adm5120-hcd: data(34/34): 09 02 22 00 01 01 00 c0 00 00 00 00 00 00 00 00... stat:0
usb 1-2: khubd timed out on ep0in len=34/34
usb 1-2: unable to read config index 0 descriptor/all
usb 1-2: can't read configurations, error -145
adm5120-hcd: disable port1
adm5120-hcd: Resume Detect
adm5120-hcd: EP-DISABLE ed a0cd7140 IDLE type ctrl; next ed 00000000
adm5120-hcd:   info 00080010 MAX=8 LOW EP=0 DEV=16
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: reset port1
adm5120-hcd: write port1 = 0x00100000 PRSC
usb 1-2: new low speed USB device using adm5120-hcd and address 17
adm5120-hcd: URB-ENQEUE 80f8e300 dev=0 ep=0in-ctrl flags=200 len=0/64 stat=-150
adm5120-hcd: DMA enabled
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6140 tail 00ce6180 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80f8e300 index 0; hwNextTD 00ce61c0
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8e380; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce61c0; urb 80f8e300 index 1; hwNextTD 00ce6100
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb80; cbl 00000040; LEN=64
adm5120-hcd:   -> td a0ce6100; urb 80f8e300 index 2; hwNextTD 00ce6180
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80f8e300 index 0; hwNextTD 00ce61c0
adm5120-hcd:      status 49000004 CC=9 EC=0 DATA0 SETUP ISI=0 FN=4
adm5120-hcd:      dbp 00f8e380; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce61c0; urb 80f8e300 index 1; hwNextTD 00ce6100
adm5120-hcd:      status 49c00007 CC=9 EC=0 DATA1 IN ISI=0 FN=7
adm5120-hcd:      dbp 00f8eb90; cbl 00000002; LEN=2
adm5120-hcd:   -> td a0ce6100; urb 80f8e300 index 2; hwNextTD 00ce6180
adm5120-hcd:      status 01200007 CC=0 EC=0 DATA0 OUT ISI=0 FN=7
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8e300 dev=0 ep=0in-ctrl flags=200 len=18/64 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 40 00
adm5120-hcd: data(18/64): 12 01 10 01 00 00 00 08 42 42 31 e1 00 01 01 02... stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd: reset port1
adm5120-hcd: write port1 = 0x00100000 PRSC
adm5120-hcd: URB-ENQEUE 80f8ea80 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=-150
adm5120-hcd: setup(8): 00 05 11 00 00 00 00 00
adm5120-hcd: DMA enabled
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6180; urb 80f8ea80 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8ec00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 80f8ea80 index 1; hwNextTD 00ce61c0
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6180; urb 80f8ea80 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800002 CC=0 EC=0 DATA1 SETUP ISI=0 FN=2
adm5120-hcd:      dbp 00f8ec08; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80f8ea80 index 1; hwNextTD 00ce61c0
adm5120-hcd:      status 01400006 CC=0 EC=0 DATA0 IN ISI=0 FN=6
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8ea80 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: EP-DISABLE ed a0cd7140 UNLINK type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08084000 MAX=8 SKIP LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80f8e500 dev=17 ep=0in-ctrl flags=200 len=0/18 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080011 MAX=8 LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8e500 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8ea80; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 80f8e500 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8e300; cbl 00000012; LEN=18
adm5120-hcd:   -> td a0ce6180; urb 80f8e500 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080011 MAX=8 LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8e500 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800002 CC=0 EC=0 DATA1 SETUP ISI=0 FN=2
adm5120-hcd:      dbp 00f8ea88; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80f8e500 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 01400005 CC=0 EC=0 DATA0 IN ISI=0 FN=5
adm5120-hcd:      dbp 00f8e312; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80f8e500 index 2; hwNextTD 00ce6140
adm5120-hcd:      status 01200005 CC=0 EC=0 DATA0 OUT ISI=0 FN=5
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8e500 dev=17 ep=0in-ctrl flags=200 len=18/18 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 12 00
adm5120-hcd: data(18/18): 12 01 10 01 00 00 00 08 42 42 31 e1 00 01 01 02... stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080011 MAX=8 LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080011 MAX=8 LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80f8e600 dev=17 ep=0in-ctrl flags=200 len=0/9 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 UNLINK type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08084011 MAX=8 SKIP LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce6140 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80f8e600 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8e500; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8e600 index 1; hwNextTD 00ce6100
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8ea80; cbl 00000009; LEN=9
adm5120-hcd:   -> td a0ce6100; urb 80f8e600 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080011 MAX=8 LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80f8e600 index 0; hwNextTD 00ce6180
adm5120-hcd:      status 01800001 CC=0 EC=0 DATA1 SETUP ISI=0 FN=1
adm5120-hcd:      dbp 00f8e508; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80f8e600 index 1; hwNextTD 00ce6100
adm5120-hcd:      status 01c00000 CC=0 EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8ea89; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80f8e600 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status 01200000 CC=0 EC=0 DATA0 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8e600 dev=17 ep=0in-ctrl flags=200 len=9/9 stat=0
adm5120-hcd: setup(8): 80 06 00 02 00 00 09 00
adm5120-hcd: data(9/9): 09 02 22 00 01 01 00 c0 32 stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080011 MAX=8 LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080011 MAX=8 LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80f8eb00 dev=17 ep=0in-ctrl flags=200 len=0/34 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080011 MAX=8 LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8eb00 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8e600; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 80f8eb00 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8e500; cbl 00000022; LEN=34
adm5120-hcd:   -> td a0ce6180; urb 80f8eb00 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-DEQUEUE 80f8eb00 dev=17 ep=0in-ctrl flags=200 len=0/34 stat=-2
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080011 MAX=8 LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce6100 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8eb00 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800003 CC=0 EC=0 DATA1 SETUP ISI=0 FN=3
adm5120-hcd:      dbp 00f8e608; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80f8eb00 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 81400000 OWN CC=0 EC=0 DATA0 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8e508; cbl 0000001a; LEN=26
adm5120-hcd:   -> td a0ce6180; urb 80f8eb00 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080011 MAX=8 LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce6100 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8eb00 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800003 CC=0 EC=0 DATA1 SETUP ISI=0 FN=3
adm5120-hcd:      dbp 00f8e608; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80f8eb00 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 81400000 OWN CC=0 EC=0 DATA0 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8e508; cbl 0000001a; LEN=26
adm5120-hcd:   -> td a0ce6180; urb 80f8eb00 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-PARTIAL 80f8eb00 dev=17 ep=0in-ctrl flags=200 len=0/34 stat=1
adm5120-hcd: setup(8): 80 06 00 02 00 00 22 00
adm5120-hcd: data(0/34): stat:1
adm5120-hcd: URB-PARTIAL 80f8eb00 dev=17 ep=0in-ctrl flags=200 len=0/34 stat=1
adm5120-hcd: setup(8): 80 06 00 02 00 00 22 00
adm5120-hcd: data(0/34): stat:1
adm5120-hcd: URB-PARTIAL 80f8eb00 dev=17 ep=0in-ctrl flags=200 len=34/34 stat=1
adm5120-hcd: setup(8): 80 06 00 02 00 00 22 00
adm5120-hcd: data(34/34): 09 02 22 00 01 01 00 c0 00 00 00 00 00 00 00 00... stat:1
adm5120-hcd: URB-RET 80f8eb00 dev=17 ep=0in-ctrl flags=200 len=34/34 stat=0
adm5120-hcd: setup(8): 80 06 00 02 00 00 22 00
adm5120-hcd: data(34/34): 09 02 22 00 01 01 00 c0 00 00 00 00 00 00 00 00... stat:0
usb 1-2: khubd timed out on ep0in len=34/34
usb 1-2: unable to read config index 0 descriptor/all
usb 1-2: can't read configurations, error -145
adm5120-hcd: disable port1
adm5120-hcd: Resume Detect
adm5120-hcd: EP-DISABLE ed a0cd7140 IDLE type ctrl; next ed 00000000
adm5120-hcd:   info 00080011 MAX=8 LOW EP=0 DEV=17
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: reset port1
adm5120-hcd: write port1 = 0x00100000 PRSC
usb 1-2: new low speed USB device using adm5120-hcd and address 18
adm5120-hcd: URB-ENQEUE 80f8ec00 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=-150
adm5120-hcd: setup(8): 00 05 12 00 00 00 00 00
adm5120-hcd: DMA enabled
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6140 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80f8ec00 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb80; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8ec00 index 1; hwNextTD 00ce6100
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6100 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80f8ec00 index 0; hwNextTD 00ce6180
adm5120-hcd:      status 49000004 CC=9 EC=0 DATA0 SETUP ISI=0 FN=4
adm5120-hcd:      dbp 00f8eb80; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80f8ec00 index 1; hwNextTD 00ce6100
adm5120-hcd:      status 01400000 CC=0 EC=0 DATA0 IN ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8ec00 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6100 tail 00ce6100 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6100 tail 00ce6100 DATA0 td list follows
adm5120-hcd: EP-DISABLE ed a0cd7140 UNLINK type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08084000 MAX=8 SKIP LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6100 tail 00ce6100 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80f8ee80 dev=18 ep=0in-ctrl flags=200 len=0/8 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8ee80 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8ee80 index 1; hwNextTD 00ce6140
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8e500; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6140; urb 80f8ee80 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8ee80 index 0; hwNextTD 00ce6180
adm5120-hcd:      status 01800005 CC=0 EC=0 DATA1 SETUP ISI=0 FN=5
adm5120-hcd:      dbp 00f8eb08; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80f8ee80 index 1; hwNextTD 00ce6140
adm5120-hcd:      status 01400001 CC=0 EC=0 DATA0 IN ISI=0 FN=1
adm5120-hcd:      dbp 00f8e508; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6140; urb 80f8ee80 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status 01200002 CC=0 EC=0 DATA0 OUT ISI=0 FN=2
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8ee80 dev=18 ep=0in-ctrl flags=200 len=8/8 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 08 00
adm5120-hcd: data(8/8): 12 01 10 01 00 00 00 08 stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80f8ee80 dev=18 ep=0in-ctrl flags=200 len=0/18 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 UNLINK type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08084012 MAX=8 SKIP LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8ee80 index 0; hwNextTD 00ce6140
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6140; urb 80f8ee80 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8e500; cbl 00000012; LEN=18
adm5120-hcd:   -> td a0ce6180; urb 80f8ee80 index 2; hwNextTD 00ce6100
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8ee80 index 0; hwNextTD 00ce6140
adm5120-hcd:      status 01800005 CC=0 EC=0 DATA1 SETUP ISI=0 FN=5
adm5120-hcd:      dbp 00f8eb08; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6140; urb 80f8ee80 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 01400006 CC=0 EC=0 DATA0 IN ISI=0 FN=6
adm5120-hcd:      dbp 00f8e512; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80f8ee80 index 2; hwNextTD 00ce6100
adm5120-hcd:      status 01200006 CC=0 EC=0 DATA0 OUT ISI=0 FN=6
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8ee80 dev=18 ep=0in-ctrl flags=200 len=18/18 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 12 00
adm5120-hcd: data(18/18): 12 01 10 01 00 00 00 08 42 42 31 e1 00 01 01 02... stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce6100 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce6100 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80f8e300 dev=18 ep=0in-ctrl flags=200 len=0/9 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8e300 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8ee80; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8e300 index 1; hwNextTD 00ce6140
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000009; LEN=9
adm5120-hcd:   -> td a0ce6140; urb 80f8e300 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8e300 index 0; hwNextTD 00ce6180
adm5120-hcd:      status 01800001 CC=0 EC=0 DATA1 SETUP ISI=0 FN=1
adm5120-hcd:      dbp 00f8ee88; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80f8e300 index 1; hwNextTD 00ce6140
adm5120-hcd:      status 01c00000 CC=0 EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb09; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6140; urb 80f8e300 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status 01200000 CC=0 EC=0 DATA0 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8e300 dev=18 ep=0in-ctrl flags=200 len=9/9 stat=0
adm5120-hcd: setup(8): 80 06 00 02 00 00 09 00
adm5120-hcd: data(9/9): 09 02 22 00 01 01 00 c0 32 stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80f8e580 dev=18 ep=0in-ctrl flags=200 len=0/34 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 UNLINK type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08084012 MAX=8 SKIP LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8e580 index 0; hwNextTD 00ce6140
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8e300; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6140; urb 80f8e580 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f8ee80; cbl 00000022; LEN=34
adm5120-hcd:   -> td a0ce6180; urb 80f8e580 index 2; hwNextTD 00ce6100
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8e580 index 0; hwNextTD 00ce6140
adm5120-hcd:      status 01800004 CC=0 EC=0 DATA1 SETUP ISI=0 FN=4
adm5120-hcd:      dbp 00f8e308; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6140; urb 80f8e580 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 01400006 CC=0 EC=0 DATA0 IN ISI=0 FN=6
adm5120-hcd:      dbp 00f8eea2; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80f8e580 index 2; hwNextTD 00ce6100
adm5120-hcd:      status 01200006 CC=0 EC=0 DATA0 OUT ISI=0 FN=6
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80f8e580 dev=18 ep=0in-ctrl flags=200 len=34/34 stat=0
adm5120-hcd: setup(8): 80 06 00 02 00 00 22 00
adm5120-hcd: data(34/34): 09 02 22 00 01 01 00 c0 32 09 04 00 00 01 03 00... stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce6100 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce6100 DATA0 td list follows
usb 1-2: skipped 1 descriptor after interface
adm5120-hcd: URB-ENQEUE 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/255 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 UNLINK type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08084012 MAX=8 SKIP LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8ef80 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 1; hwNextTD 00ce6140
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92e00; cbl 000000ff; LEN=255
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-DEQUEUE 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/255 stat=-2
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6140 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8ef80 index 0; hwNextTD 00ce6180
adm5120-hcd:      status 01800002 CC=0 EC=0 DATA1 SETUP ISI=0 FN=2
adm5120-hcd:      dbp 00f8eb08; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 1; hwNextTD 00ce6140
adm5120-hcd:      status 49c00001 CC=9 EC=0 DATA1 IN ISI=0 FN=1
adm5120-hcd:      dbp 00f92e00; cbl 00000004; LEN=4
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6140 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8ef80 index 0; hwNextTD 00ce6180
adm5120-hcd:      status 01800002 CC=0 EC=0 DATA1 SETUP ISI=0 FN=2
adm5120-hcd:      dbp 00f8eb08; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 1; hwNextTD 00ce6140
adm5120-hcd:      status 49c00001 CC=9 EC=0 DATA1 IN ISI=0 FN=1
adm5120-hcd:      dbp 00f92e00; cbl 00000004; LEN=4
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/255 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 ff 00
adm5120-hcd: data(0/255): stat:1
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/255 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 ff 00
adm5120-hcd: data(0/255): stat:1
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=4/255 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 ff 00
adm5120-hcd: data(4/255): 04 03 09 04 stat:1
adm5120-hcd: URB-RET 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=4/255 stat=0
adm5120-hcd: setup(8): 80 06 00 03 00 00 ff 00
adm5120-hcd: data(4/255): 04 03 09 04 stat:0
usb 1-2: khubd timed out on ep0in len=4/255
adm5120-hcd: URB-ENQEUE 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/2 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8ef80 index 0; hwNextTD 00ce6140
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92e00; cbl 00000002; LEN=2
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 2; hwNextTD 00ce6100
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-DEQUEUE 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/2 stat=-2
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8ef80 index 0; hwNextTD 00ce6140
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92e00; cbl 00000002; LEN=2
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 2; hwNextTD 00ce6100
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8ef80 index 0; hwNextTD 00ce6140
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92e00; cbl 00000002; LEN=2
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 2; hwNextTD 00ce6100
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/2 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 02 00
adm5120-hcd: data(0/2): stat:1
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/2 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 02 00
adm5120-hcd: data(0/2): stat:1
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=2/2 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 02 00
adm5120-hcd: data(2/2): 04 03 stat:1
adm5120-hcd: URB-RET 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=2/2 stat=0
adm5120-hcd: setup(8): 80 06 00 03 00 00 02 00
adm5120-hcd: data(2/2): 04 03 stat:0
usb 1-2: khubd timed out on ep0in len=2/2
usb 1-2: string descriptor 0 read error: -145
adm5120-hcd: URB-ENQEUE 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/255 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8ef80 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 1; hwNextTD 00ce6140
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92e00; cbl 000000ff; LEN=255
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-DEQUEUE 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/255 stat=-2
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8ef80 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 1; hwNextTD 00ce6140
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92e00; cbl 000000ff; LEN=255
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8ef80 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 1; hwNextTD 00ce6140
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92e00; cbl 000000ff; LEN=255
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/255 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 ff 00
adm5120-hcd: data(0/255): stat:1
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/255 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 ff 00
adm5120-hcd: data(0/255): stat:1
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=255/255 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 ff 00
adm5120-hcd: data(255/255): 00 29 f9 80 34 00 00 00 34 00 40 00 34 00 40 00... stat:1
adm5120-hcd: URB-RET 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=255/255 stat=0
adm5120-hcd: setup(8): 80 06 00 03 00 00 ff 00
adm5120-hcd: data(255/255): 00 29 f9 80 34 00 00 00 34 00 40 00 34 00 40 00... stat:0
usb 1-2: khubd timed out on ep0in len=255/255
adm5120-hcd: URB-ENQEUE 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/2 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8ef80 index 0; hwNextTD 00ce6140
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92e00; cbl 00000002; LEN=2
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 2; hwNextTD 00ce6100
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-DEQUEUE 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/2 stat=-2
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8ef80 index 0; hwNextTD 00ce6140
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92e00; cbl 00000002; LEN=2
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 2; hwNextTD 00ce6100
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6100 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80f8ef80 index 0; hwNextTD 00ce6140
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8eb00; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6140; urb 80f8ef80 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92e00; cbl 00000002; LEN=2
adm5120-hcd:   -> td a0ce6180; urb 80f8ef80 index 2; hwNextTD 00ce6100
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/2 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 02 00
adm5120-hcd: data(0/2): stat:1
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=0/2 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 02 00
adm5120-hcd: data(0/2): stat:1
adm5120-hcd: URB-PARTIAL 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=2/2 stat=1
adm5120-hcd: setup(8): 80 06 00 03 00 00 02 00
adm5120-hcd: data(2/2): 00 29 stat:1
adm5120-hcd: URB-RET 80f8ef80 dev=18 ep=0in-ctrl flags=200 len=2/2 stat=0
adm5120-hcd: setup(8): 80 06 00 03 00 00 02 00
adm5120-hcd: data(2/2): 00 29 stat:0
usb 1-2: khubd timed out on ep0in len=2/2
usb 1-2: string descriptor 0 read error: -145
usb 1-2: uevent
usb 1-2: usb_probe_device
usb 1-2: configuration #1 chosen from 1 choice
adm5120-hcd: URB-ENQEUE 80f8e980 dev=18 ep=0out-ctrl flags=0 len=0/0 stat=-150
adm5120-hcd: setup(8): 00 09 01 00 00 00 00 00
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8e980 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8ea80; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8e980 index 1; hwNextTD 00ce6140
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-DEQUEUE 80f8e980 dev=18 ep=0out-ctrl flags=0 len=0/0 stat=-2
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8e980 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8ea80; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8e980 index 1; hwNextTD 00ce6140
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080012 MAX=8 LOW EP=0 DEV=18
adm5120-hcd:   tds: head 00ce6100 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce6100; urb 80f8e980 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00f8ea80; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80f8e980 index 1; hwNextTD 00ce6140
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-PARTIAL 80f8e980 dev=18 ep=0out-ctrl flags=0 len=0/0 stat=1
adm5120-hcd: setup(8): 00 09 01 00 00 00 00 00
adm5120-hcd: URB-PARTIAL 80f8e980 dev=18 ep=0out-ctrl flags=0 len=0/0 stat=1
adm5120-hcd: setup(8): 00 09 01 00 00 00 00 00
adm5120-hcd: URB-RET 80f8e980 dev=18 ep=0out-ctrl flags=0 len=0/0 stat=0
usb 1-2: khubd timed out on ep0out len=0/0
usb 1-2: can't set config #1, error -145
drivers/usb/core/inode.c: creating file '018'
usb 1-2: New USB device found, idVendor=4242, idProduct=e131
usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0004
hub 1-0:1.0: port 2 enable change, status 00000303
adm5120-hcd: write port1 = 0x00020000 PESC
adm5120-hcd: Root Hub Status Change


And here's the corresponding debug output from the USB device.
ff: = reset
12: = SETUP request from host <token byte> <data bytes> <2-byte crc>
20: = Data sent by device <token byte> <data bytes> <2-byte crc>

CODE

ff:
ff:
ff:
ff:
12: 80 06 00 01 00 00 40 00
20: 4b 12 01 10 01 00 00 00 08 11 77
20: c3 42 42 31 e1 00 01 01 02 31 bf
20: 4b 00 01 3f 8f
12: 00 05 10 00 00 00 00 00
20: 4b 00 00
12: 80 06 00 01 00 00 12 00
20: 4b 12 01 10 01 00 00 00 08 11 77
20: c3 42 42 31 e1 00 01 01 02 31 bf
20: 4b 00 01 3f 8f
12: 80 06 00 02 00 00 09 00
20: 4b 09 02 22 00 01 01 00 c0 0a b0
20: c3 32 c1 6a
12: 80 06 00 02 00 00 22 00
20: 4b 09 02 22 00 01 01 00 c0 0a b0
20: c3 32 09 04 00 00 01 03 00 f4 8d
ff:
ff:
ff:
12: 80 06 00 01 00 00 40 00
20: 4b 12 01 10 01 00 00 00 08 11 77
20: c3 42 42 31 e1 00 01 01 02 31 bf
20: 4b 00 01 3f 8f
12: 00 05 11 00 00 00 00 00
20: 4b 00 00
12: 80 06 00 01 00 00 12 00
20: 4b 12 01 10 01 00 00 00 08 11 77
20: c3 42 42 31 e1 00 01 01 02 31 bf
20: 4b 00 01 3f 8f
12: 80 06 00 02 00 00 09 00
20: 4b 09 02 22 00 01 01 00 c0 0a b0
20: c3 32 c1 6a
12: 80 06 00 02 00 00 22 00
20: 4b 09 02 22 00 01 01 00 c0 0a b0
20: c3 32 09 04 00 00 01 03 00 f4 8d
ff:
ff:
ff:
12: 00 05 12 00 00 00 00 00
20: 4b 00 00
12: 80 06 00 01 00 00 08 00
20: 4b 12 01 10 01 00 00 00 08 11 77
12: 80 06 00 01 00 00 12 00
20: 4b 12 01 10 01 00 00 00 08 11 77
20: c3 42 42 31 e1 00 01 01 02 31 bf
20: 4b 00 01 3f 8f
12: 80 06 00 02 00 00 09 00
20: 4b 09 02 22 00 01 01 00 c0 0a b0
20: c3 32 c1 6a
12: 80 06 00 02 00 00 22 00
20: 4b 09 02 22 00 01 01 00 c0 0a b0
20: c3 32 09 04 00 00 01 03 00 f4 8d
20: 4b 00 00 09 21 01 01 00 01 92 96
20: c3 22 23 00 07 05 81 03 08 ca e5
20: 4b 00 0a 7e 48
12: 80 06 00 03 00 00 ff 00
20: 4b 04 03 09 04 09 78


What's happening here is that the device eventually accepts address 18 (having failed on 16 and 17), but then everything gets stuck reading a string descriptor. (The host asked for 255 bytes and the device (correctly) returned 4 bytes.

2. If I add some extra debug output statements, the device enumerates properly and is recognised as a HID.  Here's the dmesg output:

CODE
adm5120-hcd: Root Hub Status Change
hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0004
adm5120-hcd: write port1 = 0x00010000 CSC
hub 1-0:1.0: port 2, status 0301, change 0001, 1.5 Mb/s
hub 1-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x301
adm5120-hcd: reset port1
adm5120-hcd: write port1 = 0x00100000 PRSC
usb 1-2: new low speed USB device using adm5120-hcd and address 5
adm5120-hcd: URB-ENQEUE 808b8b80 dev=0 ep=0in-ctrl flags=200 len=0/64 stat=-150
adm5120-hcd: DMA enabled
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6140 tail 00ce6180 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 808b8b80 index 0; hwNextTD 00ce61c0
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 008b8300; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce61c0; urb 808b8b80 index 1; hwNextTD 00ce6100
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 008b8d80; cbl 00000040; LEN=64
adm5120-hcd:   -> td a0ce6100; urb 808b8b80 index 2; hwNextTD 00ce6180
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 808b8b80 index 0; hwNextTD 00ce61c0
adm5120-hcd:      status 01800003 CC=0 EC=0 DATA1 SETUP ISI=0 FN=3
adm5120-hcd:      dbp 008b8308; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce61c0; urb 808b8b80 index 1; hwNextTD 00ce6100
adm5120-hcd:      status 49c00001 CC=9 EC=0 DATA1 IN ISI=0 FN=1
adm5120-hcd:      dbp 008b8d90; cbl 00000002; LEN=2
adm5120-hcd:   -> td a0ce6100; urb 808b8b80 index 2; hwNextTD 00ce6180
adm5120-hcd:      status 01200001 CC=0 EC=0 DATA0 OUT ISI=0 FN=1
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 808b8b80 dev=0 ep=0in-ctrl flags=200 len=18/64 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 40 00
adm5120-hcd: data(18/64): 12 01 10 01 00 00 00 08 42 42 31 e1 00 01 01 02... stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd: reset port1
adm5120-hcd: write port1 = 0x00100000 PRSC
adm5120-hcd: URB-ENQEUE 808b8300 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=-150
adm5120-hcd: setup(8): 00 05 05 00 00 00 00 00
adm5120-hcd: DMA enabled
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce6180 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6180; urb 808b8300 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 008b8180; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 808b8300 index 1; hwNextTD 00ce61c0
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6180; urb 808b8300 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800005 CC=0 EC=0 DATA1 SETUP ISI=0 FN=5
adm5120-hcd:      dbp 008b8188; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 808b8300 index 1; hwNextTD 00ce61c0
adm5120-hcd:      status 01400003 CC=0 EC=0 DATA0 IN ISI=0 FN=3
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 808b8300 dev=0 ep=0out-ctrl flags=0 len=0/0 stat=0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: EP-DISABLE ed a0cd7140 IDLE type ctrl; next ed 00000000
adm5120-hcd:   info 00080000 MAX=8 LOW EP=0 DEV=0
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 808b8180 dev=5 ep=0in-ctrl flags=200 len=0/18 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 808b8180 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 008b8300; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 808b8180 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 008b8c00; cbl 00000012; LEN=18
adm5120-hcd:   -> td a0ce6180; urb 808b8180 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 808b8180 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800005 CC=0 EC=0 DATA1 SETUP ISI=0 FN=5
adm5120-hcd:      dbp 008b8308; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 808b8180 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 01400003 CC=0 EC=0 DATA0 IN ISI=0 FN=3
adm5120-hcd:      dbp 008b8c12; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 808b8180 index 2; hwNextTD 00ce6140
adm5120-hcd:      status 01200003 CC=0 EC=0 DATA0 OUT ISI=0 FN=3
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 808b8180 dev=5 ep=0in-ctrl flags=200 len=18/18 stat=0
adm5120-hcd: setup(8): 80 06 00 01 00 00 12 00
adm5120-hcd: data(18/18): 12 01 10 01 00 00 00 08 42 42 31 e1 00 01 01 02... stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 808b8000 dev=5 ep=0in-ctrl flags=200 len=0/9 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 808b8000 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 008b8180; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 808b8000 index 1; hwNextTD 00ce6100
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 008b8300; cbl 00000009; LEN=9
adm5120-hcd:   -> td a0ce6100; urb 808b8000 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 808b8000 index 0; hwNextTD 00ce6180
adm5120-hcd:      status 01800006 CC=0 EC=0 DATA1 SETUP ISI=0 FN=6
adm5120-hcd:      dbp 008b8188; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 808b8000 index 1; hwNextTD 00ce6100
adm5120-hcd:      status 01c00000 CC=0 EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 008b8309; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 808b8000 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status 01200000 CC=0 EC=0 DATA0 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 808b8000 dev=5 ep=0in-ctrl flags=200 len=9/9 stat=0
adm5120-hcd: setup(8): 80 06 00 02 00 00 09 00
adm5120-hcd: data(9/9): 09 02 22 00 01 01 00 c0 32 stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 808b8b80 dev=5 ep=0in-ctrl flags=200 len=0/34 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 UNLINK type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08084005 MAX=8 SKIP LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 808b8b80 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 008b8000; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 808b8b80 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 008b8180; cbl 00000022; LEN=34
adm5120-hcd:   -> td a0ce6180; urb 808b8b80 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 808b8b80 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800003 CC=0 EC=0 DATA1 SETUP ISI=0 FN=3
adm5120-hcd:      dbp 008b8008; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 808b8b80 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 01400000 CC=0 EC=0 DATA0 IN ISI=0 FN=0
adm5120-hcd:      dbp 008b81a2; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 808b8b80 index 2; hwNextTD 00ce6140
adm5120-hcd:      status 01200000 CC=0 EC=0 DATA0 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 808b8b80 dev=5 ep=0in-ctrl flags=200 len=34/34 stat=0
adm5120-hcd: setup(8): 80 06 00 02 00 00 22 00
adm5120-hcd: data(34/34): 09 02 22 00 01 01 00 c0 32 09 04 00 00 01 03 00... stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
usb 1-2: skipped 1 descriptor after interface
adm5120-hcd: URB-ENQEUE 808b8400 dev=5 ep=0in-ctrl flags=200 len=0/255 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 UNLINK type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08084005 MAX=8 SKIP LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 808b8400 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 008b8300; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 808b8400 index 1; hwNextTD 00ce6100
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92900; cbl 000000ff; LEN=255
adm5120-hcd:   -> td a0ce6100; urb 808b8400 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 808b8400 index 0; hwNextTD 00ce6180
adm5120-hcd:      status 01800004 CC=0 EC=0 DATA1 SETUP ISI=0 FN=4
adm5120-hcd:      dbp 008b8308; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 808b8400 index 1; hwNextTD 00ce6100
adm5120-hcd:      status 49c00006 CC=9 EC=0 DATA1 IN ISI=0 FN=6
adm5120-hcd:      dbp 00f92900; cbl 00000004; LEN=4
adm5120-hcd:   -> td a0ce6100; urb 808b8400 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status 01200006 CC=0 EC=0 DATA0 OUT ISI=0 FN=6
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 808b8400 dev=5 ep=0in-ctrl flags=200 len=4/255 stat=0
adm5120-hcd: setup(8): 80 06 00 03 00 00 ff 00
adm5120-hcd: data(4/255): 04 03 09 04 stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
usb 1-2: default language 0x0409
adm5120-hcd: URB-ENQEUE 808b8400 dev=5 ep=0in-ctrl flags=200 len=0/255 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 808b8400 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 008b8300; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 808b8400 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92900; cbl 000000ff; LEN=255
adm5120-hcd:   -> td a0ce6180; urb 808b8400 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 808b8400 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800001 CC=0 EC=0 DATA1 SETUP ISI=0 FN=1
adm5120-hcd:      dbp 008b8308; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 808b8400 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 49c00000 CC=9 EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92910; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 808b8400 index 2; hwNextTD 00ce6140
adm5120-hcd:      status 01200000 CC=0 EC=0 DATA0 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 808b8400 dev=5 ep=0in-ctrl flags=200 len=16/255 stat=0
adm5120-hcd: setup(8): 80 06 02 03 09 04 ff 00
adm5120-hcd: data(16/255): 10 03 55 00 53 00 42 00 54 00 65 00 73 00 74 00 stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 808b8d80 dev=5 ep=0in-ctrl flags=200 len=0/255 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 UNLINK type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08084005 MAX=8 SKIP LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 808b8d80 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 008b8400; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 808b8d80 index 1; hwNextTD 00ce6100
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00f92900; cbl 000000ff; LEN=255
adm5120-hcd:   -> td a0ce6100; urb 808b8d80 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 808b8d80 index 0; hwNextTD 00ce6180
adm5120-hcd:      status 01800004 CC=0 EC=0 DATA1 SETUP ISI=0 FN=4
adm5120-hcd:      dbp 008b8408; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 808b8d80 index 1; hwNextTD 00ce6100
adm5120-hcd:      status 49c00006 CC=9 EC=0 DATA1 IN ISI=0 FN=6
adm5120-hcd:      dbp 00f92910; cbl 00000002; LEN=2
adm5120-hcd:   -> td a0ce6100; urb 808b8d80 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status 01200007 CC=0 EC=0 DATA0 OUT ISI=0 FN=7
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 808b8d80 dev=5 ep=0in-ctrl flags=200 len=18/255 stat=0
adm5120-hcd: setup(8): 80 06 01 03 09 04 ff 00
adm5120-hcd: data(18/255): 12 03 6f 00 62 00 64 00 65 00 76 00 2e 00 61 00... stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
usb 1-2: uevent
usb 1-2: usb_probe_device
usb 1-2: configuration #1 chosen from 1 choice
adm5120-hcd: URB-ENQEUE 808b8380 dev=5 ep=0out-ctrl flags=0 len=0/0 stat=-150
adm5120-hcd: setup(8): 00 09 01 00 00 00 00 00
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6180 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 808b8380 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800000 CC=0 EC=0 DATA1 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 008b8088; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 808b8380 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 81c00000 OWN CC=0 EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 808b8380 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800000 CC=0 EC=0 DATA1 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 008b8088; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 808b8380 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 01400004 CC=0 EC=0 DATA0 IN ISI=0 FN=4
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 808b8380 dev=5 ep=0out-ctrl flags=0 len=0/0 stat=0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6180 tail 00ce6180 DATA0 td list follows
usb 1-2: adding 1-2:1.0 (config #1, interface 0)
usb 1-2:1.0: uevent
usbhid 1-2:1.0: usb_probe_interface
usbhid 1-2:1.0: usb_probe_interface - got id
adm5120-hcd: URB-ENQEUE 809f4380 dev=5 ep=0out-ctrl flags=0 len=0/0 stat=-150
adm5120-hcd: setup(8): 21 0a 00 00 00 00 00 00
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6180 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6180; urb 809f4380 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 009f4180; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 809f4380 index 1; hwNextTD 00ce61c0
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6180; urb 809f4380 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800007 CC=0 EC=0 DATA1 SETUP ISI=0 FN=7
adm5120-hcd:      dbp 009f4188; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 809f4380 index 1; hwNextTD 00ce61c0
adm5120-hcd:      status 01400005 CC=0 EC=0 DATA0 IN ISI=0 FN=5
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 809f4380 dev=5 ep=0out-ctrl flags=0 len=0/0 stat=0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80a06680 dev=5 ep=0in-ctrl flags=200 len=0/35 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80a06680 index 0; hwNextTD 00ce6100
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00a06180; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 80a06680 index 1; hwNextTD 00ce6180
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 009f4a00; cbl 00000023; LEN=35
adm5120-hcd:   -> td a0ce6180; urb 80a06680 index 2; hwNextTD 00ce6140
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd:   -> td a0ce61c0; urb 80a06680 index 0; hwNextTD 00ce6100
adm5120-hcd:      status 01800000 CC=0 EC=0 DATA1 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00a06188; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80a06680 index 1; hwNextTD 00ce6180
adm5120-hcd:      status 01400003 CC=0 EC=0 DATA0 IN ISI=0 FN=3
adm5120-hcd:      dbp 009f4a23; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80a06680 index 2; hwNextTD 00ce6140
adm5120-hcd:      status 01200003 CC=0 EC=0 DATA0 OUT ISI=0 FN=3
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80a06680 dev=5 ep=0in-ctrl flags=200 len=35/35 stat=0
adm5120-hcd: setup(8): 81 06 00 22 00 00 23 00
adm5120-hcd: data(35/35): 05 01 09 06 a1 01 05 07 19 e0 29 e7 15 00 25 01... stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce6140 DATA0 td list follows
adm5120-hcd: URB-ENQEUE 80994980 dev=5 ep=0in-ctrl flags=20c len=0/8 stat=-150
adm5120-hcd: admhc_urb_enqueue ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce6140 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80994980 index 0; hwNextTD 00ce6180
adm5120-hcd:      status f9000000 OWN CC=f EC=0 DATA0 SETUP ISI=0 FN=0
adm5120-hcd:      dbp 00c82020; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6180; urb 80994980 index 1; hwNextTD 00ce6100
adm5120-hcd:      status f9c00000 OWN CC=f EC=0 DATA1 IN ISI=0 FN=0
adm5120-hcd:      dbp 00873000; cbl 00000008; LEN=8
adm5120-hcd:   -> td a0ce6100; urb 80994980 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status f9a00000 OWN CC=f EC=0 DATA1 OUT ISI=0 FN=0
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: Transfer Descriptor Complete
adm5120-hcd: UPDATE ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd:   -> td a0ce6140; urb 80994980 index 0; hwNextTD 00ce6180
adm5120-hcd:      status 01800007 CC=0 EC=0 DATA1 SETUP ISI=0 FN=7
adm5120-hcd:      dbp 00c82028; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6180; urb 80994980 index 1; hwNextTD 00ce6100
adm5120-hcd:      status 49c00006 CC=9 EC=0 DATA1 IN ISI=0 FN=6
adm5120-hcd:      dbp 00873000; cbl 00000000; LEN=0
adm5120-hcd:   -> td a0ce6100; urb 80994980 index 2; hwNextTD 00ce61c0
adm5120-hcd:      status 01200006 CC=0 EC=0 DATA0 OUT ISI=0 FN=6
adm5120-hcd:      dbp 00000000; cbl 00010000; LEN=0 IE
adm5120-hcd: URB-RET 80994980 dev=5 ep=0in-ctrl flags=20c len=0/8 stat=0
adm5120-hcd: setup(8): a1 01 00 01 00 00 04 00
adm5120-hcd: data(0/8): stat:0
adm5120-hcd: ED-UNLINK ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 00080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
adm5120-hcd: ED-DESCHED ed a0cd7140 OPER type ctrl; next ed 00cd70c0
adm5120-hcd:   info 08080005 MAX=8 LOW EP=0 DEV=5
adm5120-hcd:   tds: head 00ce61c0 tail 00ce61c0 DATA0 td list follows
input: obdev.at USBTest as /devices/platform/adm5120-hcd/usb1/1-2/1-2:1.0/input/input2
generic-usb 0003:4242:E131.0002: input: USB HID v1.01 Keyboard [obdev.at USBTest] on usb-ADM5120-2/input0
drivers/usb/core/inode.c: creating file '005'
usb 1-2: New USB device found, idVendor=4242, idProduct=e131
usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-2: Product: USBTest
usb 1-2: Manufacturer: obdev.at
hub 1-0:1.0: state 7 ports 2 chg 0000 evt 0004
hub 1-0:1.0: port 2 enable change, status 00000303
adm5120-hcd: write port1 = 0x00020000 PESC
adm5120-hcd: Root Hub Status Change


And here's the corresponding debug output from the USB device.
CODE
d2:
ff:
ff:
ff:
12: 80 06 00 01 00 00 40 00
20: 4b 12 01 10 01 00 00 00 08 11 77
20: c3 42 42 31 e1 00 01 01 02 31 bf
20: 4b 00 01 3f 8f
12: 00 05 06 00 00 00 00 00
20: 4b 00 00
12: 80 06 00 01 00 00 12 00
20: 4b 12 01 10 01 00 00 00 08 11 77
20: c3 42 42 31 e1 00 01 01 02 31 bf
20: 4b 00 01 3f 8f
12: 80 06 00 02 00 00 09 00
20: 4b 09 02 22 00 01 01 00 c0 0a b0
20: c3 32 c1 6a
12: 80 06 00 02 00 00 22 00
20: 4b 09 02 22 00 01 01 00 c0 0a b0
20: c3 32 09 04 00 00 01 03 00 f4 8d
20: 4b 00 00 09 21 01 01 00 01 92 96
20: c3 22 23 00 07 05 81 03 08 ca e5
20: 4b 00 0a 7e 48
12: 80 06 00 03 00 00 ff 00
20: 4b 04 03 09 04 09 78
12: 80 06 02 03 09 04 ff 00
20: 4b 10 03 55 00 53 00 42 00 a0 19
20: c3 54 00 65 00 73 00 74 00 8f 4a
20: 4b 00 00
12: 80 06 01 03 09 04 ff 00
20: 4b 12 03 6f 00 62 00 64 00 30 06
20: c3 65 00 76 00 2e 00 61 00 52 0d
20: 4b 74 00 d9 4f
12: 00 09 01 00 00 00 00 00
20: 4b 00 00
12: 21 0a 00 00 00 00 00 00
20: 4b 00 00
12: 81 06 00 22 00 00 23 00
20: 4b 05 01 09 06 a1 01 05 07 d7 3c
20: c3 19 e0 29 e7 15 00 25 01 73 ef
20: 4b 75 01 95 08 81 02 95 03 32 46
20: c3 75 08 25 65 19 00 29 65 62 f5
20: 4b 81 00 c0 de 47
12: a1 01 00 01 00 00 04 00
20: 4b 00 00


The extra debug output (which isn't shown above) effectively delays the response of the USB device to every setup request by about 100mS. This seems a surprisingly long delay to make things work, but anything much less and the behaviour is intermittent.


  


#20 steveh

steveh

    Member

  • Members
  • PipPip
  • 18 posts
  • Gender:Male

Posted 29 May 2009 - 05:07 PM

QUOTE (Dean @ May 9 2009, 02:56 PM) <{POST_SNAPBACK}>
That's really useful info. I'll have a look at the details if I can spot any obvious issues.

We're arranging for one our consultants to have a look at this issue and will pass this information to them.

They are making some progress with a numeric keypad already working.

We'll keep this thread updated with any news.

Best regards,
Dean


I've been patient, but there's no sign of progress on this issue. Given that Omnima sells this board with USB ports as a highlighted feature (it's the main reason I opted for the device), I hoped that fixing them would be a priority.

I've spent a lot of time on this myself (OpenWRT is open source after all) but not cracked it yet - the adm5120 just seems to stop talking to the USB port, and I can find no visible change of state to indicate why.

I posted the problem on the OpenWRT forum and got sympathy but no help. I've been in e-mail contact with the author of the original driver recognises the problem but hasn't been able to spend any time on it yet. I've also contacted Infineon, who have acknowledged my question but so far they not provided any assistance (there's not much reason why they should - I'm not going to buy thousands of chips from them).

So come on Omnima, you sell the hardware - elsewhere you've said it's built to your spec and you're developing a second-generation device - so when can we expect it to work as advertised?







0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users