Commit 08bff03ed697a583612b62a6ac566bd5bce98012

Authored by Hans Verkuil
Committed by Mauro Carvalho Chehab
1 parent 9739768788

V4L/DVB: videobuf: add ext_lock argument to the queue init functions

Add an ext_lock argument to the videobuf init functions. This allows
drivers to pass the vdev->lock pointer (or any other externally held lock)
to videobuf. For now all drivers just pass NULL.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

Showing 28 changed files with 48 additions and 37 deletions Side-by-side Diff

drivers/media/common/saa7146_vbi.c
... ... @@ -412,7 +412,7 @@
412 412 V4L2_BUF_TYPE_VBI_CAPTURE,
413 413 V4L2_FIELD_SEQ_TB, // FIXME: does this really work?
414 414 sizeof(struct saa7146_buf),
415   - file);
  415 + file, NULL);
416 416  
417 417 init_timer(&fh->vbi_read_timeout);
418 418 fh->vbi_read_timeout.function = vbi_read_timeout;
drivers/media/common/saa7146_video.c
... ... @@ -1386,7 +1386,7 @@
1386 1386 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1387 1387 V4L2_FIELD_INTERLACED,
1388 1388 sizeof(struct saa7146_buf),
1389   - file);
  1389 + file, NULL);
1390 1390  
1391 1391 return 0;
1392 1392 }
drivers/media/video/au0828/au0828-video.c
... ... @@ -965,7 +965,7 @@
965 965 NULL, &dev->slock,
966 966 V4L2_BUF_TYPE_VIDEO_CAPTURE,
967 967 V4L2_FIELD_INTERLACED,
968   - sizeof(struct au0828_buffer), fh);
  968 + sizeof(struct au0828_buffer), fh, NULL);
969 969  
970 970 /* VBI Setup */
971 971 dev->vbi_width = 720;
... ... @@ -974,7 +974,7 @@
974 974 NULL, &dev->slock,
975 975 V4L2_BUF_TYPE_VBI_CAPTURE,
976 976 V4L2_FIELD_SEQ_TB,
977   - sizeof(struct au0828_buffer), fh);
  977 + sizeof(struct au0828_buffer), fh, NULL);
978 978  
979 979  
980 980 return ret;
drivers/media/video/bt8xx/bttv-driver.c
... ... @@ -3318,13 +3318,13 @@
3318 3318 V4L2_BUF_TYPE_VIDEO_CAPTURE,
3319 3319 V4L2_FIELD_INTERLACED,
3320 3320 sizeof(struct bttv_buffer),
3321   - fh);
  3321 + fh, NULL);
3322 3322 videobuf_queue_sg_init(&fh->vbi, &bttv_vbi_qops,
3323 3323 &btv->c.pci->dev, &btv->s_lock,
3324 3324 V4L2_BUF_TYPE_VBI_CAPTURE,
3325 3325 V4L2_FIELD_SEQ_TB,
3326 3326 sizeof(struct bttv_buffer),
3327   - fh);
  3327 + fh, NULL);
3328 3328 set_tvnorm(btv,btv->tvnorm);
3329 3329 set_input(btv, btv->input, btv->tvnorm);
3330 3330  
drivers/media/video/cx231xx/cx231xx-video.c
... ... @@ -2008,7 +2008,8 @@
2008 2008 videobuf_queue_vmalloc_init(&fh->vb_vidq, &cx231xx_video_qops,
2009 2009 NULL, &dev->video_mode.slock,
2010 2010 fh->type, V4L2_FIELD_INTERLACED,
2011   - sizeof(struct cx231xx_buffer), fh);
  2011 + sizeof(struct cx231xx_buffer),
  2012 + fh, NULL);
2012 2013 if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
2013 2014 /* Set the required alternate setting VBI interface works in
2014 2015 Bulk mode only */
... ... @@ -2017,7 +2018,8 @@
2017 2018 videobuf_queue_vmalloc_init(&fh->vb_vidq, &cx231xx_vbi_qops,
2018 2019 NULL, &dev->vbi_mode.slock,
2019 2020 fh->type, V4L2_FIELD_SEQ_TB,
2020   - sizeof(struct cx231xx_buffer), fh);
  2021 + sizeof(struct cx231xx_buffer),
  2022 + fh, NULL);
