[PATCH v2] media: v4l2-ctrls: add control for test pattern

2012-09-07 Thread Prabhakar Lad
From: Lad, Prabhakar prabhakar@ti.com

add V4L2_CID_TEST_PATTERN of type menu, which determines
the internal test pattern selected by the device.

Signed-off-by: Lad, Prabhakar prabhakar@ti.com
Signed-off-by: Manjunath Hadli manjunath.ha...@ti.com
Cc: Sakari Ailus sakari.ai...@iki.fi
Cc: Hans Verkuil hans.verk...@cisco.com
Cc: Laurent Pinchart laurent.pinch...@ideasonboard.com
Cc: Mauro Carvalho Chehab mche...@infradead.org
Cc: Sylwester Nawrocki s.nawro...@samsung.com
Cc: Hans de Goede hdego...@redhat.com
Cc: Kyungmin Park kyungmin.p...@samsung.com
Cc: Rob Landley r...@landley.net
---
This patches has one checkpatch warning for line over
80 characters altough it can be avoided I have kept it
for consistency.

Changes for v2:
1: Included display devices in the description for test pattern
   as pointed by Hans.
2: In the menu replaced 'Test Pattern Disabled' by 'Disabled' as
   pointed by Sylwester.
3: Removed the test patterns from menu as the are hardware specific
   as pointed by Sakari.

 Documentation/DocBook/media/v4l/controls.xml |   20 
 drivers/media/v4l2-core/v4l2-ctrls.c |8 
 include/linux/videodev2.h|4 
 3 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/controls.xml 
b/Documentation/DocBook/media/v4l/controls.xml
index ad873ea..173934e 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -4311,6 +4311,26 @@ interface and may change in the future./para
  /tbody
/entrytbl
  /row
+ row
+   entry 
spanname=idconstantV4L2_CID_TEST_PATTERN/constant/entry
+   entrymenu/entry
+ /row
+ row id=v4l2-test-pattern
+   entry spanname=descr The Capture/Display/Sensors have the 
capability
+   to generate internal test patterns and this are hardware specific. 
This
+   test patterns are used to test a device is properly working and can 
generate
+   the desired waveforms that it supports./entry
+ /row
+ row
+   entrytbl spanname=descr cols=2
+ tbody valign=top
+   row
+entryconstantV4L2_TEST_PATTERN_DISABLED/constant/entry
+ entryTest pattern generation is disabled/entry
+   /row
+ /tbody
+   /entrytbl
+ /row
rowentry/entry/row
/tbody
   /tgroup
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c 
b/drivers/media/v4l2-core/v4l2-ctrls.c
index 8f2f40b..d731422 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -430,6 +430,10 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
Advanced,
NULL,
};
+   static const char * const test_pattern[] = {
+   Disabled,
+   NULL,
+   };
 
switch (id) {
case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
@@ -509,6 +513,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
return jpeg_chroma_subsampling;
case V4L2_CID_DPCM_PREDICTOR:
return dpcm_predictor;
+   case V4L2_CID_TEST_PATTERN:
+   return test_pattern;
 
default:
return NULL;
@@ -740,6 +746,7 @@ const char *v4l2_ctrl_get_name(u32 id)
case V4L2_CID_LINK_FREQ:return Link Frequency;
case V4L2_CID_PIXEL_RATE:   return Pixel Rate;
case V4L2_CID_DPCM_PREDICTOR:   return DPCM Predictor;
+   case V4L2_CID_TEST_PATTERN: return Test Pattern;
 
default:
return NULL;
@@ -841,6 +848,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum 
v4l2_ctrl_type *type,
case V4L2_CID_EXPOSURE_METERING:
case V4L2_CID_SCENE_MODE:
case V4L2_CID_DPCM_PREDICTOR:
+   case V4L2_CID_TEST_PATTERN:
*type = V4L2_CTRL_TYPE_MENU;
break;
case V4L2_CID_LINK_FREQ:
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index ca9fb78..6a2d499 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -2005,6 +2005,10 @@ enum v4l2_dpcm_predictor {
V4L2_DPCM_PREDICTOR_SIMPLE  = 0,
V4L2_DPCM_PREDICTOR_ADVANCED= 1,
 };
+#define V4L2_CID_TEST_PATTERN  (V4L2_CID_IMAGE_PROC_CLASS_BASE 
+ 4)
+enum v4l2_test_pattern {
+   V4L2_TEST_PATTERN_DISABLED  = 0,
+};
 
 /*
  * T U N I N G
-- 
1.7.0.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


[PATCH] drivers: media: video: Add support for Aptina ar0130 sensor

2012-09-07 Thread Prashanth Subramanya
This driver adds basic support for Aptina ar0130 1.2M sensor.

Signed-off-by: Prashanth Subramanya sprasha...@aptina.com
---
 drivers/media/video/Kconfig   |7 +
 drivers/media/video/Makefile  |1 +
 drivers/media/video/ar0130.c  | 1114 +
 drivers/media/video/ar0130_regs.h |  107 
 include/media/ar0130.h|   52 ++
 include/media/v4l2-chip-ident.h   |1 +
 6 files changed, 1282 insertions(+)
 create mode 100644 drivers/media/video/ar0130.c
 create mode 100644 drivers/media/video/ar0130_regs.h
 create mode 100644 include/media/ar0130.h

diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
index 99937c9..54d7063 100644
--- a/drivers/media/video/Kconfig
+++ b/drivers/media/video/Kconfig
@@ -493,6 +493,13 @@ config VIDEO_VS6624
  To compile this driver as a module, choose M here: the
  module will be called vs6624.
 
+config VIDEO_AR0130
+   tristate Aptina AR0130 support
+   depends on I2C  VIDEO_V4L2  VIDEO_V4L2_SUBDEV_API
+   ---help---
+   This is a Video4Linux2 sensor-level driver for the Aptina
+   ar0130 1.2 Mpixel camera.
+
 config VIDEO_MT9M032
tristate MT9M032 camera sensor support
depends on I2C  VIDEO_V4L2  VIDEO_V4L2_SUBDEV_API
diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
index d209de0..a208911 100644
--- a/drivers/media/video/Makefile
+++ b/drivers/media/video/Makefile
@@ -70,6 +70,7 @@ obj-$(CONFIG_VIDEO_UPD64083) += upd64083.o
 obj-$(CONFIG_VIDEO_OV7670) += ov7670.o
 obj-$(CONFIG_VIDEO_TCM825X) += tcm825x.o
 obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o
+obj-$(CONFIG_VIDEO_AR0130) += ar0130.o
 obj-$(CONFIG_VIDEO_MT9M032) += mt9m032.o
 obj-$(CONFIG_VIDEO_MT9P031) += mt9p031.o
 obj-$(CONFIG_VIDEO_MT9T001) += mt9t001.o
diff --git a/drivers/media/video/ar0130.c b/drivers/media/video/ar0130.c
new file mode 100644
index 000..d257fe8
--- /dev/null
+++ b/drivers/media/video/ar0130.c
@@ -0,0 +1,1114 @@
+/*
+ * drivers/media/video/ar0130.c
+ *
+ * Aptina AR0130 sensor driver
+ *
+ * Copyright (C) 2012 Aptina Imaging
+ *
+ * Contributor Prashanth Subramanya sprasha...@aptina.com
+ *
+ * Based on MT9P031 driver
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#include linux/delay.h
+#include linux/device.h
+#include linux/i2c.h
+#include linux/log2.h
+#include linux/pm.h
+#include linux/slab.h
+#include media/v4l2-subdev.h
+#include linux/videodev2.h
+#include linux/module.h
+
+#include media/ar0130.h
+#include media/v4l2-chip-ident.h
+#include media/v4l2-ctrls.h
+#include media/v4l2-device.h
+#include media/v4l2-subdev.h
+#include media/soc_camera.h
+#include ar0130_regs.h
+
+#define AR0130_ROW_START_MIN   0
+#define AR0130_ROW_START_MAX   1280
+#define AR0130_ROW_START_DEF   0
+#define AR0130_COLUMN_START_MIN0
+#define AR0130_COLUMN_START_MAX960
+#define AR0130_COLUMN_START_DEF0
+#define AR0130_WINDOW_HEIGHT_MIN   360
+#define AR0130_WINDOW_HEIGHT_MAX   960
+#define AR0130_WINDOW_HEIGHT_DEF   960
+#define AR0130_WINDOW_WIDTH_MIN640
+#define AR0130_WINDOW_WIDTH_MAX1280
+#define AR0130_WINDOW_WIDTH_DEF1280
+
+#define AR0130_VGA_WIDTH   640
+#define AR0130_VGA_HEIGHT  480
+#define AR0130_ENABLE  1
+#define AR0130_DISABLE 0
+
+#define AR0130_CHIP_VERSION_REG0x3000
+#define AR0130_CHIP_ID 0x2402
+#define AR0130_RESET_REG   0x301A
+#define AR0130_STREAM_ON   0x10DC
+#define AR0130_STREAM_OFF  0x10D8
+#define AR0130_SEQ_PORT0x3086
+#define AR0130_SEQ_PORT_CTRL   0x3088
+#define AR0130_TEST_REG0x3070
+#define AR0130_TEST_PATTERN_DISABLE0x
+#define AR0130_TEST_PATTERN_ENABLE 0x0002
+/*
+@AR0130_TEST_PATTERN
+0 = Normal operation. Generate output data from pixel array
+1 = Solid color test pattern.
+2 = Full color bar test pattern
+3 = Fade to grey color bar test pattern
+256 = Marching 1 test pattern (12 bit)
+*/
+
+#define AR0130_DCDS_PROG_START_ADDR0x309E
+#define AR0130_ADC_BITS_6_70x30E4
+#define AR0130_ADC_BITS_4_50x30E2
+#define AR0130_ADC_BITS_2_30x30E0
+#define AR0130_ADC_CONFIG1 0x30E6
+#define AR0130_ADC_CONFIG2

Using MMAP calls on a video capture device having underlying NOMMU arch

2012-09-07 Thread Bhupesh SHARMA
Hi,

I have been trying recently to make a usb-based-webcam device to work with
Linux. The entire scheme is a bit complex:

UVC gadget --User Pointer-- User-Space Daemon -- MMAP -- V4L2 capture 
device.

The UVC gadget is internally a v4l2 based device supporting VB2_VMALLOC 
operations,
whereas the V4L2 capture device supports VB2_DMA_CONTIG operations.

The application (user-space daemon), is responsible for getting memory allocated
from the V4L2 capture device via REQBUF calls. The V4L2 capture side exposes a
MMAP IO method, whereas the UVC gadget can get a USERPTR to the buffer filled 
with
video data from the V4L2 capture device and then send the same on a USB bus.

This scheme works absolutely fine on an architecture having a MMU, but when I 
try
the same on a NOMMU arch, I see MMAP calls from the user-space daemon failing.

I have implemented a .get_unmapped_area callback in my V4L2 capture driver using
the blackfin video capture driver as a reference (see [1]).

I make a MMAP call from the user-space application in a sequence like this
(pretty similar to the standard capture.c example, see[2]):

static void init_mmap (void)
{
struct v4l2_requestbuffers req;

CLEAR (req);

req.count   = 4;
req.type= V4L2_BUF_TYPE_VIDEO_CAPTURE;
req.memory  = V4L2_MEMORY_MMAP;

if (-1 == xioctl (fd, VIDIOC_REQBUFS, req)) 
{
if (EINVAL == errno) 
{
fprintf (stderr, %s does not support memory 
mapping\n, dev_name);
exit (EXIT_FAILURE);
} 
else 
{
errno_exit (VIDIOC_REQBUFS);
}
}

if (req.count  2) 
{
fprintf (stderr, Insufficient buffer memory on %s\n,dev_name);
exit (EXIT_FAILURE);
}

buffers = (buffer*) calloc (req.count, sizeof (*buffers));

if (!buffers) 
{
fprintf (stderr, Out of memory\n);
exit (EXIT_FAILURE);
}

for (n_buffers = 0; n_buffers  req.count; ++n_buffers) 
{
struct v4l2_buffer buf;

CLEAR (buf);

buf.type= V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory  = V4L2_MEMORY_MMAP;
buf.index   = n_buffers;

if (-1 == xioctl (fd, VIDIOC_QUERYBUF, buf))
errno_exit (VIDIOC_QUERYBUF);

buffers[n_buffers].length = buf.length;
buffers[n_buffers].start =
mmap (NULL /* start anywhere */,
buf.length,
PROT_READ | PROT_WRITE /* required */,
MAP_SHARED /* recommended */,
fd, buf.m.offset);

if (MAP_FAILED == buffers[n_buffers].start)
errno_exit (mmap);
}
}

Now, I see that the requested videobuffers are correctly allocated via 
'vb2_dma_contig_alloc'
call (see [3] for reference). But the MMAP call fails in 'vb2_dma_contig_alloc' 
function
in mm/nommu.c (see [4] for reference) when it tries to make the following check:

if (addr != (pfn  PAGE_SHIFT))
return -EINVAL;

I address Scott also, as I see that he has worked on the Blackfin v4l2 capture 
driver using
DMA contiguous method and may have seen this issue (on a NOMMU system) with a 
v4l2 application
performing a MMAP operation.

Any comments on what I could be doing wrong here?

References:

[1] Blackfin capture driver, 
http://lxr.linux.no/linux+v3.5.3/drivers/media/video/blackfin/bfin_capture.c#L243
[2] capture.c, http://linuxtv.org/downloads/v4l-dvb-apis/capture-example.html
[3] vb2_dma_contig_alloc, 
http://lxr.linux.no/linux+v3.5.3/drivers/media/video/videobuf2-dma-contig.c#L37
[4] remap_pfn_range, http://lxr.linux.no/linux+v3.5.3/mm/nommu.c#L1819

Regards,
Bhupesh
--
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] drivers: media: video: Add support for Aptina ar0130 sensor

2012-09-07 Thread Hans Verkuil
Hi Prashanth!

Thanks for working on this driver.

I do have a few comments about this driver, mostly coding style and v4l2 API
related things.

On Fri September 7 2012 11:30:26 Prashanth Subramanya wrote:
 This driver adds basic support for Aptina ar0130 1.2M sensor.
 
 Signed-off-by: Prashanth Subramanya sprasha...@aptina.com
 ---
  drivers/media/video/Kconfig   |7 +
  drivers/media/video/Makefile  |1 +
  drivers/media/video/ar0130.c  | 1114 
 +
  drivers/media/video/ar0130_regs.h |  107 
  include/media/ar0130.h|   52 ++
  include/media/v4l2-chip-ident.h   |1 +
  6 files changed, 1282 insertions(+)
  create mode 100644 drivers/media/video/ar0130.c
  create mode 100644 drivers/media/video/ar0130_regs.h
  create mode 100644 include/media/ar0130.h
 
 diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
 index 99937c9..54d7063 100644
 --- a/drivers/media/video/Kconfig
 +++ b/drivers/media/video/Kconfig
 @@ -493,6 +493,13 @@ config VIDEO_VS6624
 To compile this driver as a module, choose M here: the
 module will be called vs6624.
  
 +config VIDEO_AR0130
 + tristate Aptina AR0130 support
 + depends on I2C  VIDEO_V4L2  VIDEO_V4L2_SUBDEV_API
 + ---help---
 + This is a Video4Linux2 sensor-level driver for the Aptina
 + ar0130 1.2 Mpixel camera.
 +
  config VIDEO_MT9M032
   tristate MT9M032 camera sensor support
   depends on I2C  VIDEO_V4L2  VIDEO_V4L2_SUBDEV_API
 diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
 index d209de0..a208911 100644
 --- a/drivers/media/video/Makefile
 +++ b/drivers/media/video/Makefile
 @@ -70,6 +70,7 @@ obj-$(CONFIG_VIDEO_UPD64083) += upd64083.o
  obj-$(CONFIG_VIDEO_OV7670)   += ov7670.o
  obj-$(CONFIG_VIDEO_TCM825X) += tcm825x.o
  obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o
 +obj-$(CONFIG_VIDEO_AR0130) += ar0130.o
  obj-$(CONFIG_VIDEO_MT9M032) += mt9m032.o
  obj-$(CONFIG_VIDEO_MT9P031) += mt9p031.o
  obj-$(CONFIG_VIDEO_MT9T001) += mt9t001.o
 diff --git a/drivers/media/video/ar0130.c b/drivers/media/video/ar0130.c
 new file mode 100644
 index 000..d257fe8
 --- /dev/null
 +++ b/drivers/media/video/ar0130.c
 @@ -0,0 +1,1114 @@
 +/*
 + * drivers/media/video/ar0130.c
 + *
 + * Aptina AR0130 sensor driver
 + *
 + * Copyright (C) 2012 Aptina Imaging
 + *
 + * Contributor Prashanth Subramanya sprasha...@aptina.com
 + *
 + * Based on MT9P031 driver
 + *
 + * This program is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License version 2 as
 + * published by the Free Software Foundation.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software
 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 + *
 + */
 +
 +#include linux/delay.h
 +#include linux/device.h
 +#include linux/i2c.h
 +#include linux/log2.h
 +#include linux/pm.h
 +#include linux/slab.h
 +#include media/v4l2-subdev.h
 +#include linux/videodev2.h
 +#include linux/module.h
 +
 +#include media/ar0130.h
 +#include media/v4l2-chip-ident.h
 +#include media/v4l2-ctrls.h
 +#include media/v4l2-device.h
 +#include media/v4l2-subdev.h
 +#include media/soc_camera.h
 +#include ar0130_regs.h
 +
 +#define AR0130_ROW_START_MIN 0
 +#define AR0130_ROW_START_MAX 1280
 +#define AR0130_ROW_START_DEF 0
 +#define AR0130_COLUMN_START_MIN  0
 +#define AR0130_COLUMN_START_MAX  960
 +#define AR0130_COLUMN_START_DEF  0
 +#define AR0130_WINDOW_HEIGHT_MIN 360
 +#define AR0130_WINDOW_HEIGHT_MAX 960
 +#define AR0130_WINDOW_HEIGHT_DEF 960
 +#define AR0130_WINDOW_WIDTH_MIN  640
 +#define AR0130_WINDOW_WIDTH_MAX  1280
 +#define AR0130_WINDOW_WIDTH_DEF  1280
 +
 +#define AR0130_VGA_WIDTH 640
 +#define AR0130_VGA_HEIGHT480
 +#define AR0130_ENABLE1
 +#define AR0130_DISABLE   0
 +
 +#define AR0130_CHIP_VERSION_REG  0x3000
 +#define AR0130_CHIP_ID   0x2402
 +#define AR0130_RESET_REG 0x301A
 +#define AR0130_STREAM_ON 0x10DC
 +#define AR0130_STREAM_OFF0x10D8
 +#define AR0130_SEQ_PORT  0x3086
 +#define AR0130_SEQ_PORT_CTRL 0x3088
 +#define AR0130_TEST_REG  0x3070
 +#define AR0130_TEST_PATTERN_DISABLE  0x
 +#define AR0130_TEST_PATTERN_ENABLE   0x0002
 +/*
 +@AR0130_TEST_PATTERN
 +0 = Normal operation. Generate output data from pixel array
 +1 = Solid color test pattern.
 +2 = Full color bar test pattern
 +3 = Fade to grey color bar test pattern
 +256 = Marching 1 test 

Re: go7007 question

2012-09-07 Thread volokh
On Thu, Sep 06, 2012 at 11:10:14PM +0400, Volokh Konstantin wrote:
 On Mon, Sep 03, 2012 at 02:37:16PM -0400, Adam Rosi-Kessel wrote:
  
  [469.928881] wis-saa7115: initializing SAA7115 at address 32 on WIS
  GO7007SB EZ-USB
  
  [469.989083] go7007: probing for module i2c:wis_saa7115 failed
  
  [470.004785] wis-uda1342: initializing UDA1342 at address 26 on WIS
  GO7007SB EZ-USB
  
  [470.005454] go7007: probing for module i2c:wis_uda1342 failed
  
  [470.011659] wis-sony-tuner: initializing tuner at address 96 on WIS
  GO7007SB EZ-USB
Hi, I generated patchs, that u may in your own go7007/ folder
It contains go7007 initialization and i2c_subdev fixing

It was checked for 3.6 branch (compile only)
 
Regards,
Volokh Konstantin
diff --git a/drivers/staging/media/go7007/go7007-driver.c 
b/drivers/staging/media/go7007/go7007-driver.c
index ece2dd1..2dff9b5 100644
--- a/drivers/staging/media/go7007/go7007-driver.c
+++ b/drivers/staging/media/go7007/go7007-driver.c
@@ -173,6 +173,11 @@ static int go7007_init_encoder(struct go7007 *go)
go7007_write_addr(go, 0x3c82, 0x0001);
go7007_write_addr(go, 0x3c80, 0x00fe);
}
+   if (go-board_id == GO7007_BOARDID_ADLINK_MPG24) {
+   /* set GPIO5 to be an output, currently low */
+   go7007_write_addr(go, 0x3c82, 0x);
+   go7007_write_addr(go, 0x3c80, 0x00df);
+   }
return 0;
 }
 
@@ -192,17 +197,23 @@ int go7007_reset_encoder(struct go7007 *go)
 /*
  * Attempt to instantiate an I2C client by ID, probably loading a module.
  */
