Re: [PATCH 7/7] v4l: ti-vpe: Add crop support in VPE driver

2014-03-02 Thread Hans Verkuil
Hi Archit!

On 03/03/2014 08:33 AM, Archit Taneja wrote:
> Add crop ioctl ops. For VPE, cropping only makes sense with the input to VPE, 
> or
> the V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE buffer type.
> 
> For the CAPTURE type, a S_CROP ioctl results in setting the crop region as the
> whole image itself, hence making crop dimensions same as the pix dimensions.
> 
> Setting the crop successfully should result in re-configuration of those
> registers which are affected when either source or destination dimensions
> change, set_srcdst_params() is called for this purpose.
> 
> Some standard crop parameter checks are done in __vpe_try_crop().

Please use the selection ops instead: if you implement cropping with those then 
you'll
support both the selection API and the old cropping API will be implemented by 
the v4l2
core using the selection ops. Two for the price of one...

Regards,

Hans

> 
> Signed-off-by: Archit Taneja 
> ---
>  drivers/media/platform/ti-vpe/vpe.c | 96 
> +
>  1 file changed, 96 insertions(+)
> 
> diff --git a/drivers/media/platform/ti-vpe/vpe.c 
> b/drivers/media/platform/ti-vpe/vpe.c
> index 6acdcd8..c6778f4 100644
> --- a/drivers/media/platform/ti-vpe/vpe.c
> +++ b/drivers/media/platform/ti-vpe/vpe.c
> @@ -1585,6 +1585,98 @@ static int vpe_s_fmt(struct file *file, void *priv, 
> struct v4l2_format *f)
>   return set_srcdst_params(ctx);
>  }
>  
> +static int __vpe_try_crop(struct vpe_ctx *ctx, struct v4l2_crop *cr)
> +{
> + struct vpe_q_data *q_data;
> +
> + q_data = get_q_data(ctx, cr->type);
> + if (!q_data)
> + return -EINVAL;
> +
> + /* we don't support crop on capture plane */
> + if (cr->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {
> + cr->c.top = cr->c.left = 0;
> + cr->c.width = q_data->width;
> + cr->c.height = q_data->height;
> + return 0;
> + }
> +
> + if (cr->c.top < 0 || cr->c.left < 0) {
> + vpe_err(ctx->dev, "negative values for top and left\n");
> + cr->c.top = cr->c.left = 0;
> + }
> +
> + v4l_bound_align_image(&cr->c.width, MIN_W, q_data->width, 1,
> + &cr->c.height, MIN_H, q_data->height, H_ALIGN, S_ALIGN);
> +
> + /* adjust left/top if cropping rectangle is out of bounds */
> + if (cr->c.left + cr->c.width > q_data->width)
> + cr->c.left = q_data->width - cr->c.width;
> + if (cr->c.top + cr->c.height > q_data->height)
> + cr->c.top = q_data->height - cr->c.height;
> +
> + return 0;
> +}
> +
> +static int vpe_cropcap(struct file *file, void *priv, struct v4l2_cropcap 
> *cr)
> +{
> + struct vpe_ctx *ctx = file2ctx(file);
> + struct vpe_q_data *q_data;
> +
> + q_data = get_q_data(ctx, cr->type);
> + if (!q_data)
> + return -EINVAL;
> +
> + cr->bounds.left = 0;
> + cr->bounds.top = 0;
> + cr->bounds.width = q_data->width;
> + cr->bounds.height = q_data->height;
> + cr->defrect = cr->bounds;
> +
> + return 0;
> +}
> +
> +static int vpe_g_crop(struct file *file, void *fh, struct v4l2_crop *cr)
> +{
> + struct vpe_ctx *ctx = file2ctx(file);
> + struct vpe_q_data *q_data;
> +
> + q_data = get_q_data(ctx, cr->type);
> + if (!q_data)
> + return -EINVAL;
> +
> + cr->c = q_data->c_rect;
> +
> + return 0;
> +}
> +
> +static int vpe_s_crop(struct file *file, void *priv,
> + const struct v4l2_crop *crop)
> +{
> + struct vpe_ctx *ctx = file2ctx(file);
> + struct vpe_q_data *q_data;
> + struct v4l2_crop cr = *crop;
> + int ret;
> +
> + ret = __vpe_try_crop(ctx, &cr);
> + if (ret)
> + return ret;
> +
> + q_data = get_q_data(ctx, cr.type);
> +
> + if ((q_data->c_rect.left == cr.c.left) &&
> + (q_data->c_rect.top == cr.c.top) &&
> + (q_data->c_rect.width == cr.c.width) &&
> + (q_data->c_rect.height == cr.c.height)) {
> + vpe_dbg(ctx->dev, "requested crop values are already set\n");
> + return 0;
> + }
> +
> + q_data->c_rect = cr.c;
> +
> + return set_srcdst_params(ctx);
> +}
> +
>  static int vpe_reqbufs(struct file *file, void *priv,
>  struct v4l2_requestbuffers *reqbufs)
>  {
> @@ -1672,6 +1764,10 @@ static const struct v4l2_ioctl_ops vpe_ioctl_ops = {
>   .vidioc_try_fmt_vid_out_mplane  = vpe_try_fmt,
>   .vidioc_s_fmt_vid_out_mplane= vpe_s_fmt,
>  
> + .vidioc_cropcap = vpe_cropcap,
> + .vidioc_g_crop  = vpe_g_crop,
> + .vidioc_s_crop  = vpe_s_crop,
> +
>   .vidioc_reqbufs = vpe_reqbufs,
>   .vidioc_querybuf= vpe_querybuf,
>  
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.h

[PATCH 2/7] v4l: ti-vpe: register video device only when firmware is loaded

2014-03-02 Thread Archit Taneja
vpe fops(vpe_open in particular) should be called only when VPDMA firmware
is loaded. File operations on the video device are possible the moment it is
registered.

Currently, we register the video device for VPE at driver probe, after calling
a vpdma helper to initialize VPDMA and load firmware. This function is
non-blocking(it calls request_firmware_nowait()), and doesn't ensure that the
firmware is actually loaded when it returns.

We remove the device registration from vpe probe, and move it to a callback
provided by the vpe driver to the vpdma library, through vpdma_create().

The ready field in vpdma_data is no longer needed since we always have firmware
loaded before the device is registered.

A minor problem with this approach is that if the video_register_device
fails(which doesn't really happen), the vpe platform device would be registered.
however, there won't be any v4l2 device corresponding to it.

Signed-off-by: Archit Taneja 
---
 drivers/media/platform/ti-vpe/vpdma.c |  8 +++--
 drivers/media/platform/ti-vpe/vpdma.h |  7 +++--
 drivers/media/platform/ti-vpe/vpe.c   | 55 ---
 3 files changed, 41 insertions(+), 29 deletions(-)

diff --git a/drivers/media/platform/ti-vpe/vpdma.c 
b/drivers/media/platform/ti-vpe/vpdma.c
index e8175e7..73dd38e 100644
--- a/drivers/media/platform/ti-vpe/vpdma.c
+++ b/drivers/media/platform/ti-vpe/vpdma.c
@@ -781,7 +781,7 @@ static void vpdma_firmware_cb(const struct firmware *f, 
void *context)
/* already initialized */
if (read_field_reg(vpdma, VPDMA_LIST_ATTR, VPDMA_LIST_RDY_MASK,
VPDMA_LIST_RDY_SHFT)) {
-   vpdma->ready = true;
+   vpdma->cb(vpdma->pdev);
return;
}
 
@@ -811,7 +811,7 @@ static void vpdma_firmware_cb(const struct firmware *f, 
void *context)
goto free_buf;
}
 
-   vpdma->ready = true;
+   vpdma->cb(vpdma->pdev);
 
 free_buf:
vpdma_unmap_desc_buf(vpdma, &fw_dma_buf);
@@ -839,7 +839,8 @@ static int vpdma_load_firmware(struct vpdma_data *vpdma)
return 0;
 }
 
-struct vpdma_data *vpdma_create(struct platform_device *pdev)
+struct vpdma_data *vpdma_create(struct platform_device *pdev,
+   void (*cb)(struct platform_device *pdev))
 {
struct resource *res;
struct vpdma_data *vpdma;
@@ -854,6 +855,7 @@ struct vpdma_data *vpdma_create(struct platform_device 
*pdev)
}
 
vpdma->pdev = pdev;
+   vpdma->cb = cb;
 
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "vpdma");
if (res == NULL) {
diff --git a/drivers/media/platform/ti-vpe/vpdma.h 
b/drivers/media/platform/ti-vpe/vpdma.h
index cf40f11..bf5f8bb 100644
--- a/drivers/media/platform/ti-vpe/vpdma.h
+++ b/drivers/media/platform/ti-vpe/vpdma.h
@@ -35,8 +35,8 @@ struct vpdma_data {
 
struct platform_device  *pdev;
 
-   /* tells whether vpdma firmware is loaded or not */
-   bool ready;
+   /* callback to VPE driver when the firmware is loaded */
+   void (*cb)(struct platform_device *pdev);
 };
 
 enum vpdma_data_format_type {
@@ -208,6 +208,7 @@ void vpdma_set_frame_start_event(struct vpdma_data *vpdma,
 void vpdma_dump_regs(struct vpdma_data *vpdma);
 
 /* initialize vpdma, passed with VPE's platform device pointer */
-struct vpdma_data *vpdma_create(struct platform_device *pdev);
+struct vpdma_data *vpdma_create(struct platform_device *pdev,
+   void (*cb)(struct platform_device *pdev));
 
 #endif
diff --git a/drivers/media/platform/ti-vpe/vpe.c 
b/drivers/media/platform/ti-vpe/vpe.c
index 623e59e..4243687 100644
--- a/drivers/media/platform/ti-vpe/vpe.c
+++ b/drivers/media/platform/ti-vpe/vpe.c
@@ -1815,11 +1815,6 @@ static int vpe_open(struct file *file)
 
vpe_dbg(dev, "vpe_open\n");
 
-   if (!dev->vpdma->ready) {
-   vpe_err(dev, "vpdma firmware not loaded\n");
-   return -ENODEV;
-   }
-
ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
if (!ctx)
return -ENOMEM;
@@ -2037,10 +2032,40 @@ static void vpe_runtime_put(struct platform_device 
*pdev)
WARN_ON(r < 0 && r != -ENOSYS);
 }
 
+static void vpe_fw_cb(struct platform_device *pdev)
+{
+   struct vpe_dev *dev = platform_get_drvdata(pdev);
+   struct video_device *vfd;
+   int ret;
+
+   vfd = &dev->vfd;
+   *vfd = vpe_videodev;
+   vfd->lock = &dev->dev_mutex;
+   vfd->v4l2_dev = &dev->v4l2_dev;
+
+   ret = video_register_device(vfd, VFL_TYPE_GRABBER, 0);
+   if (ret) {
+   vpe_err(dev, "Failed to register video device\n");
+
+   vpe_set_clock_enable(dev, 0);
+   vpe_runtime_put(pdev);
+   pm_runtime_disable(&pdev->dev);
+   v4l2_m2m_release(dev->m2m_dev);
+   vb2_dma_contig_cleanup_ctx(dev->alloc_ctx);
+   v4l2_device_unregister(&dev->v4l2_dev);
+
+   return;
+   }
+
+

[PATCH 6/7] v4l: ti-vpe: Fix some params in VPE data descriptors

2014-03-02 Thread Archit Taneja
Some parameters of the VPE descriptors were understood incorrectly. They are now
fixed. The fixes are explained as follows:

- When adding an inbound data descriptor to the VPDMA descriptor list, we intend
  to use c_rect as the cropped region fetched by VPDMA. Therefore, c_rect->width
  shouldn't be used to calculate the line stride, the original image width
  should be used for that. We add a 'width' argument which gives the buffer
  width in memory.

- frame_width and frame_height describe the complete width and height of the
  client to which the channel is connected. If there are multiple channels
  fetching data and providing to the same client, the above 2 arguments should
  be the width and height of the region covered by all the channels. In the case
  where there is only one channel providing pixel data to the client
  (like in VPE), frame_width and frame_height should be the cropped width and
  cropped height respectively. The calculation of these params is done in the
  vpe driver now.

- start_h and start_v is also used in the case of multiple channels to describe
  where each channel should start filling pixel data. We don't use this in VPE,
  and pass 0s to the vpdma_add_in_dtd() helper.

- Some minor changes are made to the vpdma_add_out_dtd() helper. The c_rect
  param is removed since cropping isn't possible for outbound data, and 'width'
  is added to calculate the line stride.

Signed-off-by: Archit Taneja 
---
 drivers/media/platform/ti-vpe/vpdma.c | 50 ++-
 drivers/media/platform/ti-vpe/vpdma.h |  9 ---
 drivers/media/platform/ti-vpe/vpe.c   | 16 +++
 3 files changed, 53 insertions(+), 22 deletions(-)

diff --git a/drivers/media/platform/ti-vpe/vpdma.c 
b/drivers/media/platform/ti-vpe/vpdma.c
index 73dd38e..7248f16 100644
--- a/drivers/media/platform/ti-vpe/vpdma.c
+++ b/drivers/media/platform/ti-vpe/vpdma.c
@@ -614,8 +614,15 @@ static void dump_dtd(struct vpdma_dtd *dtd)
 /*
  * append an outbound data transfer descriptor to the given descriptor list,
  * this sets up a 'client to memory' VPDMA transfer for the given VPDMA channel
+ *
+ * @list: vpdma desc list to which we add this decriptor
+ * @width: width of the image in pixels in memory
+ * @fmt: vpdma data format of the buffer
+ * dma_addr: dma address as seen by VPDMA
+ * chan: VPDMA channel
+ * flags: VPDMA flags to configure some descriptor fileds
  */
-void vpdma_add_out_dtd(struct vpdma_desc_list *list, struct v4l2_rect *c_rect,
+void vpdma_add_out_dtd(struct vpdma_desc_list *list, int width,
const struct vpdma_data_format *fmt, dma_addr_t dma_addr,
enum vpdma_channel chan, u32 flags)
 {
@@ -633,8 +640,7 @@ void vpdma_add_out_dtd(struct vpdma_desc_list *list, struct 
v4l2_rect *c_rect,
fmt->data_type == DATA_TYPE_C420)
depth = 8;
 
-   stride = ALIGN((depth * c_rect->width) >> 3, VPDMA_STRIDE_ALIGN);
-   dma_addr += (c_rect->left * depth) >> 3;
+   stride = ALIGN((depth * width) >> 3, VPDMA_STRIDE_ALIGN);
 
dtd = list->next;
WARN_ON((void *)(dtd + 1) > (list->buf.addr + list->buf.size));
@@ -664,31 +670,48 @@ void vpdma_add_out_dtd(struct vpdma_desc_list *list, 
struct v4l2_rect *c_rect,
 /*
  * append an inbound data transfer descriptor to the given descriptor list,
  * this sets up a 'memory to client' VPDMA transfer for the given VPDMA channel
+ *
+ * @list: vpdma desc list to which we add this decriptor
+ * @width: width of the image in pixels in memory(not the cropped width)
+ * @c_rect: crop params of input image
+ * @fmt: vpdma data format of the buffer
+ * dma_addr: dma address as seen by VPDMA
+ * chan: VPDMA channel
+ * field: top or bottom field info of the input image
+ * flags: VPDMA flags to configure some descriptor fileds
+ * frame_width/height: the complete width/height of the image presented to the
+ * client (this makes sense when multiple channels are
+ * connected to the same client, forming a larger frame)
+ * start_h, start_v: position where the given channel starts providing pixel
+ * data to the client (makes sense when multiple channels
+ * contribute to the client)
  */
-void vpdma_add_in_dtd(struct vpdma_desc_list *list, int frame_width,
-   int frame_height, struct v4l2_rect *c_rect,
+void vpdma_add_in_dtd(struct vpdma_desc_list *list, int width,
+   const struct v4l2_rect *c_rect,
const struct vpdma_data_format *fmt, dma_addr_t dma_addr,
-   enum vpdma_channel chan, int field, u32 flags)
+   enum vpdma_channel chan, int field, u32 flags, int frame_width,
+   int frame_height, int start_h, int start_v)
 {
int priority = 0;
int notify = 1;
int depth = fmt->depth;
int channel, next_chan;
+   struct v4l2_rect rect = *c_rect;
int stride;
-   int height = c_

[PATCH 7/7] v4l: ti-vpe: Add crop support in VPE driver

2014-03-02 Thread Archit Taneja
Add crop ioctl ops. For VPE, cropping only makes sense with the input to VPE, or
the V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE buffer type.

For the CAPTURE type, a S_CROP ioctl results in setting the crop region as the
whole image itself, hence making crop dimensions same as the pix dimensions.

Setting the crop successfully should result in re-configuration of those
registers which are affected when either source or destination dimensions
change, set_srcdst_params() is called for this purpose.

Some standard crop parameter checks are done in __vpe_try_crop().

Signed-off-by: Archit Taneja 
---
 drivers/media/platform/ti-vpe/vpe.c | 96 +
 1 file changed, 96 insertions(+)

diff --git a/drivers/media/platform/ti-vpe/vpe.c 
b/drivers/media/platform/ti-vpe/vpe.c
index 6acdcd8..c6778f4 100644
--- a/drivers/media/platform/ti-vpe/vpe.c
+++ b/drivers/media/platform/ti-vpe/vpe.c
@@ -1585,6 +1585,98 @@ static int vpe_s_fmt(struct file *file, void *priv, 
struct v4l2_format *f)
return set_srcdst_params(ctx);
 }
 
+static int __vpe_try_crop(struct vpe_ctx *ctx, struct v4l2_crop *cr)
+{
+   struct vpe_q_data *q_data;
+
+   q_data = get_q_data(ctx, cr->type);
+   if (!q_data)
+   return -EINVAL;
+
+   /* we don't support crop on capture plane */
+   if (cr->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {
+   cr->c.top = cr->c.left = 0;
+   cr->c.width = q_data->width;
+   cr->c.height = q_data->height;
+   return 0;
+   }
+
+   if (cr->c.top < 0 || cr->c.left < 0) {
+   vpe_err(ctx->dev, "negative values for top and left\n");
+   cr->c.top = cr->c.left = 0;
+   }
+
+   v4l_bound_align_image(&cr->c.width, MIN_W, q_data->width, 1,
+   &cr->c.height, MIN_H, q_data->height, H_ALIGN, S_ALIGN);
+
+   /* adjust left/top if cropping rectangle is out of bounds */
+   if (cr->c.left + cr->c.width > q_data->width)
+   cr->c.left = q_data->width - cr->c.width;
+   if (cr->c.top + cr->c.height > q_data->height)
+   cr->c.top = q_data->height - cr->c.height;
+
+   return 0;
+}
+
+static int vpe_cropcap(struct file *file, void *priv, struct v4l2_cropcap *cr)
+{
+   struct vpe_ctx *ctx = file2ctx(file);
+   struct vpe_q_data *q_data;
+
+   q_data = get_q_data(ctx, cr->type);
+   if (!q_data)
+   return -EINVAL;
+
+   cr->bounds.left = 0;
+   cr->bounds.top = 0;
+   cr->bounds.width = q_data->width;
+   cr->bounds.height = q_data->height;
+   cr->defrect = cr->bounds;
+
+   return 0;
+}
+
+static int vpe_g_crop(struct file *file, void *fh, struct v4l2_crop *cr)
+{
+   struct vpe_ctx *ctx = file2ctx(file);
+   struct vpe_q_data *q_data;
+
+   q_data = get_q_data(ctx, cr->type);
+   if (!q_data)
+   return -EINVAL;
+
+   cr->c = q_data->c_rect;
+
+   return 0;
+}
+
+static int vpe_s_crop(struct file *file, void *priv,
+   const struct v4l2_crop *crop)
+{
+   struct vpe_ctx *ctx = file2ctx(file);
+   struct vpe_q_data *q_data;
+   struct v4l2_crop cr = *crop;
+   int ret;
+
+   ret = __vpe_try_crop(ctx, &cr);
+   if (ret)
+   return ret;
+
+   q_data = get_q_data(ctx, cr.type);
+
+   if ((q_data->c_rect.left == cr.c.left) &&
+   (q_data->c_rect.top == cr.c.top) &&
+   (q_data->c_rect.width == cr.c.width) &&
+   (q_data->c_rect.height == cr.c.height)) {
+   vpe_dbg(ctx->dev, "requested crop values are already set\n");
+   return 0;
+   }
+
+   q_data->c_rect = cr.c;
+
+   return set_srcdst_params(ctx);
+}
+
 static int vpe_reqbufs(struct file *file, void *priv,
   struct v4l2_requestbuffers *reqbufs)
 {
@@ -1672,6 +1764,10 @@ static const struct v4l2_ioctl_ops vpe_ioctl_ops = {
.vidioc_try_fmt_vid_out_mplane  = vpe_try_fmt,
.vidioc_s_fmt_vid_out_mplane= vpe_s_fmt,
 
+   .vidioc_cropcap = vpe_cropcap,
+   .vidioc_g_crop  = vpe_g_crop,
+   .vidioc_s_crop  = vpe_s_crop,
+
.vidioc_reqbufs = vpe_reqbufs,
.vidioc_querybuf= vpe_querybuf,
 
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 0/7] v4l: ti-vpe: Some VPE fixes and enhancements

2014-03-02 Thread Archit Taneja
This patch set mainly consists of minor fixes for the VPE driver. These fixes
ensure the following:

- The VPE module can be inserted and removed successively.
- Make sure that smaller resolutions like qcif work correctly.
- Prevent race condition between firmware loading and an open call to the v4l2
  device.
- Prevent the possibility of output m2m queue not having sufficient 'ready'
  buffers.
- Some VPDMA data descriptor fields weren't understood correctly before. They
  are now used correctly.

The rest of the patches add some minor features like DMA buf support and
cropping.

Reference branch:

g...@github.com:boddob/linux.git vpe_for_315

Archit Taneja (7):
  v4l: ti-vpe: Make sure in job_ready that we have the needed number of
dst_bufs
  v4l: ti-vpe: register video device only when firmware is loaded
  v4l: ti-vpe: Use video_device_release_empty
  v4l: ti-vpe: Allow DMABUF buffer type support
  v4l: ti-vpe: Allow usage of smaller images
  v4l: ti-vpe: Fix some params in VPE data descriptors
  v4l: ti-vpe: Add crop support in VPE driver

 drivers/media/platform/ti-vpe/vpdma.c |  58 ---
 drivers/media/platform/ti-vpe/vpdma.h |  16 +--
 drivers/media/platform/ti-vpe/vpe.c   | 180 +++---
 3 files changed, 198 insertions(+), 56 deletions(-)

-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 5/7] v4l: ti-vpe: Allow usage of smaller images

2014-03-02 Thread Archit Taneja
The minimum width and height for VPE input/output was kept as 128 pixels. VPE
doesn't have a constraint on the image height, it requires the image width to
be atleast 16 bytes.

Change the minimum supported dimensions to 32x32. This allows us to de-interlace
qcif content. A smaller image size than 32x32 didn't make much sense, so stopped
at this.

Signed-off-by: Archit Taneja 
---
 drivers/media/platform/ti-vpe/vpe.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/ti-vpe/vpe.c 
b/drivers/media/platform/ti-vpe/vpe.c
index 915029b..3a610a6 100644
--- a/drivers/media/platform/ti-vpe/vpe.c
+++ b/drivers/media/platform/ti-vpe/vpe.c
@@ -49,8 +49,8 @@
 #define VPE_MODULE_NAME "vpe"
 
 /* minimum and maximum frame sizes */
-#define MIN_W  128
-#define MIN_H  128
+#define MIN_W  32
+#define MIN_H  32
 #define MAX_W  1920
 #define MAX_H  1080
 
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/7] v4l: ti-vpe: Use video_device_release_empty

2014-03-02 Thread Archit Taneja
The video_device struct is currently embedded in the driver data struct vpe_dev.
A vpe_dev instance is allocated by the driver, and the memory for the vfd is a
part of this struct.

The v4l2 core, however, manages the removal of the vfd region, through the
video_device's .release() op, which currently is the helper
video_device_release. This causes memory corruption, and leads to issues when
we try to re-insert the vpe module.

Use the video_device_release_empty helper function instead

Signed-off-by: Archit Taneja 
---
 drivers/media/platform/ti-vpe/vpe.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/ti-vpe/vpe.c 
b/drivers/media/platform/ti-vpe/vpe.c
index 4243687..bb275f4 100644
--- a/drivers/media/platform/ti-vpe/vpe.c
+++ b/drivers/media/platform/ti-vpe/vpe.c
@@ -1998,7 +1998,7 @@ static struct video_device vpe_videodev = {
.fops   = &vpe_fops,
.ioctl_ops  = &vpe_ioctl_ops,
.minor  = -1,
-   .release= video_device_release,
+   .release= video_device_release_empty,
.vfl_dir= VFL_DIR_M2M,
 };
 
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/7] v4l: ti-vpe: Make sure in job_ready that we have the needed number of dst_bufs

2014-03-02 Thread Archit Taneja
VPE has a ctrl parameter which decides how many mem to mem transactions the
active job from the job queue can perform.

The driver's job_ready() made sure that the number of ready source buffers are
sufficient for the job to execute successfully. But it didn't make sure if
there are sufficient ready destination buffers in the capture queue for the
VPE output.

If the time taken by VPE to process a single frame is really slow, then it's
possible that we don't need to imply such a restriction on the dst queue, but
really fast transactions(small resolution, no de-interlacing) may cause us to
hit the condition where we don't have any free buffers for the VPE to write on.

Add the extra check in job_ready() to make sure we have the sufficient amount
of destination buffers.

Signed-off-by: Archit Taneja 
---
 drivers/media/platform/ti-vpe/vpe.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/media/platform/ti-vpe/vpe.c 
b/drivers/media/platform/ti-vpe/vpe.c
index 1296c53..623e59e 100644
--- a/drivers/media/platform/ti-vpe/vpe.c
+++ b/drivers/media/platform/ti-vpe/vpe.c
@@ -887,6 +887,9 @@ static int job_ready(void *priv)
if (v4l2_m2m_num_src_bufs_ready(ctx->m2m_ctx) < needed)
return 0;
 
+   if (v4l2_m2m_num_dst_bufs_ready(ctx->m2m_ctx) < needed)
+   return 0;
+
return 1;
 }
 
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/7] v4l: ti-vpe: Allow DMABUF buffer type support

2014-03-02 Thread Archit Taneja
For OMAP and DRA7x, we generally allocate video and graphics buffers through
omapdrm since the corresponding omap-gem driver provides DMM-Tiler backed
contiguous buffers. omapdrm is a dma-buf exporter. These buffers are used by
other drivers in the video pipeline.

Add VB2_DMABUF flag to the io_modes of the vb2 output and capture queues. This
allows the driver to import dma shared buffers.

Signed-off-by: Archit Taneja 
---
 drivers/media/platform/ti-vpe/vpe.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/ti-vpe/vpe.c 
b/drivers/media/platform/ti-vpe/vpe.c
index bb275f4..915029b 100644
--- a/drivers/media/platform/ti-vpe/vpe.c
+++ b/drivers/media/platform/ti-vpe/vpe.c
@@ -1768,7 +1768,7 @@ static int queue_init(void *priv, struct vb2_queue 
*src_vq,
 
memset(src_vq, 0, sizeof(*src_vq));
src_vq->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
-   src_vq->io_modes = VB2_MMAP;
+   src_vq->io_modes = VB2_MMAP | VB2_DMABUF;
src_vq->drv_priv = ctx;
src_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
src_vq->ops = &vpe_qops;
@@ -1781,7 +1781,7 @@ static int queue_init(void *priv, struct vb2_queue 
*src_vq,
 
memset(dst_vq, 0, sizeof(*dst_vq));
dst_vq->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
-   dst_vq->io_modes = VB2_MMAP;
+   dst_vq->io_modes = VB2_MMAP | VB2_DMABUF;
dst_vq->drv_priv = ctx;
dst_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
dst_vq->ops = &vpe_qops;
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEWv3 PATCH 15/17] vb2: call buf_finish after the state check.

2014-03-02 Thread Sakari Ailus
On Fri, Feb 28, 2014 at 06:42:13PM +0100, Hans Verkuil wrote:
> From: Hans Verkuil 
> 
> Don't call buf_finish unless we know that the buffer is in a valid state.
> 
> Signed-off-by: Hans Verkuil 

Acked-by: Sakari Ailus 

-- 
Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEWv3 PATCH 13/17] vb2: replace BUG by WARN_ON

2014-03-02 Thread Sakari Ailus
On Fri, Feb 28, 2014 at 06:42:11PM +0100, Hans Verkuil wrote:
> From: Hans Verkuil 
> 
> No need to oops for this, WARN_ON is good enough.
> 
> Signed-off-by: Hans Verkuil 

I agree; BUG() is better for something that's always (or almost so)
executed.

Acked-by: Sakari Ailus 

-- 
Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEWv3 PATCH 06/17] vb2: call buf_finish from __queue_cancel.

2014-03-02 Thread Sakari Ailus
On Mon, Mar 03, 2014 at 08:28:05AM +0200, Sakari Ailus wrote:
> On Fri, Feb 28, 2014 at 06:42:04PM +0100, Hans Verkuil wrote:
> > From: Hans Verkuil 
> > 
> > If a queue was canceled, then the buf_finish op was never called for the
> > pending buffers. So add this call to queue_cancel. Before calling buf_finish
> > set the buffer state to PREPARED, which is the correct state. That way the
> > states DONE and ERROR will only be seen in buf_finish if streaming is in
> > progress.
> > 
> > Since buf_finish can now be called from non-streaming state we need to
> > adapt the handful of drivers that actually need to know this.
> > 
> > Signed-off-by: Hans Verkuil 
> 
> Acked-by: Sakari Ailus 

You can replace this by:

Acked-by: Sakari Ailus 

-- 
Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEWv3 PATCH 12/17] vb2: properly clean up PREPARED and QUEUED buffers

2014-03-02 Thread Sakari Ailus
On Fri, Feb 28, 2014 at 06:42:10PM +0100, Hans Verkuil wrote:
> From: Hans Verkuil 
> 
> If __reqbufs was called then existing buffers are freed. However, if that
> happens without ever having started STREAMON, but if buffers have been queued,
> then the buf_finish op is never called.
> 
> Add a call to __vb2_queue_cancel in __reqbufs so that these buffers are
> cleaned up there as well.
> 
> Signed-off-by: Hans Verkuil 

Acked-by: Sakari Ailus 

-- 
Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEWv3 PATCH 06/17] vb2: call buf_finish from __queue_cancel.

2014-03-02 Thread Sakari Ailus
On Fri, Feb 28, 2014 at 06:42:04PM +0100, Hans Verkuil wrote:
> From: Hans Verkuil 
> 
> If a queue was canceled, then the buf_finish op was never called for the
> pending buffers. So add this call to queue_cancel. Before calling buf_finish
> set the buffer state to PREPARED, which is the correct state. That way the
> states DONE and ERROR will only be seen in buf_finish if streaming is in
> progress.
> 
> Since buf_finish can now be called from non-streaming state we need to
> adapt the handful of drivers that actually need to know this.
> 
> Signed-off-by: Hans Verkuil 

Acked-by: Sakari Ailus 

-- 
Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Unknown EM2800 video grabber (card=0)

2014-03-02 Thread Devin Heitmueller
> No idea what's going wrong here, but this dmesg output is definitely
> incomplete.
> Or maybe you modifed the driver and messed things up ? ;-)

