All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 0/5] fsl-viu: v4l2 compliance fixes
@ 2013-02-16 10:18 Hans Verkuil
  2013-02-16 10:18 ` [RFC PATCH 1/5] fsl-viu: convert to the control framework Hans Verkuil
  2013-03-29 20:10 ` [RFC PATCH 0/5] fsl-viu: v4l2 compliance fixes Anatolij Gustschin
  0 siblings, 2 replies; 8+ messages in thread
From: Hans Verkuil @ 2013-02-16 10:18 UTC (permalink / raw)
  To: linux-media; +Cc: Anatolij Gustschin

This patch series converts fsl-viu to the control framework and provides
some additional v4l2 compliance fixes.

Anatolij, are you able to test this?

Ideally I'd like to see the output of the v4l2-compliance tool (found in
the http://git.linuxtv.org/v4l-utils.git repository). I know that there are
remaining issues, especially with the fact that there can be one user at a
time only (very bad!) and some overlay issues. I can try to fix those, but
I need someone to test otherwise I won't bother.

Regards,

	Hans


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [RFC PATCH 1/5] fsl-viu: convert to the control framework.
  2013-02-16 10:18 [RFC PATCH 0/5] fsl-viu: v4l2 compliance fixes Hans Verkuil
@ 2013-02-16 10:18 ` Hans Verkuil
  2013-02-16 10:18   ` [RFC PATCH 2/5] fsl-viu: add device_caps support to querycap Hans Verkuil
                     ` (3 more replies)
  2013-03-29 20:10 ` [RFC PATCH 0/5] fsl-viu: v4l2 compliance fixes Anatolij Gustschin
  1 sibling, 4 replies; 8+ messages in thread
From: Hans Verkuil @ 2013-02-16 10:18 UTC (permalink / raw)
  To: linux-media; +Cc: Anatolij Gustschin, Hans Verkuil

From: Hans Verkuil <hans.verkuil@cisco.com>

Interestingly enough, the existing control handling code basically did
nothing. At least the new code will inherit the controls from the
saa7115 driver.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
 drivers/media/platform/fsl-viu.c |  110 +++++---------------------------------
 1 file changed, 14 insertions(+), 96 deletions(-)

diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index 5f7db3f..4a46819 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -26,6 +26,7 @@
 #include <media/v4l2-common.h>
 #include <media/v4l2-device.h>
 #include <media/v4l2-ioctl.h>
+#include <media/v4l2-ctrls.h>
 #include <media/videobuf-dma-contig.h>
 
 #define DRV_NAME		"fsl_viu"
@@ -38,49 +39,6 @@
 /* I2C address of video decoder chip is 0x4A */
 #define VIU_VIDEO_DECODER_ADDR	0x25
 
-/* supported controls */
-static struct v4l2_queryctrl viu_qctrl[] = {
-	{
-		.id            = V4L2_CID_BRIGHTNESS,
-		.type          = V4L2_CTRL_TYPE_INTEGER,
-		.name          = "Brightness",
-		.minimum       = 0,
-		.maximum       = 255,
-		.step          = 1,
-		.default_value = 127,
-		.flags         = 0,
-	}, {
-		.id            = V4L2_CID_CONTRAST,
-		.type          = V4L2_CTRL_TYPE_INTEGER,
-		.name          = "Contrast",
-		.minimum       = 0,
-		.maximum       = 255,
-		.step          = 0x1,
-		.default_value = 0x10,
-		.flags         = 0,
-	}, {
-		.id            = V4L2_CID_SATURATION,
-		.type          = V4L2_CTRL_TYPE_INTEGER,
-		.name          = "Saturation",
-		.minimum       = 0,
-		.maximum       = 255,
-		.step          = 0x1,
-		.default_value = 127,
-		.flags         = 0,
-	}, {
-		.id            = V4L2_CID_HUE,
-		.type          = V4L2_CTRL_TYPE_INTEGER,
-		.name          = "Hue",
-		.minimum       = -128,
-		.maximum       = 127,
-		.step          = 0x1,
-		.default_value = 0,
-		.flags         = 0,
-	}
-};
-
-static int qctl_regs[ARRAY_SIZE(viu_qctrl)];
-
 static int info_level;
 
 #define dprintk(level, fmt, arg...)					\
