* [PATCH] [media] soc_camera: Support VIDIOC_EXPBUF ioctl @ 2014-09-11 6:09 Kazunori Kobayashi 2014-09-20 7:50 ` Guennadi Liakhovetski 0 siblings, 1 reply; 3+ messages in thread From: Kazunori Kobayashi @ 2014-09-11 6:09 UTC (permalink / raw) To: g.liakhovetski, m.chehab; +Cc: dhobsong, linux-media, Kazunori Kobayashi This patch allows for exporting a dmabuf descriptor from soc_camera drivers. Signed-off-by: Kazunori Kobayashi <kkobayas@igel.co.jp> --- drivers/media/platform/soc_camera/soc_camera.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/media/platform/soc_camera/soc_camera.c b/drivers/media/platform/soc_camera/soc_camera.c index f4308fe..9d7b8ea 100644 --- a/drivers/media/platform/soc_camera/soc_camera.c +++ b/drivers/media/platform/soc_camera/soc_camera.c @@ -437,6 +437,19 @@ static int soc_camera_prepare_buf(struct file *file, void *priv, return vb2_prepare_buf(&icd->vb2_vidq, b); } +static int soc_camera_expbuf(struct file *file, void *priv, + struct v4l2_exportbuffer *p) +{ + struct soc_camera_device *icd = file->private_data; + struct soc_camera_host *ici = to_soc_camera_host(icd->parent); + + /* videobuf2 only */ + if (ici->ops->init_videobuf) + return -EINVAL; + else + return vb2_expbuf(&icd->vb2_vidq, p); +} + /* Always entered with .host_lock held */ static int soc_camera_init_user_formats(struct soc_camera_device *icd) { @@ -2085,6 +2098,7 @@ static const struct v4l2_ioctl_ops soc_camera_ioctl_ops = { .vidioc_dqbuf = soc_camera_dqbuf, .vidioc_create_bufs = soc_camera_create_bufs, .vidioc_prepare_buf = soc_camera_prepare_buf, + .vidioc_expbuf = soc_camera_expbuf, .vidioc_streamon = soc_camera_streamon, .vidioc_streamoff = soc_camera_streamoff, .vidioc_cropcap = soc_camera_cropcap, -- 1.8.1.2 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] [media] soc_camera: Support VIDIOC_EXPBUF ioctl 2014-09-11 6:09 [PATCH] [media] soc_camera: Support VIDIOC_EXPBUF ioctl Kazunori Kobayashi @ 2014-09-20 7:50 ` Guennadi Liakhovetski 2014-09-22 2:51 ` Kazunori Kobayashi 0 siblings, 1 reply; 3+ messages in thread From: Guennadi Liakhovetski @ 2014-09-20 7:50 UTC (permalink / raw) To: Kazunori Kobayashi; +Cc: m.chehab, dhobsong, linux-media Hi Kobayashi-san, Thanks for the patch. In principle it looks good, just one question below: On Thu, 11 Sep 2014, Kazunori Kobayashi wrote: > This patch allows for exporting a dmabuf descriptor from soc_camera drivers. > > Signed-off-by: Kazunori Kobayashi <kkobayas@igel.co.jp> > --- > drivers/media/platform/soc_camera/soc_camera.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/media/platform/soc_camera/soc_camera.c b/drivers/media/platform/soc_camera/soc_camera.c > index f4308fe..9d7b8ea 100644 > --- a/drivers/media/platform/soc_camera/soc_camera.c > +++ b/drivers/media/platform/soc_camera/soc_camera.c > @@ -437,6 +437,19 @@ static int soc_camera_prepare_buf(struct file *file, void *priv, > return vb2_prepare_buf(&icd->vb2_vidq, b); > } > > +static int soc_camera_expbuf(struct file *file, void *priv, > + struct v4l2_exportbuffer *p) > +{ > + struct soc_camera_device *icd = file->private_data; > + struct soc_camera_host *ici = to_soc_camera_host(icd->parent); > + > + /* videobuf2 only */ > + if (ici->ops->init_videobuf) > + return -EINVAL; > + else > + return vb2_expbuf(&icd->vb2_vidq, p); Many soc-camera queue management functions, like queuing, dequeuing a buffer check, that the caller is indeed the process, that is controlling the device. This is done for the case, when two (or more) processes open a video device node, some of them only want to monitor it, or control parameters like exposure etc. Whereas only one process is allowed to perform critical operations, like setting a video format, starting and stopping streaming, queuing and dequeuing buffers. Should this function too use such a check if (icd->streamer != file) return -EBUSY; If you agree, I can just add it myself, no need to resubmit. Thanks Guennadi > +} > + > /* Always entered with .host_lock held */ > static int soc_camera_init_user_formats(struct soc_camera_device *icd) > { > @@ -2085,6 +2098,7 @@ static const struct v4l2_ioctl_ops soc_camera_ioctl_ops = { > .vidioc_dqbuf = soc_camera_dqbuf, > .vidioc_create_bufs = soc_camera_create_bufs, > .vidioc_prepare_buf = soc_camera_prepare_buf, > + .vidioc_expbuf = soc_camera_expbuf, > .vidioc_streamon = soc_camera_streamon, > .vidioc_streamoff = soc_camera_streamoff, > .vidioc_cropcap = soc_camera_cropcap, > -- > 1.8.1.2 > ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] [media] soc_camera: Support VIDIOC_EXPBUF ioctl 2014-09-20 7:50 ` Guennadi Liakhovetski @ 2014-09-22 2:51 ` Kazunori Kobayashi 0 siblings, 0 replies; 3+ messages in thread From: Kazunori Kobayashi @ 2014-09-22 2:51 UTC (permalink / raw) To: Guennadi Liakhovetski; +Cc: m.chehab, dhobsong, linux-media Hi Guennadi, Thank you for your review. (2014/09/20 16:50), Guennadi Liakhovetski wrote: > Hi Kobayashi-san, > > Thanks for the patch. In principle it looks good, just one question below: > > On Thu, 11 Sep 2014, Kazunori Kobayashi wrote: > >> This patch allows for exporting a dmabuf descriptor from soc_camera drivers. >> >> Signed-off-by: Kazunori Kobayashi <kkobayas@igel.co.jp> >> --- >> drivers/media/platform/soc_camera/soc_camera.c | 14 ++++++++++++++ >> 1 file changed, 14 insertions(+) >> >> diff --git a/drivers/media/platform/soc_camera/soc_camera.c b/drivers/media/platform/soc_camera/soc_camera.c >> index f4308fe..9d7b8ea 100644 >> --- a/drivers/media/platform/soc_camera/soc_camera.c >> +++ b/drivers/media/platform/soc_camera/soc_camera.c >> @@ -437,6 +437,19 @@ static int soc_camera_prepare_buf(struct file *file, void *priv, >> return vb2_prepare_buf(&icd->vb2_vidq, b); >> } >> >> +static int soc_camera_expbuf(struct file *file, void *priv, >> + struct v4l2_exportbuffer *p) >> +{ >> + struct soc_camera_device *icd = file->private_data; >> + struct soc_camera_host *ici = to_soc_camera_host(icd->parent); >> + >> + /* videobuf2 only */ >> + if (ici->ops->init_videobuf) >> + return -EINVAL; >> + else >> + return vb2_expbuf(&icd->vb2_vidq, p); > > Many soc-camera queue management functions, like queuing, dequeuing a > buffer check, that the caller is indeed the process, that is controlling > the device. This is done for the case, when two (or more) processes open a > video device node, some of them only want to monitor it, or control > parameters like exposure etc. Whereas only one process is allowed to > perform critical operations, like setting a video format, starting and > stopping streaming, queuing and dequeuing buffers. Should this function > too use such a check > > if (icd->streamer != file) > return -EBUSY; > > If you agree, I can just add it myself, no need to resubmit. I think that's appropriate suggestion. The dmabuf exporting should be restricted to the process that operates the video streaming. Please add the check. > > Thanks > Guennadi > >> +} >> + >> /* Always entered with .host_lock held */ >> static int soc_camera_init_user_formats(struct soc_camera_device *icd) >> { >> @@ -2085,6 +2098,7 @@ static const struct v4l2_ioctl_ops soc_camera_ioctl_ops = { >> .vidioc_dqbuf = soc_camera_dqbuf, >> .vidioc_create_bufs = soc_camera_create_bufs, >> .vidioc_prepare_buf = soc_camera_prepare_buf, >> + .vidioc_expbuf = soc_camera_expbuf, >> .vidioc_streamon = soc_camera_streamon, >> .vidioc_streamoff = soc_camera_streamoff, >> .vidioc_cropcap = soc_camera_cropcap, >> -- >> 1.8.1.2 >> -- --------------------------------- IGEL Co.,Ltd. Kazunori Kobayashi kkobayas@igel.co.jp http://www.igel.co.jp/ ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-09-22 2:51 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-09-11 6:09 [PATCH] [media] soc_camera: Support VIDIOC_EXPBUF ioctl Kazunori Kobayashi 2014-09-20 7:50 ` Guennadi Liakhovetski 2014-09-22 2:51 ` Kazunori Kobayashi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).