All of lore.kernel.org
 help / color / mirror / Atom feed
* The em28xx driver error
@ 2012-11-11  4:46 Michael Yang
  2012-11-14 16:58 ` Frank Schäfer
  0 siblings, 1 reply; 6+ messages in thread
From: Michael Yang @ 2012-11-11  4:46 UTC (permalink / raw)
  To: linux-media

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 ;"

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



Then I try TI OMAP-3530 ,after change the em28xx-driver , the image can be 
captured but throw the same error after about 3 minutes
em28xx #0: cannot change alternate number to 0 (error=-110) 


This driver source about this error is
int em28xx_set_alternate(struct em28xx *dev)
{
int errCode, prev_alt = dev->alt;
int i;
unsigned int min_pkt_size = dev->width * 2 + 4;

/*
* alt = 0 is used only for control messages, so, only values
* greater than 0 can be used for streaming.
*/
if (alt && alt < dev->num_alt) {
em28xx_coredbg("alternate forced to %d\n", dev->alt);
dev->alt = alt;
goto set_alt;
}

/* When image size is bigger than a certain value,
the frame size should be increased, otherwise, only
green screen will be received.
*/
if (dev->width * 2 * dev->height > 720 * 240 * 2)
min_pkt_size *= 2;

for (i = 0; i < dev->num_alt; i++) {
/* stop when the selected alt setting offers enough bandwidth */
if (dev->alt_max_pkt_size[i] >= min_pkt_size) {
dev->alt = i;
break;
/* otherwise make sure that we end up with the maximum bandwidth
because the min_pkt_size equation might be wrong...
*/
} else if (dev->alt_max_pkt_size[i] >
dev->alt_max_pkt_size[dev->alt])
dev->alt = i;
}

set_alt:
if (dev->alt != prev_alt) {
em28xx_coredbg("minimum isoc packet size: %u (alt=%d)\n",
min_pkt_size, dev->alt);
dev->max_pkt_size = dev->alt_max_pkt_size[dev->alt];
em28xx_coredbg("setting alternate %d with wMaxPacketSize=%u\n",
dev->alt, dev->max_pkt_size);
errCode = usb_set_interface(dev->udev, 0, dev->alt);
if (errCode < 0) {
em28xx_errdev("cannot change alternate number to %d (error=%i)\n",
dev->alt, errCode);
return errCode;
}
}
return 0;
}




How can I solve this problem ? Or is there some other USBDVR can work well on 
the TI DM3730?


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-11-15 16:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-11  4:46 The em28xx driver error Michael Yang
2012-11-14 16:58 ` Frank Schäfer
2012-11-14 17:05   ` Devin Heitmueller
2012-11-15 16:31     ` Frank Schäfer
2012-11-15 16:35       ` Devin Heitmueller
2012-11-15 16:58         ` Frank Schäfer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.