@@ -154,6 +112,7 @@ struct viu_reg {
 
 struct viu_dev {
 	struct v4l2_device	v4l2_dev;
+	struct v4l2_ctrl_handler hdl;
 	struct mutex		lock;
 	spinlock_t		slock;
 	int			users;
@@ -1006,51 +965,6 @@ static int vidioc_s_input(struct file *file, void *priv, unsigned int i)
 	return 0;
 }
 
-/* Controls */
-static int vidioc_queryctrl(struct file *file, void *priv,
-				struct v4l2_queryctrl *qc)
-{
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(viu_qctrl); i++) {
-		if (qc->id && qc->id == viu_qctrl[i].id) {
-			memcpy(qc, &(viu_qctrl[i]), sizeof(*qc));
-			return 0;
-		}
-	}
-	return -EINVAL;
-}
-
-static int vidioc_g_ctrl(struct file *file, void *priv,
-				struct v4l2_control *ctrl)
-{
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(viu_qctrl); i++) {
-		if (ctrl->id == viu_qctrl[i].id) {
-			ctrl->value = qctl_regs[i];
-			return 0;
-		}
-	}
-	return -EINVAL;
-}
-static int vidioc_s_ctrl(struct file *file, void *priv,
-				struct v4l2_control *ctrl)
-{
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(viu_qctrl); i++) {
-		if (ctrl->id == viu_qctrl[i].id) {
-			if (ctrl->value < viu_qctrl[i].minimum
-				|| ctrl->value > viu_qctrl[i].maximum)
-					return -ERANGE;
-			qctl_regs[i] = ctrl->value;
-			return 0;
-		}
-	}
-	return -EINVAL;
-}
-
 inline void viu_activate_next_buf(struct viu_dev *dev,
 				struct viu_dmaqueue *viuq)
 {
@@ -1262,7 +1176,6 @@ static int viu_open(struct file *file)
 	struct viu_reg *vr;
 	int minor = vdev->minor;
 	u32 status_cfg;
-	int i;
 
 	dprintk(1, "viu: open (minor=%d)\n", minor);
 
@@ -1300,10 +1213,6 @@ static int viu_open(struct file *file)
 	dev->crop_current.width  = fh->width;
 	dev->crop_current.height = fh->height;
 
-	/* Put all controls at a sane state */
-	for (i = 0; i < ARRAY_SIZE(viu_qctrl); i++)
-		qctl_regs[i] = viu_qctrl[i].default_value;
-
 	dprintk(1, "Open: fh=0x%08lx, dev=0x%08lx, dev->vidq=0x%08lx\n",
 		(unsigned long)fh, (unsigned long)dev,
 		(unsigned long)&dev->vidq);
@@ -1460,9 +1369,6 @@ static const struct v4l2_ioctl_ops viu_ioctl_ops = {
 	.vidioc_enum_input    = vidioc_enum_input,
 	.vidioc_g_input       = vidioc_g_input,
 	.vidioc_s_input       = vidioc_s_input,
-	.vidioc_queryctrl     = vidioc_queryctrl,
-	.vidioc_g_ctrl        = vidioc_g_ctrl,
-	.vidioc_s_ctrl        = vidioc_s_ctrl,
 	.vidioc_streamon      = vidioc_streamon,
 	.vidioc_streamoff     = vidioc_streamoff,
 };
@@ -1540,6 +1446,16 @@ static int viu_of_probe(struct platform_device *op)
 	}
 
 	ad = i2c_get_adapter(0);
+
+	v4l2_ctrl_handler_init(&viu_dev->hdl, 5);
+	if (viu_dev->hdl.error) {
+		ret = viu_dev->hdl.error;
+		dev_err(&op->dev, "couldn't register control\n");
+		goto err_vdev;
+	}
+	/* This control handler will inherit the control(s) from the
+	   sub-device(s). */
+	viu_dev->v4l2_dev.ctrl_handler = &viu_dev->hdl;
 	viu_dev->decoder = v4l2_i2c_new_subdev(&viu_dev->v4l2_dev, ad,
 			"saa7113", VIU_VIDEO_DECODER_ADDR, NULL);
 
@@ -1607,6 +1523,7 @@ err_irq:
 err_clk:
 	video_unregister_device(viu_dev->vdev);
 err_vdev:
+	v4l2_ctrl_handler_free(&viu_dev->hdl);
 	mutex_unlock(&viu_dev->lock);
 	i2c_put_adapter(ad);
 	v4l2_device_unregister(&viu_dev->v4l2_dev);
