Re: The em28xx driver error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 11.11.2012 05:46, schrieb Michael Yang:
> Hi I am using a v4l2 usb video capturer (em28xx based) on the TI-DM3730 board
> I used the  default driver ,the video can't be captured. I solve this issue by 
> change the em28xx driver :
>
> linux-stable/drivers/media/video/em28xx/em28xx-core.c
>
> /* FIXME: this only function read values from dev */
> int em28xx_resolution_set(struct em28xx *dev)
> {
> int width, height;
> width = norm_maxw(dev);
> height = norm_maxh(dev);
>
> /* Properly setup VBI */
> dev->vbi_width = 720;
> if (dev->norm & V4L2_STD_525_60)
> dev->vbi_height = 12;
> else
> dev->vbi_height = 18;
>
> if (!dev->progressive)
> height >>= norm_maxh(dev) ;//change to" height = norm_maxh(dev) >> 1 ;"
This looks indeed like a bug.
a >>= b means a = a >> b, which in this case means shifting height 480
or 576 bits to the right...
height >> 1 means height /= 2 which seems to be sane for interlaced devices.
OTOH, I wonder why it seems to be working on other platforms !?
Unfortunately I don't have an interlaced device here for testing. :(


> em28xx_set_outfmt(dev);
>
>
>
> Then I can capture the video.But  about 3 minutes later, the os throw out 
> errors:
>
> Read a frame, the size is:325 
> Read a frame, the size is:304 
> ehci-omap ehci-omap.0: request c15b1000 would overflow (3898+63 >= 3936)  //the 
> video shut up
> ehci-omap ehci-omap.0: request c15b0000 would overflow (3906+63 >= 3936) 
> ehci-omap ehci-omap.0: request c1558800 would overflow (3915+63 >= 3936) 
> ehci-omap ehci-omap.0: request c15b0800 would overflow (3924+63 >= 3936) 
> Read a frame, the size is:253 
> ehci-omap ehci-omap.0: request c143f800 would overflow (3909+63 >= 3936) 
Couldn't this be an ehci-omap issue ?

> usb 1-2.2: kworker/0:2 timed out on ep0in len=0/1 
> usb 1-2.2: kworker/0:2 timed out on ep0in len=8/1 
> ............
> usb 1-2.2: kworker/0:2 timed out on ep0in len=0/1 
> usb 1-2.2: kworker/0:2 timed out on ep0in len=8/1 
> ^Cusb 1-2.2: test_h264 timed out on ep0in len=0/1 
> usb 1-2.2: kworker/0:2 timed out on ep0in len=0/1 
> ^Cusb 1-2.2: kworker/0:2 timed out on ep0in len=0/1 
> ^Cusb 1-2.2: kworker/0:2 timed out on ep0in len=0/1 
>
> usb 1-2.2: kworker/0:2 timed out on ep0in len=0/1 
> usb 1-2.2: kworker/0:2 timed out on ep0in len=0/1 
>
> usb 1-2.2: kworker/0:2 timed out on ep0in len=0/1 
> ^C 
> usb 1-2.2: kworker/0:2 timed out on ep0in len=0/1 
> ^Cusb 1-2.2: kworker/0:2 timed out on ep0in len=0/1 
> usb 1-2.2: test_h264 timed out on ep0out len=8/0 
> em28xx #0: cannot change alternate number to 0 (error=-110) 
This means usb_set_interface() failed with -ETIMEDOUT. No idea what that
means.
I also wonder why the driver tries to switch to alternate setting 0...
Could you please post the output of lsusb -v for this device ?

Regards,
Frank


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


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux