diff options
author | Hans Verkuil <hverkuil-cisco@xs4all.nl> | 2019-12-15 12:09:32 +0100 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab+huawei@kernel.org> | 2019-12-16 13:24:16 +0100 |
commit | 0885acd77eb4644fd88f6d9f41e433f4ee9bc37a (patch) | |
tree | edbf07e1f90613cc6fba5211412ee25025fda16f /drivers/media/platform/vivid/vivid-touch-cap.c | |
parent | 095c21d31b7bd04d91d81a4a8c703a9d25c3658a (diff) |
media: vivid: support multiplanar touch devices
The v4l2-compliance tests failed with the touch device when multiplanar was
enabled in vivid. Since it is perfectly fine to support the multiplanar API
for touch, add support for this in vivid.
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Diffstat (limited to 'drivers/media/platform/vivid/vivid-touch-cap.c')
-rw-r--r-- | drivers/media/platform/vivid/vivid-touch-cap.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/media/platform/vivid/vivid-touch-cap.c b/drivers/media/platform/vivid/vivid-touch-cap.c index 070df227e29b..ebb00b128030 100644 --- a/drivers/media/platform/vivid/vivid-touch-cap.c +++ b/drivers/media/platform/vivid/vivid-touch-cap.c @@ -5,6 +5,7 @@ #include "vivid-core.h" #include "vivid-kthread-touch.h" +#include "vivid-vid-common.h" #include "vivid-touch-cap.h" static int touch_cap_queue_setup(struct vb2_queue *vq, unsigned int *nbuffers, @@ -129,16 +130,33 @@ int vivid_g_fmt_tch(struct file *file, void *priv, struct v4l2_format *f) { struct vivid_dev *dev = video_drvdata(file); + if (dev->multiplanar) + return -ENOTTY; f->fmt.pix = dev->tch_format; return 0; } +int vivid_g_fmt_tch_mplane(struct file *file, void *priv, struct v4l2_format *f) +{ + struct vivid_dev *dev = video_drvdata(file); + struct v4l2_format sp_fmt; + + if (!dev->multiplanar) + return -ENOTTY; + sp_fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + sp_fmt.fmt.pix = dev->tch_format; + fmt_sp2mp(&sp_fmt, f); + return 0; +} + int vivid_g_parm_tch(struct file *file, void *priv, struct v4l2_streamparm *parm) { struct vivid_dev *dev = video_drvdata(file); - if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) + if (parm->type != (dev->multiplanar ? + V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE : + V4L2_BUF_TYPE_VIDEO_CAPTURE)) return -EINVAL; parm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME; |