@@ -1629,6 +1546,7 @@ static int viu_of_remove(struct platform_device *op)
 	clk_disable(dev->clk);
 	clk_put(dev->clk);
 
+	v4l2_ctrl_handler_free(&dev->hdl);
 	video_unregister_device(dev->vdev);
 	i2c_put_adapter(client->adapter);
 	v4l2_device_unregister(&dev->v4l2_dev);
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [RFC PATCH 2/5] fsl-viu: add device_caps support to querycap.
  2013-02-16 10:18 ` [RFC PATCH 1/5] fsl-viu: convert to the control framework Hans Verkuil
@ 2013-02-16 10:18   ` Hans Verkuil
  2013-02-16 10:18   ` [RFC PATCH 3/5] fsl-viu: fill in colorspace, zero priv, always set field to interlaced Hans Verkuil
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Hans Verkuil @ 2013-02-16 10:18 UTC (permalink / raw)
  To: linux-media; +Cc: Anatolij Gustschin, Hans Verkuil

From: Hans Verkuil <hans.verkuil@cisco.com>

Also fill in bus_info correctly.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
 drivers/media/platform/fsl-viu.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index 4a46819..1567878 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -561,10 +561,12 @@ static int vidioc_querycap(struct file *file, void *priv,
 {
 	strcpy(cap->driver, "viu");
 	strcpy(cap->card, "viu");
-	cap->capabilities =	V4L2_CAP_VIDEO_CAPTURE |
+	strcpy(cap->bus_info, "platform:viu");
+	cap->device_caps =	V4L2_CAP_VIDEO_CAPTURE |
 				V4L2_CAP_STREAMING     |
 				V4L2_CAP_VIDEO_OVERLAY |
 				V4L2_CAP_READWRITE;
+	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 	return 0;
 }
 
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [RFC PATCH 3/5] fsl-viu: fill in colorspace, zero priv, always set field to interlaced.
  2013-02-16 10:18 ` [RFC PATCH 1/5] fsl-viu: convert to the control framework Hans Verkuil
  2013-02-16 10:18   ` [RFC PATCH 2/5] fsl-viu: add device_caps support to querycap Hans Verkuil
@ 2013-02-16 10:18   ` Hans Verkuil
  2013-02-16 10:18   ` [RFC PATCH 4/5] fsl-viu: remove deprecated use of current_norm Hans Verkuil
  2013-02-16 10:18   ` [RFC PATCH 5/5] fsl-viu: add prio and control event support Hans Verkuil
  3 siblings, 0 replies; 8+ messages in thread
From: Hans Verkuil @ 2013-02-16 10:18 UTC (permalink / raw)
  To: linux-media; +Cc: Anatolij Gustschin, Hans Verkuil

From: Hans Verkuil <hans.verkuil@cisco.com>

- fill in the missing colorspace value.
- the priv field of v4l2_pix_format must be zeroed.
- don't reject incorrect field values, always replace with a valid value.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
 drivers/media/platform/fsl-viu.c |   16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index 1567878..961fc72 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -595,6 +595,8 @@ static int vidioc_g_fmt_cap(struct file *file, void *priv,
 	f->fmt.pix.bytesperline =
 			(f->fmt.pix.width * fh->fmt->depth) >> 3;
 	f->fmt.pix.sizeimage	= fh->sizeimage;
+	f->fmt.pix.colorspace	= V4L2_COLORSPACE_SMPTE170M;
+	f->fmt.pix.priv		= 0;
 	return 0;
 }
 
