aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2010-09-20 16:39:46 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-10-20 23:06:14 -0400
commit08bff03ed697a583612b62a6ac566bd5bce98012 (patch)
tree733cf5b266cd7c5b064209dccd7ad6f18d989101
parent97397687886aa8ecd4ec603fab9e70e970c11597 (diff)
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>
-rw-r--r--drivers/media/common/saa7146_vbi.c2
-rw-r--r--drivers/media/common/saa7146_video.c2
-rw-r--r--drivers/media/video/au0828/au0828-video.c4
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c4
-rw-r--r--drivers/media/video/cx231xx/cx231xx-video.c6
-rw-r--r--drivers/media/video/cx23885/cx23885-417.c2
-rw-r--r--drivers/media/video/cx23885/cx23885-dvb.c2
-rw-r--r--drivers/media/video/cx23885/cx23885-video.c2
-rw-r--r--drivers/media/video/cx88/cx88-blackbird.c2
-rw-r--r--drivers/media/video/cx88/cx88-dvb.c2
-rw-r--r--drivers/media/video/cx88/cx88-video.c4
-rw-r--r--drivers/media/video/em28xx/em28xx-video.c4
-rw-r--r--drivers/media/video/s2255drv.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-dvb.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-empress.c2
-rw-r--r--drivers/media/video/saa7134/saa7134-video.c4
-rw-r--r--drivers/media/video/videobuf-core.c4
-rw-r--r--drivers/media/video/videobuf-dma-contig.c5
-rw-r--r--drivers/media/video/videobuf-dma-sg.c5
-rw-r--r--drivers/media/video/videobuf-vmalloc.c5
-rw-r--r--drivers/media/video/vivi.c2
-rw-r--r--drivers/media/video/zr364xx.c2
-rw-r--r--drivers/staging/cx25821/cx25821-video.c2
-rw-r--r--drivers/staging/tm6000/tm6000-video.c2
-rw-r--r--include/media/videobuf-core.h3
-rw-r--r--include/media/videobuf-dma-contig.h3
-rw-r--r--include/media/videobuf-dma-sg.h3
-rw-r--r--include/media/videobuf-vmalloc.h3
28 files changed, 48 insertions, 37 deletions
diff --git a/drivers/media/common/saa7146_vbi.c b/drivers/media/common/saa7146_vbi.c
index 8224c301d050..2d4533ab22b7 100644
--- a/drivers/media/common/saa7146_vbi.c
+++ b/drivers/media/common/saa7146_vbi.c
@@ -412,7 +412,7 @@ static int vbi_open(struct saa7146_dev *dev, struct file *file)
412 V4L2_BUF_TYPE_VBI_CAPTURE, 412 V4L2_BUF_TYPE_VBI_CAPTURE,
413 V4L2_FIELD_SEQ_TB, // FIXME: does this really work? 413 V4L2_FIELD_SEQ_TB, // FIXME: does this really work?
414 sizeof(struct saa7146_buf), 414 sizeof(struct saa7146_buf),
415 file); 415 file, NULL);
416 416
417 init_timer(&fh->vbi_read_timeout); 417 init_timer(&fh->vbi_read_timeout);
418 fh->vbi_read_timeout.function = vbi_read_timeout; 418 fh->vbi_read_timeout.function = vbi_read_timeout;
diff --git a/drivers/media/common/saa7146_video.c b/drivers/media/common/saa7146_video.c
index a212a91a30f0..741c5732b430 100644
--- a/drivers/media/common/saa7146_video.c
+++ b/drivers/media/common/saa7146_video.c
@@ -1386,7 +1386,7 @@ static int video_open(struct saa7146_dev *dev, struct file *file)
1386 V4L2_BUF_TYPE_VIDEO_CAPTURE, 1386 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1387 V4L2_FIELD_INTERLACED, 1387 V4L2_FIELD_INTERLACED,
1388 sizeof(struct saa7146_buf), 1388 sizeof(struct saa7146_buf),
1389 file); 1389 file, NULL);
1390 1390
1391 return 0; 1391 return 0;
1392} 1392}
diff --git a/drivers/media/video/au0828/au0828-video.c b/drivers/media/video/au0828/au0828-video.c
index 7989a7ba7c40..162fd5f9d448 100644
--- a/drivers/media/video/au0828/au0828-video.c
+++ b/drivers/media/video/au0828/au0828-video.c
@@ -965,7 +965,7 @@ static int au0828_v4l2_open(struct file *filp)
965 NULL, &dev->slock, 965 NULL, &dev->slock,
966 V4L2_BUF_TYPE_VIDEO_CAPTURE, 966 V4L2_BUF_TYPE_VIDEO_CAPTURE,
967 V4L2_FIELD_INTERLACED, 967 V4L2_FIELD_INTERLACED,
968 sizeof(struct au0828_buffer), fh); 968 sizeof(struct au0828_buffer), fh, NULL);
969 969
970 /* VBI Setup */ 970 /* VBI Setup */
971 dev->vbi_width = 720; 971 dev->vbi_width = 720;
@@ -974,7 +974,7 @@ static int au0828_v4l2_open(struct file *filp)
974 NULL, &dev->slock, 974 NULL, &dev->slock,
975 V4L2_BUF_TYPE_VBI_CAPTURE, 975 V4L2_BUF_TYPE_VBI_CAPTURE,
976 V4L2_FIELD_SEQ_TB, 976 V4L2_FIELD_SEQ_TB,
977 sizeof(struct au0828_buffer), fh); 977 sizeof(struct au0828_buffer), fh, NULL);
978 978
979 979
980 return ret; 980 return ret;
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 69a8ad24c0b3..3da6e80e1041 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -3318,13 +3318,13 @@ static int bttv_open(struct file *file)
3318 V4L2_BUF_TYPE_VIDEO_CAPTURE, 3318 V4L2_BUF_TYPE_VIDEO_CAPTURE,
3319 V4L2_FIELD_INTERLACED, 3319 V4L2_FIELD_INTERLACED,
3320 sizeof(struct bttv_buffer), 3320 sizeof(struct bttv_buffer),
3321 fh); 3321 fh, NULL);
3322 videobuf_queue_sg_init(&fh->vbi, &bttv_vbi_qops, 3322 videobuf_queue_sg_init(&fh->vbi, &bttv_vbi_qops,
3323 &btv->c.pci->dev, &btv->s_lock, 3323 &btv->c.pci->dev, &btv->s_lock,
3324 V4L2_BUF_TYPE_VBI_CAPTURE, 3324 V4L2_BUF_TYPE_VBI_CAPTURE,
3325 V4L2_FIELD_SEQ_TB, 3325 V4L2_FIELD_SEQ_TB,
3326 sizeof(struct bttv_buffer), 3326 sizeof(struct bttv_buffer),
3327 fh); 3327 fh, NULL);
3328 set_tvnorm(btv,btv->tvnorm); 3328 set_tvnorm(btv,btv->tvnorm);
3329 set_input(btv, btv->input, btv->tvnorm); 3329 set_input(btv, btv->input, btv->tvnorm);
3330 3330
diff --git a/drivers/media/video/cx231xx/cx231xx-video.c b/drivers/media/video/cx231xx/cx231xx-video.c
index e76014561aa7..b638c4ed3f2e 100644
--- a/drivers/media/video/cx231xx/cx231xx-video.c
+++ b/drivers/media/video/cx231xx/cx231xx-video.c
@@ -2008,7 +2008,8 @@ static int cx231xx_v4l2_open(struct file *filp)
2008 videobuf_queue_vmalloc_init(&fh->vb_vidq, &cx231xx_video_qops, 2008 videobuf_queue_vmalloc_init(&fh->vb_vidq, &cx231xx_video_qops,
2009 NULL, &dev->video_mode.slock, 2009 NULL, &dev->video_mode.slock,
2010 fh->type, V4L2_FIELD_INTERLACED, 2010 fh->type, V4L2_FIELD_INTERLACED,
2011 sizeof(struct cx231xx_buffer), fh); 2011 sizeof(struct cx231xx_buffer),
2012 fh, NULL);
2012 if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) { 2013 if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
2013 /* Set the required alternate setting VBI interface works in 2014 /* Set the required alternate setting VBI interface works in
2014 Bulk mode only */ 2015 Bulk mode only */
@@ -2017,7 +2018,8 @@ static int cx231xx_v4l2_open(struct file *filp)
2017 videobuf_queue_vmalloc_init(&fh->vb_vidq, &cx231xx_vbi_qops, 2018 videobuf_queue_vmalloc_init(&fh->vb_vidq, &cx231xx_vbi_qops,
2018 NULL, &dev->vbi_mode.slock, 2019 NULL, &dev->vbi_mode.slock,
2019 fh->type, V4L2_FIELD_SEQ_TB, 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 mutex_unlock(&dev->lock); 2025 mutex_unlock(&dev->lock);
diff --git a/drivers/media/video/cx23885/cx23885-417.c b/drivers/media/video/cx23885/cx23885-417.c
index abd64e89f60f..6628e07a8093 100644
--- a/drivers/media/video/cx23885/cx23885-417.c
+++ b/drivers/media/video/cx23885/cx23885-417.c
@@ -1591,7 +1591,7 @@ static int mpeg_open(struct file *file)
1591 V4L2_BUF_TYPE_VIDEO_CAPTURE, 1591 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1592 V4L2_FIELD_INTERLACED, 1592 V4L2_FIELD_INTERLACED,
1593 sizeof(struct cx23885_buffer), 1593 sizeof(struct cx23885_buffer),
1594 fh); 1594 fh, NULL);
1595 unlock_kernel(); 1595 unlock_kernel();
1596 1596
1597 return 0; 1597 return 0;
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
index 0674ea1bf863..5958cb882e93 100644
--- a/drivers/media/video/cx23885/cx23885-dvb.c
+++ b/drivers/media/video/cx23885/cx23885-dvb.c
@@ -1071,7 +1071,7 @@ int cx23885_dvb_register(struct cx23885_tsport *port)
1071 videobuf_queue_sg_init(&fe0->dvb.dvbq, &dvb_qops, 1071 videobuf_queue_sg_init(&fe0->dvb.dvbq, &dvb_qops,
1072 &dev->pci->dev, &port->slock, 1072 &dev->pci->dev, &port->slock,
1073 V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_FIELD_TOP, 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 err = dvb_register(port); 1076 err = dvb_register(port);
1077 if (err != 0) 1077 if (err != 0)
diff --git a/drivers/media/video/cx23885/cx23885-video.c b/drivers/media/video/cx23885/cx23885-video.c
index 5aadc1d1956e..3173cc69ac61 100644
--- a/drivers/media/video/cx23885/cx23885-video.c
+++ b/drivers/media/video/cx23885/cx23885-video.c
@@ -758,7 +758,7 @@ static int video_open(struct file *file)
758 V4L2_BUF_TYPE_VIDEO_CAPTURE, 758 V4L2_BUF_TYPE_VIDEO_CAPTURE,
759 V4L2_FIELD_INTERLACED, 759 V4L2_FIELD_INTERLACED,
760 sizeof(struct cx23885_buffer), 760 sizeof(struct cx23885_buffer),
761 fh); 761 fh, NULL);
762 762
763 dprintk(1, "post videobuf_queue_init()\n"); 763 dprintk(1, "post videobuf_queue_init()\n");
764 764
diff --git a/drivers/media/video/cx88/cx88-blackbird.c b/drivers/media/video/cx88/cx88-blackbird.c
index ec3299585434..ac885f49313c 100644
--- a/drivers/media/video/cx88/cx88-blackbird.c
+++ b/drivers/media/video/cx88/cx88-blackbird.c
@@ -1094,7 +1094,7 @@ static int mpeg_open(struct file *file)
1094 V4L2_BUF_TYPE_VIDEO_CAPTURE, 1094 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1095 V4L2_FIELD_INTERLACED, 1095 V4L2_FIELD_INTERLACED,
1096 sizeof(struct cx88_buffer), 1096 sizeof(struct cx88_buffer),
1097 fh); 1097 fh, NULL);
1098 1098
1099 /* FIXME: locking against other video device */ 1099 /* FIXME: locking against other video device */
1100 cx88_set_scale(dev->core, dev->width, dev->height, 1100 cx88_set_scale(dev->core, dev->width, dev->height,
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c
index e24fd8d711d8..a037e925ceb9 100644
--- a/drivers/media/video/cx88/cx88-dvb.c
+++ b/drivers/media/video/cx88/cx88-dvb.c
@@ -1576,7 +1576,7 @@ static int cx8802_dvb_probe(struct cx8802_driver *drv)
1576 V4L2_BUF_TYPE_VIDEO_CAPTURE, 1576 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1577 V4L2_FIELD_TOP, 1577 V4L2_FIELD_TOP,
1578 sizeof(struct cx88_buffer), 1578 sizeof(struct cx88_buffer),
1579 dev); 1579 dev, NULL);
1580 /* init struct videobuf_dvb */ 1580 /* init struct videobuf_dvb */
1581 fe->dvb.name = dev->core->name; 1581 fe->dvb.name = dev->core->name;
1582 } 1582 }
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c
index 2da9117b138e..19c64a7d0985 100644
--- a/drivers/media/video/cx88/cx88-video.c
+++ b/drivers/media/video/cx88/cx88-video.c
@@ -793,13 +793,13 @@ static int video_open(struct file *file)
793 V4L2_BUF_TYPE_VIDEO_CAPTURE, 793 V4L2_BUF_TYPE_VIDEO_CAPTURE,
794 V4L2_FIELD_INTERLACED, 794 V4L2_FIELD_INTERLACED,
795 sizeof(struct cx88_buffer), 795 sizeof(struct cx88_buffer),
796 fh); 796 fh, NULL);
797 videobuf_queue_sg_init(&fh->vbiq, &cx8800_vbi_qops, 797 videobuf_queue_sg_init(&fh->vbiq, &cx8800_vbi_qops,
798 &dev->pci->dev, &dev->slock, 798 &dev->pci->dev, &dev->slock,
799 V4L2_BUF_TYPE_VBI_CAPTURE, 799 V4L2_BUF_TYPE_VBI_CAPTURE,
800 V4L2_FIELD_SEQ_TB, 800 V4L2_FIELD_SEQ_TB,
801 sizeof(struct cx88_buffer), 801 sizeof(struct cx88_buffer),
802 fh); 802 fh, NULL);
803 803
804 if (fh->radio) { 804 if (fh->radio) {
805 dprintk(1,"video_open: setting radio device\n"); 805 dprintk(1,"video_open: setting radio device\n");
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
index 95a4b60a1eda..a0627cdb706b 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/drivers/media/video/em28xx/em28xx-video.c
@@ -2182,13 +2182,13 @@ static int em28xx_v4l2_open(struct file *filp)
2182 videobuf_queue_vmalloc_init(&fh->vb_vidq, &em28xx_video_qops, 2182 videobuf_queue_vmalloc_init(&fh->vb_vidq, &em28xx_video_qops,
2183 NULL, &dev->slock, 2183 NULL, &dev->slock,
2184 V4L2_BUF_TYPE_VIDEO_CAPTURE, field, 2184 V4L2_BUF_TYPE_VIDEO_CAPTURE, field,
2185 sizeof(struct em28xx_buffer), fh); 2185 sizeof(struct em28xx_buffer), fh, NULL);
2186 2186
2187 videobuf_queue_vmalloc_init(&fh->vb_vbiq, &em28xx_vbi_qops, 2187 videobuf_queue_vmalloc_init(&fh->vb_vbiq, &em28xx_vbi_qops,
2188 NULL, &dev->slock, 2188 NULL, &dev->slock,
2189 V4L2_BUF_TYPE_VBI_CAPTURE, 2189 V4L2_BUF_TYPE_VBI_CAPTURE,
2190 V4L2_FIELD_SEQ_TB, 2190 V4L2_FIELD_SEQ_TB,
2191 sizeof(struct em28xx_buffer), fh); 2191 sizeof(struct em28xx_buffer), fh, NULL);
2192 2192
2193 mutex_unlock(&dev->lock); 2193 mutex_unlock(&dev->lock);
2194 2194
diff --git a/drivers/media/video/s2255drv.c b/drivers/media/video/s2255drv.c
index 8f7434182bc3..f5a46c458717 100644
--- a/drivers/media/video/s2255drv.c
+++ b/drivers/media/video/s2255drv.c
@@ -1817,7 +1817,7 @@ static int s2255_open(struct file *file)
1817 NULL, &dev->slock, 1817 NULL, &dev->slock,
1818 fh->type, 1818 fh->type,
1819 V4L2_FIELD_INTERLACED, 1819 V4L2_FIELD_INTERLACED,
1820 sizeof(struct s2255_buffer), fh); 1820 sizeof(struct s2255_buffer), fh, NULL);
1821 return 0; 1821 return 0;
1822} 1822}
1823 1823
diff --git a/drivers/media/video/saa7134/saa7134-dvb.c b/drivers/media/video/saa7134/saa7134-dvb.c
index f26fe7661a1d..beb95e21d109 100644
--- a/drivers/media/video/saa7134/saa7134-dvb.c
+++ b/drivers/media/video/saa7134/saa7134-dvb.c
@@ -1111,7 +1111,7 @@ static int dvb_init(struct saa7134_dev *dev)
1111 V4L2_BUF_TYPE_VIDEO_CAPTURE, 1111 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1112 V4L2_FIELD_ALTERNATE, 1112 V4L2_FIELD_ALTERNATE,
1113 sizeof(struct saa7134_buf), 1113 sizeof(struct saa7134_buf),
1114 dev); 1114 dev, NULL);
1115 1115
1116 switch (dev->board) { 1116 switch (dev->board) {
1117 case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL: 1117 case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL:
diff --git a/drivers/media/video/saa7134/saa7134-empress.c b/drivers/media/video/saa7134/saa7134-empress.c
index e763f9fd0133..1467a30a434f 100644
--- a/drivers/media/video/saa7134/saa7134-empress.c
+++ b/drivers/media/video/saa7134/saa7134-empress.c
@@ -542,7 +542,7 @@ static int empress_init(struct saa7134_dev *dev)
542 V4L2_BUF_TYPE_VIDEO_CAPTURE, 542 V4L2_BUF_TYPE_VIDEO_CAPTURE,
543 V4L2_FIELD_ALTERNATE, 543 V4L2_FIELD_ALTERNATE,
544 sizeof(struct saa7134_buf), 544 sizeof(struct saa7134_buf),
545 dev); 545 dev, NULL);
546 546
547 empress_signal_update(&dev->empress_workqueue); 547 empress_signal_update(&dev->empress_workqueue);
548 return 0; 548 return 0;
diff --git a/drivers/media/video/saa7134/saa7134-video.c b/drivers/media/video/saa7134/saa7134-video.c
index 645224cfd887..fae5e97a3eb2 100644
--- a/drivers/media/video/saa7134/saa7134-video.c
+++ b/drivers/media/video/saa7134/saa7134-video.c
@@ -1366,13 +1366,13 @@ static int video_open(struct file *file)
1366 V4L2_BUF_TYPE_VIDEO_CAPTURE, 1366 V4L2_BUF_TYPE_VIDEO_CAPTURE,
1367 V4L2_FIELD_INTERLACED, 1367 V4L2_FIELD_INTERLACED,
1368 sizeof(struct saa7134_buf), 1368 sizeof(struct saa7134_buf),
1369 fh); 1369 fh, NULL);
1370 videobuf_queue_sg_init(&fh->vbi, &saa7134_vbi_qops, 1370 videobuf_queue_sg_init(&fh->vbi, &saa7134_vbi_qops,
1371 &dev->pci->dev, &dev->slock, 1371 &dev->pci->dev, &dev->slock,
1372 V4L2_BUF_TYPE_VBI_CAPTURE, 1372 V4L2_BUF_TYPE_VBI_CAPTURE,
1373 V4L2_FIELD_SEQ_TB, 1373 V4L2_FIELD_SEQ_TB,
1374 sizeof(struct saa7134_buf), 1374 sizeof(struct saa7134_buf),
1375 fh); 1375 fh, NULL);
1376 saa7134_pgtable_alloc(dev->pci,&fh->pt_cap); 1376 saa7134_pgtable_alloc(dev->pci,&fh->pt_cap);
1377 saa7134_pgtable_alloc(dev->pci,&fh->pt_vbi); 1377 saa7134_pgtable_alloc(dev->pci,&fh->pt_vbi);
1378 1378
diff --git a/drivers/media/video/videobuf-core.c b/drivers/media/video/videobuf-core.c
index 2930665910b7..a32ef8eafc01 100644
--- a/drivers/media/video/videobuf-core.c
+++ b/drivers/media/video/videobuf-core.c
@@ -125,11 +125,13 @@ void videobuf_queue_core_init(struct videobuf_queue *q,
125 enum v4l2_field field, 125 enum v4l2_field field,
126 unsigned int msize, 126 unsigned int msize,
127 void *priv, 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 BUG_ON(!q); 131 BUG_ON(!q);
131 memset(q, 0, sizeof(*q)); 132 memset(q, 0, sizeof(*q));
132 q->irqlock = irqlock; 133 q->irqlock = irqlock;
134 q->ext_lock = ext_lock;
133 q->dev = dev; 135 q->dev = dev;
134 q->type = type; 136 q->type = type;
135 q->field = field; 137 q->field = field;
diff --git a/drivers/media/video/videobuf-dma-contig.c b/drivers/media/video/videobuf-dma-contig.c
index 047054f79601..4d0a723b744b 100644
--- a/drivers/media/video/videobuf-dma-contig.c
+++ b/drivers/media/video/videobuf-dma-contig.c
@@ -349,10 +349,11 @@ void videobuf_queue_dma_contig_init(struct videobuf_queue *q,
349 enum v4l2_buf_type type, 349 enum v4l2_buf_type type,
350 enum v4l2_field field, 350 enum v4l2_field field,
351 unsigned int msize, 351 unsigned int msize,
352 void *priv) 352 void *priv,
353 struct mutex *ext_lock)
353{ 354{
354 videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize, 355 videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
355 priv, &qops); 356 priv, &qops, ext_lock);
356} 357}
357EXPORT_SYMBOL_GPL(videobuf_queue_dma_contig_init); 358EXPORT_SYMBOL_GPL(videobuf_queue_dma_contig_init);
358 359
diff --git a/drivers/media/video/videobuf-dma-sg.c b/drivers/media/video/videobuf-dma-sg.c
index 515ae887ffcf..359f2f3fdc77 100644
--- a/drivers/media/video/videobuf-dma-sg.c
+++ b/drivers/media/video/videobuf-dma-sg.c
@@ -654,10 +654,11 @@ void videobuf_queue_sg_init(struct videobuf_queue *q,
654 enum v4l2_buf_type type, 654 enum v4l2_buf_type type,
655 enum v4l2_field field, 655 enum v4l2_field field,
656 unsigned int msize, 656 unsigned int msize,
657 void *priv) 657 void *priv,
658 struct mutex *ext_lock)
658{ 659{
659 videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize, 660 videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
660 priv, &sg_ops); 661 priv, &sg_ops, ext_lock);
661} 662}
662EXPORT_SYMBOL_GPL(videobuf_queue_sg_init); 663EXPORT_SYMBOL_GPL(videobuf_queue_sg_init);
663 664
diff --git a/drivers/media/video/videobuf-vmalloc.c b/drivers/media/video/videobuf-vmalloc.c
index 91348b3170ff..df142580e44c 100644
--- a/drivers/media/video/videobuf-vmalloc.c
+++ b/drivers/media/video/videobuf-vmalloc.c
@@ -304,10 +304,11 @@ void videobuf_queue_vmalloc_init(struct videobuf_queue *q,
304 enum v4l2_buf_type type, 304 enum v4l2_buf_type type,
305 enum v4l2_field field, 305 enum v4l2_field field,
306 unsigned int msize, 306 unsigned int msize,
307 void *priv) 307 void *priv,
308 struct mutex *ext_lock)
308{ 309{
309 videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize, 310 videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
310 priv, &qops); 311 priv, &qops, ext_lock);
311} 312}
312EXPORT_SYMBOL_GPL(videobuf_queue_vmalloc_init); 313EXPORT_SYMBOL_GPL(videobuf_queue_vmalloc_init);
313 314
diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c
index e17b6fee046b..547f5e546c9c 100644
--- a/drivers/media/video/vivi.c
+++ b/drivers/media/video/vivi.c
@@ -1176,7 +1176,7 @@ static int __init vivi_create_instance(int inst)
1176 videobuf_queue_vmalloc_init(&dev->vb_vidq, &vivi_video_qops, 1176 videobuf_queue_vmalloc_init(&dev->vb_vidq, &vivi_video_qops,
1177 NULL, &dev->slock, V4L2_BUF_TYPE_VIDEO_CAPTURE, 1177 NULL, &dev->slock, V4L2_BUF_TYPE_VIDEO_CAPTURE,
1178 V4L2_FIELD_INTERLACED, 1178 V4L2_FIELD_INTERLACED,
1179 sizeof(struct vivi_buffer), dev); 1179 sizeof(struct vivi_buffer), dev, NULL);
1180 1180
1181 /* init video dma queues */ 1181 /* init video dma queues */
1182 INIT_LIST_HEAD(&dev->vidq.active); 1182 INIT_LIST_HEAD(&dev->vidq.active);
diff --git a/drivers/media/video/zr364xx.c b/drivers/media/video/zr364xx.c
index 616c61fb3493..7dfb01e9930e 100644
--- a/drivers/media/video/zr364xx.c
+++ b/drivers/media/video/zr364xx.c
@@ -1304,7 +1304,7 @@ static int zr364xx_open(struct file *file)
1304 NULL, &cam->slock, 1304 NULL, &cam->slock,
1305 cam->type, 1305 cam->type,
1306 V4L2_FIELD_NONE, 1306 V4L2_FIELD_NONE,
1307 sizeof(struct zr364xx_buffer), cam); 1307 sizeof(struct zr364xx_buffer), cam, NULL);
1308 1308
1309 /* Added some delay here, since opening/closing the camera quickly, 1309 /* Added some delay here, since opening/closing the camera quickly,
1310 * like Ekiga does during its startup, can crash the webcam 1310 * like Ekiga does during its startup, can crash the webcam
diff --git a/drivers/staging/cx25821/cx25821-video.c b/drivers/staging/cx25821/cx25821-video.c
index 6fff985358a6..e7f1d5778cec 100644
--- a/drivers/staging/cx25821/cx25821-video.c
+++ b/drivers/staging/cx25821/cx25821-video.c
@@ -856,7 +856,7 @@ static int video_open(struct file *file)
856 &dev->pci->dev, &dev->slock, 856 &dev->pci->dev, &dev->slock,
857 V4L2_BUF_TYPE_VIDEO_CAPTURE, 857 V4L2_BUF_TYPE_VIDEO_CAPTURE,
858 V4L2_FIELD_INTERLACED, 858 V4L2_FIELD_INTERLACED,
859 sizeof(struct cx25821_buffer), fh); 859 sizeof(struct cx25821_buffer), fh, NULL);
860 860
861 dprintk(1, "post videobuf_queue_init()\n"); 861 dprintk(1, "post videobuf_queue_init()\n");
862 unlock_kernel(); 862 unlock_kernel();
diff --git a/drivers/staging/tm6000/tm6000-video.c b/drivers/staging/tm6000/tm6000-video.c
index ce0a089a0771..4c22c6584940 100644
--- a/drivers/staging/tm6000/tm6000-video.c
+++ b/drivers/staging/tm6000/tm6000-video.c
@@ -1300,7 +1300,7 @@ static int tm6000_open(struct file *file)
1300 NULL, &dev->slock, 1300 NULL, &dev->slock,
1301 fh->type, 1301 fh->type,
1302 V4L2_FIELD_INTERLACED, 1302 V4L2_FIELD_INTERLACED,
1303 sizeof(struct tm6000_buffer),fh); 1303 sizeof(struct tm6000_buffer), fh, NULL);
1304 1304
1305 return 0; 1305 return 0;
1306} 1306}
diff --git a/include/media/videobuf-core.h b/include/media/videobuf-core.h
index f5eb2cbf3002..9a4194557e4a 100644
--- a/include/media/videobuf-core.h
+++ b/include/media/videobuf-core.h
@@ -198,7 +198,8 @@ void videobuf_queue_core_init(struct videobuf_queue *q,
198 enum v4l2_field field, 198 enum v4l2_field field,
199 unsigned int msize, 199 unsigned int msize,
200 void *priv, 200 void *priv,
201 struct videobuf_qtype_ops *int_ops); 201 struct videobuf_qtype_ops *int_ops,
202 struct mutex *ext_lock);
202int videobuf_queue_is_busy(struct videobuf_queue *q); 203int videobuf_queue_is_busy(struct videobuf_queue *q);
203void videobuf_queue_cancel(struct videobuf_queue *q); 204void videobuf_queue_cancel(struct videobuf_queue *q);
204 205
diff --git a/include/media/videobuf-dma-contig.h b/include/media/videobuf-dma-contig.h
index ebaa9bc1ee8d..f0ed82543d9f 100644
--- a/include/media/videobuf-dma-contig.h
+++ b/include/media/videobuf-dma-contig.h
@@ -23,7 +23,8 @@ void videobuf_queue_dma_contig_init(struct videobuf_queue *q,
23 enum v4l2_buf_type type, 23 enum v4l2_buf_type type,
24 enum v4l2_field field, 24 enum v4l2_field field,
25 unsigned int msize, 25 unsigned int msize,
26 void *priv); 26 void *priv,
27 struct mutex *ext_lock);
27 28
28dma_addr_t videobuf_to_dma_contig(struct videobuf_buffer *buf); 29dma_addr_t videobuf_to_dma_contig(struct videobuf_buffer *buf);
29void videobuf_dma_contig_free(struct videobuf_queue *q, 30void videobuf_dma_contig_free(struct videobuf_queue *q,
diff --git a/include/media/videobuf-dma-sg.h b/include/media/videobuf-dma-sg.h
index aa4ebb42a565..1c647e8148c4 100644
--- a/include/media/videobuf-dma-sg.h
+++ b/include/media/videobuf-dma-sg.h
@@ -103,7 +103,8 @@ void videobuf_queue_sg_init(struct videobuf_queue *q,
103 enum v4l2_buf_type type, 103 enum v4l2_buf_type type,
104 enum v4l2_field field, 104 enum v4l2_field field,
105 unsigned int msize, 105 unsigned int msize,
106 void *priv); 106 void *priv,
107 struct mutex *ext_lock);
107 108
108#endif /* _VIDEOBUF_DMA_SG_H */ 109#endif /* _VIDEOBUF_DMA_SG_H */
109 110
diff --git a/include/media/videobuf-vmalloc.h b/include/media/videobuf-vmalloc.h
index e19403c18dae..486a97efdb56 100644
--- a/include/media/videobuf-vmalloc.h
+++ b/include/media/videobuf-vmalloc.h
@@ -36,7 +36,8 @@ void videobuf_queue_vmalloc_init(struct videobuf_queue *q,
36 enum v4l2_buf_type type, 36 enum v4l2_buf_type type,
37 enum v4l2_field field, 37 enum v4l2_field field,
38 unsigned int msize, 38 unsigned int msize,
39 void *priv); 39 void *priv,
40 struct mutex *ext_lock);
40 41
41void *videobuf_to_vmalloc(struct videobuf_buffer *buf); 42void *videobuf_to_vmalloc(struct videobuf_buffer *buf);
42 43