-static int init_i2c_module(struct i2c_adapter *adapter, const char *type,
-  int addr)
+static int init_i2c_module(struct i2c_adapter *adapter, const struct go_i2c 
*const i2c)
 {
struct go7007 *go = i2c_get_adapdata(adapter);
struct v4l2_device *v4l2_dev = go-v4l2_dev;
+   struct i2c_board_info info;
+
+   memset(info, 0, sizeof(info));
+   strlcpy(info.type, i2c-type, sizeof(info.type));
+   info.addr = i2c-addr;
 
-   if (v4l2_i2c_new_subdev(v4l2_dev, adapter, type, addr, NULL))
+   if (i2c-id == I2C_DRIVERID_WIS_TW2804)
+   info.flags |= I2C_CLIENT_TEN;
+   if (v4l2_i2c_new_subdev_board(v4l2_dev, adapter, info, NULL))
return 0;
 
-   printk(KERN_INFO go7007: probing for module i2c:%s failed\n, type);
-   return -1;
+   printk(KERN_INFO go7007: probing for module i2c:%s failed\n, 
i2c-type);
+   return -EINVAL;
 }
 
 /*
@@ -238,9 +249,7 @@ int go7007_register_encoder(struct go7007 *go)
}
if (go-i2c_adapter_online) {
for (i = 0; i  go-board_info-num_i2c_devs; ++i)
-   init_i2c_module(go-i2c_adapter,
-   go-board_info-i2c_devs[i].type,
-   go-board_info-i2c_devs[i].addr);
+   init_i2c_module(go-i2c_adapter, 
go-board_info-i2c_devs[i]);
if (go-board_id == GO7007_BOARDID_ADLINK_MPG24)
i2c_clients_command(go-i2c_adapter,
DECODER_SET_CHANNEL, go-channel_number);
@@ -571,7 +580,7 @@ struct go7007 *go7007_alloc(struct go7007_board_info 
*board, struct device *dev)
struct go7007 *go;
int i;
 
-   go = kmalloc(sizeof(struct go7007), GFP_KERNEL);
+   go = kzalloc(sizeof(struct go7007), GFP_KERNEL);
if (go == NULL)
return NULL;
go-dev = dev;
diff --git a/drivers/staging/media/go7007/go7007-priv.h 
b/drivers/staging/media/go7007/go7007-priv.h
index b58c394..b7b939a 100644
--- a/drivers/staging/media/go7007/go7007-priv.h
+++ b/drivers/staging/media/go7007/go7007-priv.h
@@ -88,7 +88,7 @@ struct go7007_board_info {
int audio_bclk_div;
int audio_main_div;
int num_i2c_devs;
-   struct {
+   struct go_i2c {
const char *type;
int id;
int addr;
diff --git a/drivers/staging/media/go7007/go7007-usb.c 
b/drivers/staging/media/go7007/go7007-usb.c
index 5443e25..9dbf5ec 100644
--- a/drivers/staging/media/go7007/go7007-usb.c
+++ b/drivers/staging/media/go7007/go7007-usb.c
@@ -1110,9 +1110,6 @@ static int go7007_usb_probe(struct usb_interface *intf,
} else {
u16 channel;
 
-   /* set GPIO5 to be an output, currently low */
-   go7007_write_addr(go, 0x3c82, 0x);
-   go7007_write_addr(go, 0x3c80, 0x00df);
/* read channel number from GPIO[1:0] */
go7007_read_addr(go, 0x3c81, channel);
channel = 0x3;
@@ -1245,7 +1242,6 @@ static void go7007_usb_disconnect(struct usb_interface 
*intf)
struct urb *vurb, *aurb;
int i;
 
-   go-status = STATUS_SHUTDOWN;

[PATCH] Unregister device and unlock mutex before exit when error

2012-09-07 Thread Peter Senna Tschudin
Signed-off-by: Peter Senna Tschudin peter.se...@gmail.com
---
Depends on patch 14167: http://patchwork.linuxtv.org/patch/14167/ 
[PATCH 1/5] drivers/media/platform/davinci/vpbe.c: fix error return code

 drivers/media/platform/davinci/vpbe.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/davinci/vpbe.c 
b/drivers/media/platform/davinci/vpbe.c
index 2e4a0da..3057030 100644
--- a/drivers/media/platform/davinci/vpbe.c
+++ b/drivers/media/platform/davinci/vpbe.c
@@ -648,7 +648,7 @@ static int vpbe_initialize(struct device *dev, struct 
vpbe_device *vpbe_dev)
ret = bus_for_each_dev(platform_bus_type, NULL, vpbe_dev,
   platform_device_get);
if (ret  0)
-   return ret;
+   goto vpbe_fail_v4l2_device;
 
vpbe_dev-venc = venc_sub_dev_init(vpbe_dev-v4l2_dev,
   vpbe_dev-cfg-venc.module_name);
-- 
1.7.11.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


[RFCv2 API PATCH 04/28] DocBook: make the G/S/TRY_FMT specification more strict.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

- S/TRY_FMT should always succeed, unless an invalid type field is passed in.
- TRY_FMT should give the same result as S_FMT, all other things being equal.
- ENUMFMT may return different formats for different inputs or outputs.

This was decided during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml |3 +++
 Documentation/DocBook/media/v4l/vidioc-g-fmt.xml|9 ++---
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml 
b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
index 81ebe48..0bd3324 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
@@ -58,6 +58,9 @@ structure. Drivers fill the rest of the structure or return an
 incrementing by one until errorcodeEINVAL/errorcode is
 returned./para
 
+paraNote that after switching input or output the list of enumerated 
image
+formats may be different./para
+
 table pgwide=1 frame=none id=v4l2-fmtdesc
   titlestruct structnamev4l2_fmtdesc/structname/title
   tgroup cols=3
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml 
b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
index 52acff1..9ef279a 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
@@ -81,7 +81,7 @@ the application calls the constantVIDIOC_S_FMT/constant 
ioctl
 with a pointer to a structnamev4l2_format/structname structure
 the driver checks
 and adjusts the parameters against hardware abilities. Drivers
-should not return an error code unless the input is ambiguous, this is
+should not return an error code unless the structfieldtype/structfield 
field is invalid, this is
 a mechanism to fathom device capabilities and to approach parameters
 acceptable for both the application and driver. On success the driver
 may program the hardware, allocate resources and generally prepare for
@@ -107,6 +107,10 @@ disabling I/O or possibly time consuming hardware 
preparations.
 Although strongly recommended drivers are not required to implement
 this ioctl./para
 
+paraThe format as returned by constantVIDIOC_TRY_FMT/constant
+must be identical to what constantVIDIOC_S_FMT/constant returns for
+the same input or output./para
+
 table pgwide=1 frame=none id=v4l2-format
   titlestruct structnamev4l2_format/structname/title
   tgroup cols=4
@@ -187,8 +191,7 @@ capture and output devices./entry
termerrorcodeEINVAL/errorcode/term
listitem
  paraThe v4l2-format; structfieldtype/structfield
-field is invalid, the requested buffer type not supported, or the
-format is not supported with this buffer type./para
+field is invalia or the requested buffer type not supported./para
/listitem
   /varlistentry
 /variablelist
-- 
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


[RFCv2 API PATCH 13/28] Add V4L2_CAP_MONOTONIC_TS where applicable.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Add the new V4L2_CAP_MONOTONIC_TS capability to those drivers that
use monotomic timestamps instead of the system time.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/pci/cx18/cx18-ioctl.c   |2 +-
 drivers/media/platform/davinci/vpbe_display.c |3 ++-
 drivers/media/platform/omap3isp/ispvideo.c|5 +++--
 drivers/media/platform/s5p-fimc/fimc-lite.c   |2 +-
 drivers/media/usb/gspca/gspca.c   |1 +
 drivers/media/usb/uvc/uvc_v4l2.c  |7 +++
 6 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/media/pci/cx18/cx18-ioctl.c 
b/drivers/media/pci/cx18/cx18-ioctl.c
index e9912db..51675bc 100644
--- a/drivers/media/pci/cx18/cx18-ioctl.c
+++ b/drivers/media/pci/cx18/cx18-ioctl.c
@@ -473,7 +473,7 @@ static int cx18_querycap(struct file *file, void *fh,
 PCI:%s, pci_name(cx-pci_dev));
vcap-capabilities = cx-v4l2_cap;  /* capabilities */
if (id-type == CX18_ENC_STREAM_TYPE_YUV)
-   vcap-capabilities |= V4L2_CAP_STREAMING;
+   vcap-capabilities |= V4L2_CAP_STREAMING | 
V4L2_CAP_MONOTONIC_TS;
return 0;
 }
 