@@ -602,7 +604,6 @@ static int vidioc_try_fmt_cap(struct file *file, void *priv,
 					struct v4l2_format *f)
 {
 	struct viu_fmt *fmt;
-	enum v4l2_field field;
 	unsigned int maxw, maxh;
 
 	fmt = format_by_fourcc(f->fmt.pix.pixelformat);
@@ -612,19 +613,10 @@ static int vidioc_try_fmt_cap(struct file *file, void *priv,
 		return -EINVAL;
 	}
 
-	field = f->fmt.pix.field;
-
-	if (field == V4L2_FIELD_ANY) {
-		field = V4L2_FIELD_INTERLACED;
-	} else if (field != V4L2_FIELD_INTERLACED) {
-		dprintk(1, "Field type invalid.\n");
-		return -EINVAL;
-	}
-
 	maxw  = norm_maxw();
 	maxh  = norm_maxh();
 
-	f->fmt.pix.field = field;
+	f->fmt.pix.field = V4L2_FIELD_INTERLACED;
 	if (f->fmt.pix.height < 32)
 		f->fmt.pix.height = 32;
 	if (f->fmt.pix.height > maxh)
@@ -636,6 +628,8 @@ static int vidioc_try_fmt_cap(struct file *file, void *priv,
 	f->fmt.pix.width &= ~0x03;
 	f->fmt.pix.bytesperline =
 		(f->fmt.pix.width * fmt->depth) >> 3;
+	f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
+	f->fmt.pix.priv = 0;
 
 	return 0;
 }
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [RFC PATCH 4/5] fsl-viu: remove deprecated use of current_norm.
  2013-02-16 10:18 ` [RFC PATCH 1/5] fsl-viu: convert to the control framework Hans Verkuil
  2013-02-16 10:18   ` [RFC PATCH 2/5] fsl-viu: add device_caps support to querycap Hans Verkuil
  2013-02-16 10:18   ` [RFC PATCH 3/5] fsl-viu: fill in colorspace, zero priv, always set field to interlaced Hans Verkuil
@ 2013-02-16 10:18   ` Hans Verkuil
  2013-02-16 10:18   ` [RFC PATCH 5/5] fsl-viu: add prio and control event support Hans Verkuil
  3 siblings, 0 replies; 8+ messages in thread
From: Hans Verkuil @ 2013-02-16 10:18 UTC (permalink / raw)
  To: linux-media; +Cc: Anatolij Gustschin, Hans Verkuil

From: Hans Verkuil <hans.verkuil@cisco.com>

It was pointless anyway since fsl-viu already implements g_std.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
 drivers/media/platform/fsl-viu.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index 961fc72..c7c1295 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -1376,8 +1376,7 @@ static struct video_device viu_template = {
 	.ioctl_ops	= &viu_ioctl_ops,
 	.release	= video_device_release,
 
-	.tvnorms        = V4L2_STD_NTSC_M | V4L2_STD_PAL,
-	.current_norm   = V4L2_STD_NTSC_M,
+	.tvnorms        = V4L2_STD_ALL,
 };
 
 static int viu_of_probe(struct platform_device *op)
@@ -1452,6 +1451,7 @@ static int viu_of_probe(struct platform_device *op)
 	/* This control handler will inherit the control(s) from the
 	   sub-device(s). */
 	viu_dev->v4l2_dev.ctrl_handler = &viu_dev->hdl;
+	viu_dev->std = V4L2_STD_NTSC_M;
 	viu_dev->decoder = v4l2_i2c_new_subdev(&viu_dev->v4l2_dev, ad,
 			"saa7113", VIU_VIDEO_DECODER_ADDR, NULL);
 
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [RFC PATCH 5/5] fsl-viu: add prio and control event support.
  2013-02-16 10:18 ` [RFC PATCH 1/5] fsl-viu: convert to the control framework Hans Verkuil
                     ` (2 preceding siblings ...)
  2013-02-16 10:18   ` [RFC PATCH 4/5] fsl-viu: remove deprecated use of current_norm Hans Verkuil
@ 2013-02-16 10:18   ` Hans Verkuil
  3 siblings, 0 replies; 8+ messages in thread
From: Hans Verkuil @ 2013-02-16 10:18 UTC (permalink / raw)
  To: linux-media; +Cc: Anatolij Gustschin, Hans Verkuil

From: Hans Verkuil <hans.verkuil@cisco.com>

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
---
 drivers/media/platform/fsl-viu.c |   22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index c7c1295..1d27f5a 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -27,6 +27,8 @@
 #include <media/v4l2-device.h>
 #include <media/v4l2-ioctl.h>
 #include <media/v4l2-ctrls.h>
+#include <media/v4l2-fh.h>
+#include <media/v4l2-event.h>
 #include <media/videobuf-dma-contig.h>
 
 #define DRV_NAME		"fsl_viu"
@@ -152,6 +154,8 @@ struct viu_dev {
 };
 
 struct viu_fh {
+	/* must remain the first field of this struct */
+	struct v4l2_fh		fh;
 	struct viu_dev		*dev;
 
 	/* video capture */
@@ -1199,6 +1203,7 @@ static int viu_open(struct file *file)
 		return -ENOMEM;
 	}
 
+	v4l2_fh_init(&fh->fh, vdev);
 	file->private_data = fh;
 	fh->dev = dev;
 
@@ -1234,6 +1239,7 @@ static int viu_open(struct file *file)
 				       fh->type, V4L2_FIELD_INTERLACED,
 				       sizeof(struct viu_buf), fh,
 				       &fh->dev->lock);
+	v4l2_fh_add(&fh->fh);
 	mutex_unlock(&dev->lock);
 	return 0;
 }
@@ -1266,13 +1272,17 @@ static unsigned int viu_poll(struct file *file, struct poll_table_struct *wait)
 	struct viu_fh *fh = file->private_data;
 	struct videobuf_queue *q = &fh->vb_vidq;
 	struct viu_dev *dev = fh->dev;
-	unsigned int res;
+	unsigned long req_events = poll_requested_events(wait);
+	unsigned int res = v4l2_ctrl_poll(file, wait);
 
 	if (V4L2_BUF_TYPE_VIDEO_CAPTURE != fh->type)
 		return POLLERR;
 
+	if (!(req_events & (POLLIN | POLLRDNORM)))
+		return res;
+
 	mutex_lock(&dev->lock);
-	res = videobuf_poll_stream(file, q, wait);
+	res |= videobuf_poll_stream(file, q, wait);
 	mutex_unlock(&dev->lock);
 	return res;
 }
@@ -1287,6 +1297,8 @@ static int viu_release(struct file *file)
 	viu_stop_dma(dev);
 	videobuf_stop(&fh->vb_vidq);
 	videobuf_mmap_free(&fh->vb_vidq);
+	v4l2_fh_del(&fh->fh);
+	v4l2_fh_exit(&fh->fh);
 	mutex_unlock(&dev->lock);
 
 	kfree(fh);
@@ -1367,6 +1379,9 @@ static const struct v4l2_ioctl_ops viu_ioctl_ops = {
 	.vidioc_s_input       = vidioc_s_input,
 	.vidioc_streamon      = vidioc_streamon,
 	.vidioc_streamoff     = vidioc_streamoff,
+	.vidioc_log_status    = v4l2_ctrl_log_status,
+	.vidioc_subscribe_event = v4l2_ctrl_subscribe_event,
+	.vidioc_unsubscribe_event = v4l2_event_unsubscribe,
 };
 
 static struct video_device viu_template = {
@@ -1467,9 +1482,10 @@ static int viu_of_probe(struct platform_device *op)
 		goto err_vdev;
 	}
 
-	memcpy(vdev, &viu_template, sizeof(viu_template));
+	*vdev = viu_template;
 
 	vdev->v4l2_dev = &viu_dev->v4l2_dev;
+	set_bit(V4L2_FL_USE_FH_PRIO, &vdev->flags);
 
 	viu_dev->vdev = vdev;
 
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 0/5] fsl-viu: v4l2 compliance fixes
  2013-02-16 10:18 [RFC PATCH 0/5] fsl-viu: v4l2 compliance fixes Hans Verkuil
  2013-02-16 10:18 ` [RFC PATCH 1/5] fsl-viu: convert to the control framework Hans Verkuil
@ 2013-03-29 20:10 ` Anatolij Gustschin
  2013-03-29 22:54   ` Hans Verkuil
  1 sibling, 1 reply; 8+ messages in thread
From: Anatolij Gustschin @ 2013-03-29 20:10 UTC (permalink / raw)
  To: Hans Verkuil; +Cc: linux-media

Hi Hans,

On Sat, 16 Feb 2013 11:18:22 +0100
Hans Verkuil <hverkuil@xs4all.nl> wrote:

> This patch series converts fsl-viu to the control framework and provides
> some additional v4l2 compliance fixes.
> 
> Anatolij, are you able to test this?

Sorry for long delay, finally managed to set up the board with recent kernel
to test the fsl-viu driver patches.

> Ideally I'd like to see the output of the v4l2-compliance tool (found in
> the http://git.linuxtv.org/v4l-utils.git repository). I know that there are
> remaining issues, especially with the fact that there can be one user at a
> time only (very bad!) and some overlay issues. I can try to fix those, but
> I need someone to test otherwise I won't bother.

Below is the output of the v4l2-compliance:

# v4l2-compliance -v -d 0
Driver Info:
	Driver name   : viu
	Card type     : viu
	Bus info      : platform:viu
	Driver version: 3.9.0
	Capabilities  : 0x85000005
		Video Capture
		Video Overlay
		Read/Write
		Streaming
		Device Capabilities
	Device Caps   : 0x05000005
		Video Capture
		Video Overlay
		Read/Write
		Streaming

Compliance test for device /dev/video0 (not using libv4l2):

Required ioctls:
	test VIDIOC_QUERYCAP: OK

Allow for multiple opens:
	test second video open: FAIL

Debug ioctls:
	test VIDIOC_DBG_G_CHIP_IDENT: OK (Not Supported)
	test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
	test VIDIOC_LOG_STATUS: OK

Input ioctls:
	test VIDIOC_G/S_TUNER: OK (Not Supported)
	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
	test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
	test VIDIOC_ENUMAUDIO: OK (Not Supported)
		fail: v4l2-test-input-output.cpp(415): could set input to invalid input 1
	test VIDIOC_G/S/ENUMINPUT: FAIL
	test VIDIOC_G/S_AUDIO: OK (Not Supported)
	Inputs: 1 Audio Inputs: 0 Tuners: 0

Output ioctls:
	test VIDIOC_G/S_MODULATOR: OK (Not Supported)
	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
	test VIDIOC_ENUMAUDOUT: OK (Not Supported)
	test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
	test VIDIOC_G/S_AUDOUT: OK (Not Supported)
	Outputs: 0 Audio Outputs: 0 Modulators: 0

Control ioctls:
		info: checking v4l2_queryctrl of control 'User Controls' (0x00980001)
		info: checking v4l2_queryctrl of control 'Brightness' (0x00980900)
		info: checking v4l2_queryctrl of control 'Contrast' (0x00980901)
		info: checking v4l2_queryctrl of control 'Saturation' (0x00980902)
		info: checking v4l2_queryctrl of control 'Hue' (0x00980903)
		info: checking v4l2_queryctrl of control 'Chroma AGC' (0x0098091d)
		info: checking v4l2_queryctrl of control 'Chroma Gain' (0x00980924)
		info: checking v4l2_queryctrl of control 'Brightness' (0x00980900)
		info: checking v4l2_queryctrl of control 'Contrast' (0x00980901)
		info: checking v4l2_queryctrl of control 'Saturation' (0x00980902)
		info: checking v4l2_queryctrl of control 'Hue' (0x00980903)
		info: checking v4l2_queryctrl of control 'Chroma AGC' (0x0098091d)
		info: checking v4l2_queryctrl of control 'Chroma Gain' (0x00980924)
	test VIDIOC_QUERYCTRL/MENU: OK
		info: checking control 'User Controls' (0x00980001)
		info: checking control 'Brightness' (0x00980900)
		info: checking control 'Contrast' (0x00980901)
		info: checking control 'Saturation' (0x00980902)
		info: checking control 'Hue' (0x00980903)
		info: checking control 'Chroma AGC' (0x0098091d)
		info: checking control 'Chroma Gain' (0x00980924)
	test VIDIOC_G/S_CTRL: OK
		info: checking extended control 'User Controls' (0x00980001)
		info: checking extended control 'Brightness' (0x00980900)
		info: checking extended control 'Contrast' (0x00980901)
		info: checking extended control 'Saturation' (0x00980902)
		info: checking extended control 'Hue' (0x00980903)
		info: checking extended control 'Chroma AGC' (0x0098091d)
		info: checking extended control 'Chroma Gain' (0x00980924)
	test VIDIOC_G/S/TRY_EXT_CTRLS: OK
		info: checking control event 'User Controls' (0x00980001)
		info: checking control event 'Brightness' (0x00980900)
		info: checking control event 'Contrast' (0x00980901)
		info: checking control event 'Saturation' (0x00980902)
		info: checking control event 'Hue' (0x00980903)
		info: checking control event 'Chroma AGC' (0x0098091d)
		info: checking control event 'Chroma Gain' (0x00980924)
	test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
	test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
	Standard Controls: 7 Private Controls: 0

Input/Output configuration ioctls:
	test VIDIOC_ENUM/G/S/QUERY_STD: OK
	test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
	test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)

