2007-08-13 16:12:31

by Midhun A

[permalink] [raw]
Subject: USB HC on i.MX21 hangs with error -110

Hi All,

We are using the i.MX21 Litekit. It has got a USB host port on it
and the driver is imx21-hcd.c provided by the vendor. When I plug in a
USB stick into the host port, the kernel hangs with the following
error:

usb 1-2: device descriptor read/64, error -110

I have read on the net that -110 means timeout error. Also there
were suggestions to unload ehci-hcd module. But I do not have ehci-hcd
built into my kernel. My kernel config for USB is:

#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_USB_ARCH_HAS_OHCI is not set
# CONFIG_USB_ARCH_HAS_EHCI is not set
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set



The kernel boots with the following log on enabling CONFIG_USB_DEBUG.




imx21_hcd_init:1838
imx21_probe:1765
imx21-hc imx21-hc.0: IMX21 USB Host Controller
imx21-hc imx21-hc.0: new USB bus registered, assigned bus number 1
imx21_hc_reset:1430
imx21-hc imx21-hc.0: irq 55, io base 0x00000000
imx21_hc_start:1438
imx21_hc_start:1451
usb usb1: Product: IMX21 USB Host Controller
usb usb1: Manufacturer: Linux 2.6.22 imx21-hc
usb usb1: SerialNumber: imx21-hc.0
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
imx21_hc_hub_control:1579
GetHubDescriptor
hub 1-0:1.0: 3 ports detected
imx21_hc_hub_control:1579
GetHubStatus
imx21_hc_hub_control:1579
SetPortFeature
USB_PORT_FEAT_POWER
imx21_hc_hub_control:1579
SetPortFeature
USB_PORT_FEAT_POWER
imx21_hc_hub_control:1579
SetPortFeature
USB_PORT_FEAT_POWER
>>usb_add_hcd - Exiting without error
imx21_probe:1822
imx21_hc_hub_control:1579
GetPortStatus: port: 1, 0x100
imx21_hc_hub_control:1579
GetPortStatus: port: 2, 0x100
imx21_hc_hub_control:1579
GetPortStatus: port: 3, 0x100





The debug on plugging in the flash drive is:



/ # imx21_hc_hub_status_data:1555
port 1 (of 3): 0x10101
imx21_hc_hub_control:1579
GetPortStatus: port: 2, 0x10101
imx21_hc_hub_control:1579
ClearPortFeature
USB_PORT_FEAT_C_CONNECTION
imx21_hc_hub_control:1579
GetPortStatus: port: 2, 0x101
imx21_hc_hub_control:1579
GetPortStatus: port: 2, 0x101
imx21_hc_hub_control:1579
GetPortStatus: port: 2, 0x101
imx21_hc_hub_control:1579
GetPortStatus: port: 2, 0x101
imx21_hc_hub_control:1579
GetPortStatus: port: 2, 0x101
imx21_hc_hub_control:1579
SetPortFeature
USB_PORT_FEAT_RESET

hwmode = 0x202000a2 cint_stat = 0x00000000 cint_sten = 0x00000001
clk_ctrl = 0x00000003 rst_ctrl = 0x00000000 frm_intvl = 0x2a2f2edf
frm_remain = 0x28cd0000 hnp_csr = 0x20440200 hint_isr = 0x00000000
hnp_ien = 0x00000000 usbctrl = 0x000f1004

