Hi Jerome,
I back ported usb core and usb host drivers from 3.0 kernel to my 2.6.31 kernel. At least I am able to enumerate the device properly. Except for enumeration, I am unable to use the device functionally. But still one huge leap.
I need to backport the usb storage drivers. Could you please check the logs if by any chance you had experience this case. It throws some BOGUS and short transfer warnings
Logs:
/lib/modules/2.6.31/usb # insmod usbcore.ko
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
/lib/modules/2.6.31/usb # insmod xhci-hcd.ko
xhci_hcd 0000:00:00.0: xHCI Host Controller
xhci_hcd 0000:00:00.0: new USB bus registered, assigned bus number 1
xhci_hcd 0000:00:00.0: irq 64, io mem 0x10000000
xhci_hcd 0000:00:00.0: Failed to enable MSI-X
xhci_hcd 0000:00:00.0: failed to allocate MSI entry
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: xHCI Host Controller
usb usb1: Manufacturer: Linux 2.6.31 xhci_hcd
usb usb1: SerialNumber: 0000:00:00.0
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
xhci_hcd 0000:00:00.0: xHCI Host Controller
xhci_hcd 0000:00:00.0: new USB bus registered, assigned bus number 2
usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: xHCI Host Controller
usb usb2: Manufacturer: Linux 2.6.31 xhci_hcd
usb usb2: SerialNumber: 0000:00:00.0
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
/lib/modules/2.6.31/usb # usb 1-1: new high speed USB device number 2 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
usb 1-1: New USB device found, idVendor=0bc2, idProduct=3001
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: FreeAgent
usb 1-1: Manufacturer: Seagate
usb 1-1: SerialNumber: 2GEVY17N
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
usb 1-2: new high speed USB device number 3 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
usb 1-2: New USB device found, idVendor=0781, idProduct=5567
usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-2: Product: Cruzer Blade
usb 1-2: Manufacturer: SanDisk
usb 1-2: SerialNumber: 200535505302B670AF6F
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb # insmod usb-storage.ko
Initializing USB Mass Storage driver…
scsi0 : SCSI emulation for USB Mass Storage devices
scsi1 : SCSI emulation for USB Mass Storage devices
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
/lib/modules/2.6.31/usb # usb 1-1: BOGUS urb flags, 20c --> 204
usb 1-1: BOGUS urb flags, c --> 4
usb 1-2: BOGUS urb flags, 20c --> 204
usb 1-2: BOGUS urb flags, c --> 4
usb 1-1: reset high speed USB device number 2 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec720
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec74c
usb 1-1: BOGUS urb flags, c --> 4
usb 1-2: reset high speed USB device number 3 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec480
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec4ac
usb 1-2: BOGUS urb flags, c --> 4
usb 1-1: reset high speed USB device number 2 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec720
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec74c
usb 1-1: BOGUS urb flags, c --> 4
usb 1-2: reset high speed USB device number 3 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec480
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec4ac
usb 1-2: BOGUS urb flags, c --> 4
usb 1-1: reset high speed USB device number 2 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec720
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec74c
usb 1-1: BOGUS urb flags, c --> 4
usb 1-2: reset high speed USB device number 3 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec480
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec4ac
usb 1-2: BOGUS urb flags, c --> 4
usb 1-1: reset high speed USB device number 2 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec720
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec74c
usb 1-2: reset high speed USB device number 3 using xhci_hcd
xhci_hcd 0000:00:00.0: WARN: short transfer on control ep
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec480
xhci_hcd 0000:00:00.0: xHCI xhci_drop_endpoint called with disabled ep 81dec4ac
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
/lib/modules/2.6.31/usb #
DMESG:
/lib/modules/2.6.31/usb # dmesg
g segment 0x1d2c000 to segment 0x1d2c000 (DMA)
xhci_hcd 0000:00:00.0: Wrote link toggle flag to segment 81d9f740 (virtual), 0x1d2c000 (DMA)
xhci_hcd 0000:00:00.0: add ep 0x81, slot id 2, new drop flags = 0x0, new add flags = 0x8, new slot info = 0x18300000
xhci_hcd 0000:00:00.0: Allocating ring at 81cdd3a0
xhci_hcd 0000:00:00.0: Allocating priv segment structure at 81d9f700
xhci_hcd 0000:00:00.0: // Allocating segment at a1d2c400 (virtual) 0x1d2c400 (DMA)
xhci_hcd 0000:00:00.0: Linking segment 0x1d2c400 to segment 0x1d2c400 (DMA)
xhci_hcd 0000:00:00.0: Wrote link toggle flag to segment 81d9f700 (virtual), 0x1d2c400 (DMA)
xhci_hcd 0000:00:00.0: add ep 0x2, slot id 2, new drop flags = 0x0, new add flags = 0x18, new slot info = 0x20300000
xhci_hcd 0000:00:00.0: xhci_check_bandwidth called for udev 81cd4000
xhci_hcd 0000:00:00.0: New Input Control Context:
xhci_hcd 0000:00:00.0: @a1d49000 (virt) @01d49000 (dma) 0x000000 - drop flags
xhci_hcd 0000:00:00.0: @a1d49004 (virt) @01d49004 (dma) 0x19000000 - add flags
xhci_hcd 0000:00:00.0: @a1d49008 (virt) @01d49008 (dma) 0x000000 - rsvd2[0]
xhci_hcd 0000:00:00.0: @a1d4900c (virt) @01d4900c (dma) 0x000000 - rsvd2[1]
xhci_hcd 0000:00:00.0: @a1d49010 (virt) @01d49010 (dma) 0x000000 - rsvd2[2]
xhci_hcd 0000:00:00.0: @a1d49014 (virt) @01d49014 (dma) 0x000000 - rsvd2[3]
xhci_hcd 0000:00:00.0: @a1d49018 (virt) @01d49018 (dma) 0x000000 - rsvd2[4]
xhci_hcd 0000:00:00.0: @a1d4901c (virt) @01d4901c (dma) 0x000000 - rsvd2[5]
xhci_hcd 0000:00:00.0: Slot Context:
xhci_hcd 0000:00:00.0: @a1d49020 (virt) @01d49020 (dma) 0x003020 - dev_info
xhci_hcd 0000:00:00.0: @a1d49024 (virt) @01d49024 (dma) 0x000400 - dev_info2
xhci_hcd 0000:00:00.0: @a1d49028 (virt) @01d49028 (dma) 0x000000 - tt_info
xhci_hcd 0000:00:00.0: @a1d4902c (virt) @01d4902c (dma) 0x000000 - dev_state
xhci_hcd 0000:00:00.0: @a1d49030 (virt) @01d49030 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d49034 (virt) @01d49034 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d49038 (virt) @01d49038 (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: @a1d4903c (virt) @01d4903c (dma) 0x000000 - rsvd[3]
xhci_hcd 0000:00:00.0: Endpoint 00 Context:
xhci_hcd 0000:00:00.0: @a1d49040 (virt) @01d49040 (dma) 0x000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d49044 (virt) @01d49044 (dma) 0x26004000 - ep_info2
xhci_hcd 0000:00:00.0: @a1d49048 (virt) @01d49048 (dma) 0x1d8de0100000000 - deq
xhci_hcd 0000:00:00.0: @a1d49050 (virt) @01d49050 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d49054 (virt) @01d49054 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d49058 (virt) @01d49058 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4905c (virt) @01d4905c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 01 Context:
xhci_hcd 0000:00:00.0: @a1d49060 (virt) @01d49060 (dma) 0x000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d49064 (virt) @01d49064 (dma) 0x000000 - ep_info2
xhci_hcd 0000:00:00.0: @a1d49068 (virt) @01d49068 (dma) 0x000000 - deq
xhci_hcd 0000:00:00.0: @a1d49070 (virt) @01d49070 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d49074 (virt) @01d49074 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d49078 (virt) @01d49078 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4907c (virt) @01d4907c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 02 Context:
xhci_hcd 0000:00:00.0: @a1d49080 (virt) @01d49080 (dma) 0x000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d49084 (virt) @01d49084 (dma) 0x36000002 - ep_info2
xhci_hcd 0000:00:00.0: @a1d49088 (virt) @01d49088 (dma) 0x1c0d20100000000 - deq
xhci_hcd 0000:00:00.0: @a1d49090 (virt) @01d49090 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d49094 (virt) @01d49094 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d49098 (virt) @01d49098 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4909c (virt) @01d4909c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 03 Context:
xhci_hcd 0000:00:00.0: @a1d490a0 (virt) @01d490a0 (dma) 0x000100 - ep_info
xhci_hcd 0000:00:00.0: @a1d490a4 (virt) @01d490a4 (dma) 0x16000002 - ep_info2
xhci_hcd 0000:00:00.0: @a1d490a8 (virt) @01d490a8 (dma) 0x1c4d20100000000 - deq
xhci_hcd 0000:00:00.0: @a1d490b0 (virt) @01d490b0 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d490b4 (virt) @01d490b4 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d490b8 (virt) @01d490b8 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d490bc (virt) @01d490bc (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: // Ding dong!
xhci_hcd 0000:00:00.0: Completed config ep cmd
usb 1-2: Successful Endpoint Configure command
xhci_hcd 0000:00:00.0: Output context after successful config ep cmd:
xhci_hcd 0000:00:00.0: Slot Context:
xhci_hcd 0000:00:00.0: @a1d48000 (virt) @01d48000 (dma) 0x003020 - dev_info
xhci_hcd 0000:00:00.0: @a1d48004 (virt) @01d48004 (dma) 0x000400 - dev_info2
xhci_hcd 0000:00:00.0: @a1d48008 (virt) @01d48008 (dma) 0x000000 - tt_info
xhci_hcd 0000:00:00.0: @a1d4800c (virt) @01d4800c (dma) 0x2000018 - dev_state
xhci_hcd 0000:00:00.0: @a1d48010 (virt) @01d48010 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d48014 (virt) @01d48014 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d48018 (virt) @01d48018 (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: @a1d4801c (virt) @01d4801c (dma) 0x000000 - rsvd[3]
xhci_hcd 0000:00:00.0: Endpoint 00 Context:
xhci_hcd 0000:00:00.0: @a1d48020 (virt) @01d48020 (dma) 0x1000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d48024 (virt) @01d48024 (dma) 0x26004000 - ep_info2
xhci_hcd 0000:00:00.0: @a1d48028 (virt) @01d48028 (dma) 0x1d8de0100000000 - deq
xhci_hcd 0000:00:00.0: @a1d48030 (virt) @01d48030 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d48034 (virt) @01d48034 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d48038 (virt) @01d48038 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4803c (virt) @01d4803c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 01 Context:
xhci_hcd 0000:00:00.0: @a1d48040 (virt) @01d48040 (dma) 0x000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d48044 (virt) @01d48044 (dma) 0x000000 - ep_info2
xhci_hcd 0000:00:00.0: @a1d48048 (virt) @01d48048 (dma) 0x000000 - deq
xhci_hcd 0000:00:00.0: @a1d48050 (virt) @01d48050 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d48054 (virt) @01d48054 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d48058 (virt) @01d48058 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4805c (virt) @01d4805c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 02 Context:
xhci_hcd 0000:00:00.0: @a1d48060 (virt) @01d48060 (dma) 0x1000000 - ep_info
xhci_hcd 0000:00:00.0: @a1d48064 (virt) @01d48064 (dma) 0x36000002 - ep_info2
xhci_hcd 0000:00:00.0: @a1d48068 (virt) @01d48068 (dma) 0x1c0d20100000000 - deq
xhci_hcd 0000:00:00.0: @a1d48070 (virt) @01d48070 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d48074 (virt) @01d48074 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d48078 (virt) @01d48078 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4807c (virt) @01d4807c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Endpoint 03 Context:
xhci_hcd 0000:00:00.0: @a1d48080 (virt) @01d4800 (dma) 0x1000100 - ep_info
xhci_hcd 0000:00:00.0: @a1d48084 (virt) @01d48084 (dma) 0x16000002 - ep_info2
xhci_hcd 0000:00:00.0: @a1d48088 (virt) @01d48088 (dma) 0x1c4d20100000000 - deq
xhci_hcd 0000:00:00.0: @a1d48090 (virt) @01d48090 (dma) 0x000000 - tx_info
xhci_hcd 0000:00:00.0: @a1d48094 (virt) @01d48094 (dma) 0x000000 - rsvd[0]
xhci_hcd 0000:00:00.0: @a1d48098 (virt) @01d48098 (dma) 0x000000 - rsvd[1]
xhci_hcd 0000:00:00.0: @a1d4809c (virt) @01d4809c (dma) 0x000000 - rsvd[2]
xhci_hcd 0000:00:00.0: Queueing ctrl tx for slot id 2, ep 0
xhci_hcd 0000:00:00.0: DMA address or buffer contents= 31381904
xhci_hcd 0000:00:00.0: Endpoint 0x81 not halted, refusing to reset.
xhci_hcd 0000:00:00.0: Endpoint 0x2 not halted, refusing to reset.
usb 1-2: adding 1-2:1.0 (config #1, interface 0)