My guess is that it's not actually an em28xx device at all (and the
doc the user is referring to refers to some device by the manufacturer
with the same name).

Open it up and send us some hi-res photos of the PCB.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEWv3 PATCH 03/17] vb2: fix PREPARE_BUF regression

2014-03-02 Thread Pawel Osciak
On Sat, Mar 1, 2014 at 2:42 AM, Hans Verkuil  wrote:
> Fix an incorrect test in vb2_internal_qbuf() where only DEQUEUED buffers
> are allowed. But PREPARED buffers are also OK.
>
> Introduced by commit 4138111a27859dcc56a5592c804dd16bb12a23d1
> ("vb2: simplify qbuf/prepare_buf by removing callback").
>
> Signed-off-by: Hans Verkuil 
> Acked-by: Laurent Pinchart 

Acked-by: Pawel Osciak 

> ---
>  drivers/media/v4l2-core/videobuf2-core.c | 8 ++--
>  1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/media/v4l2-core/videobuf2-core.c 
> b/drivers/media/v4l2-core/videobuf2-core.c
> index f1a2857c..909f367 100644
> --- a/drivers/media/v4l2-core/videobuf2-core.c
> +++ b/drivers/media/v4l2-core/videobuf2-core.c
> @@ -1420,11 +1420,6 @@ static int vb2_internal_qbuf(struct vb2_queue *q, 
> struct v4l2_buffer *b)
> return ret;
>
> vb = q->bufs[b->index];
> -   if (vb->state != VB2_BUF_STATE_DEQUEUED) {
> -   dprintk(1, "%s(): invalid buffer state %d\n", __func__,
> -   vb->state);
> -   return -EINVAL;
> -   }
>
> switch (vb->state) {
> case VB2_BUF_STATE_DEQUEUED:
> @@ -1438,7 +1433,8 @@ static int vb2_internal_qbuf(struct vb2_queue *q, 
> struct v4l2_buffer *b)
> dprintk(1, "qbuf: buffer still being prepared\n");
> return -EINVAL;
> default:
> -   dprintk(1, "qbuf: buffer already in use\n");
> +   dprintk(1, "%s(): invalid buffer state %d\n", __func__,
> +   vb->state);
> return -EINVAL;
> }
>
> --
> 1.9.rc1
>



