Ok, I've just discovered that I had the D+/D- lines the wrong way round to
my hacky device. Its still not working, but its not working better :)

I'm 99% certain the D+/D- lines are correct now because on connection:

[  682.849304] hub 1-0:1.0: port 1, status 0101, change 0001, 12
Mb/s
[  683.003051] hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms
status 0x101
[  683.003509] msm_hsusb msm_hsusb: port 1
reset
[  683.058837] msm_hsusb msm_hsusb: irq status 0004
PCD
[  683.062591] msm_hsusb msm_hsusb: GetStatus port 1 status 88001205 POWER
sig=se0 PE CONNECT
[  683.122497] usb 1-1: new high speed USB device using msm_hsusb and
address 2

This is a (for certain) USB 2.0 (High Speed) hub I'm attaching. With the
D+/D- lines the wrong way round, it was reported as a low speed device.
According to the USB specs, the (electrical) difference between low and full
speed devices is which of the D lines a 15k pulldown resistor is on. Since
its now registering as a 12Mb/s device initially, this means I have the
lines correct.

The important part is the last line: its going further and detecting it as a
high speed device post reset. This means the the low level USB protocol
signalling and negotiation is working prefectly fine, so all the necessary
clocks, data line setup etc *must* be fine.

However, I'm still getting errors when it tries to actually send USB
packets:

[  683.122985] msm_hsusb msm_hsusb: submit_async 1 urb cb67e8a0 ep0out len
64, qtd ffc4b060 [qh 00000000]
[  683.123748] msm_hsusb msm_hsusb: irq status 0002
ERR
[  683.124023] msm_hsusb msm_hsusb: dev0 ep0in qtd token 80400d40 --> status
-32
[  683.124420] msm_hsusb msm_hsusb: ehci_urb_done 1 urb cb67e8a0 ep0in
status -32 len 0/64
[  683.124694] msm_hsusb msm_hsusb: irq status 0020 IAA

I'm feeing more hopeful now that I'm certain the D+/D- lines are working ok.
Investigation continues....

-- 
unsubscribe: android-kernel+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-kernel

Reply via email to