libusb usb_interrupt_read hangs under FreeBSD

Xiaofan Chen xiaofanc at gmail.com
Wed Apr 4 11:35:01 UTC 2007


On 4/4/07, Hans Petter Selasky <hselasky at c2i.net> wrote:
> On Wednesday 04 April 2007 01:55, Xiaofan Chen wrote:
> > On 4/3/07, Hans Petter Selasky <hselasky at c2i.net> wrote:
> > > Hi,
> > >
> > > I think that your device is broken, and goes bad when it receives a
> > > clear-stall request for the interrupt pipe. That is not very uncommon.
> >
> > Could you be more clearer? I'd like to communicate this problem
> > to the firmware developer of PICKit 2 inside Microchip. Thanks.
>
> The chip does not handle a clear-stall request on the control pipe to
> clear-stall on the interrupt pipe. The result is that the interrupt pipe
> stops, or at least all buffers are cleared.
>
> I could be more detailed, but I think the developers will understand what I
> mean.
>

Thanks. I will talk to the Micrpchip PICKit 2 developers. Hopefully they will
be able to fix the firmware.

>From the dmesg output, I can see the portion that shows what
you say.

ugenioctl: cmd=80045572
ugenioctl: cmd=80045571
ugenread:
usbd_get_pipe: udev=0xc3168800 iface_index=0 address=0x1 type=0x3
dir=0x80 index=0
usbd_get_pipe: udev=0xc3168800 iface_index=0 address=0x0 type=0x0
dir=0xff index=0
usbd_mem_alloc_sub: 0xe6aa0000, 4096 bytes, phys=0x3e850000
usbd_get_pipe: udev=0xc3168800 iface_index=0 address=0x1 type=0x3
dir=0x80 index=0
usbd_get_pipe: udev=0xc3168800 iface_index=0 address=0x0 type=0x0
dir=0xff index=0
usbd_start_hardware: xfer=0xc3085420, pipe=0xc3168894 len=64 dir=in
usbd_dump_pipe: pipe=0xc3168894 edesc=0xc31746db isoc_next=0
toggle_next=0 bEndpointAddress=0x81
usbd_dump_queue: pipe=0xc3168894
usbd_start_hardware: xfer=0xc3085528, pipe=0xc3168800 len=8 dir=out
usbd_dump_pipe: pipe=0xc3168800 edesc=0xc3168a3d isoc_next=0
toggle_next=0 bEndpointAddress=0x00
usbd_dump_queue: pipe=0xc3168800
ugen_open_pipe_read: interrupt open done
usbd_transfer_done: xfer=0xc3085528 pipe=0xc3168800 status=0 actlen=8
usbd_clearstall_callback: xfer=0xc3085528
usbd_start_hardware: xfer=0xc3085420, pipe=0xc3168894 len=64 dir=in
usbd_dump_pipe: pipe=0xc3168894 edesc=0xc31746db isoc_next=0
toggle_next=0 bEndpointAddress=0x81
usbd_dump_queue: pipe=0xc3168894
usb_event_thread: woke up
usb_discover:
usbd_transfer_done: xfer=0xc3085420 pipe=0xc3168894 status=20 actlen=0
usbd_start_hardware: xfer=0xc3085420, pipe=0xc3168894 len=64 dir=in
usbd_dump_pipe: pipe=0xc3168894 edesc=0xc31746db isoc_next=0
toggle_next=0 bEndpointAddress=0x81
usbd_dump_queue: pipe=0xc3168894
usbd_start_hardware: xfer=0xc3085528, pipe=0xc3168800 len=8 dir=out
usbd_dump_pipe: pipe=0xc3168800 edesc=0xc3168a3d isoc_next=0
toggle_next=0 bEndpointAddress=0x00
usbd_dump_queue: pipe=0xc3168800
usbd_transfer_done: xfer=0xc3085528 pipe=0xc3168800 status=0 actlen=8
usbd_clearstall_callback: xfer=0xc3085528
usbd_start_hardware: xfer=0xc3085420, pipe=0xc3168894 len=64 dir=in
usbd_dump_pipe: pipe=0xc3168894 edesc=0xc31746db isoc_next=0
toggle_next=0 bEndpointAddress=0x81
usbd_dump_queue: pipe=0xc3168894
usb_event_thread: woke up
...


More information about the freebsd-usb mailing list