-- 
Best regards,
Pawel Osciak
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [REVIEWv3 PATCH 01/17] vb2: Check if there are buffers before streamon

2014-03-02 Thread Pawel Osciak
On Sat, Mar 1, 2014 at 2:41 AM, Hans Verkuil  wrote:
> From: Ricardo Ribalda Delgado 
>
> This patch adds a test preventing streamon() if there is no buffer
> ready.
>
> Without this patch, a user could call streamon() before
> preparing any buffer. This leads to a situation where if he calls
> close() before calling streamoff() the device is kept streaming.
>
> Signed-off-by: Ricardo Ribalda Delgado 
> Signed-off-by: Hans Verkuil 

Acked-by: Pawel Osciak 

> ---
>  drivers/media/v4l2-core/videobuf2-core.c | 5 +
>  1 file changed, 5 insertions(+)
>
> diff --git a/drivers/media/v4l2-core/videobuf2-core.c 
> b/drivers/media/v4l2-core/videobuf2-core.c
> index 5a5fb7f..a127925 100644
> --- a/drivers/media/v4l2-core/videobuf2-core.c
> +++ b/drivers/media/v4l2-core/videobuf2-core.c
> @@ -1776,6 +1776,11 @@ static int vb2_internal_streamon(struct vb2_queue *q, 
> enum v4l2_buf_type type)
> return 0;
> }
>
> +   if (!q->num_buffers) {
> +   dprintk(1, "streamon: no buffers have been allocated\n");
> +   return -EINVAL;
> +   }
> +
> /*
>  * If any buffers were queued before streamon,
>  * we can now pass them to driver for processing.
> --
> 1.9.rc1
>



-- 
Best regards,
Pawel Osciak
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


cron job: media_tree daily build: ERRORS

2014-03-02 Thread Hans Verkuil
This message is generated daily by a cron job that builds media_tree for
the kernels and architectures in the list below.

Results of the daily build of media_tree:

date:   Mon Mar  3 04:00:26 CET 2014
git branch: test
git hash:   a06b429df49bb50ec1e671123a45147a1d1a6186
gcc version:i686-linux-gcc (GCC) 4.8.2
sparse version: 0.4.5-rc1
host hardware:  x86_64
host os:3.12-6.slh.2-amd64

linux-git-arm-at91: OK
linux-git-arm-davinci: OK
linux-git-arm-exynos: WARNINGS
linux-git-arm-mx: OK
linux-git-arm-omap: OK
linux-git-arm-omap1: OK
linux-git-arm-pxa: OK
linux-git-blackfin: OK
linux-git-i686: OK
linux-git-m32r: OK
linux-git-mips: OK
linux-git-powerpc64: OK
linux-git-sh: OK
linux-git-x86_64: OK
linux-2.6.31.14-i686: ERRORS
linux-2.6.32.27-i686: ERRORS
linux-2.6.33.7-i686: ERRORS
linux-2.6.34.7-i686: ERRORS
linux-2.6.35.9-i686: ERRORS
linux-2.6.36.4-i686: ERRORS
linux-2.6.37.6-i686: ERRORS
linux-2.6.38.8-i686: ERRORS
linux-2.6.39.4-i686: ERRORS
linux-3.0.60-i686: ERRORS
linux-3.1.10-i686: ERRORS
linux-3.2.37-i686: ERRORS
linux-3.3.8-i686: ERRORS
linux-3.4.27-i686: ERRORS
linux-3.5.7-i686: OK
linux-3.6.11-i686: OK
linux-3.7.4-i686: OK
linux-3.8-i686: OK
linux-3.9.2-i686: OK
linux-3.10.1-i686: OK
linux-3.11.1-i686: OK
linux-3.12-i686: OK
linux-3.13-i686: OK
linux-3.14-rc1-i686: OK
linux-2.6.31.14-x86_64: ERRORS
linux-2.6.32.27-x86_64: ERRORS
linux-2.6.33.7-x86_64: ERRORS
linux-2.6.34.7-x86_64: ERRORS
linux-2.6.35.9-x86_64: ERRORS
linux-2.6.36.4-x86_64: ERRORS
linux-2.6.37.6-x86_64: ERRORS
linux-2.6.38.8-x86_64: ERRORS
linux-2.6.39.4-x86_64: ERRORS
linux-3.0.60-x86_64: ERRORS
linux-3.1.10-x86_64: ERRORS
linux-3.2.37-x86_64: ERRORS
linux-3.3.8-x86_64: ERRORS
linux-3.4.27-x86_64: ERRORS
linux-3.5.7-x86_64: OK
linux-3.6.11-x86_64: OK
linux-3.7.4-x86_64: OK
linux-3.8-x86_64: OK
linux-3.9.2-x86_64: OK
linux-3.10.1-x86_64: OK
linux-3.11.1-x86_64: OK
linux-3.12-x86_64: OK
linux-3.13-x86_64: OK
linux-3.14-rc1-x86_64: OK
apps: OK
spec-git: OK
sparse version: 0.4.5-rc1
sparse: ERRORS

Detailed results are available here:

http://www.xs4all.nl/~hverkuil/logs/Monday.log

Full logs are available here:

http://www.xs4all.nl/~hverkuil/logs/Monday.tar.bz2

The Media Infrastructure API from this daily build is here:

http://www.xs4all.nl/~hverkuil/spec/media.html
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Unknown EM2800 video grabber (card=0)

2014-03-02 Thread Frank Schäfer

Am 01.03.2014 10:32, schrieb Jacob Korf:
> Hi there,
>
> I'm trying this video capture stick from Conceptronic, the Home Video
> Creator, but I'm not getting it to work with Linux. I'm using kernel
> version 3.13.5 and I'm on Arch Linux. More information and specs here:
> http://www.conceptronic.net/product.php?id=322&linkid=294.
According to specsheet, it's a em2862 device.
You will need to figure out which demodulator it uses.

>
> This is the output from lsusb -v:
>
> Bus 001 Device 005: ID 1d19:6108 Dexatek Technology Ltd.
> Couldn't open device, some information will be missing
> Device Descriptor:
>   bLength18
>   bDescriptorType 1
>   bcdUSB   2.00
>   bDeviceClass  239 Miscellaneous Device
>   bDeviceSubClass 2 ?
>   bDeviceProtocol 1 Interface Association
>   bMaxPacketSize064
>   idVendor   0x1d19 Dexatek Technology Ltd.
>   idProduct  0x6108
>   bcdDevice   40.01
>   iManufacturer   1
>   iProduct2
>   iSerial 3
>   bNumConfigurations  1
>   Configuration Descriptor:
> bLength 9
> bDescriptorType 2
> wTotalLength  248
> bNumInterfaces  6
6 interfaces ???

> bConfigurationValue 1
> iConfiguration  4
> bmAttributes 0x80
>   (Bus Powered)
> MaxPower  500mA
> Interface Descriptor:
>   bLength 9
>   bDescriptorType 4
>   bInterfaceNumber0
>   bAlternateSetting   0
>   bNumEndpoints   2
>   bInterfaceClass   255 Vendor Specific Class
>   bInterfaceSubClass255 Vendor Specific Subclass
>   bInterfaceProtocol255 Vendor Specific Protocol
>   iInterface 32
>   Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x8e  EP 14 IN
> bmAttributes3
>   Transfer TypeInterrupt
>   Synch Type   None
>   Usage Type   Data
> wMaxPacketSize 0x0020  1x 32 bytes
> bInterval   4
>   Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x0e  EP 14 OUT
> bmAttributes3
>   Transfer TypeInterrupt
>   Synch Type   None
>   Usage Type   Data
> wMaxPacketSize 0x0020  1x 32 bytes
> bInterval   4
> Interface Association:
>   bLength 8
>   bDescriptorType11
>   bFirstInterface 1
>   bInterfaceCount 5
>   bFunctionClass255 Vendor Specific Class
>   bFunctionSubClass 255 Vendor Specific Subclass
>   bFunctionProtocol 255 Vendor Specific Protocol
>   iFunction   0
> Interface Descriptor:
>   bLength 9
>   bDescriptorType 4
>   bInterfaceNumber1
>   bAlternateSetting   0
>   bNumEndpoints   1
>   bInterfaceClass   255 Vendor Specific Class
>   bInterfaceSubClass255 Vendor Specific Subclass
>   bInterfaceProtocol255 Vendor Specific Protocol
>   iInterface  7
>   Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x8f  EP 15 IN
> bmAttributes3
>   Transfer TypeInterrupt
>   Synch Type   None
>   Usage Type   Data
> wMaxPacketSize 0x0008  1x 8 bytes
> bInterval   7
> Interface Descriptor:
>   bLength 9
>   bDescriptorType 4
>   bInterfaceNumber2
>   bAlternateSetting   0
>   bNumEndpoints   1
>   bInterfaceClass   255 Vendor Specific Class
>   bInterfaceSubClass255 Vendor Specific Subclass
>   bInterfaceProtocol255 Vendor Specific Protocol
>   iInterface 20
>   Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x83  EP 3 IN
> bmAttributes2
>   Transfer TypeBulk
>   Synch Type   None
>   Usage Type   Data
> wMaxPacketSize 0x0200  1x 512 bytes
> bInterval   0
> Interface Descriptor:
>   bLength 9
>   bDescriptorType 4
>   bInterfaceNumber2
>   bAlternateSetting   1
>   bNumEndpoints   1
>   bInterfaceClass   255 Vendor Specific Class
>   bInterfaceSubClass255 Vendor Specific Subclass
>   bInterfaceProtocol255 Vendor Specific Protocol
>   iInterfa

Re: [PATCH v2] omap3isp: Fix kerneldoc for _module_sync_is_stopping and isp_isr()

2014-03-02 Thread Laurent Pinchart
Hi Peter,

Thank you for the patch.

On Friday 28 February 2014 18:36:07 Peter Meerwald wrote:
> use the correct name in the comment describing function
> omap3isp_module_sync_is_stopping()
> 
> isp_isr() never returned IRQ_NONE, remove the comment saying so
> 
> Signed-off-by: Peter Meerwald 

Acked-by: Laurent Pinchart 

and applied to my tree.

> ---
>  drivers/media/platform/omap3isp/isp.c | 5 +
>  1 file changed, 1 insertion(+), 4 deletions(-)
> 
> diff --git a/drivers/media/platform/omap3isp/isp.c
> b/drivers/media/platform/omap3isp/isp.c index 5807185..d60a4b7 100644
> --- a/drivers/media/platform/omap3isp/isp.c
> +++ b/drivers/media/platform/omap3isp/isp.c
> @@ -588,9 +588,6 @@ static void isp_isr_sbl(struct isp_device *isp)
>   * @_isp: Pointer to the OMAP3 ISP device
>   *
>   * Handles the corresponding callback if plugged in.
> - *
> - * Returns IRQ_HANDLED when IRQ was correctly handled, or IRQ_NONE when the
> - * IRQ wasn't handled.
>   */
>  static irqreturn_t isp_isr(int irq, void *_isp)
>  {
> @@ -1420,7 +1417,7 @@ int omap3isp_module_sync_idle(struct media_entity *me,
> wait_queue_head_t *wait, }
> 
>  /*
> - * omap3isp_module_sync_is_stopped - Helper to verify if module was
> stopping + * omap3isp_module_sync_is_stopping - Helper to verify if module
> was stopping * @wait: ISP submodule's wait queue for streamoff/interrupt
> synchronization * @stopping: flag which tells module wants to stop
>   *

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Support for Empia 2980 video/audio capture chip set

2014-03-02 Thread Frank Schäfer

Am 27.02.2014 02:47, schrieb Keith Lawson:
> On Mon, Feb 24, 2014 at 06:38:59PM +0100, Frank Schäfer wrote:
>> Am 06.02.2014 13:57, schrieb Keith Lawson:
>>> On Mon, Jan 20, 2014 at 09:08:25PM +0100, Frank Schäfer wrote:
 On 17.01.2014 01:11, Keith Lawson wrote:
> On Wed, Jan 15, 2014 at 10:37:44PM +0100, Frank Schäfer wrote:
>> Am 14.01.2014 01:48, schrieb Keith Lawson:
>>> On 2014-01-12 11:56, Frank Schäfer wrote:
>>>
 On 09.01.2014 02:02, Keith Lawson wrote:

> Hello, I sent the following message to the linux-usb mailing list
> and they suggested I try here. I'm trying to get a "Dazzle Video
> Capture USB V1.0" video capture card working on a Linux device but
> it doesn't
> look like the chip set is supported yet. I believe this card is the
> next version of the Pinnacle VC100 capture card that worked with the
> em28xx kernel module. The hardware vendor that sold the card says that
> this device has an Empia 2980 chip set in it so I'm inquiring about
> support for that chip set. I'm just wondering about the best
> approach for getting the new chip supported in the kernel. Is this
> something the
> em28xx maintainers would naturally address in time or can I assist
> in getting this into the kernel? Here's dmesg from the Debian box
> I'm working on: [ 3198.920619] usb 3-1: new high-speed USB device
> number 5
> usingxhci_hcd [ 3198.939394] usb 3-1: New USB device found,
> idVendor=1b80,idProduct=e60a [ 3198.939399] usb 3-1: New USB device
> strings: Mfr=0, Product=1,SerialNumber=2 [ 3198.939403] usb 3-1:
> Product: Dazzle
> Video Capture USB Audio Device [ 3198.939405] usb 3-1: SerialNumber:
> 0 l440:~$ uname -a Linux l440 3.10-3-amd64 #1 SMP Debian 3.10.11-1
> (2013-09-10) x86_64 GNU/Linux If this isn't the appropriate list to 
> ask
> this question please point me in the right direction. Thanks, Keith
 The em28xx is indeed the dedicated driver for this device, but it's 
 hard
 to say how much work would be necessary to add support for it.
 We currently don't support any em29xx chip yet, but in theory it is 
 just
 an extended em28xx device.
 Whatever that means when it comes to the low level stuff... ;)

>>> What's the best route to get support for this chip added then? Should
>>> I start working on a patch myself or will this just happen during the
>>> course of development of the em28xx module? I'm a developer but
>>> haven't done any kernel hacking so this would likely be a steep
>>> learning curve for me.
>> Can you create USB-Traces of the Windows driver and send us the output
>> of "lsusb -v -d 1b80:e60a" for this device ?
>> That will give us a hint how much work will be needed.
> For the USB-trace will the Win7 logman output do or is there a Win7 
> 64-bit utility like usbsnoop I should use?
 AFAIK the logman output doesn't contain any transferred data.
 SniffUSB would be preferred, but AFAIK it doesn't work with Win 7.
 You may also want to try USBPcap (http://desowin.org/usbpcap/), but
 I don't know if it runs on the 64bit version of Win 7.
 There are also various commercial USB-Sniffers and some of them are
 providing a free trial period/version.
 In any case we need a readable (text) sniffing output.
>>> Thanks for the pointer. I used USBPcap and exported text out of wireshark. 
>>>
>>> Here's the capture of connecting the device: 
>>>
>>> https://www.libertas-tech.com/dazzle_usb_connect.txt
>>>
>>> Here's a capture of the device recording a 1 minute video. This one is 
>>> almost 700 meg so you probably don't want to try and open it in a browser: 
>>>
>>> https://www.libertas-tech.com/dazzle_recording_video.txt 
>>>
>>> I can arrange to get one of these devices in the hands of a developer if 
>>> that would help too. 
>> Sorry for the delay, I'm currently burried under lots other stuff...
> No worries. I know that feeling all too well. 
>
>> I haven't finished evaluating these logs yet, but so far I can say that
>> there's a lot of known stuff but also much new/unknown stuff.
>> Which capturing settings (resolution, video format, ...) did you use for
>> these logs ?
> Someone else did the capture for me since I didn't have a Windows box it 
> would work on. He had it connected to a video camera but didn't have an audio 
> connection so there's no sound.
>
> Here's the settings from the Pinnical software.
>
> The properties of the video are:
>
> Codec   IPB MPEG-2 MP@ML 4:2:0
> Bitrate  8000 kBit/s
> Duration  00:00:05.10
> Color Depth16 Bit
> Frame Aspect4:3
> AlphaNo
> Dimensions720 x 480 px
> Pixel Aspect   0.89
> Framestart  0
> Frames

Re: [PATCH 0/3] media/drx39xyj: fix DJH_DEBUG path null pointer dereferences, and compile errors.

2014-03-02 Thread Mauro Carvalho Chehab
Em Sat, 01 Mar 2014 07:57:42 -0300
Mauro Carvalho Chehab  escreveu:

> Hi Devin,
> 
> Em Fri, 28 Feb 2014 19:13:16 -0500
> Devin Heitmueller  escreveu:
> 
> > Seems kind of strange that I wasn't on the CC for this, since I was the
> > original author of all that code (in fact, DJH are my initials).
> > 
> > Mauro, did you strip off my authorship when you pulled the patches from my
> > tree?
> 
> Thanks for warning me about that!
> 
> Not sure what happened there. The original branch were added back in 2012,
> with the sole reason to provide a way for Patrick Dickey to catch a few
> patches I made on that time with some CodingStyle fixes:
>   
> http://git.linuxtv.org/mchehab/experimental.git/shortlog/refs/heads/drx-j
> 
> There, your name was there as an extra weird "Committer" tag on those 
> changesets:
>   
> http://git.linuxtv.org/mchehab/experimental.git/commit/24d5ed7b19cc19f807264d7d4d56ab48e5cab230
>   
> http://git.linuxtv.org/mchehab/experimental.git/commit/0440897f72b9cf82b8f576fae292b0567ad88239
> 
> The second one also contained a "Tag: tip" on it. So, I suspect that
> something wrong happened when I imported it (either from your tree or
> from some email sent by you or by Patrick). Probably, some broken
> hg-import scripting.
> 
> Anyway, I rebased my tree, fixing those issues, at:
>   
> http://git.linuxtv.org/mchehab/experimental.git/shortlog/refs/heads/drx-j-v3
> 
> I also added a credit at the first patch for Patrick's fixes that
> I suspect it was merged somehow there, based on the comments he
> posted at the mailing list when he sent his 25-patches series:
>   https://lwn.net/Articles/467301/
> 
> Please let me know if you find any other issues on it. Anyway, I'll post
> the patches from my experimental branch at the ML before merging them
> upstream, in order to get a proper review.
> 
> Before that happen, however, I need to fix a serious bug that is
> preventing to watch TV with this frontend, that it is there since the
> first patch.
> 
> To be sure that this is a driver issue, I tested the driver on
> another OS using the original PCTV driver, and it worked.
> 
> However, since the first working version of this driver, it
> is randomly losing MPEG TS packets.
> 
> The bug is intermittent: every time it sets up VSB reception, it loses
> different MPEG TS tables. Sometimes, not a single TS packet is received,
> but, most of the time, it gets ~ 1/10 of the expected number of packets.

Partially found and fixed it with this patch:

http://git.linuxtv.org/mchehab/experimental.git/commitdiff/5cc6dca273e51494c17df5e488aaf223732edb38

After that, it properly receives data at the right rate (~19Mbps) as
generated by DTA-2111.

However, there are still some weird things happening there... While
the bit rate is ~ 19 Mbps, and adding a printk just before calling
dvb_dmx_swfilter() to print the rate is showing the right bitrate
(The signal generator shows it as 19.392.659 bps):

[86213.084891] em28xx_dvb_urb_data_copy: 19428.672 kbps
[86214.087737] em28xx_dvb_urb_data_copy: 19431.680 kbps
[86215.090586] em28xx_dvb_urb_data_copy: 19431.680 kbps
[86216.093433] em28xx_dvb_urb_data_copy: 19431.680 kbps
[86217.096280] em28xx_dvb_urb_data_copy: 19431.680 kbps
[86218.099126] em28xx_dvb_urb_data_copy: 19431.680 kbps
[86219.101971] em28xx_dvb_urb_data_copy: 19431.680 kbps
[86220.104814] em28xx_dvb_urb_data_copy: 19431.680 kbps
[86221.107659] em28xx_dvb_urb_data_copy: 19431.680 kbps
[86222.110519] em28xx_dvb_urb_data_copy: 19430.176 kbps
[86223.113351] em28xx_dvb_urb_data_copy: 19431.680 kbps
[86224.116200] em28xx_dvb_urb_data_copy: 19431.680 kbps
[86225.119047] em28xx_dvb_urb_data_copy: 19431.680 kbps

Using dvbv5-zap on monitor mode only shows about 6.3 Mbps:

 PID  FREQ SPEED   TOTAL
05b6  1.33 p/s  2.0 Kbps2 KB
06a5  4.57 p/s  6.7 Kbps   10 KB
07cf  4.40 p/s  6.5 Kbps9 KB
0a93   1200.38 p/s   1763.1 Kbps 2651 KB
0f75  2.66 p/s  3.9 Kbps5 KB
1743  5.49 p/s  8.1 Kbps   12 KB
18c4   1205.04 p/s   1769.9 Kbps 2661 KB
197a  4.65 p/s  6.8 Kbps   10 KB
1c15  4.99 p/s  7.3 Kbps   11 KB
1c68   1286.40 p/s   1889.4 Kbps 2841 KB
1d4b  4.32 p/s  6.3 Kbps9 KB
1fb2  4.07 p/s  6.0 Kbps8 KB
1fff  2.33 p/s  3.4 Kbps5 KB
TOT4319.15 p/s   6343.7 Kbps 9541 KB


Lock   (0x1f) Signal= 71.00% C/N= 0.42% UCB= 273 postBER= 0

It seems that most of the packets are without the 0x47 sync byte there.

In order to compare with another frontend, this is what it is seen
with WinTV Aero-A (model 72251, rev D3F0):


 PID  FREQ SPEED   TOTAL
 15.87 p/s 23.3 Kbps   29 KB
0010  6.39 p/s  9.4 Kbps   11 KB
0011  11754.82 p/s  17264.9 Kbps21617 KB
0014312.27 p/s458.6 Kbps  574 KB
0015156.03 p/s229.2 Kbps  286 KB
001f  1.70 p/s  2.5 Kbps3 KB

[GIT PULL FOR v3.15] DocBook build fix

2014-03-02 Thread Sakari Ailus
Hi Mauro,

Here's a trivial fix for the DocBook build. Please pull.

The following changes since commit a06b429df49bb50ec1e671123a45147a1d1a6186:

  [media] au0828: rework GPIO management for HVR-950q (2014-02-28 15:21:31 
-0300)

are available in the git repository at:

  ssh://linuxtv.org/git/sailus/media_tree.git v4l2-doc-fix

for you to fetch changes up to 8a7beb0cc41415f50c13bedc4dc13a4a49895839:

  v4l: Trivial documentation fix (2014-03-02 17:23:36 +0200)


Sakari Ailus (1):
  v4l: Trivial documentation fix

 Documentation/DocBook/media/v4l/controls.xml |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[GIT PULL FOR v3.15] Fix buffer timestamp documentation, add new timestamp flags

2014-03-02 Thread Sakari Ailus
Hi Mauro,

Here's the long overdue timestamp flag patchset. Buffers are stamped at
frame end now by default, and a new timestamp source buffer flag mask is
introduced. Some fixes to a few mem2mem drivers are also included.

Changes since the review: fix documentation build in io.xml in the last
patch; xref linkend tag was missing the final slash ("/"); it's now there.

Please pull.


The following changes since commit a06b429df49bb50ec1e671123a45147a1d1a6186:

  [media] au0828: rework GPIO management for HVR-950q (2014-02-28 15:21:31 
-0300)

are available in the git repository at:

  ssh://linuxtv.org/git/sailus/media_tree.git timestamp-buf-ready

for you to fetch changes up to 98ff8bb775df6f5990a56ac90f0957670a1991a5:

  v4l: Document timestamp buffer flag behaviour (2014-03-02 17:31:38 +0200)


Hans Verkuil (1):
  vb2: fix timecode and flags handling for output buffers

Sakari Ailus (10):
  v4l: Document timestamp behaviour to correspond to reality
  v4l: Use full 32 bits for buffer flags
  v4l: Rename vb2_queue.timestamp_type as timestamp_flags
  v4l: Timestamp flags will soon contain timestamp source, not just type
  v4l: Add timestamp source flags, mask and document them
  v4l: Handle buffer timestamp flags correctly
  uvcvideo: Tell the user space we're using start-of-exposure timestamps
  exynos-gsc, m2m-deinterlace, mx2_emmaprp: Copy v4l2_buffer data from src 
to dst
  v4l: Copy timestamp source flags to destination on m2m devices
  v4l: Document timestamp buffer flag behaviour

 Documentation/DocBook/media/v4l/io.xml |  124 ++--
 drivers/media/parport/bw-qcam.c|2 +-
 drivers/media/platform/blackfin/bfin_capture.c |2 +-
 drivers/media/platform/coda.c  |7 +-
 drivers/media/platform/davinci/vpbe_display.c  |2 +-
 drivers/media/platform/davinci/vpif_capture.c  |2 +-
 drivers/media/platform/davinci/vpif_display.c  |2 +-
 drivers/media/platform/exynos-gsc/gsc-m2m.c|   12 +-
 drivers/media/platform/exynos4-is/fimc-capture.c   |2 +-
 drivers/media/platform/exynos4-is/fimc-lite.c  |2 +-
 drivers/media/platform/exynos4-is/fimc-m2m.c   |7 +-
 drivers/media/platform/m2m-deinterlace.c   |   11 +-
 drivers/media/platform/mem2mem_testdev.c   |7 +-
 drivers/media/platform/mx2_emmaprp.c   |   13 +-
 drivers/media/platform/s3c-camif/camif-capture.c   |2 +-
 drivers/media/platform/s5p-g2d/g2d.c   |7 +-
 drivers/media/platform/s5p-jpeg/jpeg-core.c|7 +-
 drivers/media/platform/s5p-mfc/s5p_mfc.c   |9 +-
 drivers/media/platform/soc_camera/atmel-isi.c  |2 +-
 drivers/media/platform/soc_camera/mx2_camera.c |2 +-
 drivers/media/platform/soc_camera/mx3_camera.c |2 +-
 drivers/media/platform/soc_camera/rcar_vin.c   |2 +-
 .../platform/soc_camera/sh_mobile_ceu_camera.c |2 +-
 drivers/media/platform/ti-vpe/vpe.c|6 +-
 drivers/media/platform/vivi.c  |2 +-
 drivers/media/platform/vsp1/vsp1_video.c   |2 +-
 drivers/media/usb/em28xx/em28xx-video.c|4 +-
 drivers/media/usb/pwc/pwc-if.c |2 +-
 drivers/media/usb/stk1160/stk1160-v4l.c|2 +-
 drivers/media/usb/usbtv/usbtv-video.c  |2 +-
 drivers/media/usb/uvc/uvc_queue.c  |3 +-
 drivers/media/v4l2-core/videobuf2-core.c   |   64 +-
 include/media/videobuf2-core.h |4 +-
 include/uapi/linux/videodev2.h |   42 ---
 34 files changed, 236 insertions(+), 127 deletions(-)

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/1] v4l: Trivial documentation fix

2014-03-02 Thread Sakari Ailus
Remove one quotation mark. This fixes DocBook documentation build.

Signed-off-by: Sakari Ailus 
---
 Documentation/DocBook/media/v4l/controls.xml |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/DocBook/media/v4l/controls.xml 
b/Documentation/DocBook/media/v4l/controls.xml
index 0e1770c..b7f3feb 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -2259,7 +2259,7 @@ VBV buffer control.
  
 
  
- 
+ 
V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE 
integer
  
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] [media] s5p-fimc: Remove reference to outdated macro

2014-03-02 Thread Sylwester Nawrocki

On 02/12/2014 11:08 AM, Paul Bolle wrote:

The Kconfig symbol S5P_SETUP_MIPIPHY was removed in v3.13. Remove a
reference to its macro from a list of Kconfig options.

Signed-off-by: Paul Bolle
---
See commit e66f233dc7f7 ("ARM: Samsung: Remove the MIPI PHY setup
code"). Should one or more options be added to replace
S5P_SETUP_MIPIPHY? I couldn't say. It's safe to remove this one anyway.


Thanks, patch applied.

There has been also a related patch posted for the MIPI CSIS/DSIM PHY
driver: http://www.spinics.net/lists/linux-samsung-soc/msg26773.html


  Documentation/video4linux/fimc.txt | 5 ++---
  1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/Documentation/video4linux/fimc.txt 
b/Documentation/video4linux/fimc.txt
index e51f1b5..7d6e160 100644
--- a/Documentation/video4linux/fimc.txt
+++ b/Documentation/video4linux/fimc.txt
@@ -151,9 +151,8 @@ CONFIG_S5P_DEV_FIMC1  \
  CONFIG_S5P_DEV_FIMC2  |optional
  CONFIG_S5P_DEV_FIMC3  |
  CONFIG_S5P_SETUP_FIMC /
-CONFIG_S5P_SETUP_MIPIPHY \
-CONFIG_S5P_DEV_CSIS0 | optional for MIPI-CSI interface
-CONFIG_S5P_DEV_CSIS1 /
+CONFIG_S5P_DEV_CSIS0  \optional for MIPI-CSI interface
+CONFIG_S5P_DEV_CSIS1  /


--
Regards,
Sylwester
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] media DocBook: fix NV16M description.

2014-03-02 Thread Laurent Pinchart
Hi Hans,

Thank you for the patch.

On Sunday 02 March 2014 10:43:12 Hans Verkuil wrote:
> The NV16M description contained some copy-and-paste text from NV12M,
> suggesting that this format is a 4:2:0 format when it really is a
> 4:2:2 format.
> 
> Fixed the text.
> 
> Signed-off-by: Hans Verkuil 

Acked-by: Laurent Pinchart 

> ---
>  Documentation/DocBook/media/v4l/pixfmt-nv16m.xml | 9 -
>  1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
> b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml index c51d5a4..fb2b5e3
> 100644
> --- a/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
> +++ b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
> @@ -12,18 +12,17 @@
>
>   Description
> 
> - This is a multi-planar, two-plane version of the YUV 4:2:0 format.
> + This is a multi-planar, two-plane version of the YUV 4:2:2 format.
>  The three components are separated into two sub-images or planes.
>  V4L2_PIX_FMT_NV16M differs from
> V4L2_PIX_FMT_NV16  in that the two planes are
> non-contiguous in memory, i.e. the chroma -plane does not necessarily
> immediately follows the luma plane.
> +plane does not necessarily immediately follow the luma plane.
>  The luminance data occupies the first plane. The Y plane has one byte per
> pixel. In the second plane there is chrominance data with alternating
> chroma samples. The CbCr plane is the same width and height, in bytes, as
> the Y plane. -Each CbCr pair belongs to four pixels. For example,
> +Each CbCr pair belongs to two pixels. For example,
>  Cb0/Cr0 belongs to
> -Y'00, Y'01,
> -Y'10, Y'11.
> +Y'00, Y'01.
>  V4L2_PIX_FMT_NV61M is the same as
> V4L2_PIX_FMT_NV16M except the Cb and Cr bytes are
> swapped, the CrCb plane starts with a Cr byte.

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] media DocBook: fix NV16M description.

2014-03-02 Thread Hans Verkuil
The NV16M description contained some copy-and-paste text from NV12M,
suggesting that this format is a 4:2:0 format when it really is a
4:2:2 format.

Fixed the text.

Signed-off-by: Hans Verkuil 
---
 Documentation/DocBook/media/v4l/pixfmt-nv16m.xml | 9 -
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml 
b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
index c51d5a4..fb2b5e3 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
@@ -12,18 +12,17 @@
   
Description
 
-   This is a multi-planar, two-plane version of the YUV 4:2:0 format.
+   This is a multi-planar, two-plane version of the YUV 4:2:2 format.
 The three components are separated into two sub-images or planes.
 V4L2_PIX_FMT_NV16M differs from 
V4L2_PIX_FMT_NV16
  in that the two planes are non-contiguous in memory, i.e. the 
chroma
-plane does not necessarily immediately follows the luma plane.
+plane does not necessarily immediately follow the luma plane.
 The luminance data occupies the first plane. The Y plane has one byte per 
pixel.
 In the second plane there is chrominance data with alternating chroma samples.
 The CbCr plane is the same width and height, in bytes, as the Y plane.
-Each CbCr pair belongs to four pixels. For example,
+Each CbCr pair belongs to two pixels. For example,
 Cb0/Cr0 belongs to
-Y'00, Y'01,
-Y'10, Y'11.
+Y'00, Y'01.
 V4L2_PIX_FMT_NV61M is the same as 
V4L2_PIX_FMT_NV16M
 except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr 
byte.
 
-- 
1.9.rc1

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html