Format ioctls:
		fail: v4l2-test-formats.cpp(240): fmtdesc.pixelformat not set
	test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: FAIL
	test VIDIOC_G/S_PARM: OK
		fail: v4l2-test-formats.cpp(339): !fmt.width || !fmt.height
	test VIDIOC_G_FBUF: FAIL
		fail: v4l2-test-formats.cpp(385): !pix.sizeimage
	test VIDIOC_G_FMT: FAIL
	test VIDIOC_TRY_FMT: OK (Not Supported)
	test VIDIOC_S_FMT: OK (Not Supported)
	test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)

Codec ioctls:
	test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
	test VIDIOC_G_ENC_INDEX: OK (Not Supported)
	test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)

Buffer ioctls:
		fail: v4l2-test-buffers.cpp(84): node->node2 == NULL
	test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL

Total: 35, Succeeded: 29, Failed: 6, Warnings: 0


Thanks,

Anatolij

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 0/5] fsl-viu: v4l2 compliance fixes
  2013-03-29 20:10 ` [RFC PATCH 0/5] fsl-viu: v4l2 compliance fixes Anatolij Gustschin
@ 2013-03-29 22:54   ` Hans Verkuil
  0 siblings, 0 replies; 8+ messages in thread
From: Hans Verkuil @ 2013-03-29 22:54 UTC (permalink / raw)
  To: Anatolij Gustschin; +Cc: linux-media