host_ctrl = 0x00000008 sysisr = 0x00000004 sysien = 0x00000000
xbufstat = 0x00000000 ybufstat = 0x00000000 xyinten = 0x00000000
xfillstat = 0x00000000 yfillstat = 0x00000000 etdenset = 0x00000000
etdenclr = 0x00000000 immedint = 0x00000000 etddonest = 0x00000000
etddoneen = 0x00000000 frmnub = 0x00002f1e lsthresh = 0x00000628
roothuba = 0x01000103 roothubb = 0x00070000 rootstat = 0x00000000
portst1 = 0x00000100 portst2 = 0x00000101 portst3 = 0x00000100
imx21_hc_hub_control:1579
GetPortStatus: port: 2, 0x100103
imx21_hc_hub_control:1579
ClearPortFeature
USB_PORT_FEAT_C_RESET
usb 1-2: new full speed USB device using imx21-hc and address 2
imx21_hc_urb_enqueue:1466
ep: c2d94034
ep->hcpriv: 00000000
ep->urb_list: c2d94040
ep->descriptor:
bEndpointAddress: 0
wMaxPacketSize: 64
urb: c2d524a0
->dev->speed: FULL
->hcpriv: 00000000
->pipe: 0x80000080 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
imx21_irq:1403
imx21_irq:1413
etd(0): 0x00400000 0x00400000 0xf0800000 0x07e00008
imx21_irq:1403
imx21_irq:1407
sh_done_list:1176
hc_parse_trans:1036
hc_parse_trans:1039
hc_parse_trans:1043
etd(0): 0x08400000 0x00400000 0x53800000 0x07e00008
hc_parse_trans:1113
hc_parse_trans:1144
hc_parse_trans:1152
urb: c2d524a0
->dev->speed: FULL
->hcpriv: c2d4e160
->pipe: 0x80000082 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
imx21_irq:1413
imx21_hc_urb_enqueue:1466
ep: c2d94034
ep->hcpriv: 00000000
ep->urb_list: c2d94040
ep->descriptor:
bEndpointAddress: 0
wMaxPacketSize: 64
urb: c2d52500
->dev->speed: FULL
->hcpriv: 00000000
->pipe: 0x80000080 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
imx21_irq:1403
imx21_irq:1413
etd(0): 0x00400000 0x00400000 0xf0800000 0x07e00008
imx21_irq:1403
imx21_irq:1407
sh_done_list:1176
hc_parse_trans:1036
hc_parse_trans:1039
hc_parse_trans:1043
etd(0): 0x08400000 0x00400000 0x53800000 0x07e00008
hc_parse_trans:1113
hc_parse_trans:1144
hc_parse_trans:1152
urb: c2d52500
->dev->speed: FULL
->hcpriv: c2d4e160
->pipe: 0x80000082 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
imx21_irq:1413
imx21_hc_urb_enqueue:1466
ep: c2d94034
ep->hcpriv: 00000000
ep->urb_list: c2d94040
ep->descriptor:
bEndpointAddress: 0
wMaxPacketSize: 64
urb: c2d52560
->dev->speed: FULL
->hcpriv: 00000000
->pipe: 0x80000080 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
imx21_irq:1403
imx21_irq:1413
etd(0): 0x00400000 0x00400000 0xf0800000 0x07e00008
imx21_irq:1403
imx21_irq:1407
sh_done_list:1176
hc_parse_trans:1036
hc_parse_trans:1039
hc_parse_trans:1043
etd(0): 0x08400000 0x00400000 0x53800000 0x07e00008
hc_parse_trans:1113
hc_parse_trans:1144
hc_parse_trans:1152
urb: c2d52560
->dev->speed: FULL
->hcpriv: c2d4e160
->pipe: 0x80000082 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
imx21_irq:1413
imx21_hc_hub_control:1579
SetPortFeature
USB_PORT_FEAT_RESET

hwmode = 0x202000a2 cint_stat = 0x00000000 cint_sten = 0x00000001
clk_ctrl = 0x00000003 rst_ctrl = 0x00000000 frm_intvl = 0x2a2f2edf
frm_remain = 0x06810000 hnp_csr = 0x20440200 hint_isr = 0x00000000
hnp_ien = 0x00000000 usbctrl = 0x000f1004