2021 2023 }
2022 2024  
2023 2025 mutex_unlock(&dev->lock);
drivers/media/video/cx23885/cx23885-417.c
... ... @@ -1591,7 +1591,7 @@
1591 1591 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1592 1592 V4L2_FIELD_INTERLACED,
1593 1593 sizeof(struct cx23885_buffer),
1594   - fh);
  1594 + fh, NULL);
1595 1595 unlock_kernel();
1596 1596  
1597 1597 return 0;
drivers/media/video/cx23885/cx23885-dvb.c
... ... @@ -1071,7 +1071,7 @@
1071 1071 videobuf_queue_sg_init(&fe0->dvb.dvbq, &dvb_qops,
1072 1072 &dev->pci->dev, &port->slock,
1073 1073 V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_FIELD_TOP,
1074   - sizeof(struct cx23885_buffer), port);
  1074 + sizeof(struct cx23885_buffer), port, NULL);
1075 1075 }
1076 1076 err = dvb_register(port);
1077 1077 if (err != 0)
drivers/media/video/cx23885/cx23885-video.c
... ... @@ -758,7 +758,7 @@
758 758 V4L2_BUF_TYPE_VIDEO_CAPTURE,
759 759 V4L2_FIELD_INTERLACED,
760 760 sizeof(struct cx23885_buffer),
761   - fh);
  761 + fh, NULL);
762 762  
763 763 dprintk(1, "post videobuf_queue_init()\n");
764 764  
drivers/media/video/cx88/cx88-blackbird.c
... ... @@ -1094,7 +1094,7 @@
1094 1094 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1095 1095 V4L2_FIELD_INTERLACED,
1096 1096 sizeof(struct cx88_buffer),
1097   - fh);
  1097 + fh, NULL);
1098 1098  
1099 1099 /* FIXME: locking against other video device */
1100 1100 cx88_set_scale(dev->core, dev->width, dev->height,
drivers/media/video/cx88/cx88-dvb.c
... ... @@ -1576,7 +1576,7 @@
1576 1576 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1577 1577 V4L2_FIELD_TOP,
1578 1578 sizeof(struct cx88_buffer),
1579   - dev);
  1579 + dev, NULL);
1580 1580 /* init struct videobuf_dvb */
1581 1581 fe->dvb.name = dev->core->name;
1582 1582 }
drivers/media/video/cx88/cx88-video.c
... ... @@ -793,13 +793,13 @@
793 793 V4L2_BUF_TYPE_VIDEO_CAPTURE,
794 794 V4L2_FIELD_INTERLACED,
795 795 sizeof(struct cx88_buffer),
796   - fh);
  796 + fh, NULL);
797 797 videobuf_queue_sg_init(&fh->vbiq, &cx8800_vbi_qops,
798 798 &dev->pci->dev, &dev->slock,
799 799 V4L2_BUF_TYPE_VBI_CAPTURE,
800 800 V4L2_FIELD_SEQ_TB,
801 801 sizeof(struct cx88_buffer),
802   - fh);
  802 + fh, NULL);
803 803  
804 804 if (fh->radio) {
805 805 dprintk(1,"video_open: setting radio device\n");
drivers/media/video/em28xx/em28xx-video.c
... ... @@ -2182,13 +2182,13 @@
2182 2182 videobuf_queue_vmalloc_init(&fh->vb_vidq, &em28xx_video_qops,
2183 2183 NULL, &dev->slock,
2184 2184 V4L2_BUF_TYPE_VIDEO_CAPTURE, field,
2185   - sizeof(struct em28xx_buffer), fh);
  2185 + sizeof(struct em28xx_buffer), fh, NULL);
2186 2186  
2187 2187 videobuf_queue_vmalloc_init(&fh->vb_vbiq, &em28xx_vbi_qops,
2188 2188 NULL, &dev->slock,
2189 2189 V4L2_BUF_TYPE_VBI_CAPTURE,
2190 2190 V4L2_FIELD_SEQ_TB,
2191   - sizeof(struct em28xx_buffer), fh);
  2191 + sizeof(struct em28xx_buffer), fh, NULL);
