Quoting Tim Connors <[EMAIL PROTECTED]>: > I could use some advice tracking down a USB problem. > > Summary: > > >From sohci_unlink_urb(), I'm getting > "unlink URB timeout" > > Background: > > I'm trying to get my ibmcam to work with an OHCI controller (on > StrongARM 2.4.16-rmk1). The usbvideo driver submits two urb's with > transfer_flags == USB_ISO_ASAP. The urb status gets set to > USB_ST_URB_PENDING. > > Many transfers later, the usbvideo driver decides it has enough data and > calls usb_unlink_urb() for each of the two urb's.
The usbvideo module calls usb_unlink_urb() for each of the two urb's ONLY when it wants to stop the data pump, and that happens only when the device is being closed. It does NOT happen when "it has enough data" because there is no such condition. All collected Isoc data is put into a fairly large ring buffer, and if it overflows it just overflows, with no effect on the data pump and the underlying USB components. If you do the "cat test" (like in `cat < /dev/video0 > /dev/null`) then the device will be opened and should stay open until you cancel it. If you use xawtv for testing then xawtv indeed opens the device twice - first time for probing of capabilities, as I understand. If you want just to test Isoc transfers (looks like it) then you can use one of debugging flags of the ibmcam driver. The setting flags=128 (FLAGS_NO_DECODING) bypasses the decoder - which will not be very happy about corrupted datastream anyway. Then the output will be a Y'CrCb mess, as documented at http://www.linux-usb.org/ibmcam/ Dmitri -- People disagree with me. I just ignore them. (Linus Torvalds, regarding the use of C++ for the Linux kernel.)
msg03871/pgp00000.pgp
Description: PGP signature