diff --git a/drivers/media/platform/davinci/vpbe_display.c 
b/drivers/media/platform/davinci/vpbe_display.c
index 9a05c81..3a50547 100644
--- a/drivers/media/platform/davinci/vpbe_display.c
+++ b/drivers/media/platform/davinci/vpbe_display.c
@@ -620,7 +620,8 @@ static int vpbe_display_querycap(struct file *file, void  
*priv,
struct vpbe_device *vpbe_dev = fh-disp_dev-vpbe_dev;
 
cap-version = VPBE_DISPLAY_VERSION_CODE;
-   cap-capabilities = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
+   cap-capabilities = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING |
+   V4L2_MONOTONIC_TS;
strlcpy(cap-driver, VPBE_DISPLAY_DRIVER, sizeof(cap-driver));
strlcpy(cap-bus_info, platform, sizeof(cap-bus_info));
strlcpy(cap-card, vpbe_dev-cfg-module_name, sizeof(cap-card));
diff --git a/drivers/media/platform/omap3isp/ispvideo.c 
b/drivers/media/platform/omap3isp/ispvideo.c
index 3a5085e..a25aa1d 100644
--- a/drivers/media/platform/omap3isp/ispvideo.c
+++ b/drivers/media/platform/omap3isp/ispvideo.c
@@ -663,10 +663,11 @@ isp_video_querycap(struct file *file, void *fh, struct 
v4l2_capability *cap)
strlcpy(cap-card, video-video.name, sizeof(cap-card));
strlcpy(cap-bus_info, media, sizeof(cap-bus_info));
 
+   cap-capabilities = V4L2_CAP_STREAMING | V4L2_CAP_MONOTONIC_TS;
if (video-type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
-   cap-capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
+   cap-capabilities |= V4L2_CAP_VIDEO_CAPTURE;
else
-   cap-capabilities = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING;
+   cap-capabilities |= V4L2_CAP_VIDEO_OUTPUT;
 
return 0;
 }
diff --git a/drivers/media/platform/s5p-fimc/fimc-lite.c 
b/drivers/media/platform/s5p-fimc/fimc-lite.c
index c5b57e8..ab12928 100644
--- a/drivers/media/platform/s5p-fimc/fimc-lite.c
+++ b/drivers/media/platform/s5p-fimc/fimc-lite.c
@@ -629,7 +629,7 @@ static int fimc_vidioc_querycap_capture(struct file *file, 
void *priv,
strlcpy(cap-driver, FIMC_LITE_DRV_NAME, sizeof(cap-driver));
cap-bus_info[0] = 0;
cap-card[0] = 0;
-   cap-capabilities = V4L2_CAP_STREAMING;
+   cap-capabilities = V4L2_CAP_STREAMING | V4L2_CAP_MONOTONIC_TS;
return 0;
 }
 
diff --git a/drivers/media/usb/gspca/gspca.c b/drivers/media/usb/gspca/gspca.c
index d4e8343..5d3bcdc 100644
--- a/drivers/media/usb/gspca/gspca.c
+++ b/drivers/media/usb/gspca/gspca.c
@@ -1351,6 +1351,7 @@ static int vidioc_querycap(struct file *file, void  *priv,
usb_make_path(gspca_dev-dev, (char *) cap-bus_info,
sizeof(cap-bus_info));
cap-device_caps = V4L2_CAP_VIDEO_CAPTURE
+ | V4L2_CAP_MONOTONIC_TS
  | V4L2_CAP_STREAMING
  | V4L2_CAP_READWRITE;
cap-capabilities = cap-device_caps | V4L2_CAP_DEVICE_CAPS;
diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
index f00db30..1c6dff0 100644
--- a/drivers/media/usb/uvc/uvc_v4l2.c
+++ b/drivers/media/usb/uvc/uvc_v4l2.c
@@ -564,12 +564,11 @@ static long uvc_v4l2_do_ioctl(struct file *file, unsigned 
int cmd, void *arg)
usb_make_path(stream-dev-udev,
  cap-bus_info, sizeof(cap-bus_info));
cap-version = LINUX_VERSION_CODE;
+   cap-capabilities = V4L2_CAP_STREAMING | V4L2_CAP_MONOTONIC_TS;
if (stream-type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
-   cap-capabilities = V4L2_CAP_VIDEO_CAPTURE
- | V4L2_CAP_STREAMING;
+   cap-capabilities |= V4L2_CAP_VIDEO_CAPTURE;
else
-

[RFCv2 API PATCH 07/28] DocBook: deprecate V4L2_BUF_TYPE_PRIVATE.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

As per decision taken during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 Documentation/DocBook/media/v4l/compat.xml  |2 +-
 Documentation/DocBook/media/v4l/io.xml  |   14 ++
 Documentation/DocBook/media/v4l/vidioc-cropcap.xml  |6 ++
 Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml |6 ++
 Documentation/DocBook/media/v4l/vidioc-g-crop.xml   |6 ++
 Documentation/DocBook/media/v4l/vidioc-g-fmt.xml|4 +---
 Documentation/DocBook/media/v4l/vidioc-g-parm.xml   |4 +---
 Documentation/DocBook/media/v4l/vidioc-reqbufs.xml  |5 ++---
 8 files changed, 13 insertions(+), 34 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/compat.xml 
b/Documentation/DocBook/media/v4l/compat.xml
index 578135e..c6ae4c9 100644
--- a/Documentation/DocBook/media/v4l/compat.xml
+++ b/Documentation/DocBook/media/v4l/compat.xml
@@ -1476,7 +1476,7 @@ follows.informaltable
  /row
  row

entryconstantV4L2_BUF_TYPE_PRIVATE_BASE/constant/entry
-   entryconstantV4L2_BUF_TYPE_PRIVATE/constant/entry
+   entryconstantV4L2_BUF_TYPE_PRIVATE/constant (but this 
is deprecated)/entry
  /row
/tbody
  /tgroup
diff --git a/Documentation/DocBook/media/v4l/io.xml 
b/Documentation/DocBook/media/v4l/io.xml
index 2512649..2dc39d8 100644
--- a/Documentation/DocBook/media/v4l/io.xml
+++ b/Documentation/DocBook/media/v4l/io.xml
@@ -685,18 +685,14 @@ memory, set by the application. See xref linkend=userp 
/ for details.
entry__u32/entry
entrystructfieldreserved2/structfield/entry
entry/entry
-   entryA place holder for future extensions and custom
-(driver defined) buffer types
-constantV4L2_BUF_TYPE_PRIVATE/constant and higher. Applications
+   entryA place holder for future extensions. Applications
 should set this to 0./entry
  /row
  row
entry__u32/entry
entrystructfieldreserved/structfield/entry
entry/entry
-   entryA place holder for future extensions and custom
-(driver defined) buffer types
-constantV4L2_BUF_TYPE_PRIVATE/constant and higher. Applications
+   entryA place holder for future extensions. Applications
 should set this to 0./entry
  /row
/tbody
@@ -829,12 +825,6 @@ should set this to 0./entry
entryBuffer for video output overlay (OSD), see xref
linkend=osd /./entry
  /row
- row
-   entryconstantV4L2_BUF_TYPE_PRIVATE/constant/entry
-   entry0x80/entry
- entryThis and higher values are reserved for custom
-(driver defined) buffer types./entry
- /row
/tbody
   /tgroup
 /table
diff --git a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml 
b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
index f1bac2c..4559c45 100644
--- a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
@@ -70,10 +70,8 @@ output./para
entryType of the data stream, set by the application.
 Only these types are valid here:
 constantV4L2_BUF_TYPE_VIDEO_CAPTURE/constant,
-constantV4L2_BUF_TYPE_VIDEO_OUTPUT/constant,
-constantV4L2_BUF_TYPE_VIDEO_OVERLAY/constant, and custom (driver
-defined) types with code constantV4L2_BUF_TYPE_PRIVATE/constant
-and higher. See xref linkend=v4l2-buf-type /./entry
+constantV4L2_BUF_TYPE_VIDEO_OUTPUT/constant and
+constantV4L2_BUF_TYPE_VIDEO_OVERLAY/constant. See xref 
linkend=v4l2-buf-type /./entry
  /row
  row
entrystruct link 
linkend=v4l2-rect-cropv4l2_rect/link/entry
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml 
b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
index 0bd3324..f8dfeed 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
@@ -81,10 +81,8 @@ Only these types are valid here:
 constantV4L2_BUF_TYPE_VIDEO_CAPTURE/constant,
 constantV4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE/constant,
 constantV4L2_BUF_TYPE_VIDEO_OUTPUT/constant,
-constantV4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE/constant,
-constantV4L2_BUF_TYPE_VIDEO_OVERLAY/constant, and custom (driver
-defined) types with code constantV4L2_BUF_TYPE_PRIVATE/constant
-and higher. See xref linkend=v4l2-buf-type /./entry
+constantV4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE/constant and
+constantV4L2_BUF_TYPE_VIDEO_OVERLAY/constant. See xref 
linkend=v4l2-buf-type /./entry
  /row
  row
entry__u32/entry
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml 
b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
index c4ff3b1..75c6a93 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
@@ -104,10 +104,8 @@ changed 

[RFCv2 API PATCH 09/28] DocBook: document when to return ENODATA.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

ENODATA should be returned if the API used for getting/changing/querying
the current video timings is not supported by the current input or output.

This was decided during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml|9 ++---
 Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml   |   13 +
 Documentation/DocBook/media/v4l/vidioc-g-std.xml  |   10 +-
 .../DocBook/media/v4l/vidioc-query-dv-preset.xml  |9 +
 .../DocBook/media/v4l/vidioc-query-dv-timings.xml |6 ++
 Documentation/DocBook/media/v4l/vidioc-querystd.xml   |8 
 6 files changed, 47 insertions(+), 8 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml 
b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
index 61be9fa..b9ea376 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
@@ -78,6 +78,12 @@ If the preset is not supported, it returns an EINVAL; 
/para
/listitem
   /varlistentry
   varlistentry
+   termerrorcodeENODATA/errorcode/term
+   listitem
+ paraDigital video presets are not supported for this input or 
output./para
+   /listitem
+  /varlistentry
+  varlistentry
termerrorcodeEBUSY/errorcode/term
listitem
  paraThe device is busy and therefore can not change the 
preset./para
@@ -104,7 +110,4 @@ If the preset is not supported, it returns an EINVAL; 
/para
   /tgroup
 /table
   /refsect1
-  refsect1
-return-value;
-  /refsect1
 /refentry
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml 
b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
index eda1a29..feaa180 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
@@ -56,7 +56,9 @@ a pointer to the v4l2-dv-timings; structure as argument. If 
the ioctl is not su
 or the timing values are not correct, the driver returns EINVAL;./para
 paraThe filenamelinux/v4l2-dv-timings.h/filename header can be used to 
get the
 timings of the formats in the xref linkend=cea861 / and xref 
linkend=vesadmt /
-standards./para
+standards. If the current input or output does not support DV timings (e.g. if
+VIDIOC-ENUMINPUT; does not set the 
constantV4L2_IN_CAP_CUSTOM_TIMINGS/constant flag), then
+ENODATA; is returned./para
   /refsect1
 
   refsect1
@@ -71,6 +73,12 @@ standards./para
/listitem
   /varlistentry
   varlistentry
+   termerrorcodeENODATA/errorcode/term
+   listitem
+ paraDigital video timings are not supported for this input or 
output./para
+   /listitem
+  /varlistentry
+  varlistentry
termerrorcodeEBUSY/errorcode/term
listitem
  paraThe device is busy and therefore can not change the 
timings./para
@@ -320,7 +328,4 @@ detected or used depends on the hardware.
   /tgroup
 /table
   /refsect1
-  refsect1
-return-value;
-  /refsect1
 /refentry
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-std.xml 
b/Documentation/DocBook/media/v4l/vidioc-g-std.xml
index 99ff1a0..4a89841 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-std.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-std.xml
@@ -72,7 +72,9 @@ flags, being a write-only ioctl it does not return the actual 
new standard as
 the current input does not support the requested standard the driver
 returns an EINVAL;. When the standard set is ambiguous drivers may
 return errorcodeEINVAL/errorcode or choose any of the requested
-standards./para
+standards. If the current input or output does not support standard video 
timings (e.g. if
+VIDIOC-ENUMINPUT; does not set the constantV4L2_IN_CAP_STD/constant 
flag), then
+ENODATA; is returned./para
   /refsect1
 
   refsect1
@@ -85,6 +87,12 @@ standards./para
  paraThe constantVIDIOC_S_STD/constant parameter was 
unsuitable./para
/listitem
   /varlistentry
+  varlistentry
+   termerrorcodeENODATA/errorcode/term
+   listitem
+ paraStandard video timings are not supported for this input or 
output./para
+   /listitem
+  /varlistentry
 /variablelist
   /refsect1
 /refentry
diff --git a/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml 
b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
index 1bc8aeb..68b49d0 100644
--- a/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
@@ -65,5 +65,14 @@ returned./para
 
   refsect1
 return-value;
+
+variablelist
+  varlistentry
+   termerrorcodeENODATA/errorcode/term
+   listitem
+ paraDigital video presets are not supported for this input or 
output./para
+   /listitem
+  /varlistentry
+

[RFCv2 API PATCH 21/28] v4l2: make vidioc_s_audout const.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Write-only ioctls should have a const argument in the ioctl op.

Do this conversion for vidioc_s_audout.

Adding const for write-only ioctls was decided during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/pci/ivtv/ivtv-ioctl.c |6 --
 drivers/media/radio/radio-si4713.c  |2 +-
 include/media/v4l2-ioctl.h  |2 +-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/media/pci/ivtv/ivtv-ioctl.c 
b/drivers/media/pci/ivtv/ivtv-ioctl.c
index 99e35dd..d5cbb61 100644
--- a/drivers/media/pci/ivtv/ivtv-ioctl.c
+++ b/drivers/media/pci/ivtv/ivtv-ioctl.c
@@ -813,11 +813,13 @@ static int ivtv_g_audout(struct file *file, void *fh, 
struct v4l2_audioout *vin)
return ivtv_get_audio_output(itv, vin-index, vin);
 }
 
-static int ivtv_s_audout(struct file *file, void *fh, struct v4l2_audioout 
*vout)
+static int ivtv_s_audout(struct file *file, void *fh, const struct 
v4l2_audioout *vout)
 {
struct ivtv *itv = fh2id(fh)-itv;
 
-   return ivtv_get_audio_output(itv, vout-index, vout);
+   if (itv-card-video_outputs == NULL || vout-index != 0)
+   return -EINVAL;
+   return 0;
 }
 
 static int ivtv_enum_input(struct file *file, void *fh, struct v4l2_input *vin)
diff --git a/drivers/media/radio/radio-si4713.c 
b/drivers/media/radio/radio-si4713.c
index 5f366d1..1e04101 100644
--- a/drivers/media/radio/radio-si4713.c
+++ b/drivers/media/radio/radio-si4713.c
@@ -83,7 +83,7 @@ static int radio_si4713_g_audout(struct file *file, void 
*priv,
 }
 
 static int radio_si4713_s_audout(struct file *file, void *priv,
-   struct v4l2_audioout *vao)
+   const struct v4l2_audioout *vao)
 {
return vao-index ? -EINVAL : 0;
 }
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
index babbe09..d4c7729 100644
--- a/include/media/v4l2-ioctl.h
+++ b/include/media/v4l2-ioctl.h
@@ -175,7 +175,7 @@ struct v4l2_ioctl_ops {
int (*vidioc_g_audout) (struct file *file, void *fh,
struct v4l2_audioout *a);
int (*vidioc_s_audout) (struct file *file, void *fh,
-   struct v4l2_audioout *a);
+   const struct v4l2_audioout *a);
int (*vidioc_g_modulator)  (struct file *file, void *fh,
struct v4l2_modulator *a);
int (*vidioc_s_modulator)  (struct file *file, void *fh,
-- 
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


[RFCv2 API PATCH 11/28] DocBook: fix awkward language and fix the documented return value.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

The Video Standard section contains some awkward language. It also wasn't
updated when the error code for unimplemented ioctls changed from EINVAL
to ENOTTY.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 Documentation/DocBook/media/v4l/common.xml |   18 +-
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/common.xml 
b/Documentation/DocBook/media/v4l/common.xml
index b91d253..9378d7b 100644
--- a/Documentation/DocBook/media/v4l/common.xml
+++ b/Documentation/DocBook/media/v4l/common.xml
@@ -589,8 +589,8 @@ switch to a standard by v4l2-std-id;./para
 when the device has one or more video inputs or outputs./para
 
 paraSpecial rules apply to USB cameras where the notion of video
-standards makes little sense. More generally any capture device,
-output devices accordingly, which is itemizedlist
+standards makes little sense. More generally for any capture or output device
+which is: itemizedlist
listitem
  paraincapable of capturing fields or frames at the nominal
 rate of the video standard, or/para
@@ -605,17 +605,17 @@ capture time, or/para
 refer to the frames received by the driver, not the captured
 frames./para
/listitem
-  /itemizedlist Here the driver shall set the
+  /itemizedlist the driver shall set the
 structfieldstd/structfield field of v4l2-input; and v4l2-output;
-to zero, the constantVIDIOC_G_STD/constant,
+to zero and the constantVIDIOC_G_STD/constant,
 constantVIDIOC_S_STD/constant,
 constantVIDIOC_QUERYSTD/constant and
 constantVIDIOC_ENUMSTD/constant ioctls shall return the
-EINVAL;.footnote
-   paraSee xref linkend=buffer / for a rationale. Probably
-even USB cameras follow some well known video standard. It might have
-been better to explicitly indicate elsewhere if a device cannot live
-up to normal expectations, instead of this exception./para
+ENOTTY;.footnote
+   paraSee xref linkend=buffer / for a rationale./para
+   paraApplications can make use of the xref 
linkend=input-capabilities / and
+xref linkend=output-capabilities/ flags to determine whether the video 
standard ioctls
+are available for the device./para
/footnote/para
 
 example
-- 
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


[RFCv2 API PATCH 10/28] Rename V4L2_(IN|OUT)_CAP_CUSTOM_TIMINGS.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

The 'custom' timings are no longer just for custom timings, but also for 
standard
CEA/VESA timings. So rename to V4L2_IN/OUT_CAP_DV_TIMINGS.

The old define is still kept for backwards compatibility.

This decision was taken during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 Documentation/DocBook/media/v4l/vidioc-enuminput.xml|2 +-
 Documentation/DocBook/media/v4l/vidioc-enumoutput.xml   |2 +-
 Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml |2 +-
 drivers/media/v4l2-core/v4l2-ioctl.c|8 
 include/linux/videodev2.h   |6 --
 5 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml 
b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
index 46d5a04..3c9a813 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
@@ -283,7 +283,7 @@ input/output interface to linux-media@vger.kernel.org on 19 
Oct 2009.
entryThis input supports setting DV presets by using 
VIDIOC_S_DV_PRESET./entry
  /row
  row
-   entryconstantV4L2_IN_CAP_CUSTOM_TIMINGS/constant/entry
+   entryconstantV4L2_IN_CAP_DV_TIMINGS/constant/entry
entry0x0002/entry
entryThis input supports setting video timings by using 
VIDIOC_S_DV_TIMINGS./entry
  /row
diff --git a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml 
b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
index 4280200..f4ab079 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
@@ -168,7 +168,7 @@ input/output interface to linux-media@vger.kernel.org on 19 
Oct 2009.
entryThis output supports setting DV presets by using 
VIDIOC_S_DV_PRESET./entry
  /row
  row
-   entryconstantV4L2_OUT_CAP_CUSTOM_TIMINGS/constant/entry
+   entryconstantV4L2_OUT_CAP_DV_TIMINGS/constant/entry
entry0x0002/entry
entryThis output supports setting video timings by using 
VIDIOC_S_DV_TIMINGS./entry
  /row
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml 
b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
index feaa180..7236970 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
@@ -57,7 +57,7 @@ or the timing values are not correct, the driver returns 
EINVAL;./para
 paraThe filenamelinux/v4l2-dv-timings.h/filename header can be used to 
get the
 timings of the formats in the xref linkend=cea861 / and xref 
linkend=vesadmt /
 standards. If the current input or output does not support DV timings (e.g. if
-VIDIOC-ENUMINPUT; does not set the 
constantV4L2_IN_CAP_CUSTOM_TIMINGS/constant flag), then
+VIDIOC-ENUMINPUT; does not set the 
constantV4L2_IN_CAP_DV_TIMINGS/constant flag), then
 ENODATA; is returned./para
   /refsect1
 
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c 
b/drivers/media/v4l2-core/v4l2-ioctl.c
index 473ebea..99a8ad7 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -982,7 +982,7 @@ static int v4l_enuminput(const struct v4l2_ioctl_ops *ops,
struct v4l2_input *p = arg;
 
/*
-* We set the flags for CAP_PRESETS, CAP_CUSTOM_TIMINGS 
+* We set the flags for CAP_PRESETS, CAP_DV_TIMINGS 
 * CAP_STD here based on ioctl handler provided by the
 * driver. If the driver doesn't support these
 * for a specific input, it must override these flags.
@@ -992,7 +992,7 @@ static int v4l_enuminput(const struct v4l2_ioctl_ops *ops,
if (ops-vidioc_s_dv_preset)
p-capabilities |= V4L2_IN_CAP_PRESETS;
if (ops-vidioc_s_dv_timings)
-   p-capabilities |= V4L2_IN_CAP_CUSTOM_TIMINGS;
+   p-capabilities |= V4L2_IN_CAP_DV_TIMINGS;
 
return ops-vidioc_enum_input(file, fh, p);
 }
@@ -1003,7 +1003,7 @@ static int v4l_enumoutput(const struct v4l2_ioctl_ops 
*ops,
struct v4l2_output *p = arg;
 
/*
-* We set the flags for CAP_PRESETS, CAP_CUSTOM_TIMINGS 
+* We set the flags for CAP_PRESETS, CAP_DV_TIMINGS 
 * CAP_STD here based on ioctl handler provided by the
 * driver. If the driver doesn't support these
 * for a specific output, it must override these flags.
@@ -1013,7 +1013,7 @@ static int v4l_enumoutput(const struct v4l2_ioctl_ops 
*ops,
if (ops-vidioc_s_dv_preset)
p-capabilities |= V4L2_OUT_CAP_PRESETS;
if (ops-vidioc_s_dv_timings)
-   p-capabilities |= V4L2_OUT_CAP_CUSTOM_TIMINGS;
+   p-capabilities |= V4L2_OUT_CAP_DV_TIMINGS;
 
return ops-vidioc_enum_output(file, fh, p);
 }
diff --git 

[RFCv2 API PATCH 16/28] v4l2: make vidioc_s_fbuf const.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Write-only ioctls should have a const argument in the ioctl op.

Do this conversion for vidioc_s_fbuf.

Adding const for write-only ioctls was decided during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/common/saa7146/saa7146_video.c |2 +-
 drivers/media/pci/bt8xx/bttv-driver.c|2 +-
 drivers/media/pci/ivtv/ivtv-ioctl.c  |4 ++--
 drivers/media/pci/saa7134/saa7134-video.c|2 +-
 drivers/media/pci/zoran/zoran_driver.c   |2 +-
 drivers/media/platform/fsl-viu.c |2 +-
 drivers/media/platform/omap/omap_vout.c  |2 +-
 include/media/v4l2-ioctl.h   |2 +-
 8 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/media/common/saa7146/saa7146_video.c 
b/drivers/media/common/saa7146/saa7146_video.c
index 6d14785..4143d61 100644
--- a/drivers/media/common/saa7146/saa7146_video.c
+++ b/drivers/media/common/saa7146/saa7146_video.c
@@ -479,7 +479,7 @@ static int vidioc_g_fbuf(struct file *file, void *fh, 
struct v4l2_framebuffer *f
return 0;
 }
 
-static int vidioc_s_fbuf(struct file *file, void *fh, struct v4l2_framebuffer 
*fb)
+static int vidioc_s_fbuf(struct file *file, void *fh, const struct 
v4l2_framebuffer *fb)
 {
struct saa7146_dev *dev = ((struct saa7146_fh *)fh)-dev;
struct saa7146_vv *vv = dev-vv_data;
diff --git a/drivers/media/pci/bt8xx/bttv-driver.c 
b/drivers/media/pci/bt8xx/bttv-driver.c
index b58ff87..26bf309 100644
--- a/drivers/media/pci/bt8xx/bttv-driver.c
+++ b/drivers/media/pci/bt8xx/bttv-driver.c
@@ -2740,7 +2740,7 @@ static int bttv_overlay(struct file *file, void *f, 
unsigned int on)
 }
 
 static int bttv_s_fbuf(struct file *file, void *f,
-   struct v4l2_framebuffer *fb)
+   const struct v4l2_framebuffer *fb)
 {
struct bttv_fh *fh = f;
struct bttv *btv = fh-btv;
diff --git a/drivers/media/pci/ivtv/ivtv-ioctl.c 
b/drivers/media/pci/ivtv/ivtv-ioctl.c
index 32a5910..d3b32c2 100644
--- a/drivers/media/pci/ivtv/ivtv-ioctl.c
+++ b/drivers/media/pci/ivtv/ivtv-ioctl.c
@@ -1427,7 +1427,7 @@ static int ivtv_g_fbuf(struct file *file, void *fh, 
struct v4l2_framebuffer *fb)
return 0;
 }
 
-static int ivtv_s_fbuf(struct file *file, void *fh, struct v4l2_framebuffer 
*fb)
+static int ivtv_s_fbuf(struct file *file, void *fh, const struct 
v4l2_framebuffer *fb)
 {
struct ivtv_open_id *id = fh2id(fh);
struct ivtv *itv = id-itv;
@@ -1444,7 +1444,7 @@ static int ivtv_s_fbuf(struct file *file, void *fh, 
struct v4l2_framebuffer *fb)
itv-osd_chroma_key_state = (fb-flags  V4L2_FBUF_FLAG_CHROMAKEY) != 0;
ivtv_set_osd_alpha(itv);
yi-track_osd = (fb-flags  V4L2_FBUF_FLAG_OVERLAY) != 0;
-   return ivtv_g_fbuf(file, fh, fb);
+   return 0;
 }
 
 static int ivtv_overlay(struct file *file, void *fh, unsigned int on)
diff --git a/drivers/media/pci/saa7134/saa7134-video.c 
b/drivers/media/pci/saa7134/saa7134-video.c
index 6de10b1..bac4386 100644
--- a/drivers/media/pci/saa7134/saa7134-video.c
+++ b/drivers/media/pci/saa7134/saa7134-video.c
@@ -2158,7 +2158,7 @@ static int saa7134_g_fbuf(struct file *file, void *f,
 }
 
 static int saa7134_s_fbuf(struct file *file, void *f,
-   struct v4l2_framebuffer *fb)
+   const struct v4l2_framebuffer *fb)
 {
struct saa7134_fh *fh = f;
struct saa7134_dev *dev = fh-dev;
diff --git a/drivers/media/pci/zoran/zoran_driver.c 
b/drivers/media/pci/zoran/zoran_driver.c
index c6ccdeb..f91b551 100644
--- a/drivers/media/pci/zoran/zoran_driver.c
+++ b/drivers/media/pci/zoran/zoran_driver.c
@@ -1978,7 +1978,7 @@ static int zoran_g_fbuf(struct file *file, void *__fh,
 }
 
 static int zoran_s_fbuf(struct file *file, void *__fh,
-   struct v4l2_framebuffer *fb)
+   const struct v4l2_framebuffer *fb)
 {
struct zoran_fh *fh = __fh;
struct zoran *zr = fh-zr;
diff --git a/drivers/media/platform/fsl-viu.c b/drivers/media/platform/fsl-viu.c
index 20f9810..897250b 100644
--- a/drivers/media/platform/fsl-viu.c
+++ b/drivers/media/platform/fsl-viu.c
@@ -860,7 +860,7 @@ int vidioc_g_fbuf(struct file *file, void *priv, struct 
v4l2_framebuffer *arg)
return 0;
 }
 
-int vidioc_s_fbuf(struct file *file, void *priv, struct v4l2_framebuffer *arg)
+int vidioc_s_fbuf(struct file *file, void *priv, const struct v4l2_framebuffer 
*arg)
 {
struct viu_fh  *fh = priv;
struct viu_dev *dev = fh-dev;
diff --git a/drivers/media/platform/omap/omap_vout.c 
b/drivers/media/platform/omap/omap_vout.c
index 88cf9d9..92845f8 100644
--- a/drivers/media/platform/omap/omap_vout.c
+++ b/drivers/media/platform/omap/omap_vout.c
@@ -1744,7 +1744,7 @@ static int vidioc_streamoff(struct file *file, void *fh, 
enum v4l2_buf_type i)
 }
 
 static int 

[RFCv2 API PATCH 20/28] v4l2: make vidioc_s_audio const.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Write-only ioctls should have a const argument in the ioctl op.

Do this conversion for vidioc_s_audio.

Adding const for write-only ioctls was decided during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/pci/bt8xx/bttv-driver.c |4 ++--
 drivers/media/pci/cx18/cx18-ioctl.c   |2 +-
 drivers/media/pci/cx23885/cx23885-video.c |2 +-
 drivers/media/pci/ivtv/ivtv-ioctl.c   |2 +-
 drivers/media/pci/saa7134/saa7134-video.c |4 ++--
 drivers/media/pci/saa7146/mxb.c   |2 +-
 drivers/media/pci/ttpci/av7110_v4l.c  |2 +-
 drivers/media/radio/radio-miropcm20.c |2 +-
 drivers/media/radio/radio-sf16fmi.c   |2 +-
 drivers/media/radio/radio-tea5764.c   |2 +-
 drivers/media/radio/radio-timb.c  |2 +-
 drivers/media/radio/radio-wl1273.c|2 +-
 drivers/media/radio/wl128x/fmdrv_v4l2.c   |2 +-
 drivers/media/usb/au0828/au0828-video.c   |2 +-
 drivers/media/usb/cx231xx/cx231xx-video.c |4 ++--
 drivers/media/usb/em28xx/em28xx-video.c   |4 ++--
 drivers/media/usb/hdpvr/hdpvr-video.c |2 +-
 drivers/media/usb/pvrusb2/pvrusb2-v4l2.c  |2 +-
 drivers/media/usb/tlg2300/pd-radio.c  |2 +-
 drivers/media/usb/tlg2300/pd-video.c  |2 +-
 drivers/media/usb/tm6000/tm6000-video.c   |2 +-
 drivers/media/usb/usbvision/usbvision-video.c |2 +-
 include/media/v4l2-ioctl.h|2 +-
 23 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/drivers/media/pci/bt8xx/bttv-driver.c 
b/drivers/media/pci/bt8xx/bttv-driver.c
index 26bf309..31b2826 100644
--- a/drivers/media/pci/bt8xx/bttv-driver.c
+++ b/drivers/media/pci/bt8xx/bttv-driver.c
@@ -3076,7 +3076,7 @@ static int bttv_g_audio(struct file *file, void *priv, 
struct v4l2_audio *a)
return 0;
 }
 
-static int bttv_s_audio(struct file *file, void *priv, struct v4l2_audio *a)
+static int bttv_s_audio(struct file *file, void *priv, const struct v4l2_audio 
*a)
 {
if (unlikely(a-index))
return -EINVAL;
@@ -3480,7 +3480,7 @@ static int radio_s_tuner(struct file *file, void *priv,
 }
 
 static int radio_s_audio(struct file *file, void *priv,
-   struct v4l2_audio *a)
+   const struct v4l2_audio *a)
 {
if (unlikely(a-index))
return -EINVAL;
diff --git a/drivers/media/pci/cx18/cx18-ioctl.c 
b/drivers/media/pci/cx18/cx18-ioctl.c
index 51675bc..ffc00ef 100644
--- a/drivers/media/pci/cx18/cx18-ioctl.c
+++ b/drivers/media/pci/cx18/cx18-ioctl.c
@@ -492,7 +492,7 @@ static int cx18_g_audio(struct file *file, void *fh, struct 
v4l2_audio *vin)
return cx18_get_audio_input(cx, vin-index, vin);
 }
 
-static int cx18_s_audio(struct file *file, void *fh, struct v4l2_audio *vout)
+static int cx18_s_audio(struct file *file, void *fh, const struct v4l2_audio 
*vout)
 {
struct cx18 *cx = fh2id(fh)-cx;
 
diff --git a/drivers/media/pci/cx23885/cx23885-video.c 
b/drivers/media/pci/cx23885/cx23885-video.c
index 22f8e7f..8c4a9a5 100644
--- a/drivers/media/pci/cx23885/cx23885-video.c
+++ b/drivers/media/pci/cx23885/cx23885-video.c
@@ -1426,7 +1426,7 @@ static int vidioc_g_audinput(struct file *file, void 
*priv,
 }
 
 static int vidioc_s_audinput(struct file *file, void *priv,
-   struct v4l2_audio *i)
+   const struct v4l2_audio *i)
 {
struct cx23885_dev *dev = ((struct cx23885_fh *)priv)-dev;
if (i-index = 2)
diff --git a/drivers/media/pci/ivtv/ivtv-ioctl.c 
b/drivers/media/pci/ivtv/ivtv-ioctl.c
index 966abb4..99e35dd 100644
--- a/drivers/media/pci/ivtv/ivtv-ioctl.c
+++ b/drivers/media/pci/ivtv/ivtv-ioctl.c
@@ -784,7 +784,7 @@ static int ivtv_g_audio(struct file *file, void *fh, struct 
v4l2_audio *vin)
return ivtv_get_audio_input(itv, vin-index, vin);
 }
 
-static int ivtv_s_audio(struct file *file, void *fh, struct v4l2_audio *vout)
+static int ivtv_s_audio(struct file *file, void *fh, const struct v4l2_audio 
*vout)
 {
struct ivtv *itv = fh2id(fh)-itv;
 
diff --git a/drivers/media/pci/saa7134/saa7134-video.c 
b/drivers/media/pci/saa7134/saa7134-video.c
index bac4386..135bfd8 100644
--- a/drivers/media/pci/saa7134/saa7134-video.c
+++ b/drivers/media/pci/saa7134/saa7134-video.c
@@ -2089,7 +2089,7 @@ static int saa7134_g_audio(struct file *file, void *priv, 
struct v4l2_audio *a)
return 0;
 }
 
-static int saa7134_s_audio(struct file *file, void *priv, struct v4l2_audio *a)
+static int saa7134_s_audio(struct file *file, void *priv, const struct 
v4l2_audio *a)
 {
return 0;
 }
@@ -2373,7 +2373,7 @@ static int radio_g_audio(struct file *file, void *priv,
 }
 
 static int radio_s_audio(struct file *file, void *priv,
-   struct v4l2_audio *a)
+  

[RFCv2 API PATCH 24/28] v4l2-dev: add new VFL_DIR_ defines.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

These will be used by v4l2-dev.c to improve ioctl checking.
I.e. ioctls for capture should return -ENOTTY when called for
an output device.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 include/media/v4l2-dev.h |9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
index 6ee8897..95d1c91 100644
--- a/include/media/v4l2-dev.h
+++ b/include/media/v4l2-dev.h
@@ -26,6 +26,12 @@
 #define VFL_TYPE_SUBDEV3
 #define VFL_TYPE_MAX   4
 
+/* Is this a receiver, transmitter or mem-to-mem? */
+/* Ignored for VFL_TYPE_SUBDEV. */
+#define VFL_DIR_RX 0
+#define VFL_DIR_TX 1
+#define VFL_DIR_M2M2
+
 struct v4l2_ioctl_callbacks;
 struct video_device;
 struct v4l2_device;
@@ -105,7 +111,8 @@ struct video_device
 
/* device info */
char name[32];
-   int vfl_type;
+   int vfl_type;   /* device type */
+   int vfl_dir;/* receiver, transmitter or m2m */
/* 'minor' is set to -1 if the registration failed */
int minor;
u16 num;
-- 
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


[RFCv2 API PATCH 19/28] v4l2: make vidioc_(un)subscribe_event const.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Write-only ioctls should have a const argument in the ioctl op.

Do this conversion for vidioc_(un)subscribe_event.

Adding const for write-only ioctls was decided during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/pci/ivtv/ivtv-ioctl.c   |2 +-
 drivers/media/platform/omap3isp/ispccdc.c |4 ++--
 drivers/media/platform/omap3isp/ispstat.c |4 ++--
 drivers/media/platform/omap3isp/ispstat.h |4 ++--
 drivers/media/v4l2-core/v4l2-ctrls.c  |2 +-
 drivers/media/v4l2-core/v4l2-event.c  |4 ++--
 include/media/v4l2-ctrls.h|2 +-
 include/media/v4l2-event.h|4 ++--
 include/media/v4l2-ioctl.h|4 ++--
 9 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/drivers/media/pci/ivtv/ivtv-ioctl.c 
b/drivers/media/pci/ivtv/ivtv-ioctl.c
index d3b32c2..966abb4 100644
--- a/drivers/media/pci/ivtv/ivtv-ioctl.c
+++ b/drivers/media/pci/ivtv/ivtv-ioctl.c
@@ -1460,7 +1460,7 @@ static int ivtv_overlay(struct file *file, void *fh, 
unsigned int on)
return 0;
 }
 
-static int ivtv_subscribe_event(struct v4l2_fh *fh, struct 
v4l2_event_subscription *sub)
+static int ivtv_subscribe_event(struct v4l2_fh *fh, const struct 
v4l2_event_subscription *sub)
 {
switch (sub-type) {
case V4L2_EVENT_VSYNC:
diff --git a/drivers/media/platform/omap3isp/ispccdc.c 
b/drivers/media/platform/omap3isp/ispccdc.c
index aa9df9d..60181ab 100644
--- a/drivers/media/platform/omap3isp/ispccdc.c
+++ b/drivers/media/platform/omap3isp/ispccdc.c
@@ -1706,7 +1706,7 @@ static long ccdc_ioctl(struct v4l2_subdev *sd, unsigned 
int cmd, void *arg)
 }
 
 static int ccdc_subscribe_event(struct v4l2_subdev *sd, struct v4l2_fh *fh,
-   struct v4l2_event_subscription *sub)
+   const struct v4l2_event_subscription *sub)
 {
if (sub-type != V4L2_EVENT_FRAME_SYNC)
return -EINVAL;
@@ -1719,7 +1719,7 @@ static int ccdc_subscribe_event(struct v4l2_subdev *sd, 
struct v4l2_fh *fh,
 }
 
 static int ccdc_unsubscribe_event(struct v4l2_subdev *sd, struct v4l2_fh *fh,
- struct v4l2_event_subscription *sub)
+ const struct v4l2_event_subscription *sub)
 {
return v4l2_event_unsubscribe(fh, sub);
 }
diff --git a/drivers/media/platform/omap3isp/ispstat.c 
b/drivers/media/platform/omap3isp/ispstat.c
index b8640be..d7ac76b 100644
--- a/drivers/media/platform/omap3isp/ispstat.c
+++ b/drivers/media/platform/omap3isp/ispstat.c
@@ -1025,7 +1025,7 @@ void omap3isp_stat_dma_isr(struct ispstat *stat)
 
 int omap3isp_stat_subscribe_event(struct v4l2_subdev *subdev,
  struct v4l2_fh *fh,
- struct v4l2_event_subscription *sub)
+ const struct v4l2_event_subscription *sub)
 {
struct ispstat *stat = v4l2_get_subdevdata(subdev);
 
@@ -1037,7 +1037,7 @@ int omap3isp_stat_subscribe_event(struct v4l2_subdev 
*subdev,
 
 int omap3isp_stat_unsubscribe_event(struct v4l2_subdev *subdev,
struct v4l2_fh *fh,
-   struct v4l2_event_subscription *sub)
+   const struct v4l2_event_subscription *sub)
 {
return v4l2_event_unsubscribe(fh, sub);
 }
diff --git a/drivers/media/platform/omap3isp/ispstat.h 
b/drivers/media/platform/omap3isp/ispstat.h
index 9b7c865..a6fe653 100644
--- a/drivers/media/platform/omap3isp/ispstat.h
+++ b/drivers/media/platform/omap3isp/ispstat.h
@@ -147,10 +147,10 @@ int omap3isp_stat_init(struct ispstat *stat, const char 
*name,
 void omap3isp_stat_cleanup(struct ispstat *stat);
 int omap3isp_stat_subscribe_event(struct v4l2_subdev *subdev,
  struct v4l2_fh *fh,
- struct v4l2_event_subscription *sub);
+ const struct v4l2_event_subscription *sub);
 int omap3isp_stat_unsubscribe_event(struct v4l2_subdev *subdev,
struct v4l2_fh *fh,
-   struct v4l2_event_subscription *sub);
+   const struct v4l2_event_subscription *sub);
 int omap3isp_stat_s_stream(struct v4l2_subdev *subdev, int enable);
 
 int omap3isp_stat_busy(struct ispstat *stat);
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c 
b/drivers/media/v4l2-core/v4l2-ctrls.c
index b6a2ee7..ac3bfe5 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -2631,7 +2631,7 @@ int v4l2_ctrl_log_status(struct file *file, void *fh)
 EXPORT_SYMBOL(v4l2_ctrl_log_status);
 
 int v4l2_ctrl_subscribe_event(struct v4l2_fh *fh,
-   struct v4l2_event_subscription *sub)
+   const struct 