On Fri March 29 2013 21:10:01 Anatolij Gustschin wrote:
> Hi Hans,
> 
> On Sat, 16 Feb 2013 11:18:22 +0100
> Hans Verkuil <hverkuil@xs4all.nl> wrote:
> 
> > This patch series converts fsl-viu to the control framework and provides
> > some additional v4l2 compliance fixes.
> > 
> > Anatolij, are you able to test this?
> 
> Sorry for long delay, finally managed to set up the board with recent kernel
> to test the fsl-viu driver patches.

Great! Thanks!

> 
> > Ideally I'd like to see the output of the v4l2-compliance tool (found in
> > the http://git.linuxtv.org/v4l-utils.git repository). I know that there are
> > remaining issues, especially with the fact that there can be one user at a
> > time only (very bad!) and some overlay issues. I can try to fix those, but
> > I need someone to test otherwise I won't bother.
> 
> Below is the output of the v4l2-compliance:
> 
> # v4l2-compliance -v -d 0
> Driver Info:
> 	Driver name   : viu
> 	Card type     : viu
> 	Bus info      : platform:viu
> 	Driver version: 3.9.0
> 	Capabilities  : 0x85000005
> 		Video Capture
> 		Video Overlay
> 		Read/Write
> 		Streaming
> 		Device Capabilities
> 	Device Caps   : 0x05000005
> 		Video Capture
> 		Video Overlay
> 		Read/Write
> 		Streaming
> 
> Compliance test for device /dev/video0 (not using libv4l2):
> 
> Required ioctls:
> 	test VIDIOC_QUERYCAP: OK
> 
> Allow for multiple opens:
> 	test second video open: FAIL
> 
> Debug ioctls:
> 	test VIDIOC_DBG_G_CHIP_IDENT: OK (Not Supported)
> 	test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
> 	test VIDIOC_LOG_STATUS: OK
> 
> Input ioctls:
> 	test VIDIOC_G/S_TUNER: OK (Not Supported)
> 	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> 	test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> 	test VIDIOC_ENUMAUDIO: OK (Not Supported)
> 		fail: v4l2-test-input-output.cpp(415): could set input to invalid input 1
> 	test VIDIOC_G/S/ENUMINPUT: FAIL
> 	test VIDIOC_G/S_AUDIO: OK (Not Supported)
> 	Inputs: 1 Audio Inputs: 0 Tuners: 0
> 
> Output ioctls:
> 	test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> 	test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> 	test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> 	test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> 	test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> 	Outputs: 0 Audio Outputs: 0 Modulators: 0
> 
> Control ioctls:
> 		info: checking v4l2_queryctrl of control 'User Controls' (0x00980001)
> 		info: checking v4l2_queryctrl of control 'Brightness' (0x00980900)
> 		info: checking v4l2_queryctrl of control 'Contrast' (0x00980901)
> 		info: checking v4l2_queryctrl of control 'Saturation' (0x00980902)
> 		info: checking v4l2_queryctrl of control 'Hue' (0x00980903)
> 		info: checking v4l2_queryctrl of control 'Chroma AGC' (0x0098091d)
> 		info: checking v4l2_queryctrl of control 'Chroma Gain' (0x00980924)
> 		info: checking v4l2_queryctrl of control 'Brightness' (0x00980900)
> 		info: checking v4l2_queryctrl of control 'Contrast' (0x00980901)
> 		info: checking v4l2_queryctrl of control 'Saturation' (0x00980902)
> 		info: checking v4l2_queryctrl of control 'Hue' (0x00980903)
> 		info: checking v4l2_queryctrl of control 'Chroma AGC' (0x0098091d)
> 		info: checking v4l2_queryctrl of control 'Chroma Gain' (0x00980924)
> 	test VIDIOC_QUERYCTRL/MENU: OK
> 		info: checking control 'User Controls' (0x00980001)
> 		info: checking control 'Brightness' (0x00980900)
> 		info: checking control 'Contrast' (0x00980901)
> 		info: checking control 'Saturation' (0x00980902)
> 		info: checking control 'Hue' (0x00980903)
> 		info: checking control 'Chroma AGC' (0x0098091d)
> 		info: checking control 'Chroma Gain' (0x00980924)
> 	test VIDIOC_G/S_CTRL: OK
> 		info: checking extended control 'User Controls' (0x00980001)
> 		info: checking extended control 'Brightness' (0x00980900)
> 		info: checking extended control 'Contrast' (0x00980901)
> 		info: checking extended control 'Saturation' (0x00980902)
> 		info: checking extended control 'Hue' (0x00980903)
> 		info: checking extended control 'Chroma AGC' (0x0098091d)
> 		info: checking extended control 'Chroma Gain' (0x00980924)
> 	test VIDIOC_G/S/TRY_EXT_CTRLS: OK
> 		info: checking control event 'User Controls' (0x00980001)
> 		info: checking control event 'Brightness' (0x00980900)
> 		info: checking control event 'Contrast' (0x00980901)
> 		info: checking control event 'Saturation' (0x00980902)
> 		info: checking control event 'Hue' (0x00980903)
> 		info: checking control event 'Chroma AGC' (0x0098091d)
> 		info: checking control event 'Chroma Gain' (0x00980924)
> 	test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
> 	test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> 	Standard Controls: 7 Private Controls: 0
> 
> Input/Output configuration ioctls:
> 	test VIDIOC_ENUM/G/S/QUERY_STD: OK
> 	test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> 	test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> 
> Format ioctls:
> 		fail: v4l2-test-formats.cpp(240): fmtdesc.pixelformat not set
> 	test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: FAIL
> 	test VIDIOC_G/S_PARM: OK
> 		fail: v4l2-test-formats.cpp(339): !fmt.width || !fmt.height
> 	test VIDIOC_G_FBUF: FAIL
> 		fail: v4l2-test-formats.cpp(385): !pix.sizeimage
> 	test VIDIOC_G_FMT: FAIL
> 	test VIDIOC_TRY_FMT: OK (Not Supported)
> 	test VIDIOC_S_FMT: OK (Not Supported)
> 	test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> 
> Codec ioctls:
> 	test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> 	test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> 	test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
> 
> Buffer ioctls:
> 		fail: v4l2-test-buffers.cpp(84): node->node2 == NULL
> 	test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL
> 
> Total: 35, Succeeded: 29, Failed: 6, Warnings: 0