host_ctrl = 0x00000008 sysisr = 0x00000004 sysien = 0x00000000
xbufstat = 0x00000000 ybufstat = 0x00000000 xyinten = 0x00000000
xfillstat = 0x00000000 yfillstat = 0x00000000 etdenset = 0x00000000
etdenclr = 0x00000000 immedint = 0x00000000 etddonest = 0x00000000
etddoneen = 0x00000001 frmnub = 0x0000344a lsthresh = 0x00000628
roothuba = 0x01000103 roothubb = 0x00070000 rootstat = 0x00000000
portst1 = 0x00000100 portst2 = 0x00000103 portst3 = 0x00000100
imx21_hc_hub_control:1579
GetPortStatus: port: 2, 0x100103
imx21_hc_hub_control:1579
ClearPortFeature
USB_PORT_FEAT_C_RESET
usb 1-2: device descriptor read/64, error -110
imx21_hc_urb_enqueue:1466
ep: c2d94034
ep->hcpriv: 00000000
ep->urb_list: c2d94040
ep->descriptor:
bEndpointAddress: 0
wMaxPacketSize: 64
urb: c2d525c0
->dev->speed: FULL
->hcpriv: 00000000
->pipe: 0x80000080 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
imx21_irq:1403
imx21_irq:1413
etd(0): 0x00400000 0x00400000 0xf0800000 0x07e00008
imx21_irq:1403
imx21_irq:1407
sh_done_list:1176
hc_parse_trans:1036
hc_parse_trans:1039
hc_parse_trans:1043
etd(0): 0x08400000 0x00400000 0x53800000 0x07e00008
hc_parse_trans:1113
hc_parse_trans:1144
hc_parse_trans:1152
urb: c2d525c0
->dev->speed: FULL
->hcpriv: c2d4e160
->pipe: 0x80000082 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
imx21_irq:1413
imx21_hc_urb_enqueue:1466
ep: c2d94034
ep->hcpriv: 00000000
ep->urb_list: c2d94040
ep->descriptor:
bEndpointAddress: 0
wMaxPacketSize: 64
urb: c2d52620
->dev->speed: FULL
->hcpriv: 00000000
->pipe: 0x80000080 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
imx21_irq:1403
imx21_irq:1413
etd(0): 0x00400000 0x00400000 0xf0800000 0x07e00008
imx21_irq:1403
imx21_irq:1407
sh_done_list:1176
hc_parse_trans:1036
hc_parse_trans:1039
hc_parse_trans:1043
etd(0): 0x08400000 0x00400000 0x53800000 0x07e00008
hc_parse_trans:1113
hc_parse_trans:1144
hc_parse_trans:1152
urb: c2d52620
->dev->speed: FULL
->hcpriv: c2d4e160
->pipe: 0x80000082 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
imx21_irq:1413
imx21_hc_urb_enqueue:1466
ep: c2d94034
ep->hcpriv: 00000000
ep->urb_list: c2d94040
ep->descriptor:
bEndpointAddress: 0
wMaxPacketSize: 64
urb: c2d52680
->dev->speed: FULL
->hcpriv: 00000000
->pipe: 0x80000080 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
imx21_irq:1403
imx21_irq:1413
etd(0): 0x00400000 0x00400000 0xf0800000 0x07e00008
imx21_irq:1403
imx21_irq:1407
sh_done_list:1176
hc_parse_trans:1036
hc_parse_trans:1039
hc_parse_trans:1043
etd(0): 0x08400000 0x00400000 0x53800000 0x07e00008
hc_parse_trans:1113
hc_parse_trans:1144
hc_parse_trans:1152
urb: c2d52680
->dev->speed: FULL
->hcpriv: c2d4e160
->pipe: 0x80000082 IN CTRL
->transfer_flags: 0x0
->transfer_buffer: c2d734a0
->transfer_dma: 0xc2d734a0
->transfer_buffer_length: 64
->setup_packet: c2cb1200
->setup_dma: 0xc2cb1200
0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00
maxpacket: 64
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
hc_parse_trans:1036
imx21_irq:1413
imx21_hc_hub_control:1579
SetPortFeature
USB_PORT_FEAT_RESET

hwmode = 0x202000a2 cint_stat = 0x00000000 cint_sten = 0x00000001
clk_ctrl = 0x00000003 rst_ctrl = 0x00000000 frm_intvl = 0x2a2f2edf
frm_remain = 0x082e0000 hnp_csr = 0x20440200 hint_isr = 0x00000000
hnp_ien = 0x00000000 usbctrl = 0x000f1004

host_ctrl = 0x00000008 sysisr = 0x00000004 sysien = 0x00000000
xbufstat = 0x00000000 ybufstat = 0x00000000 xyinten = 0x00000000
xfillstat = 0x00000000 yfillstat = 0x00000000 etdenset = 0x00000000
etdenclr = 0x00000000 immedint = 0x00000000 etddonest = 0x00000000
etddoneen = 0x00000001 frmnub = 0x00003a5e lsthresh = 0x00000628
roothuba = 0x01000103 roothubb = 0x00070000 rootstat = 0x00000000
portst1 = 0x00000100 portst2 = 0x00000103 portst3 = 0x00000100
imx21_hc_hub_control:1579
GetPortStatus: port: 2, 0x100103
imx21_hc_hub_status_data:1555
port 1 (of 3): 0x100103
imx21_hc_hub_control:1579
ClearPortFeature
USB_PORT_FEAT_C_RESET
usb 1-2: device descriptor read/64, error -110
imx21_hc_hub_control:1579
ClearPortFeature
USB_PORT_FEAT_ENABLE


The host controller has been configured for Full speed only. Should
I change the speed to LOW?


Thanks,
Midhun.


2007-08-13 18:13:47

by David Brownell

[permalink] [raw]
Subject: Re: USB HC on i.MX21 hangs with error -110

On Monday 13 August 2007, Midhun A wrote:
> ? ? We are using the i.MX21 Litekit. It has got a USB host port on it
> and the driver is imx21-hcd.c provided by the vendor.

Let's see ... Linux-ARM is a "please don't crosspost" list;
but you did (including linux-kernel). And then you also
posted much the same message to linux-usb-users and then
linux-usb-devel.

In none of these messages do you report what that vendor said
about these problems ...

In short, a good lesson in how NOT to ask for help!

If anyone feels inclined to follow up on this, please do so
only on linux-usb-devel.

2007-08-14 04:39:45

by Midhun A

[permalink] [raw]
Subject: Re: USB HC on i.MX21 hangs with error -110

Hi All,

Sorry for crossposting.

> Let's see ... Linux-ARM is a "please don't crosspost" list;

I did not know that. I will not repeat. I did not know which list
to ask help for USB untill afterwards I found the linux-usb-users
mailing list. Sorry again. Will not repeat.

Thanks,
Midhun.