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>
This commit is contained in:
parent
9739768788
commit
08bff03ed6
|
@ -412,7 +412,7 @@ static int vbi_open(struct saa7146_dev *dev, struct file *file)
|
||||||
V4L2_BUF_TYPE_VBI_CAPTURE,
|
V4L2_BUF_TYPE_VBI_CAPTURE,
|
||||||
V4L2_FIELD_SEQ_TB, // FIXME: does this really work?
|
V4L2_FIELD_SEQ_TB, // FIXME: does this really work?
|
||||||
sizeof(struct saa7146_buf),
|
sizeof(struct saa7146_buf),
|
||||||
file);
|
file, NULL);
|
||||||
|
|
||||||
init_timer(&fh->vbi_read_timeout);
|
init_timer(&fh->vbi_read_timeout);
|
||||||
fh->vbi_read_timeout.function = vbi_read_timeout;
|
fh->vbi_read_timeout.function = vbi_read_timeout;
|
||||||
|
|
|
@ -1386,7 +1386,7 @@ static int video_open(struct saa7146_dev *dev, struct file *file)
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct saa7146_buf),
|
sizeof(struct saa7146_buf),
|
||||||
file);
|
file, NULL);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -965,7 +965,7 @@ static int au0828_v4l2_open(struct file *filp)
|
||||||
NULL, &dev->slock,
|
NULL, &dev->slock,
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct au0828_buffer), fh);
|
sizeof(struct au0828_buffer), fh, NULL);
|
||||||
|
|
||||||
/* VBI Setup */
|
/* VBI Setup */
|
||||||
dev->vbi_width = 720;
|
dev->vbi_width = 720;
|
||||||
|
@ -974,7 +974,7 @@ static int au0828_v4l2_open(struct file *filp)
|
||||||
NULL, &dev->slock,
|
NULL, &dev->slock,
|
||||||
V4L2_BUF_TYPE_VBI_CAPTURE,
|
V4L2_BUF_TYPE_VBI_CAPTURE,
|
||||||
V4L2_FIELD_SEQ_TB,
|
V4L2_FIELD_SEQ_TB,
|
||||||
sizeof(struct au0828_buffer), fh);
|
sizeof(struct au0828_buffer), fh, NULL);
|
||||||
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -3318,13 +3318,13 @@ static int bttv_open(struct file *file)
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct bttv_buffer),
|
sizeof(struct bttv_buffer),
|
||||||
fh);
|
fh, NULL);
|
||||||
videobuf_queue_sg_init(&fh->vbi, &bttv_vbi_qops,
|
videobuf_queue_sg_init(&fh->vbi, &bttv_vbi_qops,
|
||||||
&btv->c.pci->dev, &btv->s_lock,
|
&btv->c.pci->dev, &btv->s_lock,
|
||||||
V4L2_BUF_TYPE_VBI_CAPTURE,
|
V4L2_BUF_TYPE_VBI_CAPTURE,
|
||||||
V4L2_FIELD_SEQ_TB,
|
V4L2_FIELD_SEQ_TB,
|
||||||
sizeof(struct bttv_buffer),
|
sizeof(struct bttv_buffer),
|
||||||
fh);
|
fh, NULL);
|
||||||
set_tvnorm(btv,btv->tvnorm);
|
set_tvnorm(btv,btv->tvnorm);
|
||||||
set_input(btv, btv->input, btv->tvnorm);
|
set_input(btv, btv->input, btv->tvnorm);
|
||||||
|
|
||||||
|
|
|
@ -2008,7 +2008,8 @@ static int cx231xx_v4l2_open(struct file *filp)
|
||||||
videobuf_queue_vmalloc_init(&fh->vb_vidq, &cx231xx_video_qops,
|
videobuf_queue_vmalloc_init(&fh->vb_vidq, &cx231xx_video_qops,
|
||||||
NULL, &dev->video_mode.slock,
|
NULL, &dev->video_mode.slock,
|
||||||
fh->type, V4L2_FIELD_INTERLACED,
|
fh->type, V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct cx231xx_buffer), fh);
|
sizeof(struct cx231xx_buffer),
|
||||||
|
fh, NULL);
|
||||||
if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
|
if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
|
||||||
/* Set the required alternate setting VBI interface works in
|
/* Set the required alternate setting VBI interface works in
|
||||||
Bulk mode only */
|
Bulk mode only */
|
||||||
|
@ -2017,7 +2018,8 @@ static int cx231xx_v4l2_open(struct file *filp)
|
||||||
videobuf_queue_vmalloc_init(&fh->vb_vidq, &cx231xx_vbi_qops,
|
videobuf_queue_vmalloc_init(&fh->vb_vidq, &cx231xx_vbi_qops,
|
||||||
NULL, &dev->vbi_mode.slock,
|
NULL, &dev->vbi_mode.slock,
|
||||||
fh->type, V4L2_FIELD_SEQ_TB,
|
fh->type, V4L2_FIELD_SEQ_TB,
|
||||||
sizeof(struct cx231xx_buffer), fh);
|
sizeof(struct cx231xx_buffer),
|
||||||
|
fh, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_unlock(&dev->lock);
|
mutex_unlock(&dev->lock);
|
||||||
|
|
|
@ -1591,7 +1591,7 @@ static int mpeg_open(struct file *file)
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct cx23885_buffer),
|
sizeof(struct cx23885_buffer),
|
||||||
fh);
|
fh, NULL);
|
||||||
unlock_kernel();
|
unlock_kernel();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1071,7 +1071,7 @@ int cx23885_dvb_register(struct cx23885_tsport *port)
|
||||||
videobuf_queue_sg_init(&fe0->dvb.dvbq, &dvb_qops,
|
videobuf_queue_sg_init(&fe0->dvb.dvbq, &dvb_qops,
|
||||||
&dev->pci->dev, &port->slock,
|
&dev->pci->dev, &port->slock,
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_FIELD_TOP,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_FIELD_TOP,
|
||||||
sizeof(struct cx23885_buffer), port);
|
sizeof(struct cx23885_buffer), port, NULL);
|
||||||
}
|
}
|
||||||
err = dvb_register(port);
|
err = dvb_register(port);
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
|
|
|
@ -758,7 +758,7 @@ static int video_open(struct file *file)
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct cx23885_buffer),
|
sizeof(struct cx23885_buffer),
|
||||||
fh);
|
fh, NULL);
|
||||||
|
|
||||||
dprintk(1, "post videobuf_queue_init()\n");
|
dprintk(1, "post videobuf_queue_init()\n");
|
||||||
|
|
||||||
|
|
|
@ -1094,7 +1094,7 @@ static int mpeg_open(struct file *file)
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct cx88_buffer),
|
sizeof(struct cx88_buffer),
|
||||||
fh);
|
fh, NULL);
|
||||||
|
|
||||||
/* FIXME: locking against other video device */
|
/* FIXME: locking against other video device */
|
||||||
cx88_set_scale(dev->core, dev->width, dev->height,
|
cx88_set_scale(dev->core, dev->width, dev->height,
|
||||||
|
|
|
@ -1576,7 +1576,7 @@ static int cx8802_dvb_probe(struct cx8802_driver *drv)
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_TOP,
|
V4L2_FIELD_TOP,
|
||||||
sizeof(struct cx88_buffer),
|
sizeof(struct cx88_buffer),
|
||||||
dev);
|
dev, NULL);
|
||||||
/* init struct videobuf_dvb */
|
/* init struct videobuf_dvb */
|
||||||
fe->dvb.name = dev->core->name;
|
fe->dvb.name = dev->core->name;
|
||||||
}
|
}
|
||||||
|
|
|
@ -793,13 +793,13 @@ static int video_open(struct file *file)
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct cx88_buffer),
|
sizeof(struct cx88_buffer),
|
||||||
fh);
|
fh, NULL);
|
||||||
videobuf_queue_sg_init(&fh->vbiq, &cx8800_vbi_qops,
|
videobuf_queue_sg_init(&fh->vbiq, &cx8800_vbi_qops,
|
||||||
&dev->pci->dev, &dev->slock,
|
&dev->pci->dev, &dev->slock,
|
||||||
V4L2_BUF_TYPE_VBI_CAPTURE,
|
V4L2_BUF_TYPE_VBI_CAPTURE,
|
||||||
V4L2_FIELD_SEQ_TB,
|
V4L2_FIELD_SEQ_TB,
|
||||||
sizeof(struct cx88_buffer),
|
sizeof(struct cx88_buffer),
|
||||||
fh);
|
fh, NULL);
|
||||||
|
|
||||||
if (fh->radio) {
|
if (fh->radio) {
|
||||||
dprintk(1,"video_open: setting radio device\n");
|
dprintk(1,"video_open: setting radio device\n");
|
||||||
|
|
|
@ -2182,13 +2182,13 @@ static int em28xx_v4l2_open(struct file *filp)
|
||||||
videobuf_queue_vmalloc_init(&fh->vb_vidq, &em28xx_video_qops,
|
videobuf_queue_vmalloc_init(&fh->vb_vidq, &em28xx_video_qops,
|
||||||
NULL, &dev->slock,
|
NULL, &dev->slock,
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE, field,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE, field,
|
||||||
sizeof(struct em28xx_buffer), fh);
|
sizeof(struct em28xx_buffer), fh, NULL);
|
||||||
|
|
||||||
videobuf_queue_vmalloc_init(&fh->vb_vbiq, &em28xx_vbi_qops,
|
videobuf_queue_vmalloc_init(&fh->vb_vbiq, &em28xx_vbi_qops,
|
||||||
NULL, &dev->slock,
|
NULL, &dev->slock,
|
||||||
V4L2_BUF_TYPE_VBI_CAPTURE,
|
V4L2_BUF_TYPE_VBI_CAPTURE,
|
||||||
V4L2_FIELD_SEQ_TB,
|
V4L2_FIELD_SEQ_TB,
|
||||||
sizeof(struct em28xx_buffer), fh);
|
sizeof(struct em28xx_buffer), fh, NULL);
|
||||||
|
|
||||||
mutex_unlock(&dev->lock);
|
mutex_unlock(&dev->lock);
|
||||||
|
|
||||||
|
|
|
@ -1817,7 +1817,7 @@ static int s2255_open(struct file *file)
|
||||||
NULL, &dev->slock,
|
NULL, &dev->slock,
|
||||||
fh->type,
|
fh->type,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct s2255_buffer), fh);
|
sizeof(struct s2255_buffer), fh, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1111,7 +1111,7 @@ static int dvb_init(struct saa7134_dev *dev)
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_ALTERNATE,
|
V4L2_FIELD_ALTERNATE,
|
||||||
sizeof(struct saa7134_buf),
|
sizeof(struct saa7134_buf),
|
||||||
dev);
|
dev, NULL);
|
||||||
|
|
||||||
switch (dev->board) {
|
switch (dev->board) {
|
||||||
case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL:
|
case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL:
|
||||||
|
|
|
@ -542,7 +542,7 @@ static int empress_init(struct saa7134_dev *dev)
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_ALTERNATE,
|
V4L2_FIELD_ALTERNATE,
|
||||||
sizeof(struct saa7134_buf),
|
sizeof(struct saa7134_buf),
|
||||||
dev);
|
dev, NULL);
|
||||||
|
|
||||||
empress_signal_update(&dev->empress_workqueue);
|
empress_signal_update(&dev->empress_workqueue);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1366,13 +1366,13 @@ static int video_open(struct file *file)
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct saa7134_buf),
|
sizeof(struct saa7134_buf),
|
||||||
fh);
|
fh, NULL);
|
||||||
videobuf_queue_sg_init(&fh->vbi, &saa7134_vbi_qops,
|
videobuf_queue_sg_init(&fh->vbi, &saa7134_vbi_qops,
|
||||||
&dev->pci->dev, &dev->slock,
|
&dev->pci->dev, &dev->slock,
|
||||||
V4L2_BUF_TYPE_VBI_CAPTURE,
|
V4L2_BUF_TYPE_VBI_CAPTURE,
|
||||||
V4L2_FIELD_SEQ_TB,
|
V4L2_FIELD_SEQ_TB,
|
||||||
sizeof(struct saa7134_buf),
|
sizeof(struct saa7134_buf),
|
||||||
fh);
|
fh, NULL);
|
||||||
saa7134_pgtable_alloc(dev->pci,&fh->pt_cap);
|
saa7134_pgtable_alloc(dev->pci,&fh->pt_cap);
|
||||||
saa7134_pgtable_alloc(dev->pci,&fh->pt_vbi);
|
saa7134_pgtable_alloc(dev->pci,&fh->pt_vbi);
|
||||||
|
|
||||||
|
|
|
@ -125,11 +125,13 @@ void videobuf_queue_core_init(struct videobuf_queue *q,
|
||||||
enum v4l2_field field,
|
enum v4l2_field field,
|
||||||
unsigned int msize,
|
unsigned int msize,
|
||||||
void *priv,
|
void *priv,
|
||||||
struct videobuf_qtype_ops *int_ops)
|
struct videobuf_qtype_ops *int_ops,
|
||||||
|
struct mutex *ext_lock)
|
||||||
{
|
{
|
||||||
BUG_ON(!q);
|
BUG_ON(!q);
|
||||||
memset(q, 0, sizeof(*q));
|
memset(q, 0, sizeof(*q));
|
||||||
q->irqlock = irqlock;
|
q->irqlock = irqlock;
|
||||||
|
q->ext_lock = ext_lock;
|
||||||
q->dev = dev;
|
q->dev = dev;
|
||||||
q->type = type;
|
q->type = type;
|
||||||
q->field = field;
|
q->field = field;
|
||||||
|
|
|
@ -349,10 +349,11 @@ void videobuf_queue_dma_contig_init(struct videobuf_queue *q,
|
||||||
enum v4l2_buf_type type,
|
enum v4l2_buf_type type,
|
||||||
enum v4l2_field field,
|
enum v4l2_field field,
|
||||||
unsigned int msize,
|
unsigned int msize,
|
||||||
void *priv)
|
void *priv,
|
||||||
|
struct mutex *ext_lock)
|
||||||
{
|
{
|
||||||
videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
|
videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
|
||||||
priv, &qops);
|
priv, &qops, ext_lock);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(videobuf_queue_dma_contig_init);
|
EXPORT_SYMBOL_GPL(videobuf_queue_dma_contig_init);
|
||||||
|
|
||||||
|
|
|
@ -654,10 +654,11 @@ void videobuf_queue_sg_init(struct videobuf_queue *q,
|
||||||
enum v4l2_buf_type type,
|
enum v4l2_buf_type type,
|
||||||
enum v4l2_field field,
|
enum v4l2_field field,
|
||||||
unsigned int msize,
|
unsigned int msize,
|
||||||
void *priv)
|
void *priv,
|
||||||
|
struct mutex *ext_lock)
|
||||||
{
|
{
|
||||||
videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
|
videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
|
||||||
priv, &sg_ops);
|
priv, &sg_ops, ext_lock);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(videobuf_queue_sg_init);
|
EXPORT_SYMBOL_GPL(videobuf_queue_sg_init);
|
||||||
|
|
||||||
|
|
|
@ -304,10 +304,11 @@ void videobuf_queue_vmalloc_init(struct videobuf_queue *q,
|
||||||
enum v4l2_buf_type type,
|
enum v4l2_buf_type type,
|
||||||
enum v4l2_field field,
|
enum v4l2_field field,
|
||||||
unsigned int msize,
|
unsigned int msize,
|
||||||
void *priv)
|
void *priv,
|
||||||
|
struct mutex *ext_lock)
|
||||||
{
|
{
|
||||||
videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
|
videobuf_queue_core_init(q, ops, dev, irqlock, type, field, msize,
|
||||||
priv, &qops);
|
priv, &qops, ext_lock);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(videobuf_queue_vmalloc_init);
|
EXPORT_SYMBOL_GPL(videobuf_queue_vmalloc_init);
|
||||||
|
|
||||||
|
|
|
@ -1176,7 +1176,7 @@ static int __init vivi_create_instance(int inst)
|
||||||
videobuf_queue_vmalloc_init(&dev->vb_vidq, &vivi_video_qops,
|
videobuf_queue_vmalloc_init(&dev->vb_vidq, &vivi_video_qops,
|
||||||
NULL, &dev->slock, V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
NULL, &dev->slock, V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct vivi_buffer), dev);
|
sizeof(struct vivi_buffer), dev, NULL);
|
||||||
|
|
||||||
/* init video dma queues */
|
/* init video dma queues */
|
||||||
INIT_LIST_HEAD(&dev->vidq.active);
|
INIT_LIST_HEAD(&dev->vidq.active);
|
||||||
|
|
|
@ -1304,7 +1304,7 @@ static int zr364xx_open(struct file *file)
|
||||||
NULL, &cam->slock,
|
NULL, &cam->slock,
|
||||||
cam->type,
|
cam->type,
|
||||||
V4L2_FIELD_NONE,
|
V4L2_FIELD_NONE,
|
||||||
sizeof(struct zr364xx_buffer), cam);
|
sizeof(struct zr364xx_buffer), cam, NULL);
|
||||||
|
|
||||||
/* Added some delay here, since opening/closing the camera quickly,
|
/* Added some delay here, since opening/closing the camera quickly,
|
||||||
* like Ekiga does during its startup, can crash the webcam
|
* like Ekiga does during its startup, can crash the webcam
|
||||||
|
|
|
@ -856,7 +856,7 @@ static int video_open(struct file *file)
|
||||||
&dev->pci->dev, &dev->slock,
|
&dev->pci->dev, &dev->slock,
|
||||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct cx25821_buffer), fh);
|
sizeof(struct cx25821_buffer), fh, NULL);
|
||||||
|
|
||||||
dprintk(1, "post videobuf_queue_init()\n");
|
dprintk(1, "post videobuf_queue_init()\n");
|
||||||
unlock_kernel();
|
unlock_kernel();
|
||||||
|
|
|
@ -1300,7 +1300,7 @@ static int tm6000_open(struct file *file)
|
||||||
NULL, &dev->slock,
|
NULL, &dev->slock,
|
||||||
fh->type,
|
fh->type,
|
||||||
V4L2_FIELD_INTERLACED,
|
V4L2_FIELD_INTERLACED,
|
||||||
sizeof(struct tm6000_buffer),fh);
|
sizeof(struct tm6000_buffer), fh, NULL);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,7 +198,8 @@ void videobuf_queue_core_init(struct videobuf_queue *q,
|
||||||
enum v4l2_field field,
|
enum v4l2_field field,
|
||||||
unsigned int msize,
|
unsigned int msize,
|
||||||
void *priv,
|
void *priv,
|
||||||
struct videobuf_qtype_ops *int_ops);
|
struct videobuf_qtype_ops *int_ops,
|
||||||
|
struct mutex *ext_lock);
|
||||||
int videobuf_queue_is_busy(struct videobuf_queue *q);
|
int videobuf_queue_is_busy(struct videobuf_queue *q);
|
||||||
void videobuf_queue_cancel(struct videobuf_queue *q);
|
void videobuf_queue_cancel(struct videobuf_queue *q);
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,8 @@ void videobuf_queue_dma_contig_init(struct videobuf_queue *q,
|
||||||
enum v4l2_buf_type type,
|
enum v4l2_buf_type type,
|
||||||
enum v4l2_field field,
|
enum v4l2_field field,
|
||||||
unsigned int msize,
|
unsigned int msize,
|
||||||
void *priv);
|
void *priv,
|
||||||
|
struct mutex *ext_lock);
|
||||||
|
|
||||||
dma_addr_t videobuf_to_dma_contig(struct videobuf_buffer *buf);
|
dma_addr_t videobuf_to_dma_contig(struct videobuf_buffer *buf);
|
||||||
void videobuf_dma_contig_free(struct videobuf_queue *q,
|
void videobuf_dma_contig_free(struct videobuf_queue *q,
|
||||||
|
|
|
@ -103,7 +103,8 @@ void videobuf_queue_sg_init(struct videobuf_queue *q,
|
||||||
enum v4l2_buf_type type,
|
enum v4l2_buf_type type,
|
||||||
enum v4l2_field field,
|
enum v4l2_field field,
|
||||||
unsigned int msize,
|
unsigned int msize,
|
||||||
void *priv);
|
void *priv,
|
||||||
|
struct mutex *ext_lock);
|
||||||
|
|
||||||
#endif /* _VIDEOBUF_DMA_SG_H */
|
#endif /* _VIDEOBUF_DMA_SG_H */
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,8 @@ void videobuf_queue_vmalloc_init(struct videobuf_queue *q,
|
||||||
enum v4l2_buf_type type,
|
enum v4l2_buf_type type,
|
||||||
enum v4l2_field field,
|
enum v4l2_field field,
|
||||||
unsigned int msize,
|
unsigned int msize,
|
||||||
void *priv);
|
void *priv,
|
||||||
|
struct mutex *ext_lock);
|
||||||
|
|
||||||
void *videobuf_to_vmalloc(struct videobuf_buffer *buf);
|
void *videobuf_to_vmalloc(struct videobuf_buffer *buf);
|
||||||
|
|
||||||
|
|
Reference in New Issue