2192 2192  
2193 2193 mutex_unlock(&dev->lock);
2194 2194  
drivers/media/video/s2255drv.c
... ... @@ -1817,7 +1817,7 @@
1817 1817 NULL, &dev->slock,
1818 1818 fh->type,
1819 1819 V4L2_FIELD_INTERLACED,
1820   - sizeof(struct s2255_buffer), fh);
  1820 + sizeof(struct s2255_buffer), fh, NULL);
1821 1821 return 0;
1822 1822 }
1823 1823  
drivers/media/video/saa7134/saa7134-dvb.c
... ... @@ -1111,7 +1111,7 @@
1111 1111 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1112 1112 V4L2_FIELD_ALTERNATE,
1113 1113 sizeof(struct saa7134_buf),
1114   - dev);
  1114 + dev, NULL);
1115 1115  
1116 1116 switch (dev->board) {
1117 1117 case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL:
drivers/media/video/saa7134/saa7134-empress.c
... ... @@ -542,7 +542,7 @@
542 542 V4L2_BUF_TYPE_VIDEO_CAPTURE,
543 543 V4L2_FIELD_ALTERNATE,
544 544 sizeof(struct saa7134_buf),
545   - dev);
  545 + dev, NULL);
546 546  
547 547 empress_signal_update(&dev->empress_workqueue);
548 548 return 0;
drivers/media/video/saa7134/saa7134-video.c
... ... @@ -1366,13 +1366,13 @@
1366 1366 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1367 1367 V4L2_FIELD_INTERLACED,
1368 1368 sizeof(struct saa7134_buf),
1369   - fh);
  1369 + fh, NULL);
1370 1370 videobuf_queue_sg_init(&fh->vbi, &saa7134_vbi_qops,
1371 1371 &dev->pci->dev, &dev->slock,
1372 1372 V4L2_BUF_TYPE_VBI_CAPTURE,
1373 1373 V4L2_FIELD_SEQ_TB,
1374 1374 sizeof(struct saa7134_buf),
1375   - fh);
  1375 + fh, NULL);
1376 1376 saa7134_pgtable_alloc(dev->pci,&fh->pt_cap);
1377 1377 saa7134_pgtable_alloc(dev->pci,&fh->pt_vbi);
1378 1378  
drivers/media/video/videobuf-core.c
... ... @@ -125,11 +125,13 @@
125 125 enum v4l2_field field,
126 126 unsigned int msize,
127 127 void *priv,
128   - struct videobuf_qtype_ops *int_ops)
  128 + struct videobuf_qtype_ops *int_ops,
  129 + struct mutex *ext_lock)
129 130 {
130 131 BUG_ON(!q);
131 132 memset(q, 0, sizeof(*q));
132 133 q->irqlock = irqlock;
  134 + q->ext_lock = ext_lock;
133 135 q->dev = dev;
134 136 q->type = type;
135 137 q->field = field;
drivers/media/video/videobuf-dma-contig.c
... ... @@ -349,10 +349,11 @@
349 349 enum v4l2_buf_type type,
350 350 enum v4l2_field field,
351 351 unsigned int msize,
352   - void *priv)
  352 + void *priv,
  353 + struct mutex *ext_lock)
353 354 {
354 355 videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
355   - priv, &qops);
  356 + priv, &qops, ext_lock);
356 357 }
357 358 EXPORT_SYMBOL_GPL(videobuf_queue_dma_contig_init);
358 359  
drivers/media/video/videobuf-dma-sg.c
... ... @@ -654,10 +654,11 @@
654 654 enum v4l2_buf_type type,
655 655 enum v4l2_field field,
656 656 unsigned int msize,
657   - void *priv)
  657 + void *priv,
  658 + struct mutex *ext_lock)
658 659 {
659 660 videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
660   - priv, &sg_ops);
  661 + priv, &sg_ops, ext_lock);
661 662 }
662 663 EXPORT_SYMBOL_GPL(videobuf_queue_sg_init);
drivers/media/video/videobuf-vmalloc.c
... ... @@ -304,10 +304,11 @@
304 304 enum v4l2_buf_type type,
305 305 enum v4l2_field field,
306 306 unsigned int msize,
307   - void *priv)
  307 + void *priv,
  308 + struct mutex *ext_lock)
