aboutsummaryrefslogtreecommitdiff
path: root/drivers/media/video/em28xx/em28xx-core.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@brturbo.com.br>2005-11-08 21:37:24 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-09 07:56:17 -0800
commit596d92d5128d308b5a79f21c3e72c87f5fc7e58b (patch)
tree3957529296b0765e7979f205a9dd0bce7de1eb7a /drivers/media/video/em28xx/em28xx-core.c
parent2b5200a7b19a53969db68c97d379339592ca6a4f (diff)
[PATCH] v4l: 767: included support for em2800
- Included support for em2800. Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-core.c')
-rw-r--r--drivers/media/video/em28xx/em28xx-core.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/media/video/em28xx/em28xx-core.c b/drivers/media/video/em28xx/em28xx-core.c
index e187422f6d6..594e6d681ba 100644
--- a/drivers/media/video/em28xx/em28xx-core.c
+++ b/drivers/media/video/em28xx/em28xx-core.c
@@ -1,5 +1,5 @@
/*
- em2820-core.c - driver for Empia EM2820/2840 USB video capture devices
+ em2820-core.c - driver for Empia EM2800/EM2820/2840 USB video capture devices
Copyright (C) 2005 Markus Rechberger <mrechberger@gmail.com>
Ludovico Cavedon <cavedon@sssup.it>
@@ -562,6 +562,11 @@ static inline void em2820_isoc_video_copy(struct em2820 *dev,
void *fieldstart, *startwrite, *startread;
int linesdone, currlinedone, offset, lencopy,remain;
+ if(dev->frame_size != (*f)->buf.length){
+ em2820_err("frame_size %i and buf.length %i are different!!!\n",dev->frame_size,(*f)->buf.length);
+ return;
+ }
+
if ((*f)->fieldbytesused + len > dev->field_size)
len =dev->field_size - (*f)->fieldbytesused;
remain = len;
@@ -780,6 +785,11 @@ int em2820_set_alternate(struct em2820 *dev)
dev->alt = alt;
if (dev->alt == 0) {
int i;
+ if(dev->is_em2800){ /* always use the max packet size for em2800 based devices */
+ for(i=0;i< EM2820_MAX_ALT; i++)
+ if(dev->alt_max_pkt_size[i]>dev->alt_max_pkt_size[dev->alt])
+ dev->alt=i;
+ }else{
unsigned int min_pkt_size = dev->field_size / 137; /* FIXME: empiric magic number */
em2820_coredbg("minimum isoc packet size: %u", min_pkt_size);
dev->alt = 7;
@@ -788,6 +798,7 @@ int em2820_set_alternate(struct em2820 *dev)
dev->alt = i;
break;
}
+ }
}
if (dev->alt != prev_alt) {