[RFCv2 API PATCH 25/28] Set vfl_dir for all display or m2m drivers.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/pci/ivtv/ivtv-streams.c |3 +++
 drivers/media/pci/zoran/zoran_card.c  |4 
 drivers/media/platform/coda.c |1 +
 drivers/media/platform/davinci/vpbe_display.c |1 +
 drivers/media/platform/davinci/vpif_display.c |1 +
 drivers/media/platform/m2m-deinterlace.c  |1 +
 drivers/media/platform/mem2mem_testdev.c  |1 +
 drivers/media/platform/mx2_emmaprp.c  |1 +
 drivers/media/platform/omap/omap_vout.c   |1 +
 drivers/media/platform/omap3isp/ispvideo.c|1 +
 drivers/media/platform/s5p-fimc/fimc-m2m.c|1 +
 drivers/media/platform/s5p-g2d/g2d.c  |1 +
 drivers/media/platform/s5p-jpeg/jpeg-core.c   |1 +
 drivers/media/platform/s5p-mfc/s5p_mfc.c  |1 +
 drivers/media/platform/s5p-tv/mixer_video.c   |1 +
 drivers/media/platform/sh_vou.c   |1 +
 drivers/media/usb/uvc/uvc_driver.c|2 ++
 17 files changed, 23 insertions(+)

diff --git a/drivers/media/pci/ivtv/ivtv-streams.c 
b/drivers/media/pci/ivtv/ivtv-streams.c
index f08ec17..1d0e04a 100644
--- a/drivers/media/pci/ivtv/ivtv-streams.c
+++ b/drivers/media/pci/ivtv/ivtv-streams.c
@@ -223,6 +223,9 @@ static int ivtv_prep_dev(struct ivtv *itv, int type)
 
s-vdev-num = num;
s-vdev-v4l2_dev = itv-v4l2_dev;
+   if (ivtv_stream_info[type].buf_type == V4L2_BUF_TYPE_VIDEO_OUTPUT ||
+   ivtv_stream_info[type].buf_type == V4L2_BUF_TYPE_VBI_OUTPUT)
+   s-vdev-vfl_dir = VFL_DIR_TX;
s-vdev-fops = ivtv_stream_info[type].fops;
s-vdev-ctrl_handler = itv-v4l2_dev.ctrl_handler;
s-vdev-release = video_device_release;
diff --git a/drivers/media/pci/zoran/zoran_card.c 
b/drivers/media/pci/zoran/zoran_card.c
index c3602d6..fffc54b 100644
--- a/drivers/media/pci/zoran/zoran_card.c
+++ b/drivers/media/pci/zoran/zoran_card.c
@@ -1055,6 +1055,10 @@ zr36057_init (struct zoran *zr)
memcpy(zr-video_dev, zoran_template, sizeof(zoran_template));
zr-video_dev-parent = zr-pci_dev-dev;
strcpy(zr-video_dev-name, ZR_DEVNAME(zr));
+   /* It's not a mem2mem device, but you can both capture and output from
+  one and the same device. This should really be split up into two
+  device nodes, but that's a job for another day. */
+   zr-video_dev-vfl_dir = VFL_DIR_M2M;
err = video_register_device(zr-video_dev, VFL_TYPE_GRABBER, 
video_nr[zr-id]);
if (err  0)
goto exit_free;
diff --git a/drivers/media/platform/coda.c b/drivers/media/platform/coda.c
index 6908514..c483a6c 100644
--- a/drivers/media/platform/coda.c
+++ b/drivers/media/platform/coda.c
@@ -1641,6 +1641,7 @@ static void coda_fw_callback(const struct firmware *fw, 
void *context)
dev-vfd.release= video_device_release_empty,
dev-vfd.lock   = dev-dev_mutex;
dev-vfd.v4l2_dev   = dev-v4l2_dev;
+   dev-vfd.vfl_dir= VFL_DIR_M2M;
snprintf(dev-vfd.name, sizeof(dev-vfd.name), %s, CODA_NAME);
video_set_drvdata(dev-vfd, dev);
 
