summaryrefslogtreecommitdiff
path: root/drivers/media/platform/vivid/vivid-touch-cap.c
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil-cisco@xs4all.nl>2019-12-15 12:09:32 +0100
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2019-12-16 13:24:16 +0100
commit0885acd77eb4644fd88f6d9f41e433f4ee9bc37a (patch)
treeedbf07e1f90613cc6fba5211412ee25025fda16f /drivers/media/platform/vivid/vivid-touch-cap.c
parent095c21d31b7bd04d91d81a4a8c703a9d25c3658a (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.c20
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;