Commit 08bff03ed697a583612b62a6ac566bd5bce98012
Committed by
Mauro Carvalho Chehab
1 parent
9739768788
Exists in
master
and in
4 other branches
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
- drivers/media/common/saa7146_video.c
- drivers/media/video/au0828/au0828-video.c
- drivers/media/video/bt8xx/bttv-driver.c
- drivers/media/video/cx231xx/cx231xx-video.c
- drivers/media/video/cx23885/cx23885-417.c
- drivers/media/video/cx23885/cx23885-dvb.c
- drivers/media/video/cx23885/cx23885-video.c
- drivers/media/video/cx88/cx88-blackbird.c
- drivers/media/video/cx88/cx88-dvb.c
- drivers/media/video/cx88/cx88-video.c
- drivers/media/video/em28xx/em28xx-video.c
- drivers/media/video/s2255drv.c
- drivers/media/video/saa7134/saa7134-dvb.c
- drivers/media/video/saa7134/saa7134-empress.c
- drivers/media/video/saa7134/saa7134-video.c
- drivers/media/video/videobuf-core.c
- drivers/media/video/videobuf-dma-contig.c
- drivers/media/video/videobuf-dma-sg.c
- drivers/media/video/videobuf-vmalloc.c
- drivers/media/video/vivi.c
- drivers/media/video/zr364xx.c
- drivers/staging/cx25821/cx25821-video.c
- drivers/staging/tm6000/tm6000-video.c
- include/media/videobuf-core.h
- include/media/videobuf-dma-contig.h
- include/media/videobuf-dma-sg.h
- include/media/videobuf-vmalloc.h
drivers/media/common/saa7146_vbi.c
drivers/media/common/saa7146_video.c
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
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
drivers/media/video/cx88/cx88-blackbird.c
drivers/media/video/cx88/cx88-dvb.c
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
drivers/media/video/saa7134/saa7134-dvb.c
drivers/media/video/saa7134/saa7134-empress.c
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
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
include/media/videobuf-vmalloc.h