diff --git a/drivers/media/platform/davinci/vpbe_display.c 
b/drivers/media/platform/davinci/vpbe_display.c
index c7e5fd9..ed30c71 100644
--- a/drivers/media/platform/davinci/vpbe_display.c
+++ b/drivers/media/platform/davinci/vpbe_display.c
@@ -1634,6 +1634,7 @@ static __devinit int init_vpbe_layer(int i, struct 
vpbe_display *disp_dev,
vbd-minor  = -1;
vbd-v4l2_dev   = disp_dev-vpbe_dev-v4l2_dev;
vbd-lock   = vpbe_display_layer-opslock;
+   vbd-vfl_dir= VFL_DIR_TX;
 
if (disp_dev-vpbe_dev-current_timings.timings_type 
VPBE_ENC_STD) {
diff --git a/drivers/media/platform/davinci/vpif_display.c 
b/drivers/media/platform/davinci/vpif_display.c
index 4a24848..ff6e432 100644
--- a/drivers/media/platform/davinci/vpif_display.c
+++ b/drivers/media/platform/davinci/vpif_display.c
@@ -1745,6 +1745,7 @@ static __init int vpif_probe(struct platform_device *pdev)
*vfd = vpif_video_template;
vfd-v4l2_dev = vpif_obj.v4l2_dev;
vfd-release = video_device_release;
+   vfd-vfl_dir = VFL_DIR_TX;
snprintf(vfd-name, sizeof(vfd-name),
 VPIF_Display_DRIVER_V%s,
 VPIF_DISPLAY_VERSION);
diff --git a/drivers/media/platform/m2m-deinterlace.c 
b/drivers/media/platform/m2m-deinterlace.c
index a38c152..a534a9c 100644
--- a/drivers/media/platform/m2m-deinterlace.c
+++ b/drivers/media/platform/m2m-deinterlace.c
@@ -982,6 +982,7 @@ static struct video_device deinterlace_videodev = {
.ioctl_ops  = deinterlace_ioctl_ops,
.minor  = -1,
.release= video_device_release,
+   .vfl_dir= VFL_DIR_M2M,
 };
 
 static struct v4l2_m2m_ops m2m_ops = {
diff --git 

[RFCv2 API PATCH 17/28] v4l2: make vidioc_s_jpegcomp const.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Write-only ioctls should have a const argument in the ioctl op.

Do this conversion for vidioc_s_jpegcomp.

Adding const for write-only ioctls was decided during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/pci/zoran/zoran_driver.c |4 ++--
 drivers/media/usb/cpia2/cpia2_v4l.c|5 ++---
 drivers/media/usb/gspca/gspca.c|2 +-
 drivers/media/usb/gspca/gspca.h|8 +---
 drivers/media/usb/gspca/jeilinj.c  |2 +-
 drivers/media/usb/gspca/ov519.c|2 +-
 drivers/media/usb/gspca/topro.c|2 +-
 drivers/media/usb/gspca/zc3xx.c|9 ++---
 drivers/media/usb/s2255/s2255drv.c |2 +-
 drivers/media/v4l2-core/v4l2-ioctl.c   |2 ++
 drivers/staging/media/go7007/go7007-v4l2.c |2 +-
 include/media/v4l2-ioctl.h |2 +-
 12 files changed, 20 insertions(+), 22 deletions(-)

diff --git a/drivers/media/pci/zoran/zoran_driver.c 
b/drivers/media/pci/zoran/zoran_driver.c
index f91b551..9ecd7d7 100644
--- a/drivers/media/pci/zoran/zoran_driver.c
+++ b/drivers/media/pci/zoran/zoran_driver.c
@@ -2674,7 +2674,7 @@ static int zoran_g_jpegcomp(struct file *file, void *__fh,
 }
 
 static int zoran_s_jpegcomp(struct file *file, void *__fh,
-   struct v4l2_jpegcompression *params)
+   const struct v4l2_jpegcompression 
*params)
 {
struct zoran_fh *fh = __fh;
struct zoran *zr = fh-zr;
@@ -2701,7 +2701,7 @@ static int zoran_s_jpegcomp(struct file *file, void *__fh,
if (!fh-buffers.allocated)
fh-buffers.buffer_size =
zoran_v4l2_calc_bufsize(fh-jpg_settings);
-   fh-jpg_settings.jpg_comp = *params = settings.jpg_comp;
+   fh-jpg_settings.jpg_comp = settings.jpg_comp;
 sjpegc_unlock_and_return:
mutex_unlock(zr-resource_lock);
 
diff --git a/drivers/media/usb/cpia2/cpia2_v4l.c 
b/drivers/media/usb/cpia2/cpia2_v4l.c
index 5ca6f44..aeb9d22 100644
--- a/drivers/media/usb/cpia2/cpia2_v4l.c
+++ b/drivers/media/usb/cpia2/cpia2_v4l.c
@@ -734,7 +734,8 @@ static int cpia2_g_jpegcomp(struct file *file, void *fh, 
struct v4l2_jpegcompres
  *
  */
 
-static int cpia2_s_jpegcomp(struct file *file, void *fh, struct 
v4l2_jpegcompression *parms)
+static int cpia2_s_jpegcomp(struct file *file, void *fh,
+   const struct v4l2_jpegcompression *parms)
 {
struct camera_data *cam = video_drvdata(file);
 
@@ -743,8 +744,6 @@ static int cpia2_s_jpegcomp(struct file *file, void *fh, 
struct v4l2_jpegcompres
 
cam-params.compression.inhibit_htables =
!(parms-jpeg_markers  V4L2_JPEG_MARKER_DHT);
-   parms-jpeg_markers = V4L2_JPEG_MARKER_DQT | V4L2_JPEG_MARKER_DRI |
-  V4L2_JPEG_MARKER_DHT;
 
if(parms-APP_len != 0) {
if(parms-APP_len  0 
diff --git a/drivers/media/usb/gspca/gspca.c b/drivers/media/usb/gspca/gspca.c
index 5d3bcdc..a89de17 100644
--- a/drivers/media/usb/gspca/gspca.c
+++ b/drivers/media/usb/gspca/gspca.c
@@ -1687,7 +1687,7 @@ static int vidioc_g_jpegcomp(struct file *file, void 
*priv,
 }
 
 static int vidioc_s_jpegcomp(struct file *file, void *priv,
-   struct v4l2_jpegcompression *jpegcomp)
+   const struct v4l2_jpegcompression *jpegcomp)
 {
struct gspca_dev *gspca_dev = video_drvdata(file);
 
diff --git a/drivers/media/usb/gspca/gspca.h b/drivers/media/usb/gspca/gspca.h
index dc688c7..e3eab82 100644
--- a/drivers/media/usb/gspca/gspca.h
+++ b/drivers/media/usb/gspca/gspca.h
@@ -83,8 +83,10 @@ struct gspca_frame;
 typedef int (*cam_op) (struct gspca_dev *);
 typedef void (*cam_v_op) (struct gspca_dev *);
 typedef int (*cam_cf_op) (struct gspca_dev *, const struct usb_device_id *);
-typedef int (*cam_jpg_op) (struct gspca_dev *,
+typedef int (*cam_get_jpg_op) (struct gspca_dev *,
struct v4l2_jpegcompression *);
+typedef int (*cam_set_jpg_op) (struct gspca_dev *,
+   const struct v4l2_jpegcompression *);
 typedef int (*cam_reg_op) (struct gspca_dev *,
struct v4l2_dbg_register *);
 typedef int (*cam_ident_op) (struct gspca_dev *,
@@ -126,8 +128,8 @@ struct sd_desc {
cam_v_op stopN; /* called on stream off - main alt */
cam_v_op stop0; /* called on stream off  disconnect - alt 0 */
cam_v_op dq_callback;   /* called when a frame has been dequeued */
-   cam_jpg_op get_jcomp;
-   cam_jpg_op set_jcomp;
+   cam_get_jpg_op get_jcomp;
+   cam_set_jpg_op set_jcomp;
cam_qmnu_op querymenu;
cam_streamparm_op get_streamparm;
cam_streamparm_op set_streamparm;
diff --git 

[RFCv2 API PATCH 12/28] v4l2-core: Add new V4L2_CAP_MONOTONIC_TS capability.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Add a new flag that tells userspace that the monotonic clock is used
for timestamps and update the documentation accordingly.

We decided on this new flag during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 Documentation/DocBook/media/v4l/io.xml  |   10 +++---
 Documentation/DocBook/media/v4l/vidioc-dqevent.xml  |3 ++-
 Documentation/DocBook/media/v4l/vidioc-querycap.xml |7 +++
 include/linux/videodev2.h   |1 +
 4 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/io.xml 
b/Documentation/DocBook/media/v4l/io.xml
index 2dc39d8..b680d66 100644
--- a/Documentation/DocBook/media/v4l/io.xml
+++ b/Documentation/DocBook/media/v4l/io.xml
@@ -582,10 +582,14 @@ applications when an output stream./entry
entrystruct timeval/entry
entrystructfieldtimestamp/structfield/entry
entry/entry
-   entryparaFor input streams this is the
+   entryparaThis is either the
 system time (as returned by the functiongettimeofday()/function
-function) when the first data byte was captured. For output streams
-the data will not be displayed before this time, secondary to the
+function) or a monotonic timestamp (as returned by the
+functionclock_gettime(CLOCK_MONOTONIC, amp;ts)/function function).
+A monotonic timestamp is used if the constantV4L2_CAP_MONOTONIC_TS/constant
+capability is set, otherwise the system time is used.
+For input streams this is the timestamp when the first data byte was captured.
+For output streams the data will not be displayed before this time, secondary 
to the
 nominal frame rate determined by the current video standard in
 enqueued order. Applications can for example zero this field to
 display frames as soon as possible. The driver stores the time at
diff --git a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml 
b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
index 98a856f..00757d4 100644
--- a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
@@ -120,7 +120,8 @@
entrystruct timespec/entry
entrystructfieldtimestamp/structfield/entry
 entry/entry
-   entryEvent timestamp./entry
+   entryEvent timestamp using the monotonic clock as returned by the
+   functionclock_gettime(CLOCK_MONOTONIC, amp;ts)/function 
function./entry
  /row
  row
entryu32/entry
diff --git a/Documentation/DocBook/media/v4l/vidioc-querycap.xml 
b/Documentation/DocBook/media/v4l/vidioc-querycap.xml
index d5b1248..48aa7ac 100644
--- a/Documentation/DocBook/media/v4l/vidioc-querycap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-querycap.xml
@@ -319,6 +319,13 @@ linkend=asyncasynchronous/link I/O methods./entry
 linkend=mmapstreaming/link I/O method./entry
  /row
  row
+   entryconstantV4L2_CAP_MONOTONIC_TS/constant/entry
+   entry0x4000/entry
+   entryThe driver uses a monotonic timestamp instead of wallclock 
time for the
+   v4l2-buffer; structfieldtimestamp/structfield field.
+   /entry
+ /row
+ row
entryconstantV4L2_CAP_DEVICE_CAPS/constant/entry
entry0x8000/entry
entryThe driver fills the structfielddevice_caps/structfield
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 47d58ed..00f464d 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -290,6 +290,7 @@ struct v4l2_capability {
 #define V4L2_CAP_ASYNCIO0x0200  /* async I/O */
 #define V4L2_CAP_STREAMING  0x0400  /* streaming I/O ioctls */
 
+#define V4L2_CAP_MONOTONIC_TS   0x4000  /* uses monotonic 
timestamps */
 #define V4L2_CAP_DEVICE_CAPS0x8000  /* sets device 
capabilities field */
 
 /*
-- 
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


[RFCv2 API PATCH 08/28] v4l2: remove experimental tag from a number of old drivers.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

A number of old drivers still had the experimental tag. Time to remove it.

It concerns the following drivers:

VIDEO_TLV320AIC23B
USB_STKWEBCAM
VIDEO_CX18
VIDEO_CX18_ALSA
VIDEO_ZORAN_AVS6EYES
DVB_USB_AF9005
MEDIA_TUNER_TEA5761
VIDEO_NOON010PC30

This decision was taken during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/i2c/Kconfig   |4 ++--
 drivers/media/pci/cx18/Kconfig  |4 ++--
 drivers/media/pci/zoran/Kconfig |4 ++--
 drivers/media/tuners/Kconfig|5 ++---
 drivers/media/usb/dvb-usb/Kconfig   |2 +-
 drivers/media/usb/stkwebcam/Kconfig |2 +-
 6 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
index 9a5a059..64e0c5c 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -117,7 +117,7 @@ config VIDEO_CS53L32A
 
 config VIDEO_TLV320AIC23B
tristate Texas Instruments TLV320AIC23B audio codec
-   depends on VIDEO_V4L2  I2C  EXPERIMENTAL
+   depends on VIDEO_V4L2  I2C
---help---
  Support for the Texas Instruments TLV320AIC23B audio codec.
 
@@ -469,7 +469,7 @@ config VIDEO_SR030PC30
 
 config VIDEO_NOON010PC30
tristate Siliconfile NOON010PC30 sensor support
-   depends on I2C  VIDEO_V4L2  EXPERIMENTAL  VIDEO_V4L2_SUBDEV_API
+   depends on I2C  VIDEO_V4L2  VIDEO_V4L2_SUBDEV_API
depends on MEDIA_CAMERA_SUPPORT
---help---
  This driver supports NOON010PC30 CIF camera from Siliconfile
diff --git a/drivers/media/pci/cx18/Kconfig b/drivers/media/pci/cx18/Kconfig
index 9a9f765..c675b83 100644
--- a/drivers/media/pci/cx18/Kconfig
+++ b/drivers/media/pci/cx18/Kconfig
@@ -1,6 +1,6 @@
 config VIDEO_CX18
tristate Conexant cx23418 MPEG encoder support
-   depends on VIDEO_V4L2  DVB_CORE  PCI  I2C  EXPERIMENTAL
+   depends on VIDEO_V4L2  DVB_CORE  PCI  I2C
select I2C_ALGOBIT
select VIDEOBUF_VMALLOC
depends on RC_CORE
@@ -25,7 +25,7 @@ config VIDEO_CX18
 
 config VIDEO_CX18_ALSA
tristate Conexant 23418 DMA audio support
-   depends on VIDEO_CX18  SND  EXPERIMENTAL
+   depends on VIDEO_CX18  SND
select SND_PCM
---help---
  This is a video4linux driver for direct (DMA) audio on
diff --git a/drivers/media/pci/zoran/Kconfig b/drivers/media/pci/zoran/Kconfig
index a9b2318..26ca870 100644
--- a/drivers/media/pci/zoran/Kconfig
+++ b/drivers/media/pci/zoran/Kconfig
@@ -65,8 +65,8 @@ config VIDEO_ZORAN_LML33R10
  card.
 
 config VIDEO_ZORAN_AVS6EYES
-   tristate AverMedia 6 Eyes support (EXPERIMENTAL)
-   depends on VIDEO_ZORAN_ZR36060  EXPERIMENTAL
+   tristate AverMedia 6 Eyes support
+   depends on VIDEO_ZORAN_ZR36060
select VIDEO_BT856 if MEDIA_SUBDRV_AUTOSELECT
select VIDEO_BT866 if MEDIA_SUBDRV_AUTOSELECT
select VIDEO_KS0127 if MEDIA_SUBDRV_AUTOSELECT
diff --git a/drivers/media/tuners/Kconfig b/drivers/media/tuners/Kconfig
index 80238b9..901d886 100644
--- a/drivers/media/tuners/Kconfig
+++ b/drivers/media/tuners/Kconfig
@@ -28,7 +28,7 @@ config MEDIA_TUNER
select MEDIA_TUNER_XC4000 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_MT20XX if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_TDA8290 if MEDIA_SUBDRV_AUTOSELECT
-   select MEDIA_TUNER_TEA5761 if MEDIA_SUBDRV_AUTOSELECT  
MEDIA_RADIO_SUPPORT  EXPERIMENTAL
+   select MEDIA_TUNER_TEA5761 if MEDIA_SUBDRV_AUTOSELECT  
MEDIA_RADIO_SUPPORT
select MEDIA_TUNER_TEA5767 if MEDIA_SUBDRV_AUTOSELECT  
MEDIA_RADIO_SUPPORT
select MEDIA_TUNER_SIMPLE if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_TDA9887 if MEDIA_SUBDRV_AUTOSELECT
@@ -78,9 +78,8 @@ config MEDIA_TUNER_TDA9887
  analog IF demodulator.
 
 config MEDIA_TUNER_TEA5761
-   tristate TEA 5761 radio tuner (EXPERIMENTAL)
+   tristate TEA 5761 radio tuner
depends on MEDIA_SUPPORT  I2C
-   depends on EXPERIMENTAL
default m if !MEDIA_SUBDRV_AUTOSELECT
help
  Say Y here to include support for the Philips TEA5761 radio tuner.
diff --git a/drivers/media/usb/dvb-usb/Kconfig 
b/drivers/media/usb/dvb-usb/Kconfig
index 3c5fff8..fa0b293 100644
--- a/drivers/media/usb/dvb-usb/Kconfig
+++ b/drivers/media/usb/dvb-usb/Kconfig
@@ -227,7 +227,7 @@ config DVB_USB_OPERA1
 
 config DVB_USB_AF9005
tristate Afatech AF9005 DVB-T USB1.1 support
-   depends on DVB_USB  EXPERIMENTAL
+   depends on DVB_USB
select MEDIA_TUNER_MT2060 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT
help
diff --git a/drivers/media/usb/stkwebcam/Kconfig 
b/drivers/media/usb/stkwebcam/Kconfig
index 2fb0c2b..a6a00aa 100644
--- a/drivers/media/usb/stkwebcam/Kconfig
+++ b/drivers/media/usb/stkwebcam/Kconfig
@@ -1,6 +1,6 @@
 config USB_STKWEBCAM
tristate USB Syntek DC1125 Camera 

[RFCv2 API PATCH 01/28] v4l: Remove experimental tag from certain API elements

2012-09-07 Thread Hans Verkuil
From: Sakari Ailus sakari.ai...@iki.fi

Remove experimantal tag from the following API elements:

V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY buffer type.
V4L2_CAP_VIDEO_OUTPUT_OVERLAY capability flag.
VIDIOC_ENUM_FRAMESIZES IOCTL.
VIDIOC_ENUM_FRAMEINTERVALS IOCTL.
VIDIOC_G_ENC_INDEX IOCTL.
VIDIOC_ENCODER_CMD and VIDIOC_TRY_ENCODER_CMD IOCTLs.
VIDIOC_DECODER_CMD and VIDIOC_TRY_DECODER_CMD IOCTLs.

Signed-off-by: Sakari Ailus sakari.ai...@iki.fi
Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 Documentation/DocBook/media/v4l/compat.xml |   23 
 Documentation/DocBook/media/v4l/dev-osd.xml|7 --
 Documentation/DocBook/media/v4l/io.xml |3 +--
 .../DocBook/media/v4l/vidioc-decoder-cmd.xml   |7 --
 .../DocBook/media/v4l/vidioc-encoder-cmd.xml   |7 --
 .../DocBook/media/v4l/vidioc-enum-framesizes.xml   |7 --
 .../DocBook/media/v4l/vidioc-g-enc-index.xml   |7 --
 7 files changed, 1 insertion(+), 60 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/compat.xml 
b/Documentation/DocBook/media/v4l/compat.xml
index 98e8d08..578135e 100644
--- a/Documentation/DocBook/media/v4l/compat.xml
+++ b/Documentation/DocBook/media/v4l/compat.xml
@@ -2555,29 +2555,6 @@ and may change in the future./para
  paraVideo Output Overlay (OSD) Interface, xref
linkend=osd /./para
 /listitem
-   listitem
- paraconstantV4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY/constant,
-   v4l2-buf-type;, xref linkend=v4l2-buf-type /./para
-/listitem
-listitem
- paraconstantV4L2_CAP_VIDEO_OUTPUT_OVERLAY/constant,
-VIDIOC-QUERYCAP; ioctl, xref linkend=device-capabilities /./para
-/listitem
-listitem
- paraVIDIOC-ENUM-FRAMESIZES; and
-VIDIOC-ENUM-FRAMEINTERVALS; ioctls./para
-/listitem
-listitem
- paraVIDIOC-G-ENC-INDEX; ioctl./para
-/listitem
-listitem
- paraVIDIOC-ENCODER-CMD; and VIDIOC-TRY-ENCODER-CMD;
-ioctls./para
-/listitem
-listitem
- paraVIDIOC-DECODER-CMD; and VIDIOC-TRY-DECODER-CMD;
-ioctls./para
-/listitem
 listitem
  paraVIDIOC-DBG-G-REGISTER; and VIDIOC-DBG-S-REGISTER;
 ioctls./para
diff --git a/Documentation/DocBook/media/v4l/dev-osd.xml 
b/Documentation/DocBook/media/v4l/dev-osd.xml
index 479d943..dd91d61 100644
--- a/Documentation/DocBook/media/v4l/dev-osd.xml
+++ b/Documentation/DocBook/media/v4l/dev-osd.xml
@@ -1,13 +1,6 @@
   titleVideo Output Overlay Interface/title
   subtitleAlso known as On-Screen Display (OSD)/subtitle
 
-  note
-titleExperimental/title
-
-paraThis is an link linkend=experimentalexperimental/link
-interface and may change in the future./para
-  /note
-
   paraSome video output devices can overlay a framebuffer image onto
 the outgoing video signal. Applications can set up such an overlay
 using this interface, which borrows structures and ioctls of the link
diff --git a/Documentation/DocBook/media/v4l/io.xml 
b/Documentation/DocBook/media/v4l/io.xml
index 1885cc0..2512649 100644
--- a/Documentation/DocBook/media/v4l/io.xml
+++ b/Documentation/DocBook/media/v4l/io.xml
@@ -827,8 +827,7 @@ should set this to 0./entry

entryconstantV4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY/constant/entry
entry8/entry
entryBuffer for video output overlay (OSD), see xref
-   linkend=osd /. Status: link
-linkend=experimentalExperimental/link./entry
+   linkend=osd /./entry
  /row
  row
entryconstantV4L2_BUF_TYPE_PRIVATE/constant/entry
diff --git a/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml 
b/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
index 74b87f6..9215627 100644
--- a/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
@@ -49,13 +49,6 @@
   refsect1
 titleDescription/title
 
-note
-  titleExperimental/title
-
-  paraThis is an link linkend=experimentalexperimental/link
-interface and may change in the future./para
-/note
-
 paraThese ioctls control an audio/video (usually MPEG-) decoder.
 constantVIDIOC_DECODER_CMD/constant sends a command to the
 decoder, constantVIDIOC_TRY_DECODER_CMD/constant can be used to
diff --git a/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml 
b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
index f431b3b..0619ca5 100644
--- a/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
@@ -49,13 +49,6 @@
   refsect1
 titleDescription/title
 
-note
-  titleExperimental/title
-
-  paraThis is an link linkend=experimentalexperimental/link
-interface and may change in the future./para
-/note
-
 paraThese ioctls control an audio/video (usually MPEG-) encoder.
 constantVIDIOC_ENCODER_CMD/constant sends a command to the
 encoder, 

[RFCv2 API PATCH 14/28] DocBook: clarify that sequence is also set for output devices.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

It was not entirely obvious that the sequence count should also
be set for output devices. Also made it more explicit that this
sequence counter counts frames, not fields.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 Documentation/DocBook/media/v4l/io.xml |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/io.xml 
b/Documentation/DocBook/media/v4l/io.xml
index b680d66..d1c2369 100644
--- a/Documentation/DocBook/media/v4l/io.xml
+++ b/Documentation/DocBook/media/v4l/io.xml
@@ -617,8 +617,8 @@ field is independent of the 
structfieldtimestamp/structfield and
entry__u32/entry
entrystructfieldsequence/structfield/entry
entry/entry
-   entrySet by the driver, counting the frames in the
-sequence./entry
+   entrySet by the driver, counting the frames (not fields!) in the
+sequence. This field is set for both input and output devices./entry
  /row
  row
entry spanname=hspanparaIn link
-- 
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


[RFCv2 API PATCH 22/28] v4l2: make vidioc_s_modulator const.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Write-only ioctls should have a const argument in the ioctl op.

Do this conversion for vidioc_s_modulator.

Adding const for write-only ioctls was decided during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/radio/radio-keene.c   |2 +-
 drivers/media/radio/radio-si4713.c  |2 +-
 drivers/media/radio/radio-wl1273.c  |2 +-
 drivers/media/radio/si4713-i2c.c|4 ++--
 drivers/media/radio/wl128x/fmdrv_v4l2.c |2 +-
 include/media/v4l2-ioctl.h  |2 +-
 include/media/v4l2-subdev.h |2 +-
 7 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/media/radio/radio-keene.c 
b/drivers/media/radio/radio-keene.c
index 79adf3e..e10e525 100644
--- a/drivers/media/radio/radio-keene.c
+++ b/drivers/media/radio/radio-keene.c
@@ -203,7 +203,7 @@ static int vidioc_g_modulator(struct file *file, void *priv,
 }
 
 static int vidioc_s_modulator(struct file *file, void *priv,
-   struct v4l2_modulator *v)
+   const struct v4l2_modulator *v)
 {
struct keene_device *radio = video_drvdata(file);
 
diff --git a/drivers/media/radio/radio-si4713.c 
b/drivers/media/radio/radio-si4713.c
index 1e04101..a082e40 100644
--- a/drivers/media/radio/radio-si4713.c
+++ b/drivers/media/radio/radio-si4713.c
@@ -200,7 +200,7 @@ static int radio_si4713_g_modulator(struct file *file, void 
*p,
 }
 
 static int radio_si4713_s_modulator(struct file *file, void *p,
-   struct v4l2_modulator *vm)
+   const struct v4l2_modulator *vm)
 {
return v4l2_device_call_until_err(get_v4l2_dev(file), 0, tuner,
s_modulator, vm);
diff --git a/drivers/media/radio/radio-wl1273.c 
b/drivers/media/radio/radio-wl1273.c
index 2d93354..b53ecbc 100644
--- a/drivers/media/radio/radio-wl1273.c
+++ b/drivers/media/radio/radio-wl1273.c
@@ -1715,7 +1715,7 @@ out:
 }
 
 static int wl1273_fm_vidioc_s_modulator(struct file *file, void *priv,
-   struct v4l2_modulator *modulator)
+   const struct v4l2_modulator *modulator)
 {
struct wl1273_device *radio = video_get_drvdata(video_devdata(file));
struct wl1273_core *core = radio-core;
diff --git a/drivers/media/radio/si4713-i2c.c b/drivers/media/radio/si4713-i2c.c
index b898c89..a9e6d17 100644
--- a/drivers/media/radio/si4713-i2c.c
+++ b/drivers/media/radio/si4713-i2c.c
@@ -1213,7 +1213,7 @@ exit:
 }
 
 static int si4713_s_frequency(struct v4l2_subdev *sd, struct v4l2_frequency 
*f);
-static int si4713_s_modulator(struct v4l2_subdev *sd, struct v4l2_modulator *);
+static int si4713_s_modulator(struct v4l2_subdev *sd, const struct 
v4l2_modulator *);
 /*
  * si4713_setup - Sets the device up with current configuration.
  * @sdev: si4713_device structure for the device we are communicating
@@ -1873,7 +1873,7 @@ exit:
 }
 
 /* si4713_s_modulator - set modulator attributes */
-static int si4713_s_modulator(struct v4l2_subdev *sd, struct v4l2_modulator 
*vm)
+static int si4713_s_modulator(struct v4l2_subdev *sd, const struct 
v4l2_modulator *vm)
 {
struct si4713_device *sdev = to_si4713_device(sd);
int rval = 0;
diff --git a/drivers/media/radio/wl128x/fmdrv_v4l2.c 
b/drivers/media/radio/wl128x/fmdrv_v4l2.c
index 09585a9..8a672a3 100644
--- a/drivers/media/radio/wl128x/fmdrv_v4l2.c
+++ b/drivers/media/radio/wl128x/fmdrv_v4l2.c
@@ -448,7 +448,7 @@ static int fm_v4l2_vidioc_g_modulator(struct file *file, 
void *priv,
 
 /* Set modulator attributes. If mode is not TX, set to TX. */
 static int fm_v4l2_vidioc_s_modulator(struct file *file, void *priv,
-   struct v4l2_modulator *mod)
+   const struct v4l2_modulator *mod)
 {
struct fmdev *fmdev = video_drvdata(file);
u8 rds_mode;
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
index d4c7729..fbeb00e 100644
--- a/include/media/v4l2-ioctl.h
+++ b/include/media/v4l2-ioctl.h
@@ -179,7 +179,7 @@ struct v4l2_ioctl_ops {
int (*vidioc_g_modulator)  (struct file *file, void *fh,
struct v4l2_modulator *a);
int (*vidioc_s_modulator)  (struct file *file, void *fh,
-   struct v4l2_modulator *a);
+   const struct v4l2_modulator *a);
/* Crop ioctls */
int (*vidioc_cropcap)  (struct file *file, void *fh,
struct v4l2_cropcap *a);
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
index 4cc1652..279bd8d 100644
--- a/include/media/v4l2-subdev.h
+++ b/include/media/v4l2-subdev.h
@@ -194,7 +194,7 @@ struct v4l2_subdev_tuner_ops {
int (*g_tuner)(struct 

[RFCv2 API PATCH 26/28] v4l2-dev: improve ioctl validity checks.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

The ioctl validity checks have been improved and now take vfl_type
and vfl_dir into account.

During the 2012 Media Workshop it was decided that these improved
v4l2 core checks should be added as they simplified drivers and
made drivers behave consistently.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/v4l2-core/v4l2-dev.c   |  228 --
 drivers/media/v4l2-core/v4l2-ioctl.c |  182 +++
 2 files changed, 237 insertions(+), 173 deletions(-)

diff --git a/drivers/media/v4l2-core/v4l2-dev.c 
b/drivers/media/v4l2-core/v4l2-dev.c
index 95f92ea..3e15a079 100644
--- a/drivers/media/v4l2-core/v4l2-dev.c
+++ b/drivers/media/v4l2-core/v4l2-dev.c
@@ -551,6 +551,11 @@ static void determine_valid_ioctls(struct video_device 
*vdev)
 {
DECLARE_BITMAP(valid_ioctls, BASE_VIDIOC_PRIVATE);
const struct v4l2_ioctl_ops *ops = vdev-ioctl_ops;
+   bool is_vid = vdev-vfl_type == VFL_TYPE_GRABBER;
+   bool is_vbi = vdev-vfl_type == VFL_TYPE_VBI;
+   bool is_radio = vdev-vfl_type == VFL_TYPE_RADIO;
+   bool is_rx = vdev-vfl_dir != VFL_DIR_TX;
+   bool is_tx = vdev-vfl_dir != VFL_DIR_RX;
 
bitmap_zero(valid_ioctls, BASE_VIDIOC_PRIVATE);
 
@@ -561,66 +566,87 @@ static void determine_valid_ioctls(struct video_device 
*vdev)
if (ops-vidioc_s_priority ||
test_bit(V4L2_FL_USE_FH_PRIO, vdev-flags))
set_bit(_IOC_NR(VIDIOC_S_PRIORITY), valid_ioctls);
-   if (ops-vidioc_enum_fmt_vid_cap ||
-   ops-vidioc_enum_fmt_vid_out ||
-   ops-vidioc_enum_fmt_vid_cap_mplane ||
-   ops-vidioc_enum_fmt_vid_out_mplane ||
-   ops-vidioc_enum_fmt_vid_overlay)
-   set_bit(_IOC_NR(VIDIOC_ENUM_FMT), valid_ioctls);
-   if (ops-vidioc_g_fmt_vid_cap ||
-   ops-vidioc_g_fmt_vid_out ||
-   ops-vidioc_g_fmt_vid_cap_mplane ||
-   ops-vidioc_g_fmt_vid_out_mplane ||
-   ops-vidioc_g_fmt_vid_overlay ||
-   ops-vidioc_g_fmt_vbi_cap ||
-   ops-vidioc_g_fmt_vid_out_overlay ||
-   ops-vidioc_g_fmt_vbi_out ||
-   ops-vidioc_g_fmt_sliced_vbi_cap ||
-   ops-vidioc_g_fmt_sliced_vbi_out)
-   set_bit(_IOC_NR(VIDIOC_G_FMT), valid_ioctls);
-   if (ops-vidioc_s_fmt_vid_cap ||
-   ops-vidioc_s_fmt_vid_out ||
-   ops-vidioc_s_fmt_vid_cap_mplane ||
-   ops-vidioc_s_fmt_vid_out_mplane ||
-   ops-vidioc_s_fmt_vid_overlay ||
-   ops-vidioc_s_fmt_vbi_cap ||
-   ops-vidioc_s_fmt_vid_out_overlay ||
-   ops-vidioc_s_fmt_vbi_out ||
-   ops-vidioc_s_fmt_sliced_vbi_cap ||
-   ops-vidioc_s_fmt_sliced_vbi_out)
-   set_bit(_IOC_NR(VIDIOC_S_FMT), valid_ioctls);
-   if (ops-vidioc_try_fmt_vid_cap ||
-   ops-vidioc_try_fmt_vid_out ||
-   ops-vidioc_try_fmt_vid_cap_mplane ||
-   ops-vidioc_try_fmt_vid_out_mplane ||
-   ops-vidioc_try_fmt_vid_overlay ||
-   ops-vidioc_try_fmt_vbi_cap ||
-   ops-vidioc_try_fmt_vid_out_overlay ||
-   ops-vidioc_try_fmt_vbi_out ||
-   ops-vidioc_try_fmt_sliced_vbi_cap ||
-   ops-vidioc_try_fmt_sliced_vbi_out)
-   set_bit(_IOC_NR(VIDIOC_TRY_FMT), valid_ioctls);
+   if (is_vid) {
+   if ((is_rx  (ops-vidioc_enum_fmt_vid_cap ||
+  ops-vidioc_enum_fmt_vid_cap_mplane ||
+  ops-vidioc_enum_fmt_vid_overlay)) ||
+   (is_tx  (ops-vidioc_enum_fmt_vid_out ||
+  ops-vidioc_enum_fmt_vid_out_mplane)))
+   set_bit(_IOC_NR(VIDIOC_ENUM_FMT), valid_ioctls);
+   if ((is_rx  (ops-vidioc_g_fmt_vid_cap ||
+  ops-vidioc_g_fmt_vid_cap_mplane ||
+  ops-vidioc_g_fmt_vid_overlay)) ||
+   (is_tx  (ops-vidioc_g_fmt_vid_out ||
+  ops-vidioc_g_fmt_vid_out_mplane ||
+  ops-vidioc_g_fmt_vid_out_overlay)))
+set_bit(_IOC_NR(VIDIOC_G_FMT), valid_ioctls);
+   if ((is_rx  (ops-vidioc_s_fmt_vid_cap ||
+  ops-vidioc_s_fmt_vid_cap_mplane ||
+  ops-vidioc_s_fmt_vid_overlay)) ||
+   (is_tx  (ops-vidioc_s_fmt_vid_out ||
+  ops-vidioc_s_fmt_vid_out_mplane ||
+  ops-vidioc_s_fmt_vid_out_overlay)))
+set_bit(_IOC_NR(VIDIOC_S_FMT), valid_ioctls);
+   if ((is_rx  (ops-vidioc_try_fmt_vid_cap ||
+  ops-vidioc_try_fmt_vid_cap_mplane ||
+  ops-vidioc_try_fmt_vid_overlay)) ||
+   (is_tx  (ops-vidioc_try_fmt_vid_out ||
+  

[RFCv2 API PATCH 27/28] v4l2-dev: reorder checks into blocks of ioctls with similar properties.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

This makes it easier to read and also ties in more closely with the
profile concept.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/v4l2-core/v4l2-dev.c |  156 +---
 1 file changed, 74 insertions(+), 82 deletions(-)

diff --git a/drivers/media/v4l2-core/v4l2-dev.c 
b/drivers/media/v4l2-core/v4l2-dev.c
index 3e15a079..4b86065 100644
--- a/drivers/media/v4l2-core/v4l2-dev.c
+++ b/drivers/media/v4l2-core/v4l2-dev.c
@@ -559,6 +559,8 @@ static void determine_valid_ioctls(struct video_device 
*vdev)
 
bitmap_zero(valid_ioctls, BASE_VIDIOC_PRIVATE);
 
+   /* vfl_type and vfl_dir independent ioctls */
+
SET_VALID_IOCTL(ops, VIDIOC_QUERYCAP, vidioc_querycap);
if (ops-vidioc_g_priority ||
test_bit(V4L2_FL_USE_FH_PRIO, vdev-flags))
@@ -566,7 +568,49 @@ static void determine_valid_ioctls(struct video_device 
*vdev)
if (ops-vidioc_s_priority ||
test_bit(V4L2_FL_USE_FH_PRIO, vdev-flags))
set_bit(_IOC_NR(VIDIOC_S_PRIORITY), valid_ioctls);
+   SET_VALID_IOCTL(ops, VIDIOC_REQBUFS, vidioc_reqbufs);
+   SET_VALID_IOCTL(ops, VIDIOC_QUERYBUF, vidioc_querybuf);
+   SET_VALID_IOCTL(ops, VIDIOC_QBUF, vidioc_qbuf);
+   SET_VALID_IOCTL(ops, VIDIOC_DQBUF, vidioc_dqbuf);
+   SET_VALID_IOCTL(ops, VIDIOC_STREAMON, vidioc_streamon);
+   SET_VALID_IOCTL(ops, VIDIOC_STREAMOFF, vidioc_streamoff);
+   /* Note: the control handler can also be passed through the filehandle,
+  and that can't be tested here. If the bit for these control ioctls
+  is set, then the ioctl is valid. But if it is 0, then it can still
+  be valid if the filehandle passed the control handler. */
+   if (vdev-ctrl_handler || ops-vidioc_queryctrl)
+   set_bit(_IOC_NR(VIDIOC_QUERYCTRL), valid_ioctls);
+   if (vdev-ctrl_handler || ops-vidioc_g_ctrl || ops-vidioc_g_ext_ctrls)
+   set_bit(_IOC_NR(VIDIOC_G_CTRL), valid_ioctls);
+   if (vdev-ctrl_handler || ops-vidioc_s_ctrl || ops-vidioc_s_ext_ctrls)
+   set_bit(_IOC_NR(VIDIOC_S_CTRL), valid_ioctls);
+   if (vdev-ctrl_handler || ops-vidioc_g_ext_ctrls)
+   set_bit(_IOC_NR(VIDIOC_G_EXT_CTRLS), valid_ioctls);
+   if (vdev-ctrl_handler || ops-vidioc_s_ext_ctrls)
+   set_bit(_IOC_NR(VIDIOC_S_EXT_CTRLS), valid_ioctls);
+   if (vdev-ctrl_handler || ops-vidioc_try_ext_ctrls)
+   set_bit(_IOC_NR(VIDIOC_TRY_EXT_CTRLS), valid_ioctls);
+   if (vdev-ctrl_handler || ops-vidioc_querymenu)
+   set_bit(_IOC_NR(VIDIOC_QUERYMENU), valid_ioctls);
+   SET_VALID_IOCTL(ops, VIDIOC_G_FREQUENCY, vidioc_g_frequency);
+   SET_VALID_IOCTL(ops, VIDIOC_S_FREQUENCY, vidioc_s_frequency);
+   SET_VALID_IOCTL(ops, VIDIOC_LOG_STATUS, vidioc_log_status);
+#ifdef CONFIG_VIDEO_ADV_DEBUG
+   SET_VALID_IOCTL(ops, VIDIOC_DBG_G_REGISTER, vidioc_g_register);
+   SET_VALID_IOCTL(ops, VIDIOC_DBG_S_REGISTER, vidioc_s_register);
+#endif
+   SET_VALID_IOCTL(ops, VIDIOC_DBG_G_CHIP_IDENT, vidioc_g_chip_ident);
+   /* yes, really vidioc_subscribe_event */
+   SET_VALID_IOCTL(ops, VIDIOC_DQEVENT, vidioc_subscribe_event);
+   SET_VALID_IOCTL(ops, VIDIOC_SUBSCRIBE_EVENT, vidioc_subscribe_event);
+   SET_VALID_IOCTL(ops, VIDIOC_UNSUBSCRIBE_EVENT, 
vidioc_unsubscribe_event);
+   SET_VALID_IOCTL(ops, VIDIOC_CREATE_BUFS, vidioc_create_bufs);
+   SET_VALID_IOCTL(ops, VIDIOC_PREPARE_BUF, vidioc_prepare_buf);
+   if (ops-vidioc_enum_freq_bands || ops-vidioc_g_tuner || 
ops-vidioc_g_modulator)
+   set_bit(_IOC_NR(VIDIOC_ENUM_FREQ_BANDS), valid_ioctls);
+
if (is_vid) {
+   /* video specific ioctls */
if ((is_rx  (ops-vidioc_enum_fmt_vid_cap ||
   ops-vidioc_enum_fmt_vid_cap_mplane ||
   ops-vidioc_enum_fmt_vid_overlay)) ||
@@ -594,7 +638,20 @@ static void determine_valid_ioctls(struct video_device 
*vdev)
   ops-vidioc_try_fmt_vid_out_mplane ||
   ops-vidioc_try_fmt_vid_out_overlay)))
 set_bit(_IOC_NR(VIDIOC_TRY_FMT), valid_ioctls);
+   SET_VALID_IOCTL(ops, VIDIOC_OVERLAY, vidioc_overlay);
+   SET_VALID_IOCTL(ops, VIDIOC_G_FBUF, vidioc_g_fbuf);
+   SET_VALID_IOCTL(ops, VIDIOC_S_FBUF, vidioc_s_fbuf);
+   SET_VALID_IOCTL(ops, VIDIOC_G_JPEGCOMP, vidioc_g_jpegcomp);
+   SET_VALID_IOCTL(ops, VIDIOC_S_JPEGCOMP, vidioc_s_jpegcomp);
+   SET_VALID_IOCTL(ops, VIDIOC_G_ENC_INDEX, vidioc_g_enc_index);
+   SET_VALID_IOCTL(ops, VIDIOC_ENCODER_CMD, vidioc_encoder_cmd);
+   SET_VALID_IOCTL(ops, VIDIOC_TRY_ENCODER_CMD, 
vidioc_try_encoder_cmd);
+   SET_VALID_IOCTL(ops, VIDIOC_DECODER_CMD, 

[RFCv2 API PATCH 18/28] v4l2: make vidioc_s_freq_hw_seek const.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Write-only ioctls should have a const argument in the ioctl op.

Do this conversion for vidioc_s_freq_hw_seek.

Adding const for write-only ioctls was decided during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/radio/radio-mr800.c|2 +-
 drivers/media/radio/radio-tea5777.c  |2 +-
 drivers/media/radio/radio-wl1273.c   |2 +-
 drivers/media/radio/si470x/radio-si470x-common.c |4 ++--
 drivers/media/radio/wl128x/fmdrv_v4l2.c  |2 +-
 include/media/v4l2-ioctl.h   |2 +-
 sound/i2c/other/tea575x-tuner.c  |2 +-
 7 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/media/radio/radio-mr800.c 
b/drivers/media/radio/radio-mr800.c
index 3182b26..720bf0d 100644
--- a/drivers/media/radio/radio-mr800.c
+++ b/drivers/media/radio/radio-mr800.c
@@ -348,7 +348,7 @@ static int vidioc_g_frequency(struct file *file, void *priv,
 }
 
 static int vidioc_s_hw_freq_seek(struct file *file, void *priv,
-   struct v4l2_hw_freq_seek *seek)
+   const struct v4l2_hw_freq_seek *seek)
 {
static u8 buf[8] = {
0x3d, 0x32, 0x0f, 0x08, 0x3d, 0x32, 0x0f, 0x08
diff --git a/drivers/media/radio/radio-tea5777.c 
b/drivers/media/radio/radio-tea5777.c
index 5bc9fa6..82a1617 100644
--- a/drivers/media/radio/radio-tea5777.c
+++ b/drivers/media/radio/radio-tea5777.c
@@ -303,7 +303,7 @@ static int vidioc_s_frequency(struct file *file, void *priv,
 }
 
 static int vidioc_s_hw_freq_seek(struct file *file, void *fh,
-   struct v4l2_hw_freq_seek *a)
+   const struct v4l2_hw_freq_seek *a)
 {
struct radio_tea5777 *tea = video_drvdata(file);
u32 orig_freq = tea-freq;
diff --git a/drivers/media/radio/radio-wl1273.c 
b/drivers/media/radio/radio-wl1273.c
index a22ad1c..71968a6 100644
--- a/drivers/media/radio/radio-wl1273.c
+++ b/drivers/media/radio/radio-wl1273.c
@@ -1682,7 +1682,7 @@ static int wl1273_fm_vidioc_s_frequency(struct file 
*file, void *priv,
 #define WL1273_DEFAULT_SEEK_LEVEL  7
 
 static int wl1273_fm_vidioc_s_hw_freq_seek(struct file *file, void *priv,
-  struct v4l2_hw_freq_seek *seek)
+  const struct v4l2_hw_freq_seek *seek)
 {
struct wl1273_device *radio = video_get_drvdata(video_devdata(file));
struct wl1273_core *core = radio-core;
diff --git a/drivers/media/radio/si470x/radio-si470x-common.c 
b/drivers/media/radio/si470x/radio-si470x-common.c
index 9bb65e1..74a5c90 100644
--- a/drivers/media/radio/si470x/radio-si470x-common.c
+++ b/drivers/media/radio/si470x/radio-si470x-common.c
@@ -296,7 +296,7 @@ int si470x_set_freq(struct si470x_device *radio, unsigned 
int freq)
  * si470x_set_seek - set seek
  */
 static int si470x_set_seek(struct si470x_device *radio,
-  struct v4l2_hw_freq_seek *seek)
+  const struct v4l2_hw_freq_seek *seek)
 {
int band, retval;
unsigned int freq;
@@ -701,7 +701,7 @@ static int si470x_vidioc_s_frequency(struct file *file, 
void *priv,
  * si470x_vidioc_s_hw_freq_seek - set hardware frequency seek
  */
 static int si470x_vidioc_s_hw_freq_seek(struct file *file, void *priv,
-   struct v4l2_hw_freq_seek *seek)
+   const struct v4l2_hw_freq_seek *seek)
 {
struct si470x_device *radio = video_drvdata(file);
 
diff --git a/drivers/media/radio/wl128x/fmdrv_v4l2.c 
b/drivers/media/radio/wl128x/fmdrv_v4l2.c
index db2248e..f816ea6 100644
--- a/drivers/media/radio/wl128x/fmdrv_v4l2.c
+++ b/drivers/media/radio/wl128x/fmdrv_v4l2.c
@@ -403,7 +403,7 @@ static int fm_v4l2_vidioc_s_freq(struct file *file, void 
*priv,
 
 /* Set hardware frequency seek. If current mode is NOT RX, set it RX. */
 static int fm_v4l2_vidioc_s_hw_freq_seek(struct file *file, void *priv,
-   struct v4l2_hw_freq_seek *seek)
+   const struct v4l2_hw_freq_seek *seek)
 {
struct fmdev *fmdev = video_drvdata(file);
int ret;
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
index 21f6245..865f95d 100644
--- a/include/media/v4l2-ioctl.h
+++ b/include/media/v4l2-ioctl.h
@@ -233,7 +233,7 @@ struct v4l2_ioctl_ops {
int (*vidioc_log_status)   (struct file *file, void *fh);
 
int (*vidioc_s_hw_freq_seek)   (struct file *file, void *fh,
-   struct v4l2_hw_freq_seek *a);
+   const struct v4l2_hw_freq_seek *a);
 
/* Debugging ioctls */
 #ifdef CONFIG_VIDEO_ADV_DEBUG
diff --git a/sound/i2c/other/tea575x-tuner.c b/sound/i2c/other/tea575x-tuner.c
index d14edb7..59cebe2 100644
--- a/sound/i2c/other/tea575x-tuner.c
+++ b/sound/i2c/other/tea575x-tuner.c
@@ -255,7 +255,7 @@ static 

[RFCv2 API PATCH 03/28] DocBook: improve STREAMON/OFF documentation.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Specify that STREAMON/OFF should return 0 if the stream is already
started/stopped.

The spec never specified what the correct behavior is. This ambiguity
was resolved during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 Documentation/DocBook/media/v4l/vidioc-streamon.xml |7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/Documentation/DocBook/media/v4l/vidioc-streamon.xml 
b/Documentation/DocBook/media/v4l/vidioc-streamon.xml
index 81cca45..716ea15 100644
--- a/Documentation/DocBook/media/v4l/vidioc-streamon.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-streamon.xml
@@ -74,7 +74,12 @@ not transmitted yet. I/O returns to the same state as after 
calling
 stream type. This is the same as v4l2-requestbuffers;
 structfieldtype/structfield./para
 
-paraNote applications can be preempted for unknown periods right
+paraIf constantVIDIOC_STREAMON/constant is called when streaming
+is already in progress, or if constantVIDIOC_STREAMOFF/constant is called
+when streaming is already stopped, then the ioctl does nothing and 0 is
+returned./para
+
+paraNote that applications can be preempted for unknown periods right
 before or after the constantVIDIOC_STREAMON/constant or
 constantVIDIOC_STREAMOFF/constant calls, there is no notion of
 starting or stopping now. Buffer timestamps can be used to
-- 
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


[RFCv2 API PATCH 23/28] v4l2: make vidioc_s_crop const.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Write-only ioctls should have a const argument in the ioctl op.

Do this conversion for vidioc_s_crop.

Adding const for write-only ioctls was decided during the 2012 Media Workshop.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 drivers/media/i2c/soc_camera/mt9m001.c |2 +-
 drivers/media/i2c/soc_camera/mt9m111.c |2 +-
 drivers/media/i2c/soc_camera/mt9t031.c |2 +-
 drivers/media/i2c/soc_camera/mt9t112.c |4 +--
 drivers/media/i2c/soc_camera/mt9v022.c |2 +-
 drivers/media/i2c/soc_camera/ov5642.c  |   20 ++--
 drivers/media/i2c/soc_camera/ov6650.c  |   32 ++--
 drivers/media/i2c/soc_camera/rj54n1cb0c.c  |4 +--
 drivers/media/i2c/tvp5150.c|2 +-
 drivers/media/pci/bt8xx/bttv-driver.c  |   10 +++---
 drivers/media/pci/cx18/cx18-ioctl.c|2 +-
 drivers/media/pci/cx25821/cx25821-video.c  |2 +-
 drivers/media/pci/cx25821/cx25821-video.h  |2 +-
 drivers/media/pci/ivtv/ivtv-ioctl.c|2 +-
 drivers/media/pci/saa7134/saa7134-video.c  |   32 ++--
 drivers/media/pci/zoran/zoran_driver.c |2 +-
 drivers/media/platform/davinci/vpbe_display.c  |2 +-
 drivers/media/platform/davinci/vpfe_capture.c  |2 +-
 drivers/media/platform/omap/omap_vout.c|2 +-
 drivers/media/platform/s5p-fimc/fimc-m2m.c |2 +-
 drivers/media/platform/s5p-g2d/g2d.c   |2 +-
 drivers/media/platform/sh_vou.c|2 +-
 .../platform/soc_camera/sh_mobile_ceu_camera.c |4 +--
 drivers/media/platform/soc_camera/soc_camera.c |6 ++--
 drivers/media/platform/vino.c  |2 +-
 drivers/media/usb/pvrusb2/pvrusb2-v4l2.c   |2 +-
 drivers/staging/media/go7007/go7007-v4l2.c |2 +-
 include/media/soc_camera.h |4 +--
 include/media/v4l2-ioctl.h |2 +-
 include/media/v4l2-subdev.h|2 +-
 30 files changed, 79 insertions(+), 79 deletions(-)

diff --git a/drivers/media/i2c/soc_camera/mt9m001.c 
b/drivers/media/i2c/soc_camera/mt9m001.c
index d85be41..19f8a07 100644
--- a/drivers/media/i2c/soc_camera/mt9m001.c
+++ b/drivers/media/i2c/soc_camera/mt9m001.c
@@ -171,7 +171,7 @@ static int mt9m001_s_stream(struct v4l2_subdev *sd, int 
enable)
return 0;
 }
 
-static int mt9m001_s_crop(struct v4l2_subdev *sd, struct v4l2_crop *a)
+static int mt9m001_s_crop(struct v4l2_subdev *sd, const struct v4l2_crop *a)
 {
struct i2c_client *client = v4l2_get_subdevdata(sd);
struct mt9m001 *mt9m001 = to_mt9m001(client);
diff --git a/drivers/media/i2c/soc_camera/mt9m111.c 
b/drivers/media/i2c/soc_camera/mt9m111.c
index 938c5c3..62fd94a 100644
--- a/drivers/media/i2c/soc_camera/mt9m111.c
+++ b/drivers/media/i2c/soc_camera/mt9m111.c
@@ -383,7 +383,7 @@ static int mt9m111_reset(struct mt9m111 *mt9m111)
return ret;
 }
 
-static int mt9m111_s_crop(struct v4l2_subdev *sd, struct v4l2_crop *a)
+static int mt9m111_s_crop(struct v4l2_subdev *sd, const struct v4l2_crop *a)
 {
struct v4l2_rect rect = a-c;
struct mt9m111 *mt9m111 = container_of(sd, struct mt9m111, subdev);
diff --git a/drivers/media/i2c/soc_camera/mt9t031.c 
b/drivers/media/i2c/soc_camera/mt9t031.c
index d74607a..40800b1 100644
--- a/drivers/media/i2c/soc_camera/mt9t031.c
+++ b/drivers/media/i2c/soc_camera/mt9t031.c
@@ -294,7 +294,7 @@ static int mt9t031_set_params(struct i2c_client *client,
return ret  0 ? ret : 0;
 }
 
-static int mt9t031_s_crop(struct v4l2_subdev *sd, struct v4l2_crop *a)
+static int mt9t031_s_crop(struct v4l2_subdev *sd, const struct v4l2_crop *a)
 {
struct v4l2_rect rect = a-c;
struct i2c_client *client = v4l2_get_subdevdata(sd);
diff --git a/drivers/media/i2c/soc_camera/mt9t112.c 
b/drivers/media/i2c/soc_camera/mt9t112.c
index 9ba428e..de7cd83 100644
--- a/drivers/media/i2c/soc_camera/mt9t112.c
+++ b/drivers/media/i2c/soc_camera/mt9t112.c
@@ -907,11 +907,11 @@ static int mt9t112_g_crop(struct v4l2_subdev *sd, struct 
v4l2_crop *a)
return 0;
 }
 
-static int mt9t112_s_crop(struct v4l2_subdev *sd, struct v4l2_crop *a)
+static int mt9t112_s_crop(struct v4l2_subdev *sd, const struct v4l2_crop *a)
 {
struct i2c_client *client = v4l2_get_subdevdata(sd);
struct mt9t112_priv *priv = to_mt9t112(client);
-   struct v4l2_rect *rect = a-c;
+   const struct v4l2_rect *rect = a-c;
 
return mt9t112_set_params(priv, rect, priv-format-code);
 }
diff --git a/drivers/media/i2c/soc_camera/mt9v022.c 
b/drivers/media/i2c/soc_camera/mt9v022.c
index 350d0d8..13057b9 100644
--- a/drivers/media/i2c/soc_camera/mt9v022.c
+++ b/drivers/media/i2c/soc_camera/mt9v022.c
@@ -237,7 +237,7 @@ static int 

[RFCv2 API PATCH 28/28] Add vfl_dir field documentation.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 Documentation/video4linux/v4l2-framework.txt |9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/Documentation/video4linux/v4l2-framework.txt 
b/Documentation/video4linux/v4l2-framework.txt
index 89318be..20f1c05 100644
--- a/Documentation/video4linux/v4l2-framework.txt
+++ b/Documentation/video4linux/v4l2-framework.txt
@@ -583,11 +583,18 @@ You should also set these fields:
 
 - name: set to something descriptive and unique.
 
+- vfl_dir: set to VFL_DIR_TX for output devices and VFL_DIR_M2M for mem2mem
+  (codec) devices.
+
 - fops: set to the v4l2_file_operations struct.
 
 - ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance
   (highly recommended to use this and it might become compulsory in the
-  future!), then set this to your v4l2_ioctl_ops struct.
+  future!), then set this to your v4l2_ioctl_ops struct. The vfl_type and
+  vfl_dir fields are used to disable ops that do not match the type/dir
+  combination. E.g. VBI ops are disabled for non-VBI nodes, and output ops
+  are disabled for a capture device. This makes it possible to provide
+  just one v4l2_ioctl_ops struct for both vbi and video nodes.
 
 - lock: leave to NULL if you want to do all the locking in the driver.
   Otherwise you give it a pointer to a struct mutex_lock and before the
-- 
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


[RFCv2 API PATCH 15/28] DocBook: Mark CROPCAP as optional instead of as compulsory.

2012-09-07 Thread Hans Verkuil
From: Hans Verkuil hans.verk...@cisco.com

While the documentation says that VIDIOC_CROPCAP is compulsory for
all video capture and output devices, in practice VIDIOC_CROPCAP is
only implemented for devices that can do cropping and/or scaling.

Update the documentation to no longer require VIDIOC_CROPCAP if the
driver does not support cropping or scaling or non-square pixels.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com
---
 Documentation/DocBook/media/v4l/common.xml |  145 +---
 Documentation/DocBook/media/v4l/vidioc-cropcap.xml |   10 +-
 2 files changed, 75 insertions(+), 80 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/common.xml 
b/Documentation/DocBook/media/v4l/common.xml
index 9378d7b..454258b 100644
--- a/Documentation/DocBook/media/v4l/common.xml
+++ b/Documentation/DocBook/media/v4l/common.xml
@@ -628,7 +628,7 @@ are available for the device./para
 if (-1 == ioctl (fd, VIDIOC-G-STD;, amp;std_id)) {
/* Note when VIDIOC_ENUMSTD always returns EINVAL this
   is no video device or it falls under the USB exception,
-  and VIDIOC_G_STD returning EINVAL is no error. */
+  and VIDIOC_G_STD returning ENOTTY is no error. */
 
perror (VIDIOC_G_STD);
exit (EXIT_FAILURE);
@@ -905,9 +905,9 @@ inserted./para
 paraSource and target rectangles are defined even if the device
 does not support scaling or the constantVIDIOC_G/S_CROP/constant
 ioctls. Their size (and position where applicable) will be fixed in
-this case. emphasisAll capture and output device must support the
-constantVIDIOC_CROPCAP/constant ioctl such that applications can
-determine if scaling takes place./emphasis/para
+this case. emphasisAll capture and output device that support cropping
+and/or scaling and/or have non-square pixels must support the 
constantVIDIOC_CROPCAP/constant
+ioctl such that applications can determine if scaling takes 
place./emphasis/para
 
 section
   titleCropping Structures/title
@@ -1032,24 +1032,21 @@ devices.)/para
 v4l2-cropcap; cropcap;
 v4l2-crop; crop;
 
-memset (amp;cropcap, 0, sizeof (cropcap));
+memset(amp;cropcap, 0, sizeof(cropcap));
 cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 
-if (-1 == ioctl (fd, VIDIOC-CROPCAP;, amp;cropcap)) {
-   perror (VIDIOC_CROPCAP);
-   exit (EXIT_FAILURE);
-}
-
-memset (amp;crop, 0, sizeof (crop));
-crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-crop.c = cropcap.defrect;
+if (0 == ioctl(fd, VIDIOC-CROPCAP;, amp;cropcap)) {
+   memset(amp;crop, 0, sizeof(crop));
+   crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+   crop.c = cropcap.defrect;
 
-/* Ignore if cropping is not supported (EINVAL). */
+   /* Ignore if cropping is not supported (ENOTTY). */
 
-if (-1 == ioctl (fd, VIDIOC-S-CROP;, amp;crop)
-amp;amp; errno != EINVAL) {
-   perror (VIDIOC_S_CROP);
-   exit (EXIT_FAILURE);
+   if (-1 == ioctl(fd, VIDIOC-S-CROP;, amp;crop)
+   amp;amp; errno != ENOTTY) {
+   perror(VIDIOC_S_CROP);
+   exit(EXIT_FAILURE);
+   }
 }
   /programlisting
   /example
@@ -1063,11 +1060,11 @@ if (-1 == ioctl (fd, VIDIOC-S-CROP;, amp;crop)
 v4l2-cropcap; cropcap;
 v4l2-format; format;
 
-reset_cropping_parameters ();
+reset_cropping_parameters();
 
 /* Scale down to 1/4 size of full picture. */
 
-memset (amp;format, 0, sizeof (format)); /* defaults */
+memset(amp;format, 0, sizeof(format)); /* defaults */
 
 format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 
@@ -1075,9 +1072,9 @@ format.fmt.pix.width = cropcap.defrect.width gt;gt; 1;
 format.fmt.pix.height = cropcap.defrect.height gt;gt; 1;
 format.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
 
-if (-1 == ioctl (fd, VIDIOC-S-FMT;, amp;format)) {
-   perror (VIDIOC_S_FORMAT);
-   exit (EXIT_FAILURE);
+if (-1 == ioctl(fd, VIDIOC-S-FMT;, amp;format)) {
+   perror(VIDIOC_S_FORMAT);
+   exit(EXIT_FAILURE);
 }
 
 /* We could check the actual image size now, the actual scaling factor
@@ -1092,33 +1089,30 @@ if (-1 == ioctl (fd, VIDIOC-S-FMT;, amp;format)) {
 v4l2-cropcap; cropcap;
 v4l2-crop; crop;
 
-memset (amp;cropcap, 0, sizeof (cropcap));
+memset(amp;cropcap, 0, sizeof (cropcap));
 cropcap.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
 
-if (-1 == ioctl (fd, VIDIOC_CROPCAP;, amp;cropcap)) {
-   perror (VIDIOC_CROPCAP);
-   exit (EXIT_FAILURE);
-}
-
-memset (amp;crop, 0, sizeof (crop));
+if (0 == ioctl(fd, VIDIOC-CROPCAP;, amp;cropcap)) {
+   memset(amp;crop, 0, sizeof (crop));
 
-crop.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
-crop.c = cropcap.defrect;
+   crop.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
+   crop.c = cropcap.defrect;
 
-/* Scale the width and height to 50 % of their original size
-   and center the output. */
+   /* Scale the width and height to 50 % of their original size
+  and center the output. */
 
-crop.c.width /= 2;
-crop.c.height /= 2;
-crop.c.left += crop.c.width / 2;
-crop.c.top += crop.c.height / 2;
+   crop.c.width /= 2;
+   

[PATCH] drivers/media/pci/cx25821/cx25821-video-upstream-ch2.c: fix error return code

2012-09-07 Thread Peter Senna Tschudin
From: Peter Senna Tschudin peter.se...@gmail.com

Convert a nonnegative error return code to a negative one, as returned
elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// smpl
(
if@p1 (\(ret  0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
when != ret
*if(...)
{
  ... when != ret = e2
  when forall
 return ret;
}

// /smpl

Signed-off-by: Peter Senna Tschudin peter.se...@gmail.com

---
 drivers/media/pci/cx25821/cx25821-video-upstream-ch2.c |   15 +--
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git 
a/../linux-next/drivers/media/pci/cx25821/cx25821-video-upstream-ch2.c 
b/drivers/media/pci/cx25821/cx25821-video-upstream-ch2.c
index c8c94fb..273df94 100644
--- a/../linux-next/drivers/media/pci/cx25821/cx25821-video-upstream-ch2.c
+++ b/drivers/media/pci/cx25821/cx25821-video-upstream-ch2.c
@@ -704,7 +704,6 @@ int cx25821_vidupstream_init_ch2(struct cx25821_dev *dev, 
int channel_select,
 {
struct sram_channel *sram_ch;
u32 tmp;
-   int retval = 0;
int err = 0;
int data_frame_size = 0;
int risc_buffer_size = 0;
@@ -749,15 +748,19 @@ int cx25821_vidupstream_init_ch2(struct cx25821_dev *dev, 
int channel_select,
dev-_filename_ch2 = kmemdup(dev-input_filename_ch2,
 str_length + 1, GFP_KERNEL);
 
-   if (!dev-_filename_ch2)
+   if (!dev-_filename_ch2) {
+   err = -ENOENT;
goto error;
+   }
} else {
str_length = strlen(dev-_defaultname_ch2);
dev-_filename_ch2 = kmemdup(dev-_defaultname_ch2,
 str_length + 1, GFP_KERNEL);
 
-   if (!dev-_filename_ch2)
+   if (!dev-_filename_ch2) {
+   err = -ENOENT;
goto error;
+   }
}
 
/* Default if filename is empty string */
@@ -773,7 +776,7 @@ int cx25821_vidupstream_init_ch2(struct cx25821_dev *dev, 
int channel_select,
}
}
 
-   retval = cx25821_sram_channel_setup_upstream(dev, sram_ch,
+   err = cx25821_sram_channel_setup_upstream(dev, sram_ch,
dev-_line_size_ch2, 0);
 
/* setup fifo + format */
@@ -783,9 +786,9 @@ int cx25821_vidupstream_init_ch2(struct cx25821_dev *dev, 
int channel_select,
dev-upstream_databuf_size_ch2 = data_frame_size * 2;
 
/* Allocating buffers and prepare RISC program */
-   retval = cx25821_upstream_buffer_prepare_ch2(dev, sram_ch,
+   err = cx25821_upstream_buffer_prepare_ch2(dev, sram_ch,
dev-_line_size_ch2);
-   if (retval  0) {
+   if (err  0) {
pr_err(%s: Failed to set up Video upstream buffers!\n,
   dev-name);
goto error;

--
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: [RFCv2 API PATCH 00/28] Full series of API fixes from the 2012 Media Workshop

2012-09-07 Thread Devin Heitmueller
On Fri, Sep 7, 2012 at 9:29 AM, Hans Verkuil hverk...@xs4all.nl wrote:
 I have also tested this patch series (actually a slightly older version)
 with em28xx. That driver needed a lot of changes to get it to pass the
 v4l2-compliance tests. Those can be found here:

 http://git.linuxtv.org/hverkuil/media_tree.git/shortlog/refs/heads/em28xx

This is mostly informational, but problems found with the em28xx v4l
driver will likely also be in the au0828 (since when doing the analog
support for au0828 I derived large portions of the code from em28xx).

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


[PATCH 6/10] drivers/media/i2c/tea6415c.c: removes unnecessary semicolon

2012-09-07 Thread Peter Senna Tschudin
From: Peter Senna Tschudin peter.se...@gmail.com

removes unnecessary semicolon

Found by Coccinelle: http://coccinelle.lip6.fr/

Signed-off-by: Peter Senna Tschudin peter.se...@gmail.com

---
 drivers/media/i2c/tea6415c.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff -u -p a/drivers/media/i2c/tea6415c.c b/drivers/media/i2c/tea6415c.c
--- a/drivers/media/i2c/tea6415c.c
+++ b/drivers/media/i2c/tea6415c.c
@@ -81,7 +81,7 @@ static int tea6415c_s_routing(struct v4l
case 13:
byte = 0x28;
break;
-   };
+   }
 
switch (i) {
case 5:
@@ -108,7 +108,7 @@ static int tea6415c_s_routing(struct v4l
case 11:
byte |= 0x07;
break;
-   };
+   }
 
ret = i2c_smbus_write_byte(client, byte);
if (ret) {

--
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 7/10] drivers/media/tuners/tda18271-common.c: removes unnecessary semicolon

2012-09-07 Thread Peter Senna Tschudin
From: Peter Senna Tschudin peter.se...@gmail.com

removes unnecessary semicolon

Found by Coccinelle: http://coccinelle.lip6.fr/

Signed-off-by: Peter Senna Tschudin peter.se...@gmail.com

---
 drivers/media/tuners/tda18271-common.c |   10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff -u -p a/drivers/media/tuners/tda18271-common.c 
b/drivers/media/tuners/tda18271-common.c
--- a/drivers/media/tuners/tda18271-common.c
+++ b/drivers/media/tuners/tda18271-common.c
@@ -275,7 +275,7 @@ int tda18271_init_regs(struct dvb_fronte
case TDA18271HDC2:
regs[R_ID]   = 0x84;
break;
-   };
+   }
 
regs[R_TM]   = 0x08;
regs[R_PL]   = 0x80;
@@ -300,7 +300,7 @@ int tda18271_init_regs(struct dvb_fronte
case TDA18271HDC2:
regs[R_EB1]  = 0xfc;
break;
-   };
+   }
 
regs[R_EB2]  = 0x01;
regs[R_EB3]  = 0x84;
@@ -320,7 +320,7 @@ int tda18271_init_regs(struct dvb_fronte
case TDA18271HDC2:
regs[R_EB12] = 0x33;
break;
-   };
+   }
 
regs[R_EB13] = 0xc1;
regs[R_EB14] = 0x00;
@@ -335,7 +335,7 @@ int tda18271_init_regs(struct dvb_fronte
case TDA18271HDC2:
regs[R_EB18] = 0x8c;
break;
-   };
+   }
 
regs[R_EB19] = 0x00;
regs[R_EB20] = 0x20;
@@ -347,7 +347,7 @@ int tda18271_init_regs(struct dvb_fronte
case TDA18271HDC2:
regs[R_EB21] = 0xb3;
break;
-   };
+   }
 
regs[R_EB22] = 0x48;
regs[R_EB23] = 0xb0;

--
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 8/10] drivers/media/dvb-core/dvb_demux.c: removes unnecessary semicolon

2012-09-07 Thread Peter Senna Tschudin
From: Peter Senna Tschudin peter.se...@gmail.com

removes unnecessary semicolon

Found by Coccinelle: http://coccinelle.lip6.fr/

Signed-off-by: Peter Senna Tschudin peter.se...@gmail.com

---
 drivers/media/dvb-core/dvb_demux.c |   10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff -u -p a/drivers/media/dvb-core/dvb_demux.c 
b/drivers/media/dvb-core/dvb_demux.c
--- a/drivers/media/dvb-core/dvb_demux.c
+++ b/drivers/media/dvb-core/dvb_demux.c
@@ -424,12 +424,12 @@ static void dvb_dmx_swfilter_packet(stru
printk(KERN_INFO TS speed %llu Kbits/sec \n,
div64_u64(speed_bytes,
speed_timedelta));
-   };
+   }
 
demux-speed_last_time = cur_time;
demux-speed_pkts_cnt = 0;
-   };
-   };
+   }
+   }
 
if (buf[1]  0x80) {
dprintk_tscheck(TEI detected. 
@@ -451,9 +451,9 @@ static void dvb_dmx_swfilter_packet(stru
buf[3]  0xf);
 
demux-cnt_storage[pid] = ((buf[3]  0xf) + 1)0xf;
-   };
+   }
/* end check */
-   };
+   }
 
list_for_each_entry(feed, demux-feed_list, list_head) {
if ((feed-pid != pid)  (feed-pid != 0x2000))

--
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 9/10] drivers/media/dvb-frontends/tda10071.c: removes unnecessary semicolon

2012-09-07 Thread Peter Senna Tschudin
From: Peter Senna Tschudin peter.se...@gmail.com

removes unnecessary semicolon

Found by Coccinelle: http://coccinelle.lip6.fr/

Signed-off-by: Peter Senna Tschudin peter.se...@gmail.com

---
 drivers/media/dvb-frontends/tda10071.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff -u -p a/drivers/media/dvb-frontends/tda10071.c 
b/drivers/media/dvb-frontends/tda10071.c
--- a/drivers/media/dvb-frontends/tda10071.c
+++ b/drivers/media/dvb-frontends/tda10071.c
@@ -257,7 +257,7 @@ static int tda10071_set_voltage(struct d
__func__);
ret = -EINVAL;
goto error;
-   };
+   }
 
cmd.args[0] = CMD_LNB_SET_DC_LEVEL;
cmd.args[1] = 0;
@@ -369,7 +369,7 @@ static int tda10071_diseqc_recv_slave_re
if (ret)
goto error;
 
-   reply-msg_len = tmp  0x1f; /* [4:0] */;
+   reply-msg_len = tmp  0x1f; /* [4:0] */
if (reply-msg_len  sizeof(reply-msg))
reply-msg_len = sizeof(reply-msg); /* truncate API max */
 

--
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 9/10] drivers/media/dvb-frontends/tda10071.c: removes unnecessary semicolon

2012-09-07 Thread Antti Palosaari

On 09/07/2012 06:24 PM, Peter Senna Tschudin wrote:

From: Peter Senna Tschudin peter.se...@gmail.com

removes unnecessary semicolon

Found by Coccinelle: http://coccinelle.lip6.fr/

Signed-off-by: Peter Senna Tschudin peter.se...@gmail.com

---
  drivers/media/dvb-frontends/tda10071.c |4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff -u -p a/drivers/media/dvb-frontends/tda10071.c 
b/drivers/media/dvb-frontends/tda10071.c
--- a/drivers/media/dvb-frontends/tda10071.c
+++ b/drivers/media/dvb-frontends/tda10071.c
@@ -257,7 +257,7 @@ static int tda10071_set_voltage(struct d
__func__);
ret = -EINVAL;
goto error;
-   };
+   }

cmd.args[0] = CMD_LNB_SET_DC_LEVEL;
cmd.args[1] = 0;
@@ -369,7 +369,7 @@ static int tda10071_diseqc_recv_slave_re
if (ret)
goto error;

-   reply-msg_len = tmp  0x1f; /* [4:0] */;
+   reply-msg_len = tmp  0x1f; /* [4:0] */
if (reply-msg_len  sizeof(reply-msg))
reply-msg_len = sizeof(reply-msg); /* truncate API max */




Acked-by: Antti Palosaari cr...@iki.fi

Antti
--
http://palosaari.fi/
--
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 11/14] drivers/media/usb/stk1160/stk1160-i2c.c: fix error return code

2012-09-07 Thread Ezequiel Garcia
On Thu, Sep 6, 2012 at 12:23 PM, Peter Senna Tschudin
peter.se...@gmail.com wrote:
 From: Peter Senna Tschudin peter.se...@gmail.com

 Convert a nonnegative error return code to a negative one, as returned
 elsewhere in the function.

 A simplified version of the semantic match that finds this problem is as
 follows: (http://coccinelle.lip6.fr/)

 // smpl
 (
 if@p1 (\(ret  0\|ret != 0\))
  { ... return ret; }
 |
 ret@p1 = 0
 )
 ... when != ret = e1
 when != ret
 *if(...)
 {
   ... when != ret = e2
   when forall
  return ret;
 }

 // /smpl

 Signed-off-by: Peter Senna Tschudin peter.se...@gmail.com

 ---
  drivers/media/usb/stk1160/stk1160-i2c.c |2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

 diff --git a/drivers/media/usb/stk1160/stk1160-i2c.c 
 b/drivers/media/usb/stk1160/stk1160-i2c.c
 index 176ac93..850cf28 100644
 --- a/drivers/media/usb/stk1160/stk1160-i2c.c
 +++ b/drivers/media/usb/stk1160/stk1160-i2c.c
 @@ -116,7 +116,7 @@ static int stk1160_i2c_read_reg(struct stk1160 *dev, u8 
 addr,
 if (rc  0)
 return rc;

 -   stk1160_read_reg(dev, STK1160_SBUSR_RD, value);
 +   rc = stk1160_read_reg(dev, STK1160_SBUSR_RD, value);
 if (rc  0)
 return rc;


 --

Acked-by: Ezequiel Garcia elezegar...@gmail.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: [PATCH v2] media: v4l2-ctrls: add control for test pattern

2012-09-07 Thread Sakari Ailus

Hi Prabhakar,

Thanks for the patch!

Prabhakar Lad wrote:

From: Lad, Prabhakar prabhakar@ti.com

add V4L2_CID_TEST_PATTERN of type menu, which determines
the internal test pattern selected by the device.

Signed-off-by: Lad, Prabhakar prabhakar@ti.com
Signed-off-by: Manjunath Hadli manjunath.ha...@ti.com
Cc: Sakari Ailus sakari.ai...@iki.fi
Cc: Hans Verkuil hans.verk...@cisco.com
Cc: Laurent Pinchart laurent.pinch...@ideasonboard.com
Cc: Mauro Carvalho Chehab mche...@infradead.org
Cc: Sylwester Nawrocki s.nawro...@samsung.com
Cc: Hans de Goede hdego...@redhat.com
Cc: Kyungmin Park kyungmin.p...@samsung.com
Cc: Rob Landley r...@landley.net
---
This patches has one checkpatch warning for line over
80 characters altough it can be avoided I have kept it
for consistency.

Changes for v2:
1: Included display devices in the description for test pattern
as pointed by Hans.
2: In the menu replaced 'Test Pattern Disabled' by 'Disabled' as
pointed by Sylwester.
3: Removed the test patterns from menu as the are hardware specific
as pointed by Sakari.

  Documentation/DocBook/media/v4l/controls.xml |   20 
  drivers/media/v4l2-core/v4l2-ctrls.c |8 
  include/linux/videodev2.h|4 
  3 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/controls.xml 
b/Documentation/DocBook/media/v4l/controls.xml
index ad873ea..173934e 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -4311,6 +4311,26 @@ interface and may change in the future./para
  /tbody
/entrytbl
  /row
+ row
+   entry 
spanname=idconstantV4L2_CID_TEST_PATTERN/constant/entry
+   entrymenu/entry
+ /row
+ row id=v4l2-test-pattern
+   entry spanname=descr The Capture/Display/Sensors have the 
capability
+   to generate internal test patterns and this are hardware specific. 
This
+   test patterns are used to test a device is properly working and can 
generate
+   the desired waveforms that it supports./entry
+ /row
+ row
+   entrytbl spanname=descr cols=2
+ tbody valign=top
+   row
+entryconstantV4L2_TEST_PATTERN_DISABLED/constant/entry
+ entryTest pattern generation is disabled/entry
+   /row
+ /tbody
+   /entrytbl
+ /row
rowentry/entry/row
/tbody
/tgroup
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c 
b/drivers/media/v4l2-core/v4l2-ctrls.c
index 8f2f40b..d731422 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -430,6 +430,10 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
Advanced,
NULL,
};
+   static const char * const test_pattern[] = {
+   Disabled,
+   NULL,
+   };

switch (id) {
case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
@@ -509,6 +513,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
return jpeg_chroma_subsampling;
case V4L2_CID_DPCM_PREDICTOR:
return dpcm_predictor;
+   case V4L2_CID_TEST_PATTERN:
+   return test_pattern;


I think it's not necessary to define test_pattern (nor be prepared to 
return it) since the menu is going to be device specific. So the driver 
is responsible for all of the menu items. Such menus are created using 
v4l2_ctrl_new_custom() instead of v4l2_ctrl_new_std_menu().


Looks good to me otherwise.

Kind regards,

--
Sakari Ailus
sakari.ai...@iki.fi
--
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 v4] media: v4l2-ctrls: add control for dpcm predictor

2012-09-07 Thread Sakari Ailus

Hi Prabhakar,

Prabhakar Lad wrote:

Hi Sakari,

Thanks for the review.

On Wednesday 05 September 2012 12:42 AM, Sakari Ailus wrote:

Hi Prabhakar,

Thanks for the patch. I've got a few comments below.

On Tue, Sep 04, 2012 at 11:07:52AM +0530, Prabhakar Lad wrote:

From: Lad, Prabhakar prabhakar@ti.com

add V4L2_CID_DPCM_PREDICTOR control of type menu, which
determines the dpcm predictor. The predictor can be either
simple or advanced.

Signed-off-by: Lad, Prabhakar prabhakar@ti.com
Signed-off-by: Manjunath Hadli manjunath.ha...@ti.com
Acked-by: Hans Verkuil hans.verk...@cisco.com
Reviewed-by: Sylwester Nawrocki s.nawro...@samsung.com
Cc: Sakari Ailus sakari.ai...@iki.fi
Cc: Laurent Pinchart laurent.pinch...@ideasonboard.com
Cc: Mauro Carvalho Chehab mche...@infradead.org
Cc: Hans de Goede hdego...@redhat.com
Cc: Kyungmin Park kyungmin.p...@samsung.com
Cc: Rob Landley r...@landley.net
---
This patches has one checkpatch warning for line over
80 characters altough it can be avoided I have kept it
for consistency.

Changes for v4:
1: Aligned the description to fit appropriately in the
para tag, pointed by Sylwester.

Changes for v3:
1: Added better explanation for DPCM, pointed by Hans.

Changes for v2:
1: Added documentaion in controls.xml pointed by Sylwester.
2: Chnaged V4L2_DPCM_PREDICTOR_ADVANCE to V4L2_DPCM_PREDICTOR_ADVANCED
pointed by Sakari.

  Documentation/DocBook/media/v4l/controls.xml |   46 +-
  drivers/media/v4l2-core/v4l2-ctrls.c |9 +
  include/linux/videodev2.h|5 +++
  3 files changed, 59 insertions(+), 1 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/controls.xml 
b/Documentation/DocBook/media/v4l/controls.xml
index 93b9c68..ad873ea 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -4267,7 +4267,51 @@ interface and may change in the future./para
pixels / second.
/entry
  /row
- rowentry/entry/row
+ row
+   entry 
spanname=idconstantV4L2_CID_DPCM_PREDICTOR/constant/entry
+   entrymenu/entry
+ /row
+ row id=v4l2-dpcm-predictor
+   entry spanname=descr Differential pulse-code modulation (DPCM) 
is a signal
+   encoder that uses the baseline of pulse-code modulation (PCM) but 
adds some
+   functionalities based on the prediction of the samples of the 
signal. The input
+   can be an analog signal or a digital signal.
+
+   paraIf the input is a continuous-time analog signal, it needs to 
be sampled
+   first so that a discrete-time signal is the input to the DPCM 
encoder./para
+
+   paraSimple: take the values of two consecutive samples; if they 
are analog
+   samples, quantize them; calculate the difference between the first 
one and the
+   next; the output is the difference, and it can be further entropy 
coded./para
+
+   paraAdvanced: instead of taking a difference relative to a 
previous input sample,
+   take the difference relative to the output of a local model of the 
decoder process;
+   in this option, the difference can be quantized, which allows a 
good way to
+   incorporate a controlled loss in the encoding./para


This is directly from Wikipedia, isn't it?


Yes.


What comes to the content, DPCM in the context of V4L2 media bus codes, as a
digital interface, is always digital. So there's no need to document it.
Entropy coding is also out of the question: the samples of the currently
defined formats are equal in size.


Ok.


Could you replace the above with this text (with appropriate indentation 
etc.) while keeping the reference to Wikipedia?


--8--
Differential pulse-code modulation (DPCM) compression can be used to 
compress the samples into fewer bits than they would otherwise require. 
This is done by calculating the difference between consecutive samples 
and outputting the difference which in average is much smaller than the 
values of the samples themselves since there is generally lots of 
correlation between adjacent pixels. In decompression the original 
samples are reconstructed. The process isn't lossless as the encoded 
sample size in bits is less than the original.


Formats using DPCM compression include xref 
linkend=pixfmt-srggb10dpcm8 /.


This control is used to select the predictor used to encode the samples.

The main difference between the simple and the advanced predictors is 
image quality, with advanced predictor supposed to produce better 
quality images as a result. Simple predictor can be used e.g. for 
testing purposes.

--8--

Kind regards,

--
Sakari Ailus
sakari.ai...@iki.fi
--
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 v4] media: v4l2-ctrls: add control for dpcm predictor

2012-09-07 Thread Prabhakar Lad
Hi Sakari,

On Sat, Sep 8, 2012 at 12:16 AM, Sakari Ailus sakari.ai...@iki.fi wrote:
 Hi Prabhakar,


 Prabhakar Lad wrote:

 Hi Sakari,

 Thanks for the review.

 On Wednesday 05 September 2012 12:42 AM, Sakari Ailus wrote:

 Hi Prabhakar,

 Thanks for the patch. I've got a few comments below.

 On Tue, Sep 04, 2012 at 11:07:52AM +0530, Prabhakar Lad wrote:

 From: Lad, Prabhakar prabhakar@ti.com

 add V4L2_CID_DPCM_PREDICTOR control of type menu, which
 determines the dpcm predictor. The predictor can be either
 simple or advanced.

 Signed-off-by: Lad, Prabhakar prabhakar@ti.com
 Signed-off-by: Manjunath Hadli manjunath.ha...@ti.com
 Acked-by: Hans Verkuil hans.verk...@cisco.com
 Reviewed-by: Sylwester Nawrocki s.nawro...@samsung.com
 Cc: Sakari Ailus sakari.ai...@iki.fi
 Cc: Laurent Pinchart laurent.pinch...@ideasonboard.com
 Cc: Mauro Carvalho Chehab mche...@infradead.org
 Cc: Hans de Goede hdego...@redhat.com
 Cc: Kyungmin Park kyungmin.p...@samsung.com
 Cc: Rob Landley r...@landley.net
 ---
 This patches has one checkpatch warning for line over
 80 characters altough it can be avoided I have kept it
 for consistency.

 Changes for v4:
 1: Aligned the description to fit appropriately in the
 para tag, pointed by Sylwester.

 Changes for v3:
 1: Added better explanation for DPCM, pointed by Hans.

 Changes for v2:
 1: Added documentaion in controls.xml pointed by Sylwester.
 2: Chnaged V4L2_DPCM_PREDICTOR_ADVANCE to V4L2_DPCM_PREDICTOR_ADVANCED
 pointed by Sakari.

   Documentation/DocBook/media/v4l/controls.xml |   46
 +-
   drivers/media/v4l2-core/v4l2-ctrls.c |9 +
   include/linux/videodev2.h|5 +++
   3 files changed, 59 insertions(+), 1 deletions(-)

 diff --git a/Documentation/DocBook/media/v4l/controls.xml
 b/Documentation/DocBook/media/v4l/controls.xml
 index 93b9c68..ad873ea 100644
 --- a/Documentation/DocBook/media/v4l/controls.xml
 +++ b/Documentation/DocBook/media/v4l/controls.xml
 @@ -4267,7 +4267,51 @@ interface and may change in the future./para
 pixels / second.
 /entry
   /row
 - rowentry/entry/row
 + row
 +   entry
 spanname=idconstantV4L2_CID_DPCM_PREDICTOR/constant/entry
 +   entrymenu/entry
 + /row
 + row id=v4l2-dpcm-predictor
 +   entry spanname=descr Differential pulse-code modulation
 (DPCM) is a signal
 +   encoder that uses the baseline of pulse-code modulation
 (PCM) but adds some
 +   functionalities based on the prediction of the samples of
 the signal. The input
 +   can be an analog signal or a digital signal.
 +
 +   paraIf the input is a continuous-time analog signal, it
 needs to be sampled
 +   first so that a discrete-time signal is the input to the
 DPCM encoder./para
 +
 +   paraSimple: take the values of two consecutive samples; if
 they are analog
 +   samples, quantize them; calculate the difference between the
 first one and the
 +   next; the output is the difference, and it can be further
 entropy coded./para
 +
 +   paraAdvanced: instead of taking a difference relative to a
 previous input sample,
 +   take the difference relative to the output of a local model
 of the decoder process;
 +   in this option, the difference can be quantized, which
 allows a good way to
 +   incorporate a controlled loss in the encoding./para


 This is directly from Wikipedia, isn't it?

 Yes.

 What comes to the content, DPCM in the context of V4L2 media bus codes,
 as a
 digital interface, is always digital. So there's no need to document it.
 Entropy coding is also out of the question: the samples of the currently
 defined formats are equal in size.

 Ok.


 Could you replace the above with this text (with appropriate indentation
 etc.) while keeping the reference to Wikipedia?

 --8--
 Differential pulse-code modulation (DPCM) compression can be used to
 compress the samples into fewer bits than they would otherwise require. This
 is done by calculating the difference between consecutive samples and
 outputting the difference which in average is much smaller than the values
 of the samples themselves since there is generally lots of correlation
 between adjacent pixels. In decompression the original samples are
 reconstructed. The process isn't lossless as the encoded sample size in bits
 is less than the original.

 Formats using DPCM compression include xref linkend=pixfmt-srggb10dpcm8
 /.

 This control is used to select the predictor used to encode the samples.

 The main difference between the simple and the advanced predictors is image
 quality, with advanced predictor supposed to produce better quality images
 as a result. Simple predictor can be used e.g. for testing purposes.
 --8--

Thanks for the definition. :)

Thanks and Regards,
--Prabhakar Lad


 Kind regards,

 --
 Sakari Ailus
 

Re: [PATCH v2] media: v4l2-ctrls: add control for test pattern

2012-09-07 Thread Prabhakar Lad
Hi Sakari,

Thanks for the review.

On Fri, Sep 7, 2012 at 11:50 PM, Sakari Ailus sakari.ai...@iki.fi wrote:
 Hi Prabhakar,

 Thanks for the patch!


 Prabhakar Lad wrote:

 From: Lad, Prabhakar prabhakar@ti.com

 add V4L2_CID_TEST_PATTERN of type menu, which determines
 the internal test pattern selected by the device.

 Signed-off-by: Lad, Prabhakar prabhakar@ti.com
 Signed-off-by: Manjunath Hadli manjunath.ha...@ti.com
 Cc: Sakari Ailus sakari.ai...@iki.fi
 Cc: Hans Verkuil hans.verk...@cisco.com
 Cc: Laurent Pinchart laurent.pinch...@ideasonboard.com
 Cc: Mauro Carvalho Chehab mche...@infradead.org
 Cc: Sylwester Nawrocki s.nawro...@samsung.com
 Cc: Hans de Goede hdego...@redhat.com
 Cc: Kyungmin Park kyungmin.p...@samsung.com
 Cc: Rob Landley r...@landley.net
 ---
 This patches has one checkpatch warning for line over
 80 characters altough it can be avoided I have kept it
 for consistency.

 Changes for v2:
 1: Included display devices in the description for test pattern
 as pointed by Hans.
 2: In the menu replaced 'Test Pattern Disabled' by 'Disabled' as
 pointed by Sylwester.
 3: Removed the test patterns from menu as the are hardware specific
 as pointed by Sakari.

   Documentation/DocBook/media/v4l/controls.xml |   20 
   drivers/media/v4l2-core/v4l2-ctrls.c |8 
   include/linux/videodev2.h|4 
   3 files changed, 32 insertions(+), 0 deletions(-)

 diff --git a/Documentation/DocBook/media/v4l/controls.xml
 b/Documentation/DocBook/media/v4l/controls.xml
 index ad873ea..173934e 100644
 --- a/Documentation/DocBook/media/v4l/controls.xml
 +++ b/Documentation/DocBook/media/v4l/controls.xml
 @@ -4311,6 +4311,26 @@ interface and may change in the future./para
   /tbody
 /entrytbl
   /row
 + row
 +   entry
 spanname=idconstantV4L2_CID_TEST_PATTERN/constant/entry
 +   entrymenu/entry
 + /row
 + row id=v4l2-test-pattern
 +   entry spanname=descr The Capture/Display/Sensors have the
 capability
 +   to generate internal test patterns and this are hardware
 specific. This
 +   test patterns are used to test a device is properly working
 and can generate
 +   the desired waveforms that it supports./entry
 + /row
 + row
 +   entrytbl spanname=descr cols=2
 + tbody valign=top
 +   row
 +
 entryconstantV4L2_TEST_PATTERN_DISABLED/constant/entry
 + entryTest pattern generation is disabled/entry
 +   /row
 + /tbody
 +   /entrytbl
 + /row
 rowentry/entry/row
 /tbody
 /tgroup
 diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c
 b/drivers/media/v4l2-core/v4l2-ctrls.c
 index 8f2f40b..d731422 100644
 --- a/drivers/media/v4l2-core/v4l2-ctrls.c
 +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
 @@ -430,6 +430,10 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
 Advanced,
 NULL,
 };
 +   static const char * const test_pattern[] = {
 +   Disabled,
 +   NULL,
 +   };

 switch (id) {
 case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
 @@ -509,6 +513,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
 return jpeg_chroma_subsampling;
 case V4L2_CID_DPCM_PREDICTOR:
 return dpcm_predictor;
 +   case V4L2_CID_TEST_PATTERN:
 +   return test_pattern;


 I think it's not necessary to define test_pattern (nor be prepared to return
 it) since the menu is going to be device specific. So the driver is
 responsible for all of the menu items. Such menus are created using
 v4l2_ctrl_new_custom() instead of v4l2_ctrl_new_std_menu().

Ok.

Regrads,
--Prabhakar Lad

 Looks good to me otherwise.

 Kind regards,

 --
 Sakari Ailus
 sakari.ai...@iki.fi

 ___
 Davinci-linux-open-source mailing list
 davinci-linux-open-sou...@linux.davincidsp.com
 http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
--
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: WARNINGS

2012-09-07 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:Fri Sep  7 19:00:20 CEST 2012
git hash:79e8c7bebb467bbc3f2514d75bba669a3f354324
gcc version:  i686-linux-gcc (GCC) 4.7.1
host hardware:x86_64
host os:  3.4.07-marune

linux-git-arm-eabi-davinci: WARNINGS
linux-git-arm-eabi-exynos: OK
linux-git-arm-eabi-omap: WARNINGS
linux-git-i686: WARNINGS
linux-git-m32r: WARNINGS
linux-git-mips: WARNINGS
linux-git-powerpc64: WARNINGS
linux-git-x86_64: WARNINGS
linux-2.6.31.12-x86_64: WARNINGS
linux-2.6.32.6-x86_64: WARNINGS
linux-2.6.33-x86_64: WARNINGS
linux-2.6.34-x86_64: WARNINGS
linux-2.6.35.3-x86_64: WARNINGS
linux-2.6.36-x86_64: WARNINGS
linux-2.6.37-x86_64: WARNINGS
linux-2.6.38.2-x86_64: WARNINGS
linux-2.6.39.1-x86_64: WARNINGS
linux-3.0-x86_64: WARNINGS
linux-3.1-x86_64: WARNINGS
linux-3.2.1-x86_64: WARNINGS
linux-3.3-x86_64: WARNINGS
linux-3.4-x86_64: WARNINGS
linux-3.5-x86_64: WARNINGS
linux-3.6-rc2-x86_64: WARNINGS
linux-2.6.31.12-i686: WARNINGS
linux-2.6.32.6-i686: WARNINGS
linux-2.6.33-i686: WARNINGS
linux-2.6.34-i686: WARNINGS
linux-2.6.35.3-i686: WARNINGS
linux-2.6.36-i686: WARNINGS
linux-2.6.37-i686: WARNINGS
linux-2.6.38.2-i686: WARNINGS
linux-2.6.39.1-i686: WARNINGS
linux-3.0-i686: WARNINGS
linux-3.1-i686: WARNINGS
linux-3.2.1-i686: WARNINGS
linux-3.3-i686: WARNINGS
linux-3.4-i686: WARNINGS
linux-3.5-i686: WARNINGS
linux-3.6-rc2-i686: WARNINGS
apps: WARNINGS
spec-git: OK
sparse: ERRORS

Detailed results are available here:

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

Full logs are available here:

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

The V4L-DVB specification 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: [RFCv2 API PATCH 03/28] DocBook: improve STREAMON/OFF documentation.

2012-09-07 Thread Sylwester Nawrocki

On 09/07/2012 03:29 PM, Hans Verkuil wrote:

From: Hans Verkuilhans.verk...@cisco.com

Specify that STREAMON/OFF should return 0 if the stream is already
started/stopped.

The spec never specified what the correct behavior is. This ambiguity
was resolved during the 2012 Media Workshop.

Signed-off-by: Hans Verkuilhans.verk...@cisco.com


Reviewed-by: Sylwester Nawrocki s.nawro...@samsung.com

--

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: [RFCv2 API PATCH 04/28] DocBook: make the G/S/TRY_FMT specification more strict.

2012-09-07 Thread Sylwester Nawrocki

On 09/07/2012 03:29 PM, Hans Verkuil wrote:

From: Hans Verkuilhans.verk...@cisco.com

- S/TRY_FMT should always succeed, unless an invalid type field is passed in.
- TRY_FMT should give the same result as S_FMT, all other things being equal.
- ENUMFMT may return different formats for different inputs or outputs.

This was decided during the 2012 Media Workshop.

Signed-off-by: Hans Verkuilhans.verk...@cisco.com


Reviewed-by: Sylwester Nawrocki s.nawro...@samsung.com

A typo managed to snick in below...


---
  Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml |3 +++
  Documentation/DocBook/media/v4l/vidioc-g-fmt.xml|9 ++---
  2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml 
b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
index 81ebe48..0bd3324 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
@@ -58,6 +58,9 @@ structure. Drivers fill the rest of the structure or return an
  incrementing by one untilerrorcodeEINVAL/errorcode  is
  returned./para

+paraNote that after switching input or output the list of enumerated image
+formats may be different./para
+
  table pgwide=1 frame=none id=v4l2-fmtdesc
titlestructstructnamev4l2_fmtdesc/structname/title
tgroup cols=3
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml 
b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
index 52acff1..9ef279a 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
@@ -81,7 +81,7 @@ the application calls theconstantVIDIOC_S_FMT/constant  
ioctl
  with a pointer to astructnamev4l2_format/structname  structure
  the driver checks
  and adjusts the parameters against hardware abilities. Drivers
-should not return an error code unless the input is ambiguous, this is
+should not return an error code unless thestructfieldtype/structfield  
field is invalid, this is
  a mechanism to fathom device capabilities and to approach parameters
  acceptable for both the application and driver. On success the driver
  may program the hardware, allocate resources and generally prepare for
@@ -107,6 +107,10 @@ disabling I/O or possibly time consuming hardware 
preparations.
  Although strongly recommended drivers are not required to implement
  this ioctl./para

+paraThe format as returned byconstantVIDIOC_TRY_FMT/constant
+must be identical to whatconstantVIDIOC_S_FMT/constant  returns for
+the same input or output./para
+
  table pgwide=1 frame=none id=v4l2-format
titlestructstructnamev4l2_format/structname/title
tgroup cols=4
@@ -187,8 +191,7 @@ capture and output devices./entry
termerrorcodeEINVAL/errorcode/term
listitem
paraThev4l2-format;structfieldtype/structfield
-field is invalid, the requested buffer type not supported, or the
-format is not supported with this buffer type./para
+field is invalia or the requested buffer type not supported./para


invalia - invalid


/listitem
/varlistentry
  /variablelist


--

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: [RFCv2 API PATCH 05/28] DocBook: bus_info can no longer be empty.

2012-09-07 Thread Sylwester Nawrocki
On 09/07/2012 03:29 PM, Hans Verkuil wrote:
 From: Hans Verkuilhans.verk...@cisco.com
 
 During the 2012 Media Workshop it was decided that bus_info as returned
 by VIDIOC_QUERYCAP can no longer be empty. It should be a unique identifier,
 and empty strings are obviously not unique.
 
 Signed-off-by: Hans Verkuilhans.verk...@cisco.com

Reviewed-by: Sylwester Nawrocki s.nawro...@samsung.com

 ---
   Documentation/DocBook/media/v4l/vidioc-querycap.xml |   14 ++
   1 file changed, 10 insertions(+), 4 deletions(-)
 
 diff --git a/Documentation/DocBook/media/v4l/vidioc-querycap.xml 
 b/Documentation/DocBook/media/v4l/vidioc-querycap.xml
 index f33dd74..d5b1248 100644
 --- a/Documentation/DocBook/media/v4l/vidioc-querycap.xml
 +++ b/Documentation/DocBook/media/v4l/vidioc-querycap.xml
 @@ -90,11 +90,17 @@ ambiguities./entry
   entry__u8/entry
   entrystructfieldbus_info/structfield[32]/entry
   entryLocation of the device in the system, a
 -NUL-terminated ASCII string. For example: PCI Slot 4. This
 +NUL-terminated ASCII string. For example: PCI::05:06.0. This
   information is intended for users, to distinguish multiple
 -identical devices. If no such information is available the field may
 -simply count the devices controlled by the driver, or contain the
 -empty string (structfieldbus_info/structfield[0] = 0).!-- XXX 
 pci_dev-slot_name example --/entry
 +identical devices. If no such information is available the field must
 +simply count the devices controlled by the driver (vivi-000). The bus_info
 +must start with PCI: for PCI boards, PCIe: for PCI Express boards,
 +usb- for USB devices, I2C: for i2c devices, ISA: for ISA devices and
 +parport for parallel port devices.
 +For devices without a bus it should start with the driver name, optionally

Most, if not all, devices are on some sort of bus. What would be an example
of a device without a bus ?

Could we just be saying here For other devices instead of For devices
without a bus, or something similar ?

 +followed by - and an index if multiple instances of the device as possible.
 +Many platform devices can have only one instance, so in that case bus_info
 +is identical to thestructfielddriver/structfield  field./entry
   /row
   row
   entry__u32/entry

--

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: [RFCv2 API PATCH 11/28] DocBook: fix awkward language and fix the documented return value.

2012-09-07 Thread Sylwester Nawrocki

On 09/07/2012 03:29 PM, Hans Verkuil wrote:

From: Hans Verkuilhans.verk...@cisco.com

The Video Standard section contains some awkward language. It also wasn't
updated when the error code for unimplemented ioctls changed from EINVAL
to ENOTTY.

Signed-off-by: Hans Verkuilhans.verk...@cisco.com


Reviewed-by: Sylwester Nawrocki s.nawro...@samsung.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: [RFCv2 API PATCH 12/28] v4l2-core: Add new V4L2_CAP_MONOTONIC_TS capability.

2012-09-07 Thread Sylwester Nawrocki

On 09/07/2012 03:29 PM, Hans Verkuil wrote:

From: Hans Verkuilhans.verk...@cisco.com

Add a new flag that tells userspace that the monotonic clock is used
for timestamps and update the documentation accordingly.

We decided on this new flag during the 2012 Media Workshop.

Signed-off-by: Hans Verkuilhans.verk...@cisco.com


Reviewed-by: Sylwester Nawrocki s.nawro...@samsung.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: [RFCv2 API PATCH 13/28] Add V4L2_CAP_MONOTONIC_TS where applicable.

2012-09-07 Thread Sylwester Nawrocki

On 09/07/2012 03:29 PM, Hans Verkuil wrote:

From: Hans Verkuilhans.verk...@cisco.com

Add the new V4L2_CAP_MONOTONIC_TS capability to those drivers that
use monotomic timestamps instead of the system time.

Signed-off-by: Hans Verkuilhans.verk...@cisco.com


For s5p-fimc,

Acked-by: Sylwester Nawrocki s.nawro...@samsung.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: [RFCv2 API PATCH 14/28] DocBook: clarify that sequence is also set for output devices.

2012-09-07 Thread Sylwester Nawrocki

On 09/07/2012 03:29 PM, Hans Verkuil wrote:

From: Hans Verkuilhans.verk...@cisco.com

It was not entirely obvious that the sequence count should also
be set for output devices. Also made it more explicit that this
sequence counter counts frames, not fields.

Signed-off-by: Hans Verkuilhans.verk...@cisco.com


Reviewed-by: Sylwester Nawrocki s.nawro...@samsung.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: [RFC PATCH v6] media: add v4l2 subdev driver for S5K4ECGX sensor

2012-09-07 Thread Sylwester Nawrocki

Hi Sangwook,

On 09/06/2012 05:08 PM, Sangwook Lee wrote:

This patch adds driver for S5K4ECGX sensor with embedded ISP SoC,
S5K4ECGX, which is a 5M CMOS Image sensor from Samsung
The driver implements preview mode of the S5K4ECGX sensor.
capture (snapshot) operation, face detection are missing now.
Following controls are supported:
contrast/saturation/brightness/sharpness

Signed-off-by: Sangwook Leesangwook@linaro.org
Reviewed-by: Sylwester Nawrockis.nawro...@samsung.com


Thanks for the update. I've done a few more minor fixes and improved
s_stream() subdev op handling, so it really enables/disables data
stream on the sensor's output. It's pushed to

git://linuxtv.org/snawrocki/media.git samsung_s5k4ecgx

Could you please squash the changes that you are willing to accept
and test if the last patch really does what it is intended to ?

After you send v7 I could add this patch to my tree for v3.7,
unless you want to handle it yourself.

--
Thanks,
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


dvb-apps scan files

2012-09-07 Thread Hernán Rossetto
Please add the attached files for Argentina and Brazil to the DVB-T scan list.

You will notice they have the same content already published here
http://www.linuxtv.org/wiki/index.php/ISDB-T_Frequency_Table

Thanks,
Hernán.-


ar-Argentina
Description: Binary data


br-Brazil
Description: Binary data