mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
[media] soc_camera: use vb2_ops_wait_prepare/finish helper
This patch drops driver specific wait_prepare() and wait_finish() callbacks from vb2_ops and instead uses the the helpers vb2_ops_wait_prepare/finish() provided by the vb2 core, the lock member of the queue needs to be initalized to a mutex so that vb2 helpers vb2_ops_wait_prepare/finish() can make use of it. Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com> Cc: Josh Wu <josh.wu@atmel.com> Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
cb06b705e3
commit
976036df5e
@ -455,8 +455,8 @@ static struct vb2_ops isi_video_qops = {
|
||||
.buf_queue = buffer_queue,
|
||||
.start_streaming = start_streaming,
|
||||
.stop_streaming = stop_streaming,
|
||||
.wait_prepare = soc_camera_unlock,
|
||||
.wait_finish = soc_camera_lock,
|
||||
.wait_prepare = vb2_ops_wait_prepare,
|
||||
.wait_finish = vb2_ops_wait_finish,
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------------
|
||||
@ -465,6 +465,8 @@ static struct vb2_ops isi_video_qops = {
|
||||
static int isi_camera_init_videobuf(struct vb2_queue *q,
|
||||
struct soc_camera_device *icd)
|
||||
{
|
||||
struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
|
||||
|
||||
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
q->io_modes = VB2_MMAP;
|
||||
q->drv_priv = icd;
|
||||
@ -472,6 +474,7 @@ static int isi_camera_init_videobuf(struct vb2_queue *q,
|
||||
q->ops = &isi_video_qops;
|
||||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->lock = &ici->host_lock;
|
||||
|
||||
return vb2_queue_init(q);
|
||||
}
|
||||
|
@ -435,14 +435,16 @@ static struct vb2_ops mx3_videobuf_ops = {
|
||||
.buf_queue = mx3_videobuf_queue,
|
||||
.buf_cleanup = mx3_videobuf_release,
|
||||
.buf_init = mx3_videobuf_init,
|
||||
.wait_prepare = soc_camera_unlock,
|
||||
.wait_finish = soc_camera_lock,
|
||||
.wait_prepare = vb2_ops_wait_prepare,
|
||||
.wait_finish = vb2_ops_wait_finish,
|
||||
.stop_streaming = mx3_stop_streaming,
|
||||
};
|
||||
|
||||
static int mx3_camera_init_videobuf(struct vb2_queue *q,
|
||||
struct soc_camera_device *icd)
|
||||
{
|
||||
struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
|
||||
|
||||
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR;
|
||||
q->drv_priv = icd;
|
||||
@ -450,6 +452,7 @@ static int mx3_camera_init_videobuf(struct vb2_queue *q,
|
||||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->buf_struct_size = sizeof(struct mx3_camera_buffer);
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->lock = &ici->host_lock;
|
||||
|
||||
return vb2_queue_init(q);
|
||||
}
|
||||
|
@ -881,8 +881,8 @@ static struct vb2_ops rcar_vin_vb2_ops = {
|
||||
.buf_cleanup = rcar_vin_videobuf_release,
|
||||
.buf_queue = rcar_vin_videobuf_queue,
|
||||
.stop_streaming = rcar_vin_stop_streaming,
|
||||
.wait_prepare = soc_camera_unlock,
|
||||
.wait_finish = soc_camera_lock,
|
||||
.wait_prepare = vb2_ops_wait_prepare,
|
||||
.wait_finish = vb2_ops_wait_finish,
|
||||
};
|
||||
|
||||
static irqreturn_t rcar_vin_irq(int irq, void *data)
|
||||
@ -1808,6 +1808,8 @@ static int rcar_vin_querycap(struct soc_camera_host *ici,
|
||||
static int rcar_vin_init_videobuf2(struct vb2_queue *vq,
|
||||
struct soc_camera_device *icd)
|
||||
{
|
||||
struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
|
||||
|
||||
vq->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
vq->io_modes = VB2_MMAP | VB2_USERPTR;
|
||||
vq->drv_priv = icd;
|
||||
@ -1815,6 +1817,7 @@ static int rcar_vin_init_videobuf2(struct vb2_queue *vq,
|
||||
vq->mem_ops = &vb2_dma_contig_memops;
|
||||
vq->buf_struct_size = sizeof(struct rcar_vin_buffer);
|
||||
vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
vq->lock = &ici->host_lock;
|
||||
|
||||
return vb2_queue_init(vq);
|
||||
}
|
||||
|
@ -496,8 +496,8 @@ static struct vb2_ops sh_mobile_ceu_videobuf_ops = {
|
||||
.buf_queue = sh_mobile_ceu_videobuf_queue,
|
||||
.buf_cleanup = sh_mobile_ceu_videobuf_release,
|
||||
.buf_init = sh_mobile_ceu_videobuf_init,
|
||||
.wait_prepare = soc_camera_unlock,
|
||||
.wait_finish = soc_camera_lock,
|
||||
.wait_prepare = vb2_ops_wait_prepare,
|
||||
.wait_finish = vb2_ops_wait_finish,
|
||||
.stop_streaming = sh_mobile_ceu_stop_streaming,
|
||||
};
|
||||
|
||||
@ -1661,6 +1661,8 @@ static int sh_mobile_ceu_querycap(struct soc_camera_host *ici,
|
||||
static int sh_mobile_ceu_init_videobuf(struct vb2_queue *q,
|
||||
struct soc_camera_device *icd)
|
||||
{
|
||||
struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
|
||||
|
||||
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR;
|
||||
q->drv_priv = icd;
|
||||
@ -1668,6 +1670,7 @@ static int sh_mobile_ceu_init_videobuf(struct vb2_queue *q,
|
||||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->buf_struct_size = sizeof(struct sh_mobile_ceu_buffer);
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->lock = &ici->host_lock;
|
||||
|
||||
return vb2_queue_init(q);
|
||||
}
|
||||
|
@ -843,22 +843,6 @@ static unsigned int soc_camera_poll(struct file *file, poll_table *pt)
|
||||
return res;
|
||||
}
|
||||
|
||||
void soc_camera_lock(struct vb2_queue *vq)
|
||||
{
|
||||
struct soc_camera_device *icd = vb2_get_drv_priv(vq);
|
||||
struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
|
||||
mutex_lock(&ici->host_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(soc_camera_lock);
|
||||
|
||||
void soc_camera_unlock(struct vb2_queue *vq)
|
||||
{
|
||||
struct soc_camera_device *icd = vb2_get_drv_priv(vq);
|
||||
struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
|
||||
mutex_unlock(&ici->host_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(soc_camera_unlock);
|
||||
|
||||
static struct v4l2_file_operations soc_camera_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = soc_camera_open,
|
||||
|
Loading…
Reference in New Issue
Block a user