308 309 {
309 310 videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
310   - priv, &qops);
  311 + priv, &qops, ext_lock);
311 312 }
312 313 EXPORT_SYMBOL_GPL(videobuf_queue_vmalloc_init);
313 314  
drivers/media/video/vivi.c
... ... @@ -1176,7 +1176,7 @@
1176 1176 videobuf_queue_vmalloc_init(&dev->vb_vidq, &vivi_video_qops,
1177 1177 NULL, &dev->slock, V4L2_BUF_TYPE_VIDEO_CAPTURE,
1178 1178 V4L2_FIELD_INTERLACED,
1179   - sizeof(struct vivi_buffer), dev);
  1179 + sizeof(struct vivi_buffer), dev, NULL);
1180 1180  
1181 1181 /* init video dma queues */
1182 1182 INIT_LIST_HEAD(&dev->vidq.active);
drivers/media/video/zr364xx.c
... ... @@ -1304,7 +1304,7 @@
1304 1304 NULL, &cam->slock,
1305 1305 cam->type,
1306 1306 V4L2_FIELD_NONE,
1307   - sizeof(struct zr364xx_buffer), cam);
  1307 + sizeof(struct zr364xx_buffer), cam, NULL);
1308 1308  
1309 1309 /* Added some delay here, since opening/closing the camera quickly,
1310 1310 * like Ekiga does during its startup, can crash the webcam
drivers/staging/cx25821/cx25821-video.c
... ... @@ -856,7 +856,7 @@
856 856 &dev->pci->dev, &dev->slock,
857 857 V4L2_BUF_TYPE_VIDEO_CAPTURE,
858 858 V4L2_FIELD_INTERLACED,
859   - sizeof(struct cx25821_buffer), fh);
  859 + sizeof(struct cx25821_buffer), fh, NULL);
860 860  
861 861 dprintk(1, "post videobuf_queue_init()\n");
862 862 unlock_kernel();
drivers/staging/tm6000/tm6000-video.c
... ... @@ -1300,7 +1300,7 @@
1300 1300 NULL, &dev->slock,
1301 1301 fh->type,
1302 1302 V4L2_FIELD_INTERLACED,
1303   - sizeof(struct tm6000_buffer),fh);
  1303 + sizeof(struct tm6000_buffer), fh, NULL);
1304 1304  
1305 1305 return 0;
1306 1306 }
include/media/videobuf-core.h
... ... @@ -198,7 +198,8 @@
198 198 enum v4l2_field field,
199 199 unsigned int msize,
200 200 void *priv,
201   - struct videobuf_qtype_ops *int_ops);
  201 + struct videobuf_qtype_ops *int_ops,
  202 + struct mutex *ext_lock);
202 203 int videobuf_queue_is_busy(struct videobuf_queue *q);
203 204 void videobuf_queue_cancel(struct videobuf_queue *q);
204 205  
include/media/videobuf-dma-contig.h
... ... @@ -23,7 +23,8 @@
23 23 enum v4l2_buf_type type,
24 24 enum v4l2_field field,
25 25 unsigned int msize,
26   - void *priv);
  26 + void *priv,
  27 + struct mutex *ext_lock);
27 28  
28 29 dma_addr_t videobuf_to_dma_contig(struct videobuf_buffer *buf);
29 30 void videobuf_dma_contig_free(struct videobuf_queue *q,
include/media/videobuf-dma-sg.h
... ... @@ -103,7 +103,8 @@
103 103 enum v4l2_buf_type type,
104 104 enum v4l2_field field,
105 105 unsigned int msize,
106   - void *priv);
  106 + void *priv,
  107 + struct mutex *ext_lock);
107 108  
108 109 #endif /* _VIDEOBUF_DMA_SG_H */
include/media/videobuf-vmalloc.h
... ... @@ -36,7 +36,8 @@
36 36 enum v4l2_buf_type type,
37 37 enum v4l2_field field,
38 38 unsigned int msize,
39   - void *priv);
  39 + void *priv,
  40 + struct mutex *ext_lock);
40 41  
41 42 void *videobuf_to_vmalloc(struct videobuf_buffer *buf);
42 43