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.)

Attachment: msg03871/pgp00000.pgp
Description: PGP signature

Reply via email to