OK, that's useful.

I have updated my fsl-viu tree to hopefully solve these remaining issues.
It's in the same place, but note that I have rebased it to the latest master.

There are two phases: commit 809f0db15a2d7aa708c3afeb4e766bad7121a8d5 ('fsl-viu:
small fixes') fixes a number of trivial mistakes, the remaining patches
after that attempt to fix the driver limitation that it can have only one open
filehandle at a time, which is quite bad.

However, that's a lot more work and it may well contain bugs, so if you
encounter problems with that, then try again with only the 'small fixes'
patch.

Thanks!

	Hans

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-03-29 22:54 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-16 10:18 [RFC PATCH 0/5] fsl-viu: v4l2 compliance fixes Hans Verkuil
2013-02-16 10:18 ` [RFC PATCH 1/5] fsl-viu: convert to the control framework Hans Verkuil
2013-02-16 10:18   ` [RFC PATCH 2/5] fsl-viu: add device_caps support to querycap Hans Verkuil
2013-02-16 10:18   ` [RFC PATCH 3/5] fsl-viu: fill in colorspace, zero priv, always set field to interlaced Hans Verkuil
2013-02-16 10:18   ` [RFC PATCH 4/5] fsl-viu: remove deprecated use of current_norm Hans Verkuil
2013-02-16 10:18   ` [RFC PATCH 5/5] fsl-viu: add prio and control event support Hans Verkuil
2013-03-29 20:10 ` [RFC PATCH 0/5] fsl-viu: v4l2 compliance fixes Anatolij Gustschin
2013-03-29 22:54   ` Hans Verkuil

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.