aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/em28xx/em28xx-video.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-video.c')
-rw-r--r--drivers/media/video/em28xx/em28xx-video.c151
1 files changed, 78 insertions, 73 deletions
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
index 229d154424ff..c5593526a6e7 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/drivers/media/video/em28xx/em28xx-video.c
@@ -55,13 +55,13 @@
55 dev->name, __func__ , ##arg); } while (0) 55 dev->name, __func__ , ##arg); } while (0)
56 56
57static unsigned int isoc_debug; 57static unsigned int isoc_debug;
58module_param(isoc_debug,int,0644); 58module_param(isoc_debug, int, 0644);
59MODULE_PARM_DESC(isoc_debug,"enable debug messages [isoc transfers]"); 59MODULE_PARM_DESC(isoc_debug, "enable debug messages [isoc transfers]");
60 60
61#define em28xx_isocdbg(fmt, arg...) do {\ 61#define em28xx_isocdbg(fmt, arg...) do {\
62 if (isoc_debug) \ 62 if (isoc_debug) \
63 printk(KERN_INFO "%s %s :"fmt, \ 63 printk(KERN_INFO "%s %s :"fmt, \
64 dev->name, __FUNCTION__ , ##arg); } while (0) 64 dev->name, __func__ , ##arg); } while (0)
65 65
66#define BUFFER_TIMEOUT msecs_to_jiffies(2000) /* 2 seconds */ 66#define BUFFER_TIMEOUT msecs_to_jiffies(2000) /* 2 seconds */
67 67
@@ -129,7 +129,7 @@ static struct usb_driver em28xx_usb_driver;
129/* 129/*
130 * Announces that a buffer were filled and request the next 130 * Announces that a buffer were filled and request the next
131 */ 131 */
132static void inline buffer_filled (struct em28xx *dev, 132static inline void buffer_filled(struct em28xx *dev,
133 struct em28xx_dmaqueue *dma_q, 133 struct em28xx_dmaqueue *dma_q,
134 struct em28xx_buffer *buf) 134 struct em28xx_buffer *buf)
135{ 135{
@@ -163,9 +163,9 @@ static void em28xx_copy_video(struct em28xx *dev,
163 unsigned char *outp, unsigned long len) 163 unsigned char *outp, unsigned long len)
164{ 164{
165 void *fieldstart, *startwrite, *startread; 165 void *fieldstart, *startwrite, *startread;
166 int linesdone, currlinedone, offset, lencopy,remain; 166 int linesdone, currlinedone, offset, lencopy, remain;
167 167
168 if(dev->frame_size != buf->vb.size){ 168 if (dev->frame_size != buf->vb.size) {
169 em28xx_errdev("size %i and buf.length %lu are different!\n", 169 em28xx_errdev("size %i and buf.length %lu are different!\n",
170 dev->frame_size, buf->vb.size); 170 dev->frame_size, buf->vb.size);
171 return; 171 return;
@@ -178,7 +178,7 @@ static void em28xx_copy_video(struct em28xx *dev,
178 em28xx_isocdbg("frame is not complete\n"); 178 em28xx_isocdbg("frame is not complete\n");
179 len += 4; 179 len += 4;
180 } else 180 } else
181 p +=4; 181 p += 4;
182 182
183 startread = p; 183 startread = p;
184 remain = len; 184 remain = len;
@@ -196,10 +196,11 @@ static void em28xx_copy_video(struct em28xx *dev,
196 lencopy = dev->bytesperline - currlinedone; 196 lencopy = dev->bytesperline - currlinedone;
197 lencopy = lencopy > remain ? remain : lencopy; 197 lencopy = lencopy > remain ? remain : lencopy;
198 198
199 if((char*)startwrite + lencopy > (char*)outp + buf->vb.size) { 199 if ((char *)startwrite + lencopy > (char *)outp + buf->vb.size) {
200 em28xx_isocdbg("Overflow of %zi bytes past buffer end (1)\n", 200 em28xx_isocdbg("Overflow of %zi bytes past buffer end (1)\n",
201 ((char*)startwrite + lencopy) - ((char*)outp + buf->vb.size)); 201 ((char *)startwrite + lencopy) -
202 lencopy = remain = (char*)outp + buf->vb.size - (char*)startwrite; 202 ((char *)outp + buf->vb.size));
203 lencopy = remain = (char *)outp + buf->vb.size - (char *)startwrite;
203 } 204 }
204 BUG_ON(lencopy <= 0); 205 BUG_ON(lencopy <= 0);
205 memcpy(startwrite, startread, lencopy); 206 memcpy(startwrite, startread, lencopy);
@@ -216,12 +217,15 @@ static void em28xx_copy_video(struct em28xx *dev,
216 217
217 BUG_ON(lencopy <= 0); 218 BUG_ON(lencopy <= 0);
218 219
219 if((char*)startwrite + lencopy > (char*)outp + buf->vb.size) { 220 if ((char *)startwrite + lencopy > (char *)outp + buf->vb.size) {
220 em28xx_isocdbg("Overflow of %zi bytes past buffer end (2)\n", 221 em28xx_isocdbg("Overflow of %zi bytes past buffer end (2)\n",
221 ((char*)startwrite + lencopy) - ((char*)outp + buf->vb.size)); 222 ((char *)startwrite + lencopy) -
222 lencopy = remain = (char*)outp + buf->vb.size - (char*)startwrite; 223 ((char *)outp + buf->vb.size));
224 lencopy = remain = (char *)outp + buf->vb.size -
225 (char *)startwrite;
223 } 226 }
224 if(lencopy <= 0) break; 227 if (lencopy <= 0)
228 break;
225 229
226 memcpy(startwrite, startread, lencopy); 230 memcpy(startwrite, startread, lencopy);
227 231
@@ -231,12 +235,12 @@ static void em28xx_copy_video(struct em28xx *dev,
231 dma_q->pos += len; 235 dma_q->pos += len;
232} 236}
233 237
234static void inline print_err_status (struct em28xx *dev, 238static inline void print_err_status(struct em28xx *dev,
235 int packet, int status) 239 int packet, int status)
236{ 240{
237 char *errmsg = "Unknown"; 241 char *errmsg = "Unknown";
238 242
239 switch(status) { 243 switch (status) {
240 case -ENOENT: 244 case -ENOENT:
241 errmsg = "unlinked synchronuously"; 245 errmsg = "unlinked synchronuously";
242 break; 246 break;
@@ -262,7 +266,7 @@ static void inline print_err_status (struct em28xx *dev,
262 errmsg = "Device does not respond"; 266 errmsg = "Device does not respond";
263 break; 267 break;
264 } 268 }
265 if (packet<0) { 269 if (packet < 0) {
266 em28xx_isocdbg("URB status %d [%s].\n", status, errmsg); 270 em28xx_isocdbg("URB status %d [%s].\n", status, errmsg);
267 } else { 271 } else {
268 em28xx_isocdbg("URB packet %d, status %d [%s].\n", 272 em28xx_isocdbg("URB packet %d, status %d [%s].\n",
@@ -273,7 +277,7 @@ static void inline print_err_status (struct em28xx *dev,
273/* 277/*
274 * video-buf generic routine to get the next available buffer 278 * video-buf generic routine to get the next available buffer
275 */ 279 */
276static int inline get_next_buf (struct em28xx_dmaqueue *dma_q, 280static inline int get_next_buf(struct em28xx_dmaqueue *dma_q,
277 struct em28xx_buffer **buf) 281 struct em28xx_buffer **buf)
278{ 282{
279 struct em28xx *dev = container_of(dma_q, struct em28xx, vidq); 283 struct em28xx *dev = container_of(dma_q, struct em28xx, vidq);
@@ -306,33 +310,33 @@ static inline int em28xx_isoc_copy(struct urb *urb)
306 if ((dev->state & DEV_DISCONNECTED) || (dev->state & DEV_MISCONFIGURED)) 310 if ((dev->state & DEV_DISCONNECTED) || (dev->state & DEV_MISCONFIGURED))
307 return 0; 311 return 0;
308 312
309 if (urb->status<0) { 313 if (urb->status < 0) {
310 print_err_status (dev,-1,urb->status); 314 print_err_status(dev, -1, urb->status);
311 if (urb->status == -ENOENT) 315 if (urb->status == -ENOENT)
312 return 0; 316 return 0;
313 } 317 }
314 318
315 buf=dev->isoc_ctl.buf; 319 buf = dev->isoc_ctl.buf;
316 320
317 if (!buf) { 321 if (!buf) {
318 rc=get_next_buf (dma_q, &buf); 322 rc = get_next_buf(dma_q, &buf);
319 if (rc<=0) 323 if (rc <= 0)
320 return rc; 324 return rc;
321 } 325 }
322 326
323 outp = videobuf_to_vmalloc (&buf->vb); 327 outp = videobuf_to_vmalloc(&buf->vb);
324 328
325 329
326 for (i = 0; i < urb->number_of_packets; i++) { 330 for (i = 0; i < urb->number_of_packets; i++) {
327 int status = urb->iso_frame_desc[i].status; 331 int status = urb->iso_frame_desc[i].status;
328 332
329 if (status<0) { 333 if (status < 0) {
330 print_err_status (dev,i,status); 334 print_err_status(dev, i, status);
331 if (urb->iso_frame_desc[i].status != -EPROTO) 335 if (urb->iso_frame_desc[i].status != -EPROTO)
332 continue; 336 continue;
333 } 337 }
334 338
335 len=urb->iso_frame_desc[i].actual_length - 4; 339 len = urb->iso_frame_desc[i].actual_length - 4;
336 340
337 if (urb->iso_frame_desc[i].actual_length <= 0) { 341 if (urb->iso_frame_desc[i].actual_length <= 0) {
338 /* em28xx_isocdbg("packet %d is empty",i); - spammy */ 342 /* em28xx_isocdbg("packet %d is empty",i); - spammy */
@@ -353,25 +357,25 @@ static inline int em28xx_isoc_copy(struct urb *urb)
353 /* FIXME - are the fields the right way around? */ 357 /* FIXME - are the fields the right way around? */
354 em28xx_isocdbg("Video frame, length=%i, %s\n", len, 358 em28xx_isocdbg("Video frame, length=%i, %s\n", len,
355 (p[2] & 1)? "top" : "bottom"); 359 (p[2] & 1)? "top" : "bottom");
356 em28xx_isocdbg("Current buffer is: outp = 0x%p, len = %i\n", outp, (int)buf->vb.size); 360 em28xx_isocdbg("Current buffer is: outp = 0x%p,"
361 " len = %i\n", outp, (int)buf->vb.size);
357 362
358 if (p[2] & 1) { 363 if (p[2] & 1) {
359 if (buf->receiving) { 364 if (buf->receiving) {
360 buffer_filled (dev, dma_q, buf); 365 buffer_filled(dev, dma_q, buf);
361 rc=get_next_buf (dma_q, &buf); 366 rc = get_next_buf(dma_q, &buf);
362 if (rc<=0) 367 if (rc <= 0)
363 return rc; 368 return rc;
364 369
365 outp = videobuf_to_vmalloc (&buf->vb); 370 outp = videobuf_to_vmalloc(&buf->vb);
366 } 371 }
367 372
368 buf->top_field = 1; 373 buf->top_field = 1;
369 } else { 374 } else
370 buf->top_field = 0; 375 buf->top_field = 0;
371 }
372 buf->receiving = 1; 376 buf->receiving = 1;
373 dma_q->pos = 0; 377 dma_q->pos = 0;
374 } else if (p[0]==0x33 && p[1]==0x95 && p[2]==0x00) { 378 } else if (p[0] == 0x33 && p[1] == 0x95 && p[2] == 0x00) {
375 em28xx_isocdbg("VBI HEADER!!!\n"); 379 em28xx_isocdbg("VBI HEADER!!!\n");
376 } 380 }
377 381
@@ -393,13 +397,13 @@ static void em28xx_irq_callback(struct urb *urb)
393{ 397{
394 struct em28xx_dmaqueue *dma_q = urb->context; 398 struct em28xx_dmaqueue *dma_q = urb->context;
395 struct em28xx *dev = container_of(dma_q, struct em28xx, vidq); 399 struct em28xx *dev = container_of(dma_q, struct em28xx, vidq);
396 int rc,i; 400 int rc, i;
397 unsigned long flags; 401 unsigned long flags;
398 402
399 spin_lock_irqsave(&dev->slock,flags); 403 spin_lock_irqsave(&dev->slock, flags);
400 404
401 /* Copy data from URB */ 405 /* Copy data from URB */
402 rc=em28xx_isoc_copy(urb); 406 rc = em28xx_isoc_copy(urb);
403 407
404 /* Reset urb buffers */ 408 /* Reset urb buffers */
405 for (i = 0; i < urb->number_of_packets; i++) { 409 for (i = 0; i < urb->number_of_packets; i++) {
@@ -408,12 +412,13 @@ static void em28xx_irq_callback(struct urb *urb)
408 } 412 }
409 urb->status = 0; 413 urb->status = 0;
410 414
411 if ((urb->status = usb_submit_urb(urb, GFP_ATOMIC))) { 415 urb->status = usb_submit_urb(urb, GFP_ATOMIC);
416 if (urb->status) {
412 em28xx_err("urb resubmit failed (error=%i)\n", 417 em28xx_err("urb resubmit failed (error=%i)\n",
413 urb->status); 418 urb->status);
414 } 419 }
415 420
416 spin_unlock_irqrestore(&dev->slock,flags); 421 spin_unlock_irqrestore(&dev->slock, flags);
417} 422}
418 423
419/* 424/*
@@ -426,10 +431,10 @@ static void em28xx_uninit_isoc(struct em28xx *dev)
426 431
427 em28xx_isocdbg("em28xx: called em28xx_uninit_isoc\n"); 432 em28xx_isocdbg("em28xx: called em28xx_uninit_isoc\n");
428 433
429 dev->isoc_ctl.nfields=-1; 434 dev->isoc_ctl.nfields = -1;
430 dev->isoc_ctl.buf=NULL; 435 dev->isoc_ctl.buf = NULL;
431 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) { 436 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) {
432 urb=dev->isoc_ctl.urb[i]; 437 urb = dev->isoc_ctl.urb[i];
433 if (urb) { 438 if (urb) {
434 usb_kill_urb(urb); 439 usb_kill_urb(urb);
435 usb_unlink_urb(urb); 440 usb_unlink_urb(urb);
@@ -445,12 +450,12 @@ static void em28xx_uninit_isoc(struct em28xx *dev)
445 dev->isoc_ctl.transfer_buffer[i] = NULL; 450 dev->isoc_ctl.transfer_buffer[i] = NULL;
446 } 451 }
447 452
448 kfree (dev->isoc_ctl.urb); 453 kfree(dev->isoc_ctl.urb);
449 kfree (dev->isoc_ctl.transfer_buffer); 454 kfree(dev->isoc_ctl.transfer_buffer);
450 dev->isoc_ctl.urb=NULL; 455 dev->isoc_ctl.urb = NULL;
451 dev->isoc_ctl.transfer_buffer=NULL; 456 dev->isoc_ctl.transfer_buffer = NULL;
452 457
453 dev->isoc_ctl.num_bufs=0; 458 dev->isoc_ctl.num_bufs = 0;
454 459
455 del_timer(&dev->vidq.timeout); 460 del_timer(&dev->vidq.timeout);
456 em28xx_capture_start(dev, 0); 461 em28xx_capture_start(dev, 0);
@@ -507,7 +512,7 @@ static int em28xx_prepare_isoc(struct em28xx *dev, int max_packets,
507 dev->isoc_ctl.transfer_buffer[i] = usb_buffer_alloc(dev->udev, 512 dev->isoc_ctl.transfer_buffer[i] = usb_buffer_alloc(dev->udev,
508 sb_size, GFP_KERNEL, &urb->transfer_dma); 513 sb_size, GFP_KERNEL, &urb->transfer_dma);
509 if (!dev->isoc_ctl.transfer_buffer[i]) { 514 if (!dev->isoc_ctl.transfer_buffer[i]) {
510 em28xx_err ("unable to allocate %i bytes for transfer" 515 em28xx_err("unable to allocate %i bytes for transfer"
511 " buffer %i%s\n", 516 " buffer %i%s\n",
512 sb_size, i, 517 sb_size, i,
513 in_interrupt()?" while in int":""); 518 in_interrupt()?" while in int":"");
@@ -520,7 +525,7 @@ static int em28xx_prepare_isoc(struct em28xx *dev, int max_packets,
520 'desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK' 525 'desc.bEndpointAddress & USB_ENDPOINT_NUMBER_MASK'
521 should also be using 'desc.bInterval' 526 should also be using 'desc.bInterval'
522 */ 527 */
523 pipe=usb_rcvisocpipe(dev->udev, 0x82); 528 pipe = usb_rcvisocpipe(dev->udev, 0x82);
524 usb_fill_int_urb(urb, dev->udev, pipe, 529 usb_fill_int_urb(urb, dev->udev, pipe,
525 dev->isoc_ctl.transfer_buffer[i], sb_size, 530 dev->isoc_ctl.transfer_buffer[i], sb_size,
526 em28xx_irq_callback, dma_q, 1); 531 em28xx_irq_callback, dma_q, 1);
@@ -540,10 +545,10 @@ static int em28xx_prepare_isoc(struct em28xx *dev, int max_packets,
540 return 0; 545 return 0;
541} 546}
542 547
543static int em28xx_start_thread( struct em28xx_dmaqueue *dma_q) 548static int em28xx_start_thread(struct em28xx_dmaqueue *dma_q)
544{ 549{
545 struct em28xx *dev = container_of(dma_q, struct em28xx, vidq); 550 struct em28xx *dev = container_of(dma_q, struct em28xx, vidq);
546 int i,rc = 0; 551 int i, rc = 0;
547 552
548 em28xx_videodbg("Called em28xx_start_thread\n"); 553 em28xx_videodbg("Called em28xx_start_thread\n");
549 554
@@ -562,7 +567,7 @@ static int em28xx_start_thread( struct em28xx_dmaqueue *dma_q)
562 } 567 }
563 } 568 }
564 569
565 if (rc<0) 570 if (rc < 0)
566 return rc; 571 return rc;
567 572
568 return 0; 573 return 0;
@@ -570,12 +575,12 @@ static int em28xx_start_thread( struct em28xx_dmaqueue *dma_q)
570 575
571static void em28xx_vid_timeout(unsigned long data) 576static void em28xx_vid_timeout(unsigned long data)
572{ 577{
573 struct em28xx *dev = (struct em28xx*)data; 578 struct em28xx *dev = (struct em28xx *)data;
574 struct em28xx_dmaqueue *vidq = &dev->vidq; 579 struct em28xx_dmaqueue *vidq = &dev->vidq;
575 struct em28xx_buffer *buf; 580 struct em28xx_buffer *buf;
576 unsigned long flags; 581 unsigned long flags;
577 582
578 spin_lock_irqsave(&dev->slock,flags); 583 spin_lock_irqsave(&dev->slock, flags);
579 584
580 list_for_each_entry(buf, vidq->active.next, vb.queue) { 585 list_for_each_entry(buf, vidq->active.next, vb.queue) {
581 list_del(&buf->vb.queue); 586 list_del(&buf->vb.queue);
@@ -587,7 +592,7 @@ static void em28xx_vid_timeout(unsigned long data)
587 /* Instead of trying to restart, just sets timeout again */ 592 /* Instead of trying to restart, just sets timeout again */
588 mod_timer(&vidq->timeout, jiffies + BUFFER_TIMEOUT); 593 mod_timer(&vidq->timeout, jiffies + BUFFER_TIMEOUT);
589 594
590 spin_unlock_irqrestore(&dev->slock,flags); 595 spin_unlock_irqrestore(&dev->slock, flags);
591} 596}
592 597
593/* ------------------------------------------------------------------ 598/* ------------------------------------------------------------------
@@ -603,9 +608,8 @@ buffer_setup(struct videobuf_queue *vq, unsigned int *count, unsigned int *size)
603 if (0 == *count) 608 if (0 == *count)
604 *count = EM28XX_DEF_BUF; 609 *count = EM28XX_DEF_BUF;
605 610
606 if (*count < EM28XX_MIN_BUF) { 611 if (*count < EM28XX_MIN_BUF)
607 *count=EM28XX_MIN_BUF; 612 *count = EM28XX_MIN_BUF;
608 }
609 613
610 return 0; 614 return 0;
611} 615}
@@ -625,7 +629,7 @@ buffer_prepare(struct videobuf_queue *vq, struct videobuf_buffer *vb,
625 enum v4l2_field field) 629 enum v4l2_field field)
626{ 630{
627 struct em28xx_fh *fh = vq->priv_data; 631 struct em28xx_fh *fh = vq->priv_data;
628 struct em28xx_buffer *buf = container_of(vb,struct em28xx_buffer,vb); 632 struct em28xx_buffer *buf = container_of(vb, struct em28xx_buffer, vb);
629 struct em28xx *dev = fh->dev; 633 struct em28xx *dev = fh->dev;
630 struct em28xx_dmaqueue *vidq = &dev->vidq; 634 struct em28xx_dmaqueue *vidq = &dev->vidq;
631 int rc = 0, urb_init = 0; 635 int rc = 0, urb_init = 0;
@@ -657,15 +661,16 @@ buffer_prepare(struct videobuf_queue *vq, struct videobuf_buffer *vb,
657 } 661 }
658 662
659 if (!dev->isoc_ctl.num_bufs) 663 if (!dev->isoc_ctl.num_bufs)
660 urb_init=1; 664 urb_init = 1;
661 665
662 if (urb_init) { 666 if (urb_init) {
663 rc = em28xx_prepare_isoc(dev, EM28XX_NUM_PACKETS, EM28XX_NUM_BUFS); 667 rc = em28xx_prepare_isoc(dev, EM28XX_NUM_PACKETS,
664 if (rc<0) 668 EM28XX_NUM_BUFS);
669 if (rc < 0)
665 goto fail; 670 goto fail;
666 671
667 rc = em28xx_start_thread(vidq); 672 rc = em28xx_start_thread(vidq);
668 if (rc<0) 673 if (rc < 0)
669 goto fail; 674 goto fail;
670 } 675 }
671 676
@@ -673,7 +678,7 @@ buffer_prepare(struct videobuf_queue *vq, struct videobuf_buffer *vb,
673 return 0; 678 return 0;
674 679
675fail: 680fail:
676 free_buffer(vq,buf); 681 free_buffer(vq, buf);
677 return rc; 682 return rc;
678} 683}
679 684
@@ -682,7 +687,7 @@ buffer_queue(struct videobuf_queue *vq, struct videobuf_buffer *vb)
682{ 687{
683 struct em28xx_buffer *buf = container_of(vb, struct em28xx_buffer, vb); 688 struct em28xx_buffer *buf = container_of(vb, struct em28xx_buffer, vb);
684 struct em28xx_fh *fh = vq->priv_data; 689 struct em28xx_fh *fh = vq->priv_data;
685 struct em28xx *dev = fh->dev; 690 struct em28xx *dev = fh->dev;
686 struct em28xx_dmaqueue *vidq = &dev->vidq; 691 struct em28xx_dmaqueue *vidq = &dev->vidq;
687 692
688 buf->vb.state = VIDEOBUF_QUEUED; 693 buf->vb.state = VIDEOBUF_QUEUED;
@@ -692,13 +697,13 @@ buffer_queue(struct videobuf_queue *vq, struct videobuf_buffer *vb)
692 697
693static void buffer_release(struct videobuf_queue *vq, struct videobuf_buffer *vb) 698static void buffer_release(struct videobuf_queue *vq, struct videobuf_buffer *vb)
694{ 699{
695 struct em28xx_buffer *buf = container_of(vb,struct em28xx_buffer,vb); 700 struct em28xx_buffer *buf = container_of(vb, struct em28xx_buffer, vb);
696 struct em28xx_fh *fh = vq->priv_data; 701 struct em28xx_fh *fh = vq->priv_data;
697 struct em28xx *dev = (struct em28xx*)fh->dev; 702 struct em28xx *dev = (struct em28xx *)fh->dev;
698 703
699 em28xx_isocdbg("em28xx: called buffer_release\n"); 704 em28xx_isocdbg("em28xx: called buffer_release\n");
700 705
701 free_buffer(vq,buf); 706 free_buffer(vq, buf);
702} 707}
703 708
704static struct videobuf_queue_ops em28xx_video_qops = { 709static struct videobuf_queue_ops em28xx_video_qops = {
@@ -1589,11 +1594,11 @@ static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *b)
1589} 1594}
1590 1595
1591#ifdef CONFIG_VIDEO_V4L1_COMPAT 1596#ifdef CONFIG_VIDEO_V4L1_COMPAT
1592static int vidiocgmbuf (struct file *file, void *priv, struct video_mbuf *mbuf) 1597static int vidiocgmbuf(struct file *file, void *priv, struct video_mbuf *mbuf)
1593{ 1598{
1594 struct em28xx_fh *fh=priv; 1599 struct em28xx_fh *fh = priv;
1595 1600
1596 return videobuf_cgmbuf (&fh->vb_vidq, mbuf, 8); 1601 return videobuf_cgmbuf(&fh->vb_vidq, mbuf, 8);
1597} 1602}
1598#endif 1603#endif
1599 1604
@@ -1865,7 +1870,7 @@ static int em28xx_v4l2_close(struct inode *inode, struct file *filp)
1865 */ 1870 */
1866static ssize_t 1871static ssize_t
1867em28xx_v4l2_read(struct file *filp, char __user * buf, size_t count, 1872em28xx_v4l2_read(struct file *filp, char __user * buf, size_t count,
1868 loff_t * pos) 1873 loff_t *pos)
1869{ 1874{
1870 struct em28xx_fh *fh = filp->private_data; 1875 struct em28xx_fh *fh = filp->private_data;
1871 struct em28xx *dev = fh->dev; 1876 struct em28xx *dev = fh->dev;