PICDEM FS USB Bootloader under FreeBSD

Hans Petter Selasky hselasky at c2i.net
Fri Apr 25 16:48:05 UTC 2008


Hi,

1) Try to get debugging from USB instead of OHCI.

sysctl hw.usb.ohci.debug=0
sysctl hw.usb.debug=15

Retry.

2) Patch /sys/dev/usb/ugen.c

Change all lines looking like the following, that are not in a function 
named "xxx_callback":

sce->read_stall = 1;
sce->write_stall = 1;

Into:

sce->read_stall = 0;
sce->write_stall = 0;

Recompile ugen an try again.

My analysis so far:

The USB device refuses a control transfer, possibly the clear-stall request:

ohci_setup_standard_chain: addr=2 endpt=0 sumlen=8 speed=2
ohci_setup_standard_chain: nexttog=1; data before transfer:
TD(0xc4d6b600) at 0x0b06d600: -TOG0 delay=7 ec=0 cc=15
cbp=0x13ceb210 next=0x0b06d700 be=0x13ceb217
TD(0xc4d6b700) at 0x0b06d700: -R-IN-TOG1 delay=1 ec=0 cc=15
cbp=0x00000000 next=0x00000000 be=0xffffffff
_ohci_append_qh: 0xc4d6b680 to 0xc4071980
ohci_check_transfer: xfer=0xc4f61140 checking transfer
ohci_non_isoc_done: xfer=0xc4f61140 pipe=0xc4ee81b0 transfer done
TD(0xc4d6b600) at 0x0b06d600: -TOG1 delay=7 ec=0 cc=0
cbp=0x00000000 next=0x00000000 be=0x13ceb217
ohci_device_done: xfer=0xc4f61140, pipe=0xc4ee81b0, error=22

The OHCI wants to receive 4 bytes from endpoint 1, but does never get those 
bytes. The transfer times out.

ohci_setup_standard_chain: addr=2 endpt=1 sumlen=4 speed=2
ohci_setup_standard_chain: nexttog=0; data before transfer:
TD(0xc4d6b380) at 0x0b06d380: -R-IN-TOG0 delay=1 ec=0 cc=15
cbp=0x13d12140 next=0x00000000 be=0x13d12143
_ohci_append_qh: 0xc4d6b400 to 0xc4071900
ohci_timeout: xfer=0xc4f51070
ohci_device_done: xfer=0xc4f51070, pipe=0xc4ee81d8, error=20

--HPS


More information about the freebsd-usb mailing list