On Wed, Feb 08, 2012 at 02:28:36PM -0800, Sarah Sharp wrote: > On Thu, Feb 02, 2012 at 02:14:20AM +0200, Felipe Contreras wrote: > > On Wed, Feb 1, 2012 at 6:51 PM, Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> wrote: > > > On Tue, Jan 31, 2012 at 10:52:42PM +0200, Felipe Contreras wrote: > > >> Note that this USB 2.0 device didn't work =/ > > Yep, I see that the host controller doesn't like some input we gave it > when we tried to set up the configuration endpoint rings: > > Jan 31 22:43:53 dyfed kernel: [ 79.045933] xhci_hcd 0000:02:00.0: ERROR: unexpected command completion code 0x11. > Jan 31 22:43:53 dyfed kernel: [ 79.045935] xhci_hcd 0000:02:00.0: xhci_reset_bandwidth called for udev ffff88042bec7000 > Jan 31 22:43:53 dyfed kernel: [ 79.045936] xhci_hcd 0000:02:00.0: Freeing ring at ffff880429dceae0 > Jan 31 22:43:53 dyfed kernel: [ 79.045937] xhci_hcd 0000:02:00.0: Freeing DMA segment at ffff88000282b800 (virtual) 0x282b800 (DMA) > Jan 31 22:43:53 dyfed kernel: [ 79.045939] xhci_hcd 0000:02:00.0: Freeing priv segment structure at ffff88042bee91c0 > Jan 31 22:43:53 dyfed kernel: [ 79.045943] xhci_hcd 0000:02:00.0: Freeing ring at ffff880429dce060 > Jan 31 22:43:53 dyfed kernel: [ 79.045944] xhci_hcd 0000:02:00.0: Freeing DMA segment at ffff880002843000 (virtual) 0x2843000 (DMA) > Jan 31 22:43:53 dyfed kernel: [ 79.045946] xhci_hcd 0000:02:00.0: Freeing priv segment structure at ffff88042bee9fe0 > > I'll have to look at the input and see what we're doing wrong. Ok, I'm really not sure what's going wrong here. The host controller is rejecting the configure endpoint command with a completion code of 0x11, which is a parameter error. But I've double checked the input context, and everything looks correct, according to the 0.96 xHCI spec. That checking is attached. Do any USB 2.0 devices work under this host controller? Maybe something that has a different endpoint type than a bulk endpoint, like a webcam or mouse? Sarah Sharp
add ep 0x81, slot id 2, new drop flags = 0x0, new add flags = 0x8, new slot info = 0x18300001 add ep 0x2, slot id 2, new drop flags = 0x0, new add flags = 0x18, new slot info = 0x20300001 New Input Control Context: @ffff880002844000 (virt) @02844000 (dma) 0x000000 - drop flags - nothing to drop @ffff880002844004 (virt) @02844004 (dma) 0x000019 - add flags - slot, ep 0x81, ep 0x82 @ffff880002844008 (virt) @02844008 (dma) 0x000000 - rsvd2[0] @ffff88000284400c (virt) @0284400c (dma) 0x000000 - rsvd2[1] @ffff880002844010 (virt) @02844010 (dma) 0x000000 - rsvd2[2] @ffff880002844014 (virt) @02844014 (dma) 0x000000 - rsvd2[3] @ffff880002844018 (virt) @02844018 (dma) 0x000000 - rsvd2[4] @ffff88000284401c (virt) @0284401c (dma) 0x000000 - rsvd2[5] Slot Context: @ffff880002844020 (virt) @02844020 (dma) 0x20300001 - dev_info - route string 1 - speed 2 (high speed) - MTT 0 (not a HS hub or a LS/FS device behind a HS hub) - not a hub - context entries - last valid entry is index 4 @ffff880002844024 (virt) @02844024 (dma) 0x010000 - dev_info2 - max exit latency 0 - root port hub port number 1 @ffff880002844028 (virt) @02844028 (dma) 0x000000 - tt_info @ffff88000284402c (virt) @0284402c (dma) 0x000000 - dev_state - address is zero? table 55 says that's what we're supposed to do. @ffff880002844030 (virt) @02844030 (dma) 0x000000 - rsvd[0] @ffff880002844034 (virt) @02844034 (dma) 0x000000 - rsvd[1] @ffff880002844038 (virt) @02844038 (dma) 0x000000 - rsvd[2] @ffff88000284403c (virt) @0284403c (dma) 0x000000 - rsvd[3] Endpoint 00 Context: @ffff880002844040 (virt) @02844040 (dma) 0x000000 - ep_info @ffff880002844044 (virt) @02844044 (dma) 0x400026 - ep_info2 @ffff880002844048 (virt) @02844048 (dma) 0x282b401 - deq @ffff880002844050 (virt) @02844050 (dma) 0x000000 - tx_info @ffff880002844054 (virt) @02844054 (dma) 0x000000 - rsvd[0] @ffff880002844058 (virt) @02844058 (dma) 0x000000 - rsvd[1] @ffff88000284405c (virt) @0284405c (dma) 0x000000 - rsvd[2] Endpoint 01 Context: @ffff880002844060 (virt) @02844060 (dma) 0x000000 - ep_info @ffff880002844064 (virt) @02844064 (dma) 0x000000 - ep_info2 @ffff880002844068 (virt) @02844068 (dma) 0x000000 - deq @ffff880002844070 (virt) @02844070 (dma) 0x000000 - tx_info @ffff880002844074 (virt) @02844074 (dma) 0x000000 - rsvd[0] @ffff880002844078 (virt) @02844078 (dma) 0x000000 - rsvd[1] @ffff88000284407c (virt) @0284407c (dma) 0x000000 - rsvd[2] Endpoint 02 Context: @ffff880002844080 (virt) @02844080 (dma) 0xff0000 - ep_info - state disabled - no mult - no streams - no LSA - interval = 0xff - correct? Why set interval on a bulk EP? - section 6.2.3.6 says HS bulk eps it specifies the NAK interval @ffff880002844084 (virt) @02844084 (dma) 0x2000036 - ep_info2 - no force event - error count = 3 - ep type = bulk in - no HID - max burst size 0 - max packet size = 0x200 = 512 @ffff880002844088 (virt) @02844088 (dma) 0x282b801 - deq @ffff880002844090 (virt) @02844090 (dma) 0x000000 - tx_info @ffff880002844094 (virt) @02844094 (dma) 0x000000 - rsvd[0] @ffff880002844098 (virt) @02844098 (dma) 0x000000 - rsvd[1] @ffff88000284409c (virt) @0284409c (dma) 0x000000 - rsvd[2] Endpoint 03 Context: @ffff8800028440a0 (virt) @028440a0 (dma) 0xff0000 - ep_info - state disabled - no mult - no streams - no LSA - interval = 0xff @ffff8800028440a4 (virt) @028440a4 (dma) 0x2000016 - ep_info2 - no force event - error count = 3 - ep type = bulk out - no HID - max burst size 0 - max packet size = 0x200 = 512 @ffff8800028440a8 (virt) @028440a8 (dma) 0x2843001 - deq @ffff8800028440b0 (virt) @028440b0 (dma) 0x000000 - tx_info @ffff8800028440b4 (virt) @028440b4 (dma) 0x000000 - rsvd[0] @ffff8800028440b8 (virt) @028440b8 (dma) 0x000000 - rsvd[1] @ffff8800028440bc (virt) @028440bc (dma) 0x000000 - rsvd[2] Jan 31 22:43:53 dyfed kernel: [ 79.045933] xhci_hcd 0000:02:00.0: ERROR: unexpected command completion code 0x11. Slot Not Enabled Error setting up stuff for slot ID 2 command ring says: @0000000002807050 02844000 00000000 00000000 02002c01 - cycle = 1 - trb type = 0x001011 = address device command - slot ID = 2 @0000000002807060 02844000 00000000 00000000 02003001 - cycle = 1 - trb type = 0x001100 = configure endpoint command - slot ID = 2