Stefan Ringel wrote:
> Hi,
> 
> I have a problem with usb bulk transfer. After a while, as I scan digital 
> channel (it found a few channel), it wrote this in the log:
> 
> Jan 26 21:58:35 linux-v5dy kernel: [  548.756585] tm6000: status != 0
> 
> I updated the tm6000_urb_received function so that I can read the Error code 
> and it logged:
> 
> Jan 27 17:41:28 linux-v5dy kernel: [ 3121.892793] tm6000: status = 0xffffffb5

Probablt it is this error:
#define EOVERFLOW       75      /* Value too large for defined data type */

It would be good to make it display the error as a signed int.

the tm6000-video error handler has some common causes for those status.
In this particular case:

        case -EOVERFLOW:
                errmsg = "Babble (bad cable?)";
                break;

This looks the same kind of errors I was receiving during the development of 
the driver:
a large amount of frames are got broken, even if the device is programmed with 
the exact
values used on the original driver. On my tests, changing the URB size were 
changing
the position where such errors were occurring.

> 
> Can you help me? Who I can calculate urb size?

Take a look on tm6000-video:

        size = usb_maxpacket(dev->udev, pipe, usb_pipeout(pipe));

        if (size > dev->max_isoc_in)
                size = dev->max_isoc_in;

It depends on the alternate interface used. The driver should select an 
alternate
interface that is capable of receiving the entire size of a message. Maybe the 
tm6000
driver is missing the code that selects this size. Take a look on em28xx-core, 
at
em28xx_set_alternate() code for an example on how this should work.

The calculated size there assumes that each pixel has 16 bits, and has some 
magic that
were experimentally tested on that device.

Cheers,
Mauro.

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to