Re: Support for UVC 1.5 / H.264 SVC (to be used with Logitech C930e)

2015-06-12 Thread Laurent Pinchart
Hi Damiano,

On Thursday 11 June 2015 14:28:55 Damiano Albani wrote:
 Hello,
 
 I've recently got hold of a Logitech C930e webcam.
 AFAIK that's the only consumer webcam that support UVC 1.5 and H.264/SVC.
 Unfortunately, compared to its predecessor the C920, it is not very well
 supported on Linux.
 
 For example, the H.264 capability doesn't appear in the list of formats:
  v4l2-ctl -D --list-formats
 
 Driver Info (not using libv4l2):
 Driver name   : uvcvideo
 Card type : Logitech Webcam C930e
 Bus info  : usb-:00:1a.7-1.4
 Driver version: 3.13.11
 Capabilities  : 0x8401
 Video Capture
 Streaming
 Device Capabilities
 Device Caps   : 0x0401
 Video Capture
 Streaming
 ioctl: VIDIOC_ENUM_FMT
 Index   : 0
 Type: Video Capture
 Pixel Format: 'YUYV'
 Name: YUV 4:2:2 (YUYV)
 
 Index   : 1
 Type: Video Capture
 Pixel Format: 'MJPG' (compressed)
 Name: MJPEG
 
 
 Back in August 2013, there was a discussion on adding support for UVC 1.5,
 among other things:
 https://www.mail-archive.com/linux-media@vger.kernel.org/msg66203.html
 
 If I'm not mistaken, this set of patches provided above haven't been
 integrated into the kernel.
 Is there a lot of work to do to backport the code into the current kernel?
 2 years after the original was written, has there been changes in the API
 that requires to revisit the patches?

There's quite a lot of work to do, yes. The patches need to be rebased, but 
that shouldn't be too much of an issue. Then, the comments I've sent during 
review need to be addressed. Finally, I still need to review the last patch.

I've discussed this with Pawel Osciak last week, and we thought it would be 
good to take an incremental approach and merge basic UVC 1.5 support first, 
and then simulcast in a second step. The biggest problem now is to find time 
to work on it.

-- 
Regards,

Laurent Pinchart

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


[GIT PULL FOR v4.2] Various fixes

2015-06-12 Thread Hans Verkuil
The following changes since commit e42c8c6eb456f8978de417ea349eef676ef4385c:

  [media] au0828: move dev-boards atribuition to happen earlier (2015-06-10 
12:39:35 -0300)

are available in the git repository at:

  git://linuxtv.org/hverkuil/media_tree.git for-v4.2n

for you to fetch changes up to 5361c68bdc76a5cf8beaaa19d7b18000bd4bbc34:

  v4l2-dv-timings: log if the timing is reduced blanking V2 (2015-06-12 
09:39:40 +0200)


Fabian Frederick (5):
  v4l2-dv-timings: use swap() in v4l2_calc_aspect_ratio()
  wl128x: use swap() in fm_rdsparse_swapbytes()
  saa7146: use swap() in sort_and_eliminate()
  saa6588: use swap() in saa6588_i2c_poll()
  btcx-risc: use swap() in btcx_sort_clips()

Hans Verkuil (4):
  stk1160: fix sequence handling
  rc/Kconfig: fix indentation problem
  mantis: fix unused variable compiler warning
  v4l2-dv-timings: log if the timing is reduced blanking V2

Jan Roemisch (1):
  radio-bcm2048: Fix region selection

Krzysztof Hałasa (4):
  SOLO6x10: Fix G.723 minimum audio period count.
  SOLO6x10: unmap registers only after free_irq().
  SOLO6x10: remove unneeded register locking and barriers.
  SOLO6x10: Remove dead code.

Prashant Laddha (1):
  v4l2-dv-timings: add support for reduced blanking v2

 drivers/media/common/saa7146/saa7146_hlp.c|  9 +++-
 drivers/media/i2c/adv7604.c   |  2 +-
 drivers/media/i2c/adv7842.c   |  2 +-
 drivers/media/i2c/saa6588.c   |  4 +---
 drivers/media/pci/bt8xx/btcx-risc.c   |  5 +
 drivers/media/pci/mantis/mantis_i2c.c |  3 +--
 drivers/media/pci/solo6x10/solo6x10-core.c| 18 ++--
 drivers/media/pci/solo6x10/solo6x10-g723.c| 13 ++--
 drivers/media/pci/solo6x10/solo6x10.h | 26 +--
 drivers/media/platform/vivid/vivid-vid-cap.c  |  2 +-
 drivers/media/radio/wl128x/fmdrv_common.c |  5 +
 drivers/media/rc/Kconfig  | 26 +++
 drivers/media/usb/stk1160/stk1160-v4l.c   |  2 ++
 drivers/media/usb/stk1160/stk1160-video.c |  4 +---
 drivers/media/usb/stk1160/stk1160.h   |  3 +--
 drivers/media/v4l2-core/v4l2-dv-timings.c | 89 
---
 drivers/staging/media/bcm2048/radio-bcm2048.c | 20 ++
 include/media/v4l2-dv-timings.h   |  6 +-
 18 files changed, 116 insertions(+), 123 deletions(-)
--
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 10/15] media: rcar_vin: Use correct pad number in try_fmt

2015-06-12 Thread Hans Verkuil
On 06/03/2015 03:59 PM, William Towle wrote:
 Fix rcar_vin_try_fmt to use the correct pad number when calling the
 subdev set_fmt. Previously pad number 0 was always used, resulting in
 EINVAL if the subdev cares about the pad number (e.g. ADV7612).
 
 Signed-off-by: William Towle william.to...@codethink.co.uk
 Reviewed-by: Rob Taylor rob.tay...@codethink.co.uk
 ---
  drivers/media/platform/soc_camera/rcar_vin.c |   20 +++-
  1 file changed, 15 insertions(+), 5 deletions(-)
 
 diff --git a/drivers/media/platform/soc_camera/rcar_vin.c 
 b/drivers/media/platform/soc_camera/rcar_vin.c
 index 00c1034..cc993bc 100644
 --- a/drivers/media/platform/soc_camera/rcar_vin.c
 +++ b/drivers/media/platform/soc_camera/rcar_vin.c
 @@ -1697,7 +1697,7 @@ static int rcar_vin_try_fmt(struct soc_camera_device 
 *icd,
   const struct soc_camera_format_xlate *xlate;
   struct v4l2_pix_format *pix = f-fmt.pix;
   struct v4l2_subdev *sd = soc_camera_to_subdev(icd);
 - struct v4l2_subdev_pad_config pad_cfg;
 + struct v4l2_subdev_pad_config *pad_cfg;
   struct v4l2_subdev_format format = {
   .which = V4L2_SUBDEV_FORMAT_TRY,
   };
 @@ -1706,6 +1706,8 @@ static int rcar_vin_try_fmt(struct soc_camera_device 
 *icd,
   int width, height;
   int ret;
  
 + pad_cfg = v4l2_subdev_alloc_pad_config(sd);
 +
   xlate = soc_camera_xlate_by_fourcc(icd, pixfmt);
   if (!xlate) {
   xlate = icd-current_fmt;
 @@ -1734,10 +1736,15 @@ static int rcar_vin_try_fmt(struct soc_camera_device 
 *icd,
   mf-code = xlate-code;
   mf-colorspace = pix-colorspace;
  
 - ret = v4l2_device_call_until_err(sd-v4l2_dev, soc_camera_grp_id(icd),
 -  pad, set_fmt, pad_cfg, format);
 - if (ret  0)
 + format.pad = icd-src_pad_idx;
 + ret = v4l2_device_call_until_err(sd-v4l2_dev,
 + soc_camera_grp_id(icd), pad,
 + set_fmt, pad_cfg,
 + format);
 + if (ret  0) {
 + v4l2_subdev_free_pad_config(pad_cfg);
   return ret;

I would use a goto to the end of the function here.

 + }
  
   /* Adjust only if VIN cannot scale */
   if (pix-width  mf-width * 2)
 @@ -1759,13 +1766,15 @@ static int rcar_vin_try_fmt(struct soc_camera_device 
 *icd,
*/
   mf-width = VIN_MAX_WIDTH;
   mf-height = VIN_MAX_HEIGHT;
 + format.pad = icd-src_pad_idx;
   ret = v4l2_device_call_until_err(sd-v4l2_dev,
soc_camera_grp_id(icd),
 -  pad, set_fmt, pad_cfg,
 +  pad, set_fmt, pad_cfg,
format);
   if (ret  0) {
   dev_err(icd-parent,
   client try_fmt() = %d\n, ret);
 + v4l2_subdev_free_pad_config(pad_cfg);
   return ret;

Ditto.

   }
   }
 @@ -1776,6 +1785,7 @@ static int rcar_vin_try_fmt(struct soc_camera_device 
 *icd,
   pix-height = height;
   }
  

With the error label here.

 + v4l2_subdev_free_pad_config(pad_cfg);
   return 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


Re: [PATCH 2/9] [media] media: omap_vout: Convert omap_vout_uservirt_to_phys() to use get_vaddr_pfns()

2015-06-12 Thread Tomi Valkeinen


On 12/06/15 12:26, Laurent Pinchart wrote:
 Hi Tomi,
 
 On Friday 12 June 2015 12:21:13 Tomi Valkeinen wrote:
 On 11/06/15 07:21, Laurent Pinchart wrote:
 On Wednesday 10 June 2015 06:20:45 Mauro Carvalho Chehab wrote:
 From: Jan Kara j...@suse.cz

 Convert omap_vout_uservirt_to_phys() to use get_vaddr_pfns() instead of
 hand made mapping of virtual address to physical address. Also the
 function leaked page reference from get_user_pages() so fix that by
 properly release the reference when omap_vout_buffer_release() is
 called.

 Signed-off-by: Jan Kara j...@suse.cz
 Signed-off-by: Hans Verkuil hans.verk...@cisco.com
 [hans.verk...@cisco.com: remove unused struct omap_vout_device *vout
 variable]

 Signed-off-by: Mauro Carvalho Chehab mche...@osg.samsung.com

 diff --git a/drivers/media/platform/omap/omap_vout.c
 b/drivers/media/platform/omap/omap_vout.c index
 f09c5f17a42f..7feb6394f111
 100644
 --- a/drivers/media/platform/omap/omap_vout.c
 +++ b/drivers/media/platform/omap/omap_vout.c
 @@ -195,46 +195,34 @@ static int omap_vout_try_format(struct
 v4l2_pix_format *pix) }

  /*

 - * omap_vout_uservirt_to_phys: This inline function is used to convert
 user - * space virtual address to physical address.
 + * omap_vout_get_userptr: Convert user space virtual address to physical
 + * address.

   */

 -static unsigned long omap_vout_uservirt_to_phys(unsigned long virtp)
 +static int omap_vout_get_userptr(struct videobuf_buffer *vb, u32 virtp,
 +   u32 *physp)

  {

 -  unsigned long physp = 0;
 -  struct vm_area_struct *vma;
 -  struct mm_struct *mm = current-mm;
 +  struct frame_vector *vec;
 +  int ret;

/* For kernel direct-mapped memory, take the easy way */

 -  if (virtp = PAGE_OFFSET)
 -  return virt_to_phys((void *) virtp);
 -
 -  down_read(current-mm-mmap_sem);
 -  vma = find_vma(mm, virtp);
 -  if (vma  (vma-vm_flags  VM_IO)  vma-vm_pgoff) {
 -  /* this will catch, kernel-allocated, mmaped-to-usermode
 - addresses */
 -  physp = (vma-vm_pgoff  PAGE_SHIFT) + (virtp - vma-vm_start);
 -  up_read(current-mm-mmap_sem);
 -  } else {
 -  /* otherwise, use get_user_pages() for general userland pages */
 -  int res, nr_pages = 1;
 -  struct page *pages;
 +  if (virtp = PAGE_OFFSET) {
 +  *physp = virt_to_phys((void *)virtp);

 Lovely. virtp comes from userspace and as far as I know it arrives here
 completely unchecked. The problem isn't introduced by this patch, but
 omap_vout buffer management seems completely broken to me, and nobody
 seems to care about the driver. Given that omapdrm should now provide the
 video output capabilities that are missing from omapfb and resulted in
 the development of omap_vout, shouldn't we drop the omap_vout driver ?

 Tomi, any opinion on this ? Do you see any omap_vout capability missing
 from omapdrm ?

 I've never used omap_vout, so I don't even know what it offers. I do
 know it supports VRFB rotation (omap3), which we don't have on omapdrm,
 though. Whether anyone uses that (or omap_vout), I have no idea...

 I'd personally love to get rid of omap_vout, as it causes complications
 on omapfb/omapdss side.
 
 How difficult would it be to implement VRFB rotation in omapdrm ?

I don't know... drivers/video/fbdev/omap2/vrfb.c contains the code to
handle the VRFB hardware, but it does require certain amount of book
keeping and tweaking of the fb size etc from the omapdrm side. And
probably a new parameter to somehow enable vrfb for a buffer, as you
don't want it to be used by default.

 Tomi



signature.asc
Description: OpenPGP digital signature


Re: [PATCH 02/15] media: soc_camera: rcar_vin: Add BT.709 24-bit RGB888 input support

2015-06-12 Thread Hans Verkuil
On 06/03/2015 03:59 PM, William Towle wrote:
 This adds V4L2_MBUS_FMT_RGB888_1X24 input format support
 which is used by the ADV7612 chip.
 
 Signed-off-by: Koji Matsuoka koji.matsuoka...@renesas.com
 Signed-off-by: Simon Horman horms+rene...@verge.net.au
 Signed-off-by: Yoshihiro Kaneko ykaneko0...@gmail.com
 
 Modified to use MEDIA_BUS_FMT_* constants
 
 Signed-off-by: William Towle william.to...@codethink.co.uk
 Reviewed-by: Rob Taylor rob.tay...@codethink.co.uk

Acked-by: Hans Verkuil hans.verk...@cisco.com

 ---
  drivers/media/platform/soc_camera/rcar_vin.c |   12 ++--
  1 file changed, 10 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/media/platform/soc_camera/rcar_vin.c 
 b/drivers/media/platform/soc_camera/rcar_vin.c
 index db7700b..16352a8 100644
 --- a/drivers/media/platform/soc_camera/rcar_vin.c
 +++ b/drivers/media/platform/soc_camera/rcar_vin.c
 @@ -98,6 +98,7 @@
  #define VNMC_INF_YUV10_BT656 (2  16)
  #define VNMC_INF_YUV10_BT601 (3  16)
  #define VNMC_INF_YUV16   (5  16)
 +#define VNMC_INF_RGB888  (6  16)
  #define VNMC_VUP (1  10)
  #define VNMC_IM_ODD  (0  3)
  #define VNMC_IM_ODD_EVEN (1  3)
 @@ -589,7 +590,7 @@ static int rcar_vin_setup(struct rcar_vin_priv *priv)
   struct soc_camera_device *icd = priv-ici.icd;
   struct rcar_vin_cam *cam = icd-host_priv;
   u32 vnmc, dmr, interrupts;
 - bool progressive = false, output_is_yuv = false;
 + bool progressive = false, output_is_yuv = false, input_is_yuv = false;
  
   switch (priv-field) {
   case V4L2_FIELD_TOP:
 @@ -623,16 +624,22 @@ static int rcar_vin_setup(struct rcar_vin_priv *priv)
   case MEDIA_BUS_FMT_YUYV8_1X16:
   /* BT.601/BT.1358 16bit YCbCr422 */
   vnmc |= VNMC_INF_YUV16;
 + input_is_yuv = true;
   break;
   case MEDIA_BUS_FMT_YUYV8_2X8:
   /* BT.656 8bit YCbCr422 or BT.601 8bit YCbCr422 */
   vnmc |= priv-pdata_flags  RCAR_VIN_BT656 ?
   VNMC_INF_YUV8_BT656 : VNMC_INF_YUV8_BT601;
 + input_is_yuv = true;
 + break;
 + case MEDIA_BUS_FMT_RGB888_1X24:
 + vnmc |= VNMC_INF_RGB888;
   break;
   case MEDIA_BUS_FMT_YUYV10_2X10:
   /* BT.656 10bit YCbCr422 or BT.601 10bit YCbCr422 */
   vnmc |= priv-pdata_flags  RCAR_VIN_BT656 ?
   VNMC_INF_YUV10_BT656 : VNMC_INF_YUV10_BT601;
 + input_is_yuv = true;
   break;
   default:
   break;
 @@ -676,7 +683,7 @@ static int rcar_vin_setup(struct rcar_vin_priv *priv)
   vnmc |= VNMC_VUP;
  
   /* If input and output use the same colorspace, use bypass mode */
 - if (output_is_yuv)
 + if (input_is_yuv == output_is_yuv)
   vnmc |= VNMC_BPS;
  
   /* progressive or interlaced mode */
 @@ -1423,6 +1430,7 @@ static int rcar_vin_get_formats(struct 
 soc_camera_device *icd, unsigned int idx,
   case MEDIA_BUS_FMT_YUYV8_1X16:
   case MEDIA_BUS_FMT_YUYV8_2X8:
   case MEDIA_BUS_FMT_YUYV10_2X10:
 + case MEDIA_BUS_FMT_RGB888_1X24:
   if (cam-extra_fmt)
   break;
  
 

--
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/15] media: soc_camera: soc_scale_crop: Use correct pad number in try_fmt

2015-06-12 Thread Hans Verkuil
On 06/03/2015 03:59 PM, William Towle wrote:
 From: Rob Taylor rob.tay...@codethink.co.uk
 
 Fix calls to subdev try_fmt to use correct pad. Fixes failures with
 subdevs that care about having the right pad number set.
 
 Signed-off-by: William Towle william.to...@codethink.co.uk
 Reviewed-by: Rob Taylor rob.tay...@codethink.co.uk
 ---
  drivers/media/platform/soc_camera/soc_scale_crop.c |   10 ++
  1 file changed, 10 insertions(+)
 
 diff --git a/drivers/media/platform/soc_camera/soc_scale_crop.c 
 b/drivers/media/platform/soc_camera/soc_scale_crop.c
 index bda29bc..90e2769 100644
 --- a/drivers/media/platform/soc_camera/soc_scale_crop.c
 +++ b/drivers/media/platform/soc_camera/soc_scale_crop.c
 @@ -225,6 +225,10 @@ static int client_set_fmt(struct soc_camera_device *icd,
   bool host_1to1;
   int ret;
  
 +#if defined(CONFIG_MEDIA_CONTROLLER)
 + format-pad = icd-src_pad_idx;
 +#endif

As mentioned in the review of patch 9 it should be possible to drop the
#if defined() here.

 +
   ret = v4l2_device_call_until_err(sd-v4l2_dev,
soc_camera_grp_id(icd), pad,
set_fmt, NULL, format);
 @@ -261,10 +265,16 @@ static int client_set_fmt(struct soc_camera_device *icd,
   /* width = max_width  height = max_height - guaranteed by try_fmt */
   while ((width  tmp_w || height  tmp_h) 
  tmp_w  max_width  tmp_h  max_height) {
 +

Spurious whitespace change.

   tmp_w = min(2 * tmp_w, max_width);
   tmp_h = min(2 * tmp_h, max_height);
   mf-width = tmp_w;
   mf-height = tmp_h;
 +
 +#if defined(CONFIG_MEDIA_CONTROLLER)
 + format-pad = icd-src_pad_idx;
 +#endif

Same as the first comment.

 +
   ret = v4l2_device_call_until_err(sd-v4l2_dev,
   soc_camera_grp_id(icd), pad,
   set_fmt, NULL, format);
 

Regards,

Hans
--
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 03/15] media: adv7180: add of match table

2015-06-12 Thread Hans Verkuil
On 06/03/2015 03:59 PM, William Towle wrote:
 From: Ben Dooks ben.do...@codethink.co.uk
 
 Add a proper of match id for use when the device is being bound via
 device tree, to avoid having to use the i2c old-style binding of the
 device.
 
 Signed-off-by: Ben Dooks ben.do...@codethink.co.uk
 Signed-off-by: William.Towle william.to...@codethink.co.uk
 Reviewed-by: Rob Taylor rob.tay...@codethink.co.uk

Acked-by: Hans Verkuil hans.verk...@cisco.com

 ---
  drivers/media/i2c/adv7180.c |   11 +++
  1 file changed, 11 insertions(+)
 
 diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
 index a493c0b..09a96df 100644
 --- a/drivers/media/i2c/adv7180.c
 +++ b/drivers/media/i2c/adv7180.c
 @@ -25,6 +25,7 @@
  #include linux/interrupt.h
  #include linux/i2c.h
  #include linux/slab.h
 +#include linux/of.h
  #include media/v4l2-ioctl.h
  #include linux/videodev2.h
  #include media/v4l2-device.h
 @@ -1324,11 +1325,21 @@ static SIMPLE_DEV_PM_OPS(adv7180_pm_ops, 
 adv7180_suspend, adv7180_resume);
  #define ADV7180_PM_OPS NULL
  #endif
  
 +#ifdef CONFIG_OF
 +static const struct of_device_id adv7180_of_id[] = {
 + { .compatible = adi,adv7180, },
 + { },
 +};
 +
 +MODULE_DEVICE_TABLE(of, adv7180_of_id);
 +#endif
 +
  static struct i2c_driver adv7180_driver = {
   .driver = {
  .owner = THIS_MODULE,
  .name = KBUILD_MODNAME,
  .pm = ADV7180_PM_OPS,
 +.of_match_table = of_match_ptr(adv7180_of_id),
  },
   .probe = adv7180_probe,
   .remove = adv7180_remove,
 

--
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 1/1] omap3isp: Fix sub-device power management code

2015-06-12 Thread Laurent Pinchart
Hi Sakari,

On Thursday 11 June 2015 00:38:11 Sakari Ailus wrote:
 On Wed, Jun 10, 2015 at 03:52:50AM +0300, Laurent Pinchart wrote:
  On Friday 29 May 2015 02:17:47 Sakari Ailus wrote:
   The power management code was reworked a little due to interface changes
   in the MC. Due to those changes the power management broke a bit, fix it
   so the functionality is reverted to old behaviour.
  
  I found the commit message a bit vague. How about
  
  Commit 813f5c0ac5cc (media: Change media device link_notify behaviour)
  modified the media controller link setup notification API and updated the
  OMAP3 ISP driver accordingly. As a side effect it introduced a bug by
  turning power on after setting the link instead of before. This results
  in powered off entities being accessed. Fix it.
  
  Or have I misunderstood the problem ?
 
 Not entirely, but it's not just that: depending on the order in which the
 links are changed and the video nodes opened or closed, the use counts may
 end up being too high or too low (even negative).

OK. Could you please update the commit message accordingly ?

  Signed-off-by: Sakari Ailus sakari.ai...@iki.fi
  Fixes: 813f5c0ac5cc [media] media: Change media device link_notify
  behaviour Cc: sta...@vger.kernel.org # since v3.10
  ---
  
   drivers/media/platform/omap3isp/isp.c | 4 ++--
   1 file changed, 2 insertions(+), 2 deletions(-)
  
  diff --git a/drivers/media/platform/omap3isp/isp.c
  b/drivers/media/platform/omap3isp/isp.c index a038c05..3e6b97b 100644
  --- a/drivers/media/platform/omap3isp/isp.c
  +++ b/drivers/media/platform/omap3isp/isp.c
  @@ -829,14 +829,14 @@ static int isp_pipeline_link_notify(struct
  media_link *link, u32 flags,
 int ret;
  
 if (notification == MEDIA_DEV_NOTIFY_POST_LINK_CH 
  -  !(link-flags  MEDIA_LNK_FL_ENABLED)) {
  +  !(flags  MEDIA_LNK_FL_ENABLED)) {
  
  Isn't link-flags == flags in the post notification callback ?
 
 It is. IMO it's better to use flags here still. So below is the actual
 functional change.

No issue with that.

 /* Powering off entities is assumed to never fail. */
 isp_pipeline_pm_power(source, -sink_use);
 isp_pipeline_pm_power(sink, -source_use);
 return 0;
 }
  
  -  if (notification == MEDIA_DEV_NOTIFY_POST_LINK_CH 
  +  if (notification == MEDIA_DEV_NOTIFY_PRE_LINK_CH 
 (flags  MEDIA_LNK_FL_ENABLED)) {
 ret = isp_pipeline_pm_power(source, sink_use);

-- 
Regards,

Laurent Pinchart

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


[PATCH] media: i2c/adp1653: set enable gpio to output

2015-06-12 Thread Uwe Kleine-König
Without setting the direction of a gpio to output a call to
gpiod_set_value doesn't have a defined outcome.

Furthermore this is one caller less that stops us making the flags
argument to gpiod_get*() mandatory.

Signed-off-by: Uwe Kleine-König u.kleine-koe...@pengutronix.de
---
Hello,

this patch applies to next and is only necessary on top of 074c57a25fa2
([media] media: i2c/adp1653: Devicetree support for adp1653).

Note I plan to make the flags parameter mandatory for 4.3. So unless
this change gets into 4.2, would it be ok to let it go in via the gpio
tree?

Best regards
Uwe

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

diff --git a/drivers/media/i2c/adp1653.c b/drivers/media/i2c/adp1653.c
index c70ababce954..5dd39775d6ca 100644
--- a/drivers/media/i2c/adp1653.c
+++ b/drivers/media/i2c/adp1653.c
@@ -465,7 +465,7 @@ static int adp1653_of_init(struct i2c_client *client,
 
of_node_put(child);
 
-   pd-enable_gpio = devm_gpiod_get(client-dev, enable);
+   pd-enable_gpio = devm_gpiod_get(client-dev, enable, GPIOD_OUT_LOW);
if (!pd-enable_gpio) {
dev_err(client-dev, Error getting GPIO\n);
return -EINVAL;
-- 
2.1.4

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


Re: [PATCH 2/2] genalloc: rename of_get_named_gen_pool() to of_gen_pool_get()

2015-06-12 Thread Vinod Koul
On Thu, Jun 11, 2015 at 04:28:32PM +0300, Vladimir Zapolskiy wrote:
 To be consistent with other kernel interface namings, rename
 of_get_named_gen_pool() to of_gen_pool_get(). In the original
 function name _named suffix references to a device tree property,
 which contains a phandle to a device and the corresponding
 device driver is assumed to register a gen_pool object.
 
 Due to a weak relation and to avoid any confusion (e.g. in future
 possible scenario if gen_pool objects are named) the suffix is
 removed.
 
 Signed-off-by: Vladimir Zapolskiy vladimir_zapols...@mentor.com
 ---
  drivers/dma/mmp_tdma.c| 2 +-
For this:

Acked-by: Vinod Koul vinod.k...@intel.com

-- 
~Vinod

--
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 1/3] modify the vb2_buffer structure for common video buffer and make struct vb2_v4l2_buffer

2015-06-12 Thread Hans Verkuil
Hi Junghak,

On 06/08/2015 03:35 PM, Junghak Sung wrote:
 Make the struct vb2_buffer to common buffer by removing v4l2-specific members.
 And common video buffer is embedded into v4l2-specific video buffer like:
 struct vb2_v4l2_buffer {
 struct vb2_buffervb2;
 struct v4l2_bufferv4l2_buf;
 struct v4l2_planev4l2_planes[VIDEO_MAX_PLANES];
 };
 This changes require the modifications of all device drivers that use this 
 structure.

It's next to impossible to review just large diffs, but it is unavoidable for
changes like this I guess.

I do recommend that you do a 'git grep videobuf2-core' to make sure all usages
of that have been replaced with videobuf2-v4l2. I think I saw videobuf2-core
mentioned in a comment, but it is hard to be sure.

It would also be easier to review if the renaming of core.[ch] to v4l2.[ch] was
done in a separate patch. If it is relatively easy to split it up like that,
then I would appreciate it, but if it takes a lot of time, then leave it as is.

Anyway, assuming that 'git grep videobuf2-core' doesn't find anything:

Acked-by: Hans Verkuil hans.verk...@cisco.com

Regards,

Hans

 
 Signed-off-by: Junghak Sung jh1009.s...@samsung.com
 ---
  Documentation/video4linux/v4l2-pci-skeleton.c  |   12 +-
  drivers/media/dvb-frontends/rtl2832_sdr.c  |   10 +-
  drivers/media/pci/cx23885/cx23885-417.c|   12 +-
  drivers/media/pci/cx23885/cx23885-dvb.c|   12 +-
  drivers/media/pci/cx23885/cx23885-vbi.c|   12 +-
  drivers/media/pci/cx23885/cx23885-video.c  |   12 +-
  drivers/media/pci/cx23885/cx23885.h|2 +-
  drivers/media/pci/cx25821/cx25821-video.c  |   12 +-
  drivers/media/pci/cx25821/cx25821.h|2 +-
  drivers/media/pci/cx88/cx88-blackbird.c|   14 +-
  drivers/media/pci/cx88/cx88-dvb.c  |   14 +-
  drivers/media/pci/cx88/cx88-vbi.c  |   12 +-
  drivers/media/pci/cx88/cx88-video.c|   12 +-
  drivers/media/pci/cx88/cx88.h  |2 +-
  drivers/media/pci/saa7134/saa7134-empress.c|2 +-
  drivers/media/pci/saa7134/saa7134-ts.c |   10 +-
  drivers/media/pci/saa7134/saa7134-vbi.c|   12 +-
  drivers/media/pci/saa7134/saa7134-video.c  |   18 +-
  drivers/media/pci/saa7134/saa7134.h|8 +-
  drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c |   14 +-
  drivers/media/pci/solo6x10/solo6x10-v4l2.c |6 +-
  drivers/media/pci/solo6x10/solo6x10.h  |4 +-
  drivers/media/pci/sta2x11/sta2x11_vip.c|   20 +-
  drivers/media/pci/tw68/tw68-video.c|   12 +-
  drivers/media/pci/tw68/tw68.h  |2 +-
  drivers/media/platform/am437x/am437x-vpfe.c|   16 +-
  drivers/media/platform/am437x/am437x-vpfe.h|2 +-
  drivers/media/platform/blackfin/bfin_capture.c |   20 +-
  drivers/media/platform/coda/coda-bit.c |   20 +-
  drivers/media/platform/coda/coda-common.c  |   24 +-
  drivers/media/platform/coda/coda-jpeg.c|2 +-
  drivers/media/platform/coda/coda.h |6 +-
  drivers/media/platform/davinci/vpbe_display.c  |8 +-
  drivers/media/platform/davinci/vpif_capture.c  |   16 +-
  drivers/media/platform/davinci/vpif_capture.h  |2 +-
  drivers/media/platform/davinci/vpif_display.c  |   18 +-
  drivers/media/platform/davinci/vpif_display.h  |6 +-
  drivers/media/platform/exynos-gsc/gsc-core.c   |2 +-
  drivers/media/platform/exynos-gsc/gsc-core.h   |6 +-
  drivers/media/platform/exynos-gsc/gsc-m2m.c|   16 +-
  drivers/media/platform/exynos4-is/fimc-capture.c   |   12 +-
  drivers/media/platform/exynos4-is/fimc-core.c  |4 +-
  drivers/media/platform/exynos4-is/fimc-core.h  |6 +-
  drivers/media/platform/exynos4-is/fimc-is.h|2 +-
  drivers/media/platform/exynos4-is/fimc-isp-video.c |   14 +-
  drivers/media/platform/exynos4-is/fimc-isp-video.h |2 +-
  drivers/media/platform/exynos4-is/fimc-isp.h   |4 +-
  drivers/media/platform/exynos4-is/fimc-lite.c  |   10 +-
  drivers/media/platform/exynos4-is/fimc-lite.h  |4 +-
  drivers/media/platform/exynos4-is/fimc-m2m.c   |   16 +-
  drivers/media/platform/m2m-deinterlace.c   |   16 +-
  drivers/media/platform/marvell-ccic/mcam-core.c|   24 +-
  drivers/media/platform/marvell-ccic/mcam-core.h|2 +-
  drivers/media/platform/mx2_emmaprp.c   |   16 +-
  drivers/media/platform/omap3isp/ispvideo.c |8 +-
  drivers/media/platform/omap3isp/ispvideo.h |4 +-
  drivers/media/platform/s3c-camif/camif-capture.c   |   12 +-
  drivers/media/platform/s3c-camif/camif-core.c  |2 +-
  drivers/media/platform/s3c-camif/camif-core.h  |4 +-
  drivers/media/platform/s5p-g2d/g2d.c   |   16 +-
  

Re: [PATCH 04/15] media: adv7604: chip info and formats for ADV7612

2015-06-12 Thread Hans Verkuil
Hi William,

Two comments, see below.

On 06/03/2015 03:59 PM, William Towle wrote:
 Add support for the ADV7612 chip as implemented on Renesas' Lager
 board to adv7604.c, including lists for formats/colourspace/timing
 selection and an IRQ handler.
 
 Signed-off-by: William Towle william.to...@codethink.co.uk
 ---
  drivers/media/i2c/adv7604.c |   91 
 +--
  1 file changed, 87 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/media/i2c/adv7604.c b/drivers/media/i2c/adv7604.c
 index aaa37b0..16646517 100644
 --- a/drivers/media/i2c/adv7604.c
 +++ b/drivers/media/i2c/adv7604.c
 @@ -80,6 +80,7 @@ MODULE_LICENSE(GPL);
  enum adv76xx_type {
   ADV7604,
   ADV7611,
 + ADV7612,
  };
  
  struct adv76xx_reg_seq {
 @@ -758,6 +759,23 @@ static const struct adv76xx_format_info 
 adv7611_formats[] = {
 ADV76XX_OP_MODE_SEL_SDR_422_2X | ADV76XX_OP_FORMAT_SEL_12BIT },
  };
  
 +static const struct adv76xx_format_info adv7612_formats[] = {
 + { MEDIA_BUS_FMT_RGB888_1X24, ADV76XX_OP_CH_SEL_RGB, true, false,
 +   ADV76XX_OP_MODE_SEL_SDR_444 | ADV76XX_OP_FORMAT_SEL_8BIT },
 + { MEDIA_BUS_FMT_YUYV8_2X8, ADV76XX_OP_CH_SEL_RGB, false, false,
 +   ADV76XX_OP_MODE_SEL_SDR_422 | ADV76XX_OP_FORMAT_SEL_8BIT },
 + { MEDIA_BUS_FMT_YVYU8_2X8, ADV76XX_OP_CH_SEL_RGB, false, true,
 +   ADV76XX_OP_MODE_SEL_SDR_422 | ADV76XX_OP_FORMAT_SEL_8BIT },
 + { MEDIA_BUS_FMT_UYVY8_1X16, ADV76XX_OP_CH_SEL_RBG, false, false,
 +   ADV76XX_OP_MODE_SEL_SDR_422_2X | ADV76XX_OP_FORMAT_SEL_8BIT },
 + { MEDIA_BUS_FMT_VYUY8_1X16, ADV76XX_OP_CH_SEL_RBG, false, true,
 +   ADV76XX_OP_MODE_SEL_SDR_422_2X | ADV76XX_OP_FORMAT_SEL_8BIT },
 + { MEDIA_BUS_FMT_YUYV8_1X16, ADV76XX_OP_CH_SEL_RGB, false, false,
 +   ADV76XX_OP_MODE_SEL_SDR_422_2X | ADV76XX_OP_FORMAT_SEL_8BIT },
 + { MEDIA_BUS_FMT_YVYU8_1X16, ADV76XX_OP_CH_SEL_RGB, false, true,
 +   ADV76XX_OP_MODE_SEL_SDR_422_2X | ADV76XX_OP_FORMAT_SEL_8BIT },
 +};
 +
  static const struct adv76xx_format_info *
  adv76xx_format_info(struct adv76xx_state *state, u32 code)
  {
 @@ -2471,6 +2489,11 @@ static void adv7611_setup_irqs(struct v4l2_subdev *sd)
   io_write(sd, 0x41, 0xd0); /* STDI irq for any change, disable INT2 */
  }
  
 +static void adv7612_setup_irqs(struct v4l2_subdev *sd)
 +{
 + io_write(sd, 0x41, 0xd0); /* disable INT2 */
 +}
 +
  static void adv76xx_unregister_clients(struct adv76xx_state *state)
  {
   unsigned int i;
 @@ -2558,6 +2581,19 @@ static const struct adv76xx_reg_seq 
 adv7611_recommended_settings_hdmi[] = {
   { ADV76XX_REG_SEQ_TERM, 0 },
  };
  
 +static const struct adv76xx_reg_seq adv7612_recommended_settings_hdmi[] = {
 + { ADV76XX_REG(ADV76XX_PAGE_CP, 0x6c), 0x00 },
 + { ADV76XX_REG(ADV76XX_PAGE_HDMI, 0x9b), 0x03 },
 + { ADV76XX_REG(ADV76XX_PAGE_HDMI, 0x6f), 0x08 },
 + { ADV76XX_REG(ADV76XX_PAGE_HDMI, 0x85), 0x1f },
 + { ADV76XX_REG(ADV76XX_PAGE_HDMI, 0x87), 0x70 },
 + { ADV76XX_REG(ADV76XX_PAGE_HDMI, 0x57), 0xda },
 + { ADV76XX_REG(ADV76XX_PAGE_HDMI, 0x58), 0x01 },
 + { ADV76XX_REG(ADV76XX_PAGE_HDMI, 0x03), 0x98 },
 + { ADV76XX_REG(ADV76XX_PAGE_HDMI, 0x4c), 0x44 },
 + { ADV76XX_REG_SEQ_TERM, 0 },
 +};
 +
  static const struct adv76xx_chip_info adv76xx_chip_info[] = {
   [ADV7604] = {
   .type = ADV7604,
 @@ -2646,17 +2682,59 @@ static const struct adv76xx_chip_info 
 adv76xx_chip_info[] = {
   .field1_vsync_mask = 0x3fff,
   .field1_vbackporch_mask = 0x3fff,
   },
 + [ADV7612] = {
 + .type = ADV7612,
 + .has_afe = false,
 + .max_port = ADV7604_PAD_HDMI_PORT_B,
 + .num_dv_ports = 2,
 + .edid_enable_reg = 0x74,
 + .edid_status_reg = 0x76,
 + .lcf_reg = 0xa3,
 + .tdms_lock_mask = 0x43,

This looks strange: with two inputs I expect two bits set in the mask, not 
three.

 + .cable_det_mask = 0x01,

Same here: I expect to see two bits set, not one.

 + .fmt_change_digital_mask = 0x03,
 + .formats = adv7612_formats,
 + .nformats = ARRAY_SIZE(adv7612_formats),
 + .set_termination = adv7611_set_termination,
 + .setup_irqs = adv7612_setup_irqs,
 + .read_hdmi_pixelclock = adv7611_read_hdmi_pixelclock,
 + .read_cable_det = adv7611_read_cable_det,
 + .recommended_settings = {
 + [1] = adv7612_recommended_settings_hdmi,
 + },
 + .num_recommended_settings = {
 + [1] = ARRAY_SIZE(adv7612_recommended_settings_hdmi),
 + },
 + .page_mask = BIT(ADV76XX_PAGE_IO) | BIT(ADV76XX_PAGE_CEC) |
 + BIT(ADV76XX_PAGE_INFOFRAME) | BIT(ADV76XX_PAGE_AFE) |
 + BIT(ADV76XX_PAGE_REP) |  BIT(ADV76XX_PAGE_EDID) |
 + BIT(ADV76XX_PAGE_HDMI) | BIT(ADV76XX_PAGE_CP),
 +

Re: [PATCH 05/15] media: adv7604: document support for ADV7612 dual HDMI input decoder

2015-06-12 Thread Hans Verkuil
On 06/03/2015 03:59 PM, William Towle wrote:
 From: Ian Molton ian.mol...@codethink.co.uk
 
 This documentation accompanies the patch adding support for the ADV7612
 dual HDMI decoder / repeater chip.
 
 Signed-off-by: Ian Molton ian.mol...@codethink.co.uk
 Reviewed-by: William Towle william.to...@codethink.co.uk

Acked-by: Hans Verkuil hans.verk...@cisco.com

 ---
  .../devicetree/bindings/media/i2c/adv7604.txt|   18 
 ++
  1 file changed, 10 insertions(+), 8 deletions(-)
 
 diff --git a/Documentation/devicetree/bindings/media/i2c/adv7604.txt 
 b/Documentation/devicetree/bindings/media/i2c/adv7604.txt
 index c27cede..7eafdbc 100644
 --- a/Documentation/devicetree/bindings/media/i2c/adv7604.txt
 +++ b/Documentation/devicetree/bindings/media/i2c/adv7604.txt
 @@ -1,15 +1,17 @@
 -* Analog Devices ADV7604/11 video decoder with HDMI receiver
 +* Analog Devices ADV7604/11/12 video decoder with HDMI receiver
  
 -The ADV7604 and ADV7611 are multiformat video decoders with an integrated 
 HDMI
 -receiver. The ADV7604 has four multiplexed HDMI inputs and one analog input,
 -and the ADV7611 has one HDMI input and no analog input.
 +The ADV7604 and ADV7611/12 are multiformat video decoders with an integrated
 +HDMI receiver. The ADV7604 has four multiplexed HDMI inputs and one analog
 +input, and the ADV7611 has one HDMI input and no analog input. The 7612 is
 +similar to the 7611 but has 2 HDMI inputs.
  
 -These device tree bindings support the ADV7611 only at the moment.
 +These device tree bindings support the ADV7611/12 only at the moment.
  
  Required Properties:
  
- compatible: Must contain one of the following
  - adi,adv7611 for the ADV7611
 +- adi,adv7612 for the ADV7612
  
- reg: I2C slave address
  
 @@ -22,10 +24,10 @@ port, in accordance with the video interface bindings 
 defined in
  Documentation/devicetree/bindings/media/video-interfaces.txt. The port nodes
  are numbered as follows.
  
 -  Port   ADV7611
 +  Port   ADV7611ADV7612
  
 -  HDMI   0
 -  Digital output 1
 +  HDMI   0 0, 1
 +  Digital output 12
  
  The digital output port node must contain at least one endpoint.
  
 

--
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 06/15] media: adv7604: ability to read default input port from DT

2015-06-12 Thread Hans Verkuil
On 06/03/2015 03:59 PM, William Towle wrote:
 From: Ian Molton ian.mol...@codethink.co.uk
 
 Adds support to the adv7604 driver for specifying the default input
 port in the Device tree. If no value is provided, the driver will be
 unable to select an input without help from userspace.
 
 Tested-by: William Towle william.to...@codethink.co.uk
 Signed-off-by: Ian Molton ian.mol...@codethink.co.uk

Acked-by: Hans Verkuil hans.verk...@cisco.com

 ---
  Documentation/devicetree/bindings/media/i2c/adv7604.txt |3 +++
  drivers/media/i2c/adv7604.c |8 +++-
  2 files changed, 10 insertions(+), 1 deletion(-)
 
 diff --git a/Documentation/devicetree/bindings/media/i2c/adv7604.txt 
 b/Documentation/devicetree/bindings/media/i2c/adv7604.txt
 index 7eafdbc..8337f75 100644
 --- a/Documentation/devicetree/bindings/media/i2c/adv7604.txt
 +++ b/Documentation/devicetree/bindings/media/i2c/adv7604.txt
 @@ -47,6 +47,7 @@ Optional Endpoint Properties:
If none of hsync-active, vsync-active and pclk-sample is specified the
endpoint will use embedded BT.656 synchronization.
  
 +  - default-input: Select which input is selected after reset.
  
  Example:
  
 @@ -60,6 +61,8 @@ Example:
   #address-cells = 1;
   #size-cells = 0;
  
 + default-input = 0;
 +
   port@0 {
   reg = 0;
   };
 diff --git a/drivers/media/i2c/adv7604.c b/drivers/media/i2c/adv7604.c
 index 16646517..5b6ac8e 100644
 --- a/drivers/media/i2c/adv7604.c
 +++ b/drivers/media/i2c/adv7604.c
 @@ -2745,6 +2745,7 @@ static int adv76xx_parse_dt(struct adv76xx_state *state)
   struct device_node *endpoint;
   struct device_node *np;
   unsigned int flags;
 + u32 v;
  
   np = state-i2c_clients[ADV76XX_PAGE_IO]-dev.of_node;
  
 @@ -2754,6 +2755,12 @@ static int adv76xx_parse_dt(struct adv76xx_state 
 *state)
   return -EINVAL;
  
   v4l2_of_parse_endpoint(endpoint, bus_cfg);
 +
 + if (!of_property_read_u32(endpoint, default-input, v))
 + state-pdata.default_input = v;
 + else
 + state-pdata.default_input = -1;
 +
   of_node_put(endpoint);
  
   flags = bus_cfg.bus.parallel.flags;
 @@ -2792,7 +2799,6 @@ static int adv76xx_parse_dt(struct adv76xx_state *state)
   /* Hardcode the remaining platform data fields. */
   state-pdata.disable_pwrdnb = 0;
   state-pdata.disable_cable_det_rst = 0;
 - state-pdata.default_input = -1;
   state-pdata.blank_data = 1;
   state-pdata.alt_data_sat = 1;
   state-pdata.op_format_mode_sel = ADV7604_OP_FORMAT_MODE0;
 

--
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 v1.3 1/5] v4l: async: Add a pointer to of_node to struct v4l2_subdev, match it

2015-06-12 Thread Sakari Ailus
On Thu, Jun 11, 2015 at 10:27:30PM +0300, Laurent Pinchart wrote:
 Hi Sakari,
 
 Thank you for the patch.
 
 On Thursday 11 June 2015 22:18:01 Sakari Ailus wrote:
  V4L2 async sub-devices are currently matched (OF case) based on the struct
  device_node pointer in struct device. LED devices may have more than one
  LED, and in that case the OF node to match is not directly the device's
  node, but a LED's node.
  
  Signed-off-by: Laurent Pinchart laurent.pinch...@ideasonboard.com
  Signed-off-by: Sakari Ailus sakari.ai...@iki.fi
 
 Acked-by: Laurent Pinchart laurent.pinch...@ideasonboard.com

Bryan, could you apply the patch to your tree? It's required by Jacek's
patchset you attempted to apply a few days back.

Thanks!

-- 
Kind regards,

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


Re: [PATCH 15/15] media: rcar_vin: Reject videobufs that are too small for current format

2015-06-12 Thread Hans Verkuil
On 06/03/2015 04:00 PM, William Towle wrote:
 From: Rob Taylor rob.tay...@codethink.co.uk
 
 In videobuf_setup reject buffers that are too small for the configured
 format. Fixes v4l2-complience issue.
 
 Signed-off-by: Rob Taylor rob.tay...@codethink.co.uk
 Reviewed-by: William Towle william.to...@codethink.co.uk

Acked-by: Hans Verkuil hans.verk...@cisco.com

Thanks,

Hans

 ---
  drivers/media/platform/soc_camera/rcar_vin.c |3 +++
  1 file changed, 3 insertions(+)
 
 diff --git a/drivers/media/platform/soc_camera/rcar_vin.c 
 b/drivers/media/platform/soc_camera/rcar_vin.c
 index cc993bc..1531a76 100644
 --- a/drivers/media/platform/soc_camera/rcar_vin.c
 +++ b/drivers/media/platform/soc_camera/rcar_vin.c
 @@ -541,6 +541,9 @@ static int rcar_vin_videobuf_setup(struct vb2_queue *vq,
   unsigned int bytes_per_line;
   int ret;
  
 + if (fmt-fmt.pix.sizeimage  icd-sizeimage)
 + return -EINVAL;
 +
   xlate = soc_camera_xlate_by_fourcc(icd,
  fmt-fmt.pix.pixelformat);
   if (!xlate)
 

--
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 2/9] [media] media: omap_vout: Convert omap_vout_uservirt_to_phys() to use get_vaddr_pfns()

2015-06-12 Thread Tomi Valkeinen


On 11/06/15 07:21, Laurent Pinchart wrote:
 Hello,
 
 (CC'ing Tomi Valkeinen)
 
 On Wednesday 10 June 2015 06:20:45 Mauro Carvalho Chehab wrote:
 From: Jan Kara j...@suse.cz

 Convert omap_vout_uservirt_to_phys() to use get_vaddr_pfns() instead of
 hand made mapping of virtual address to physical address. Also the
 function leaked page reference from get_user_pages() so fix that by
 properly release the reference when omap_vout_buffer_release() is
 called.

 Signed-off-by: Jan Kara j...@suse.cz
 Signed-off-by: Hans Verkuil hans.verk...@cisco.com
 [hans.verk...@cisco.com: remove unused struct omap_vout_device *vout
 variable]

 Signed-off-by: Mauro Carvalho Chehab mche...@osg.samsung.com

 diff --git a/drivers/media/platform/omap/omap_vout.c
 b/drivers/media/platform/omap/omap_vout.c index f09c5f17a42f..7feb6394f111
 100644
 --- a/drivers/media/platform/omap/omap_vout.c
 +++ b/drivers/media/platform/omap/omap_vout.c
 @@ -195,46 +195,34 @@ static int omap_vout_try_format(struct v4l2_pix_format
 *pix) }

  /*
 - * omap_vout_uservirt_to_phys: This inline function is used to convert user
 - * space virtual address to physical address.
 + * omap_vout_get_userptr: Convert user space virtual address to physical
 + * address.
   */
 -static unsigned long omap_vout_uservirt_to_phys(unsigned long virtp)
 +static int omap_vout_get_userptr(struct videobuf_buffer *vb, u32 virtp,
 + u32 *physp)
  {
 -unsigned long physp = 0;
 -struct vm_area_struct *vma;
 -struct mm_struct *mm = current-mm;
 +struct frame_vector *vec;
 +int ret;

  /* For kernel direct-mapped memory, take the easy way */
 -if (virtp = PAGE_OFFSET)
 -return virt_to_phys((void *) virtp);
 -
 -down_read(current-mm-mmap_sem);
 -vma = find_vma(mm, virtp);
 -if (vma  (vma-vm_flags  VM_IO)  vma-vm_pgoff) {
 -/* this will catch, kernel-allocated, mmaped-to-usermode
 -   addresses */
 -physp = (vma-vm_pgoff  PAGE_SHIFT) + (virtp - vma-vm_start);
 -up_read(current-mm-mmap_sem);
 -} else {
 -/* otherwise, use get_user_pages() for general userland pages */
 -int res, nr_pages = 1;
 -struct page *pages;
 +if (virtp = PAGE_OFFSET) {
 +*physp = virt_to_phys((void *)virtp);
 
 Lovely. virtp comes from userspace and as far as I know it arrives here 
 completely unchecked. The problem isn't introduced by this patch, but 
 omap_vout buffer management seems completely broken to me, and nobody seems 
 to 
 care about the driver. Given that omapdrm should now provide the video output 
 capabilities that are missing from omapfb and resulted in the development of 
 omap_vout, shouldn't we drop the omap_vout driver ?
 
 Tomi, any opinion on this ? Do you see any omap_vout capability missing from 
 omapdrm ?

I've never used omap_vout, so I don't even know what it offers. I do
know it supports VRFB rotation (omap3), which we don't have on omapdrm,
though. Whether anyone uses that (or omap_vout), I have no idea...

I'd personally love to get rid of omap_vout, as it causes complications
on omapfb/omapdss side.

 Tomi



signature.asc
Description: OpenPGP digital signature


Re: [PATCH 14/15] media: soc_camera: fill in bus_info field

2015-06-12 Thread Hans Verkuil
On 06/03/2015 04:00 PM, William Towle wrote:
 From: Rob Taylor rob.tay...@codethink.co.uk
 
 Adapt soc_camera_querycap() so that cap-bus_info is populated in
 addition to cap-driver.
 
 Signed-off-by: Rob Taylor rob.tay...@codethink.co.uk
 Reviewed-by: William Towle william.to...@codethink.co.uk
 ---
  drivers/media/platform/soc_camera/soc_camera.c |1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/drivers/media/platform/soc_camera/soc_camera.c 
 b/drivers/media/platform/soc_camera/soc_camera.c
 index 4e59833..675cfc4 100644
 --- a/drivers/media/platform/soc_camera/soc_camera.c
 +++ b/drivers/media/platform/soc_camera/soc_camera.c
 @@ -954,6 +954,7 @@ static int soc_camera_querycap(struct file *file, void  
 *priv,
   WARN_ON(priv != file-private_data);
  
   strlcpy(cap-driver, ici-drv_name, sizeof(cap-driver));
 + strlcpy(cap-bus_info, platform:soc_camera, sizeof(cap-bus_info));

Sorry, but this is the wrong place. This should be done in rcar_vin_querycap.

If you have multiple soc_camera instances, then the bus_info should be unique
for each. And that's obviously not the case if it's done here.

The rcar driver will know, however.

Regards,

Hans

   return ici-ops-querycap(ici, cap);
  }
  
 

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


Re: [PATCH] media/v4l2-ctrls: Code cleanout validate_new()

2015-06-12 Thread Hans Verkuil
On 06/10/2015 03:38 PM, Ricardo Ribalda Delgado wrote:
 We can simplify the code removing the if().
 
 v4l2_ctr_new sets ctrls-elems to 1 when !ctrl-is_ptr.
 
 Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com

Acked-by: Hans Verkuil hans.verk...@cisco.com

Thanks!

Hans

 ---
  drivers/media/v4l2-core/v4l2-ctrls.c | 15 ---
  1 file changed, 15 deletions(-)
 
 diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c 
 b/drivers/media/v4l2-core/v4l2-ctrls.c
 index e3a3468002e6..b6b7dcc1b77d 100644
 --- a/drivers/media/v4l2-core/v4l2-ctrls.c
 +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
 @@ -1678,21 +1678,6 @@ static int validate_new(const struct v4l2_ctrl *ctrl, 
 union v4l2_ctrl_ptr p_new)
   unsigned idx;
   int err = 0;
  
 - if (!ctrl-is_ptr) {
 - switch (ctrl-type) {
 - case V4L2_CTRL_TYPE_INTEGER:
 - case V4L2_CTRL_TYPE_INTEGER_MENU:
 - case V4L2_CTRL_TYPE_MENU:
 - case V4L2_CTRL_TYPE_BITMASK:
 - case V4L2_CTRL_TYPE_BOOLEAN:
 - case V4L2_CTRL_TYPE_BUTTON:
 - case V4L2_CTRL_TYPE_CTRL_CLASS:
 - case V4L2_CTRL_TYPE_INTEGER64:
 - return ctrl-type_ops-validate(ctrl, 0, p_new);
 - default:
 - break;
 - }
 - }
   for (idx = 0; !err  idx  ctrl-elems; idx++)
   err = ctrl-type_ops-validate(ctrl, idx, p_new);
   return err;
 

--
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] v4l2-dv-timings: log if the timing is reduced blanking V2

2015-06-12 Thread Hans Verkuil
The last CVT standard introduced reduced blanking version 2 which is signaled by
a vsync of 8. Log this.

Signed-off-by: Hans Verkuil hans.verk...@cisco.com

diff --git a/drivers/media/v4l2-core/v4l2-dv-timings.c 
b/drivers/media/v4l2-core/v4l2-dv-timings.c
index eefad4f..5d9e896 100644
--- a/drivers/media/v4l2-core/v4l2-dv-timings.c
+++ b/drivers/media/v4l2-core/v4l2-dv-timings.c
@@ -290,9 +290,11 @@ void v4l2_print_dv_timings(const char *dev_prefix, const 
char *prefix,
(bt-polarities  V4L2_DV_VSYNC_POS_POL) ? + : -,
bt-il_vsync, bt-il_vbackporch);
pr_info(%s: pixelclock: %llu\n, dev_prefix, bt-pixelclock);
-   pr_info(%s: flags (0x%x):%s%s%s%s%s\n, dev_prefix, bt-flags,
+   pr_info(%s: flags (0x%x):%s%s%s%s%s%s\n, dev_prefix, bt-flags,
(bt-flags  V4L2_DV_FL_REDUCED_BLANKING) ?
 REDUCED_BLANKING : ,
+   ((bt-flags  V4L2_DV_FL_REDUCED_BLANKING) 
+bt-vsync == 8) ?  (V2) : ,
(bt-flags  V4L2_DV_FL_CAN_REDUCE_FPS) ?
 CAN_REDUCE_FPS : ,
(bt-flags  V4L2_DV_FL_REDUCED_FPS) ?
--
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: [Xen-devel] RIP MTRR - status update for upcoming v4.2

2015-06-12 Thread Jan Beulich
 On 12.06.15 at 01:23, toshi.k...@hp.com wrote:
 There are two usages on MTRRs:
  1) MTRR entries set by firmware
  2) MTRR entries set by OS drivers
 
 We can obsolete 2), but we have no control over 1).  As UEFI firmwares
 also set this up, this usage will continue to stay.  So, we should not
 get rid of the MTRR code that looks up the MTRR entries, while we have
 no need to modify them.
 
 Such MTRR entries provide safe guard to /dev/mem, which allows
 privileged user to access a range that may require UC mapping while
 the /dev/mem driver blindly maps it with WB.  MTRRs converts WB to UC in
 such a case.

But it wouldn't be impossible to simply read the MTRRs upon boot,
store the information, disable MTRRs, and correctly use PAT to
achieve the same effect (i.e. the blindly maps part of course
would need fixing).

 UEFI memory table has memory attribute, which describes cache types
 supported in physical memory ranges.  However, this information gets
 lost when it it is converted to e820 table.

I'm afraid you rather don't want to trust that information, as
firmware vendors frequently screw it up.

Jan

--
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] media: New ioct VIDIOC_INITIAL_EXT_CTRLS

2015-06-12 Thread Hans Verkuil
Hi Ricardo!

On 06/10/2015 01:17 PM, Ricardo Ribalda Delgado wrote:
 Integer controls provide a way to get their default/initial value, but
 any other control (p_u32, p_u8.) provide no other way to get the
 initial value than unloading the module and loading it back.
 
 *What is the actual problem?
 I have a custom control with WIDTH integer values. Every value
 represents the calibrated FPN (fixed pattern noise) correction value for that 
 column
 -Application A changes the FPN correction value
 -Application B wants to restore the calibrated value but it cant :(
 
 *What is the proposed solution?
 -Add a new ioctl VIDIOC_INITIAL_EXT_CTRLS, with the same API as
 G_EXT_CTRLS, but that returns the initial value of a given control
 
 *This code is not splited in different patches and there is no doc!
 Yes, at this point I want your feedback about the ioctl, and an initial
 piece of code could help the disscussion. Of course, once we agreed I
 will provide the documentation and a properly build patchset.
 
 So, shoot me: What do you think?

Thanks for this RFC. I do have a few suggestions to improve this, but I agree
with the basic design.

 
 THANKS!
 
 Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
 ---
  drivers/media/v4l2-core/v4l2-compat-ioctl32.c |  4 ++
  drivers/media/v4l2-core/v4l2-ctrls.c  | 65 
 ---
  drivers/media/v4l2-core/v4l2-ioctl.c  | 20 +
  drivers/media/v4l2-core/v4l2-subdev.c |  3 ++
  include/media/v4l2-ctrls.h|  2 +
  include/media/v4l2-ioctl.h|  2 +
  include/uapi/linux/videodev2.h|  4 +-
  7 files changed, 92 insertions(+), 8 deletions(-)
 
 diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c 
 b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
 index af635430524e..1e3272e28b2d 100644
 --- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
 +++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
 @@ -817,6 +817,7 @@ static int put_v4l2_edid32(struct v4l2_edid *kp, struct 
 v4l2_edid32 __user *up)
  #define  VIDIOC_DQEVENT32_IOR ('V', 89, struct v4l2_event32)
  #define VIDIOC_CREATE_BUFS32 _IOWR('V', 92, struct v4l2_create_buffers32)
  #define VIDIOC_PREPARE_BUF32 _IOWR('V', 93, struct v4l2_buffer32)
 +#define VIDIOC_INITIAL_EXT_CTRLS32_IOWR('V', 104, struct 
 v4l2_ext_controls32)
  
  #define VIDIOC_OVERLAY32 _IOW ('V', 14, s32)
  #define VIDIOC_STREAMON32_IOW ('V', 18, s32)
 @@ -859,6 +860,7 @@ static long do_video_ioctl(struct file *file, unsigned 
 int cmd, unsigned long ar
   case VIDIOC_TRY_FMT32: cmd = VIDIOC_TRY_FMT; break;
   case VIDIOC_G_EXT_CTRLS32: cmd = VIDIOC_G_EXT_CTRLS; break;
   case VIDIOC_S_EXT_CTRLS32: cmd = VIDIOC_S_EXT_CTRLS; break;
 + case VIDIOC_INITIAL_EXT_CTRLS32: cmd = VIDIOC_INITIAL_EXT_CTRLS; break;
   case VIDIOC_TRY_EXT_CTRLS32: cmd = VIDIOC_TRY_EXT_CTRLS; break;
   case VIDIOC_DQEVENT32: cmd = VIDIOC_DQEVENT; break;
   case VIDIOC_OVERLAY32: cmd = VIDIOC_OVERLAY; break;
 @@ -937,6 +939,7 @@ static long do_video_ioctl(struct file *file, unsigned 
 int cmd, unsigned long ar
   case VIDIOC_G_EXT_CTRLS:
   case VIDIOC_S_EXT_CTRLS:
   case VIDIOC_TRY_EXT_CTRLS:
 + case VIDIOC_INITIAL_EXT_CTRLS:
   err = get_v4l2_ext_controls32(karg.v2ecs, up);
   compatible_arg = 0;
   break;
 @@ -964,6 +967,7 @@ static long do_video_ioctl(struct file *file, unsigned 
 int cmd, unsigned long ar
   case VIDIOC_G_EXT_CTRLS:
   case VIDIOC_S_EXT_CTRLS:
   case VIDIOC_TRY_EXT_CTRLS:
 + case VIDIOC_INITIAL_EXT_CTRLS:

I'd call it VIDIOC_G_DEF_EXT_CTRLS. Since the default value is called 
default_value in QUERYCTRL,
I think it is more consistent to refer to the default value rather than the 
initial value.
And _G_ shows that you get this value.

   if (put_v4l2_ext_controls32(karg.v2ecs, up))
   err = -EFAULT;
   break;
 diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c 
 b/drivers/media/v4l2-core/v4l2-ctrls.c
 index b462165a7f0c..465f73acc644 100644
 --- a/drivers/media/v4l2-core/v4l2-ctrls.c
 +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
 @@ -1449,6 +1449,40 @@ static const struct v4l2_ctrl_type_ops std_type_ops = {
   .validate = std_validate,
  };
  
 +/* Helper function: copy the initial value back to the caller */
 +static int init_to_user(struct v4l2_ext_control *c, struct v4l2_ctrl *ctrl)
 +{
 + int idx;
 + int ret;
 + long size;
 + union v4l2_ctrl_ptr ptr;
 +
 + if (!ctrl-is_ptr){

Space before {

 + ptr.p = c-value;
 + ctrl-type_ops-init(ctrl, 0, ptr);
 + return 0;
 + }
 +
 + size = ctrl-elem_size * ctrl-elems;
 + if (c-size  size){

Ditto

 + c-size = size;
 + return -ENOSPC;
 + }
 +
 + ptr.p = kzalloc(size, GFP_KERNEL);
 + if (!ptr.p)
 + return -ENOMEM;
 +
 + 

Re: [PATCH 09/15] media: soc_camera pad-aware driver initialisation

2015-06-12 Thread Hans Verkuil
On 06/03/2015 03:59 PM, William Towle wrote:
 Add detection of source pad number for drivers aware of the media
 controller API, so that the combination of soc_camera and rcar_vin
 can create device nodes to support modern drivers such as adv7604.c
 (for HDMI on Lager) and the converted adv7180.c (for composite)
 underneath.
 
 Building rcar_vin gains a dependency on CONFIG_MEDIA_CONTROLLER, in
 line with requirements for building the drivers associated with it.
 
 Signed-off-by: William Towle william.to...@codethink.co.uk
 Signed-off-by: Rob Taylor rob.tay...@codethink.co.uk
 ---
  drivers/media/platform/soc_camera/Kconfig  |1 +
  drivers/media/platform/soc_camera/rcar_vin.c   |1 +
  drivers/media/platform/soc_camera/soc_camera.c |   46 
 
  include/media/soc_camera.h |1 +
  4 files changed, 49 insertions(+)
 
 diff --git a/drivers/media/platform/soc_camera/Kconfig 
 b/drivers/media/platform/soc_camera/Kconfig
 index f2776cd..5c45c83 100644
 --- a/drivers/media/platform/soc_camera/Kconfig
 +++ b/drivers/media/platform/soc_camera/Kconfig
 @@ -38,6 +38,7 @@ config VIDEO_RCAR_VIN
   depends on VIDEO_DEV  SOC_CAMERA
   depends on ARCH_SHMOBILE || COMPILE_TEST
   depends on HAS_DMA
 + depends on MEDIA_CONTROLLER
   select VIDEOBUF2_DMA_CONTIG
   select SOC_CAMERA_SCALE_CROP
   ---help---
 diff --git a/drivers/media/platform/soc_camera/rcar_vin.c 
 b/drivers/media/platform/soc_camera/rcar_vin.c
 index 16352a8..00c1034 100644
 --- a/drivers/media/platform/soc_camera/rcar_vin.c
 +++ b/drivers/media/platform/soc_camera/rcar_vin.c
 @@ -1359,6 +1359,7 @@ static int rcar_vin_get_formats(struct 
 soc_camera_device *icd, unsigned int idx,
   struct device *dev = icd-parent;
   int shift;
  
 + fmt.pad = icd-src_pad_idx;
   ret = v4l2_subdev_call(sd, pad, get_fmt, NULL, fmt);
   if (ret  0)
   return ret;
 diff --git a/drivers/media/platform/soc_camera/soc_camera.c 
 b/drivers/media/platform/soc_camera/soc_camera.c
 index d708df4..c4952c8 100644
 --- a/drivers/media/platform/soc_camera/soc_camera.c
 +++ b/drivers/media/platform/soc_camera/soc_camera.c
 @@ -1293,6 +1293,9 @@ static int soc_camera_probe_finish(struct 
 soc_camera_device *icd)
   .which = V4L2_SUBDEV_FORMAT_ACTIVE,
   };
   struct v4l2_mbus_framefmt *mf = fmt.format;
 +#if defined(CONFIG_MEDIA_CONTROLLER)
 + struct media_pad pad;
 +#endif
   int ret;
  
   sd-grp_id = soc_camera_grp_id(icd);
 @@ -1310,8 +1313,40 @@ static int soc_camera_probe_finish(struct 
 soc_camera_device *icd)
   return ret;
   }
  
 + icd-src_pad_idx = -1;

If CONFIG_MEDIA_CONTROLLER is not defined, then I would expect that src_pad_idx 
should
be 0, not -1.

 +#if defined(CONFIG_MEDIA_CONTROLLER)
   /* At this point client .probe() should have run already */
 + ret = media_entity_init(icd-vdev-entity, 1, pad, 0);
 + if (ret  0) {
 + goto eusrfmt;
 + } else {
 + int pad_idx;
 +
 + for (pad_idx = 0; pad_idx  sd-entity.num_pads; pad_idx++)
 + if (sd-entity.pads[pad_idx].flags
 + == MEDIA_PAD_FL_SOURCE)
 + break;
 + if (pad_idx = sd-entity.num_pads)
 + goto eusrfmt;
 +
 + ret = media_entity_create_link(icd-vdev-entity, 0,
 + sd-entity, pad_idx,
 + MEDIA_LNK_FL_IMMUTABLE |
 + MEDIA_LNK_FL_ENABLED);

Why would you want to create a link and set up the vdev entity?

All you need to do here is to find the sd source pad and store it in
sd-src_pad_idx.

You are not registering a media device here, so there is no need to
do anything more. I'd drop all that code.

 + if (ret  0)
 + goto eusrfmt;
 +
 + icd-src_pad_idx = pad_idx;
 + ret = soc_camera_init_user_formats(icd);
 + if (ret  0) {
 + icd-src_pad_idx = -1;
 + goto eusrfmt;
 + }
 + }
 +#else
   ret = soc_camera_init_user_formats(icd);
 +#endif
 +
   if (ret  0)
   goto eusrfmt;
  
 @@ -1322,6 +1357,9 @@ static int soc_camera_probe_finish(struct 
 soc_camera_device *icd)
   goto evidstart;
  
   /* Try to improve our guess of a reasonable window format */
 +#if defined(CONFIG_MEDIA_CONTROLLER)
 + fmt.pad = icd-src_pad_idx;
 +#endif

If src_pad_idx is 0 if CONFIG_MEDIA_CONTROLLER is undefined, then you don't 
need the
#if defined() here.

Regards,

Hans

   if (!v4l2_subdev_call(sd, pad, get_fmt, NULL, fmt)) {
   icd-user_width = mf-width;
   icd-user_height= mf-height;
 @@ -1335,6 +1373,9 @@ static int 

Re: [PATCH 2/9] [media] media: omap_vout: Convert omap_vout_uservirt_to_phys() to use get_vaddr_pfns()

2015-06-12 Thread Laurent Pinchart
Hi Tomi,

On Friday 12 June 2015 12:21:13 Tomi Valkeinen wrote:
 On 11/06/15 07:21, Laurent Pinchart wrote:
  On Wednesday 10 June 2015 06:20:45 Mauro Carvalho Chehab wrote:
  From: Jan Kara j...@suse.cz
  
  Convert omap_vout_uservirt_to_phys() to use get_vaddr_pfns() instead of
  hand made mapping of virtual address to physical address. Also the
  function leaked page reference from get_user_pages() so fix that by
  properly release the reference when omap_vout_buffer_release() is
  called.
  
  Signed-off-by: Jan Kara j...@suse.cz
  Signed-off-by: Hans Verkuil hans.verk...@cisco.com
  [hans.verk...@cisco.com: remove unused struct omap_vout_device *vout
  variable]
  
  Signed-off-by: Mauro Carvalho Chehab mche...@osg.samsung.com
  
  diff --git a/drivers/media/platform/omap/omap_vout.c
  b/drivers/media/platform/omap/omap_vout.c index
  f09c5f17a42f..7feb6394f111
  100644
  --- a/drivers/media/platform/omap/omap_vout.c
  +++ b/drivers/media/platform/omap/omap_vout.c
  @@ -195,46 +195,34 @@ static int omap_vout_try_format(struct
  v4l2_pix_format *pix) }
  
   /*
  
  - * omap_vout_uservirt_to_phys: This inline function is used to convert
  user - * space virtual address to physical address.
  + * omap_vout_get_userptr: Convert user space virtual address to physical
  + * address.
  
*/
  
  -static unsigned long omap_vout_uservirt_to_phys(unsigned long virtp)
  +static int omap_vout_get_userptr(struct videobuf_buffer *vb, u32 virtp,
  +   u32 *physp)
  
   {
  
  -  unsigned long physp = 0;
  -  struct vm_area_struct *vma;
  -  struct mm_struct *mm = current-mm;
  +  struct frame_vector *vec;
  +  int ret;
  
 /* For kernel direct-mapped memory, take the easy way */
  
  -  if (virtp = PAGE_OFFSET)
  -  return virt_to_phys((void *) virtp);
  -
  -  down_read(current-mm-mmap_sem);
  -  vma = find_vma(mm, virtp);
  -  if (vma  (vma-vm_flags  VM_IO)  vma-vm_pgoff) {
  -  /* this will catch, kernel-allocated, mmaped-to-usermode
  - addresses */
  -  physp = (vma-vm_pgoff  PAGE_SHIFT) + (virtp - vma-vm_start);
  -  up_read(current-mm-mmap_sem);
  -  } else {
  -  /* otherwise, use get_user_pages() for general userland pages */
  -  int res, nr_pages = 1;
  -  struct page *pages;
  +  if (virtp = PAGE_OFFSET) {
  +  *physp = virt_to_phys((void *)virtp);
  
  Lovely. virtp comes from userspace and as far as I know it arrives here
  completely unchecked. The problem isn't introduced by this patch, but
  omap_vout buffer management seems completely broken to me, and nobody
  seems to care about the driver. Given that omapdrm should now provide the
  video output capabilities that are missing from omapfb and resulted in
  the development of omap_vout, shouldn't we drop the omap_vout driver ?
  
  Tomi, any opinion on this ? Do you see any omap_vout capability missing
  from omapdrm ?
 
 I've never used omap_vout, so I don't even know what it offers. I do
 know it supports VRFB rotation (omap3), which we don't have on omapdrm,
 though. Whether anyone uses that (or omap_vout), I have no idea...
 
 I'd personally love to get rid of omap_vout, as it causes complications
 on omapfb/omapdss side.

How difficult would it be to implement VRFB rotation in omapdrm ?

-- 
Regards,

Laurent Pinchart


signature.asc
Description: This is a digitally signed message part.


[PATCH] v4l2-dv-timings: print refresh rate with better precision

2015-06-12 Thread Prashant Laddha
In many cases, refresh rate is not exact integer. In such cases,
fraction was lost and it used to print, say, 59 in case of 59.94.
Now, capturing the fraction up to 2 decimal places.

Cc: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Prashant Laddha prlad...@cisco.com
---
 drivers/media/v4l2-core/v4l2-dv-timings.c | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/media/v4l2-core/v4l2-dv-timings.c 
b/drivers/media/v4l2-core/v4l2-dv-timings.c
index 1e08eee..21f3480 100644
--- a/drivers/media/v4l2-core/v4l2-dv-timings.c
+++ b/drivers/media/v4l2-core/v4l2-dv-timings.c
@@ -256,6 +256,7 @@ void v4l2_print_dv_timings(const char *dev_prefix, const 
char *prefix,
 {
const struct v4l2_bt_timings *bt = t-bt;
u32 htot, vtot;
+   u32 fps;
 
if (t-type != V4L2_DV_BT_656_1120)
return;
@@ -265,13 +266,15 @@ void v4l2_print_dv_timings(const char *dev_prefix, const 
char *prefix,
if (bt-interlaced)
vtot /= 2;
 
+   fps = (htot * vtot)  0 ? div_u64((100 * (u64)bt-pixelclock),
+ (htot * vtot)) : 0;
+
if (prefix == NULL)
prefix = ;
 
-   pr_info(%s: %s%ux%u%s%u (%ux%u)\n, dev_prefix, prefix,
+   pr_info(%s: %s%ux%u%s%u.%u (%ux%u)\n, dev_prefix, prefix,
bt-width, bt-height, bt-interlaced ? i : p,
-   (htot * vtot)  0 ? ((u32)bt-pixelclock / (htot * vtot)) : 0,
-   htot, vtot);
+   fps / 100, fps % 100, htot, vtot);
 
if (!detailed)
return;
-- 
1.9.1

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


[RFC v2 02/27] media/v4l2-core: add new ioctl VIDIOC_G_DEF_EXT_CTRLS

2015-06-12 Thread Ricardo Ribalda Delgado
This ioctl returns the default value of one or more extended controls.
It has the same interface as VIDIOC_EXT_CTRLS.

It is needed due to the fact that QUERYCTRL was not enough to
provide the initial value of pointer type controls.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/v4l2-core/v4l2-compat-ioctl32.c |  4 
 drivers/media/v4l2-core/v4l2-ioctl.c  | 21 +
 drivers/media/v4l2-core/v4l2-subdev.c |  3 +++
 include/media/v4l2-ioctl.h|  2 ++
 include/uapi/linux/videodev2.h|  1 +
 5 files changed, 31 insertions(+)

diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c 
b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
index af635430524e..b7ab852b642f 100644
--- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
+++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
@@ -817,6 +817,7 @@ static int put_v4l2_edid32(struct v4l2_edid *kp, struct 
v4l2_edid32 __user *up)
 #defineVIDIOC_DQEVENT32_IOR ('V', 89, struct v4l2_event32)
 #define VIDIOC_CREATE_BUFS32   _IOWR('V', 92, struct v4l2_create_buffers32)
 #define VIDIOC_PREPARE_BUF32   _IOWR('V', 93, struct v4l2_buffer32)
+#define VIDIOC_G_DEF_EXT_CTRLS32 _IOWR('V', 104, struct v4l2_ext_controls32)
 
 #define VIDIOC_OVERLAY32   _IOW ('V', 14, s32)
 #define VIDIOC_STREAMON32  _IOW ('V', 18, s32)
@@ -858,6 +859,7 @@ static long do_video_ioctl(struct file *file, unsigned int 
cmd, unsigned long ar
case VIDIOC_ENUMINPUT32: cmd = VIDIOC_ENUMINPUT; break;
case VIDIOC_TRY_FMT32: cmd = VIDIOC_TRY_FMT; break;
case VIDIOC_G_EXT_CTRLS32: cmd = VIDIOC_G_EXT_CTRLS; break;
+   case VIDIOC_G_DEF_EXT_CTRLS32: cmd = VIDIOC_G_DEF_EXT_CTRLS; break;
case VIDIOC_S_EXT_CTRLS32: cmd = VIDIOC_S_EXT_CTRLS; break;
case VIDIOC_TRY_EXT_CTRLS32: cmd = VIDIOC_TRY_EXT_CTRLS; break;
case VIDIOC_DQEVENT32: cmd = VIDIOC_DQEVENT; break;
@@ -935,6 +937,7 @@ static long do_video_ioctl(struct file *file, unsigned int 
cmd, unsigned long ar
break;
 
case VIDIOC_G_EXT_CTRLS:
+   case VIDIOC_G_DEF_EXT_CTRLS:
case VIDIOC_S_EXT_CTRLS:
case VIDIOC_TRY_EXT_CTRLS:
err = get_v4l2_ext_controls32(karg.v2ecs, up);
@@ -962,6 +965,7 @@ static long do_video_ioctl(struct file *file, unsigned int 
cmd, unsigned long ar
   contain information on which control failed. */
switch (cmd) {
case VIDIOC_G_EXT_CTRLS:
+   case VIDIOC_G_DEF_EXT_CTRLS:
case VIDIOC_S_EXT_CTRLS:
case VIDIOC_TRY_EXT_CTRLS:
if (put_v4l2_ext_controls32(karg.v2ecs, up))
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c 
b/drivers/media/v4l2-core/v4l2-ioctl.c
index a675ccc8f27a..5ed03b8588ec 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1991,6 +1991,25 @@ static int v4l_g_ext_ctrls(const struct v4l2_ioctl_ops 
*ops,
-EINVAL;
 }
 
+static int v4l_g_def_ext_ctrls(const struct v4l2_ioctl_ops *ops,
+   struct file *file, void *fh, void *arg)
+{
+   struct video_device *vfd = video_devdata(file);
+   struct v4l2_ext_controls *p = arg;
+   struct v4l2_fh *vfh =
+   test_bit(V4L2_FL_USES_V4L2_FH, vfd-flags) ? fh : NULL;
+
+   p-error_idx = p-count;
+   if (vfh  vfh-ctrl_handler)
+   return v4l2_g_ext_ctrls(vfh-ctrl_handler, p, true);
+   if (vfd-ctrl_handler)
+   return v4l2_g_ext_ctrls(vfd-ctrl_handler, p, true);
+   if (ops-vidioc_g_def_ext_ctrls == NULL)
+   return -ENOTTY;
+   return check_ext_ctrls(p, 0) ?
+   ops-vidioc_g_def_ext_ctrls(file, fh, p) : -EINVAL;
+}
+
 static int v4l_s_ext_ctrls(const struct v4l2_ioctl_ops *ops,
struct file *file, void *fh, void *arg)
 {
@@ -2435,6 +2454,7 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = {
IOCTL_INFO_FNC(VIDIOC_G_SLICED_VBI_CAP, v4l_g_sliced_vbi_cap, 
v4l_print_sliced_vbi_cap, INFO_FL_CLEAR(v4l2_sliced_vbi_cap, type)),
IOCTL_INFO_FNC(VIDIOC_LOG_STATUS, v4l_log_status, v4l_print_newline, 0),
IOCTL_INFO_FNC(VIDIOC_G_EXT_CTRLS, v4l_g_ext_ctrls, 
v4l_print_ext_controls, INFO_FL_CTRL),
+   IOCTL_INFO_FNC(VIDIOC_G_DEF_EXT_CTRLS, v4l_g_def_ext_ctrls, 
v4l_print_ext_controls, INFO_FL_CTRL),
IOCTL_INFO_FNC(VIDIOC_S_EXT_CTRLS, v4l_s_ext_ctrls, 
v4l_print_ext_controls, INFO_FL_PRIO | INFO_FL_CTRL),
IOCTL_INFO_FNC(VIDIOC_TRY_EXT_CTRLS, v4l_try_ext_ctrls, 
v4l_print_ext_controls, INFO_FL_CTRL),
IOCTL_INFO_STD(VIDIOC_ENUM_FRAMESIZES, vidioc_enum_framesizes, 
v4l_print_frmsizeenum, INFO_FL_CLEAR(v4l2_frmsizeenum, pixel_format)),
@@ -2643,6 +2663,7 @@ static int check_array_args(unsigned int cmd, void *parg, 
size_t *array_size,
 
case VIDIOC_S_EXT_CTRLS:
case VIDIOC_G_EXT_CTRLS:
+   case 

[RFC v2 00/27] New ioct VIDIOC_G_DEF_EXT_CTRLS

2015-06-12 Thread Ricardo Ribalda Delgado
Integer controls provide a way to get their default/initial value, but
any other control (p_u32, p_u8.) provide no other way to get the
initial value than unloading the module and loading it back.

*What is the actual problem?
I have a custom control with WIDTH integer values. Every value
represents the calibrated FPN (fixed pattern noise) correction value for that
column
-Application A changes the FPN correction value
-Application B wants to restore the calibrated value but it cant :(

*What is the proposed solution?
-Add a new ioctl VIDIOC_G_DEF_EXT_CTRLS, with the same API as
G_EXT_CTRLS, but that returns the initial value of a given control.


I have posted a copy of my working tree to

https://github.com/ribalda/linux/tree/g_def_ext

It has been tested with a hacked version of yavta (for normal controls) and a
custom program for the array control.

Changelog v2:
-Add documentation
-Split in multiple patches
-Comments by Hans:
  -Rename ioctl to G_DEF_EXT_CTRL
  -Much! better implementation of def_to_user


THANKS!

Ricardo Ribalda Delgado (27):
  media/v4l2-core: Add argument def_value to g_ext_ctrl
  media/v4l2-core: add new ioctl VIDIOC_G_DEF_EXT_CTRLS
  videodev2.h: Fix typo in comment
  v4l2-subdev: Add g_def_ext_ctrls to core_ops
  media/i2c/adv7343: Implement g_def_ext_ctrls core_op
  media/i2c/adv7393: Implement g_def_ext_ctrls core_op
  media/i2c/bt819: Implement g_def_ext_ctrls core_op
  media/i2c/cs5345: Implement g_def_ext_ctrls core_op
  media/i2c/cs53l32a: Implement g_def_ext_ctrls core_op
  media/i2c/cx25840/cx25840-core: Implement g_def_ext_ctrls core_op
  media/i2c/msp3400-driver: Implement g_def_ext_ctrls core_op
  media/i2c/saa7110: Implement g_def_ext_ctrls core_op
  media/i2c/saa7115: Implement g_def_ext_ctrls core_op
  media/i2c/saa717x: Implement g_def_ext_ctrls core_op
  media/i2c/sr030pc30: Implement g_def_ext_ctrls core_op
  media/i2c/tda7432: Implement g_def_ext_ctrls core_op
  media/i2c/tlv320aic23b: Implement g_def_ext_ctrls core_op
  media/i2c/tvaudio: Implement g_def_ext_ctrls core_op
  media/i2c/tvp514x: Implement g_def_ext_ctrls core_op
  media/i2c/tvp7002: Implement g_def_ext_ctrls core_op
  media/i2c/vpx3220: Implement g_def_ext_ctrls core_op
  media/i2c/wm8739: Implement g_def_ext_ctrls core_op
  media/i2c/wm8775: Implement g_def_ext_ctrls core_op
  media/pci/ivtv/ivtv-gpio: Implement g_def_ext_ctrls core_op
  media/radio/saa7706h: Implement g_def_ext_ctrls core_op
  Docbook: media: new ioctl VIDIOC_G_DEF_EXT_CTRLS
  Documentation: media: Fix code sample

 Documentation/DocBook/media/v4l/v4l2.xml   |  8 ++
 .../DocBook/media/v4l/vidioc-g-ext-ctrls.xml   | 13 ++---
 Documentation/video4linux/v4l2-controls.txt|  4 ++-
 Documentation/video4linux/v4l2-framework.txt   |  1 +
 Documentation/zh_CN/video4linux/v4l2-framework.txt |  1 +
 drivers/media/i2c/adv7343.c|  1 +
 drivers/media/i2c/adv7393.c|  1 +
 drivers/media/i2c/bt819.c  |  1 +
 drivers/media/i2c/cs5345.c |  1 +
 drivers/media/i2c/cs53l32a.c   |  1 +
 drivers/media/i2c/cx25840/cx25840-core.c   |  1 +
 drivers/media/i2c/msp3400-driver.c |  1 +
 drivers/media/i2c/saa7110.c|  1 +
 drivers/media/i2c/saa7115.c|  1 +
 drivers/media/i2c/saa717x.c|  1 +
 drivers/media/i2c/sr030pc30.c  |  1 +
 drivers/media/i2c/tda7432.c|  1 +
 drivers/media/i2c/tlv320aic23b.c   |  1 +
 drivers/media/i2c/tvaudio.c|  1 +
 drivers/media/i2c/tvp514x.c|  1 +
 drivers/media/i2c/tvp7002.c|  1 +
 drivers/media/i2c/vpx3220.c|  1 +
 drivers/media/i2c/wm8739.c |  1 +
 drivers/media/i2c/wm8775.c |  1 +
 drivers/media/pci/ivtv/ivtv-gpio.c |  1 +
 drivers/media/platform/omap3isp/ispvideo.c |  2 +-
 drivers/media/radio/saa7706h.c |  1 +
 drivers/media/v4l2-core/v4l2-compat-ioctl32.c  |  4 +++
 drivers/media/v4l2-core/v4l2-ctrls.c   | 32 ++
 drivers/media/v4l2-core/v4l2-ioctl.c   | 25 +++--
 drivers/media/v4l2-core/v4l2-subdev.c  |  5 +++-
 include/media/v4l2-ctrls.h |  5 +++-
 include/media/v4l2-ioctl.h |  2 ++
 include/media/v4l2-subdev.h|  2 ++
 include/uapi/linux/videodev2.h |  3 +-
 35 files changed, 112 insertions(+), 16 deletions(-)

-- 
2.1.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


[RFC v2 26/27] Docbook: media: new ioctl VIDIOC_G_DEF_EXT_CTRLS

2015-06-12 Thread Ricardo Ribalda Delgado
Add documentation for new ioctl.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 Documentation/DocBook/media/v4l/v4l2.xml   |  8 
 Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml | 13 +
 Documentation/video4linux/v4l2-controls.txt|  3 ++-
 Documentation/video4linux/v4l2-framework.txt   |  1 +
 Documentation/zh_CN/video4linux/v4l2-framework.txt |  1 +
 5 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/v4l2.xml 
b/Documentation/DocBook/media/v4l/v4l2.xml
index e98caa1c39bd..027cf8408382 100644
--- a/Documentation/DocBook/media/v4l/v4l2.xml
+++ b/Documentation/DocBook/media/v4l/v4l2.xml
@@ -153,6 +153,14 @@ structs, ioctls) must be noted in more detail in the 
history chapter
 applications. --
 
   revision
+   revnumber4.2/revnumber
+   date2015-06-12/date
+   authorinitialsrr/authorinitials
+   revremarkExtend vidioc-g-ext-ctrls;. Add ioctl 
constantVIDIOC_G_DEF_EXT_CTRLS/constant
+to get the default value of multiple controls.
+   /revremark
+  /revision
+  revision
revnumber3.21/revnumber
date2015-02-13/date
authorinitialsmcc/authorinitials
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml 
b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
index c5bdbfcc42b3..5f8283a7e288 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
@@ -1,12 +1,13 @@
 refentry id=vidioc-g-ext-ctrls
   refmeta
 refentrytitleioctl VIDIOC_G_EXT_CTRLS, VIDIOC_S_EXT_CTRLS,
-VIDIOC_TRY_EXT_CTRLS/refentrytitle
+VIDIOC_TRY_EXT_CTRLS, VIDIOC_G_DEF_EXT_CTRLS/refentrytitle
 manvol;
   /refmeta
 
   refnamediv
 refnameVIDIOC_G_EXT_CTRLS/refname
+refnameVIDIOC_G_DEF_EXT_CTRLS/refname
 refnameVIDIOC_S_EXT_CTRLS/refname
 refnameVIDIOC_TRY_EXT_CTRLS/refname
 refpurposeGet or set the value of several controls, try control
@@ -39,7 +40,7 @@ values/refpurpose
termparameterrequest/parameter/term
listitem
  paraVIDIOC_G_EXT_CTRLS, VIDIOC_S_EXT_CTRLS,
-VIDIOC_TRY_EXT_CTRLS/para
+VIDIOC_TRY_EXT_CTRLS, VIDIOC_G_DEF_EXT_CTRLS/para
/listitem
   /varlistentry
   varlistentry
@@ -74,7 +75,10 @@ of each v4l2-ext-control; and call the
 constantVIDIOC_G_EXT_CTRLS/constant ioctl. String controls controls
 must also set the structfieldstring/structfield field. Controls
 of compound types (constantV4L2_CTRL_FLAG_HAS_PAYLOAD/constant is set)
-must set the structfieldptr/structfield field./para
+must set the structfieldptr/structfield field. To get the default value
+instead of the current value, call the
+constantVIDIOC_G_DEF_EXT_CTRLS/constant ioctl with the same arguments.
+/para
 
 paraIf the structfieldsize/structfield is too small to
 receive the control result (only relevant for pointer-type controls
@@ -141,7 +145,8 @@ application./entry
entryThe total size in bytes of the payload of this
 control. This is normally 0, but for pointer controls this should be
 set to the size of the memory containing the payload, or that will
-receive the payload. If constantVIDIOC_G_EXT_CTRLS/constant finds
+receive the payload. If constantVIDIOC_G_EXT_CTRLS/constant
+or constantVIDIOC_G_DEF_EXT_CTRLS/constant finds
 that this value is less than is required to store
 the payload result, then it is set to a value large enough to store the
 payload result and ENOSPC is returned. Note that for string controls
diff --git a/Documentation/video4linux/v4l2-controls.txt 
b/Documentation/video4linux/v4l2-controls.txt
index 5517db602f37..7e3dfcacdbee 100644
--- a/Documentation/video4linux/v4l2-controls.txt
+++ b/Documentation/video4linux/v4l2-controls.txt
@@ -79,7 +79,8 @@ Basic usage for V4L2 and sub-device drivers
 
   Finally, remove all control functions from your v4l2_ioctl_ops (if any):
   vidioc_queryctrl, vidioc_query_ext_ctrl, vidioc_querymenu, vidioc_g_ctrl,
-  vidioc_s_ctrl, vidioc_g_ext_ctrls, vidioc_try_ext_ctrls and 
vidioc_s_ext_ctrls.
+  vidioc_s_ctrl, vidioc_g_ext_ctrls, vidioc_try_ext_ctrls,
+  vidioc_g_def_ext_ctrls, and vidioc_s_ext_ctrls.
   Those are now no longer needed.
 
 1.3.2) For sub-device drivers do this:
diff --git a/Documentation/video4linux/v4l2-framework.txt 
b/Documentation/video4linux/v4l2-framework.txt
index 75d5c18d689a..4672396f48b1 100644
--- a/Documentation/video4linux/v4l2-framework.txt
+++ b/Documentation/video4linux/v4l2-framework.txt
@@ -462,6 +462,7 @@ VIDIOC_QUERYMENU
 VIDIOC_G_CTRL
 VIDIOC_S_CTRL
 VIDIOC_G_EXT_CTRLS
+VIDIOC_G_DEF_EXT_CTRLS
 VIDIOC_S_EXT_CTRLS
 VIDIOC_TRY_EXT_CTRLS
 
diff --git a/Documentation/zh_CN/video4linux/v4l2-framework.txt 
b/Documentation/zh_CN/video4linux/v4l2-framework.txt
index 2b828e631e31..b8c0d6fb6595 100644
--- a/Documentation/zh_CN/video4linux/v4l2-framework.txt
+++ b/Documentation/zh_CN/video4linux/v4l2-framework.txt
@@ -401,6 +401,7 @@ 

[RFC v2 13/27] media/i2c/saa7115: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/saa7115.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/saa7115.c b/drivers/media/i2c/saa7115.c
index 0eae5f4471e2..c227dc11b136 100644
--- a/drivers/media/i2c/saa7115.c
+++ b/drivers/media/i2c/saa7115.c
@@ -1582,6 +1582,7 @@ static const struct v4l2_ctrl_ops saa711x_ctrl_ops = {
 static const struct v4l2_subdev_core_ops saa711x_core_ops = {
.log_status = saa711x_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 16/27] media/i2c/tda7432: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/tda7432.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/tda7432.c b/drivers/media/i2c/tda7432.c
index cf93021a6500..efff7d48ce9e 100644
--- a/drivers/media/i2c/tda7432.c
+++ b/drivers/media/i2c/tda7432.c
@@ -332,6 +332,7 @@ static const struct v4l2_ctrl_ops tda7432_ctrl_ops = {
 static const struct v4l2_subdev_core_ops tda7432_core_ops = {
.log_status = tda7432_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 22/27] media/i2c/wm8739: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/wm8739.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/wm8739.c b/drivers/media/i2c/wm8739.c
index 3be73f6a40e9..003c07bee16f 100644
--- a/drivers/media/i2c/wm8739.c
+++ b/drivers/media/i2c/wm8739.c
@@ -177,6 +177,7 @@ static const struct v4l2_ctrl_ops wm8739_ctrl_ops = {
 static const struct v4l2_subdev_core_ops wm8739_core_ops = {
.log_status = wm8739_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 14/27] media/i2c/saa717x: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/saa717x.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/saa717x.c b/drivers/media/i2c/saa717x.c
index 7d517361e419..e1f94e0131e2 100644
--- a/drivers/media/i2c/saa717x.c
+++ b/drivers/media/i2c/saa717x.c
@@ -1205,6 +1205,7 @@ static const struct v4l2_subdev_core_ops saa717x_core_ops 
= {
.s_register = saa717x_s_register,
 #endif
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 04/27] v4l2-subdev: Add g_def_ext_ctrls to core_ops

2015-06-12 Thread Ricardo Ribalda Delgado
This function returns the default value of an extended control. Provides
sub-devices with the same functionality as ioctl VIDIOC_G_DEF_EXT_CTRLS.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/v4l2-core/v4l2-ctrls.c | 7 +++
 include/media/v4l2-ctrls.h   | 2 ++
 include/media/v4l2-subdev.h  | 2 ++
 3 files changed, 11 insertions(+)

diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c 
b/drivers/media/v4l2-core/v4l2-ctrls.c
index 02ff6f573fd2..2a42b826f857 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -2888,6 +2888,13 @@ int v4l2_subdev_g_ext_ctrls(struct v4l2_subdev *sd, 
struct v4l2_ext_controls *cs
 }
 EXPORT_SYMBOL(v4l2_subdev_g_ext_ctrls);
 
+int v4l2_subdev_g_def_ext_ctrls(struct v4l2_subdev *sd,
+   struct v4l2_ext_controls *cs)
+{
+   return v4l2_g_ext_ctrls(sd-ctrl_handler, cs, true);
+}
+EXPORT_SYMBOL(v4l2_subdev_g_def_ext_ctrls);
+
 /* Helper function to get a single control */
 static int get_ctrl(struct v4l2_ctrl *ctrl, struct v4l2_ext_control *c)
 {
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
index 16f16b67181b..61e6cd67fc10 100644
--- a/include/media/v4l2-ctrls.h
+++ b/include/media/v4l2-ctrls.h
@@ -823,6 +823,8 @@ int v4l2_s_ext_ctrls(struct v4l2_fh *fh, struct 
v4l2_ctrl_handler *hdl,
 int v4l2_subdev_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc);
 int v4l2_subdev_querymenu(struct v4l2_subdev *sd, struct v4l2_querymenu *qm);
 int v4l2_subdev_g_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls 
*cs);
+int v4l2_subdev_g_def_ext_ctrls(struct v4l2_subdev *sd,
+   struct v4l2_ext_controls *cs);
 int v4l2_subdev_try_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls 
*cs);
 int v4l2_subdev_s_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls 
*cs);
 int v4l2_subdev_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl);
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
index dc20102ff600..01b3354942cf 100644
--- a/include/media/v4l2-subdev.h
+++ b/include/media/v4l2-subdev.h
@@ -158,6 +158,8 @@ struct v4l2_subdev_core_ops {
int (*g_ctrl)(struct v4l2_subdev *sd, struct v4l2_control *ctrl);
int (*s_ctrl)(struct v4l2_subdev *sd, struct v4l2_control *ctrl);
int (*g_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls 
*ctrls);
+   int (*g_def_ext_ctrls)(struct v4l2_subdev *sd,
+  struct v4l2_ext_controls *ctrls);
int (*s_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls 
*ctrls);
int (*try_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls 
*ctrls);
int (*querymenu)(struct v4l2_subdev *sd, struct v4l2_querymenu *qm);
-- 
2.1.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


[RFC v2 09/27] media/i2c/cs53l32a: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/cs53l32a.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/cs53l32a.c b/drivers/media/i2c/cs53l32a.c
index 27400c16ef9a..9358350278cc 100644
--- a/drivers/media/i2c/cs53l32a.c
+++ b/drivers/media/i2c/cs53l32a.c
@@ -122,6 +122,7 @@ static const struct v4l2_ctrl_ops cs53l32a_ctrl_ops = {
 static const struct v4l2_subdev_core_ops cs53l32a_core_ops = {
.log_status = cs53l32a_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 06/27] media/i2c/adv7393: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/adv7393.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/adv7393.c b/drivers/media/i2c/adv7393.c
index 558f19154eb9..e59e29335c83 100644
--- a/drivers/media/i2c/adv7393.c
+++ b/drivers/media/i2c/adv7393.c
@@ -307,6 +307,7 @@ static const struct v4l2_ctrl_ops adv7393_ctrl_ops = {
 static const struct v4l2_subdev_core_ops adv7393_core_ops = {
.log_status = adv7393_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 05/27] media/i2c/adv7343: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/adv7343.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/adv7343.c b/drivers/media/i2c/adv7343.c
index 7c50833e7d17..9753fb545f17 100644
--- a/drivers/media/i2c/adv7343.c
+++ b/drivers/media/i2c/adv7343.c
@@ -320,6 +320,7 @@ static const struct v4l2_ctrl_ops adv7343_ctrl_ops = {
 static const struct v4l2_subdev_core_ops adv7343_core_ops = {
.log_status = adv7343_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 24/27] media/pci/ivtv/ivtv-gpio: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/pci/ivtv/ivtv-gpio.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/pci/ivtv/ivtv-gpio.c 
b/drivers/media/pci/ivtv/ivtv-gpio.c
index af52def700cc..d16f210670e2 100644
--- a/drivers/media/pci/ivtv/ivtv-gpio.c
+++ b/drivers/media/pci/ivtv/ivtv-gpio.c
@@ -314,6 +314,7 @@ static const struct v4l2_ctrl_ops gpio_ctrl_ops = {
 static const struct v4l2_subdev_core_ops subdev_core_ops = {
.log_status = subdev_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 01/27] media/v4l2-core: Add argument def_value to g_ext_ctrl

2015-06-12 Thread Ricardo Ribalda Delgado
If def_value is set, the default value for the controls is returned.

Helper function def_to_user is also added with the same interface as
cur_to_user or new_to_user.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/platform/omap3isp/ispvideo.c |  2 +-
 drivers/media/v4l2-core/v4l2-ctrls.c   | 25 -
 drivers/media/v4l2-core/v4l2-ioctl.c   |  4 ++--
 drivers/media/v4l2-core/v4l2-subdev.c  |  2 +-
 include/media/v4l2-ctrls.h |  3 ++-
 5 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/drivers/media/platform/omap3isp/ispvideo.c 
b/drivers/media/platform/omap3isp/ispvideo.c
index d285af18df7f..cdcc51ff6fa7 100644
--- a/drivers/media/platform/omap3isp/ispvideo.c
+++ b/drivers/media/platform/omap3isp/ispvideo.c
@@ -941,7 +941,7 @@ static int isp_video_check_external_subdevs(struct 
isp_video *video,
ctrls.count = 1;
ctrls.controls = ctrl;
 
-   ret = v4l2_g_ext_ctrls(pipe-external-ctrl_handler, ctrls);
+   ret = v4l2_g_ext_ctrls(pipe-external-ctrl_handler, ctrls, false);
if (ret  0) {
dev_warn(isp-dev, no pixel rate control in subdev %s\n,
 pipe-external-name);
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c 
b/drivers/media/v4l2-core/v4l2-ctrls.c
index b6b7dcc1b77d..02ff6f573fd2 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -1489,6 +1489,17 @@ static int new_to_user(struct v4l2_ext_control *c,
return ptr_to_user(c, ctrl, ctrl-p_new);
 }
 
+/* Helper function: copy the initial control value back to the caller */
+static int def_to_user(struct v4l2_ext_control *c, struct v4l2_ctrl *ctrl)
+{
+   int idx;
+
+   for (idx = 0; idx  ctrl-elems; idx++)
+   ctrl-type_ops-init(ctrl, idx, ctrl-p_new);
+
+   return ptr_to_user(c, ctrl, ctrl-p_new);
+}
+
 /* Helper function: copy the caller-provider value to the given control value 
*/
 static int user_to_ptr(struct v4l2_ext_control *c,
   struct v4l2_ctrl *ctrl,
@@ -2795,7 +2806,8 @@ static int class_check(struct v4l2_ctrl_handler *hdl, u32 
ctrl_class)
 
 
 /* Get extended controls. Allocates the helpers array if needed. */
-int v4l2_g_ext_ctrls(struct v4l2_ctrl_handler *hdl, struct v4l2_ext_controls 
*cs)
+int v4l2_g_ext_ctrls(struct v4l2_ctrl_handler *hdl,
+struct v4l2_ext_controls *cs, bool def_value)
 {
struct v4l2_ctrl_helper helper[4];
struct v4l2_ctrl_helper *helpers = helper;
@@ -2827,9 +2839,11 @@ int v4l2_g_ext_ctrls(struct v4l2_ctrl_handler *hdl, 
struct v4l2_ext_controls *cs
 
for (i = 0; !ret  i  cs-count; i++) {
int (*ctrl_to_user)(struct v4l2_ext_control *c,
-   struct v4l2_ctrl *ctrl) = cur_to_user;
+   struct v4l2_ctrl *ctrl);
struct v4l2_ctrl *master;
 
+   ctrl_to_user = def_value ? def_to_user : cur_to_user;
+
if (helpers[i].mref == NULL)
continue;
 
@@ -2839,8 +2853,9 @@ int v4l2_g_ext_ctrls(struct v4l2_ctrl_handler *hdl, 
struct v4l2_ext_controls *cs
v4l2_ctrl_lock(master);
 
/* g_volatile_ctrl will update the new control values */
-   if ((master-flags  V4L2_CTRL_FLAG_VOLATILE) ||
-   (master-has_volatiles  !is_cur_manual(master))) {
+   if (!def_value 
+   ((master-flags  V4L2_CTRL_FLAG_VOLATILE) ||
+   (master-has_volatiles  !is_cur_manual(master {
for (j = 0; j  master-ncontrols; j++)
cur_to_new(master-cluster[j]);
ret = call_op(master, g_volatile_ctrl);
@@ -2869,7 +2884,7 @@ EXPORT_SYMBOL(v4l2_g_ext_ctrls);
 
 int v4l2_subdev_g_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls 
*cs)
 {
-   return v4l2_g_ext_ctrls(sd-ctrl_handler, cs);
+   return v4l2_g_ext_ctrls(sd-ctrl_handler, cs, false);
 }
 EXPORT_SYMBOL(v4l2_subdev_g_ext_ctrls);
 
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c 
b/drivers/media/v4l2-core/v4l2-ioctl.c
index 85de4557f696..a675ccc8f27a 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1982,9 +1982,9 @@ static int v4l_g_ext_ctrls(const struct v4l2_ioctl_ops 
*ops,
 
p-error_idx = p-count;
if (vfh  vfh-ctrl_handler)
-   return v4l2_g_ext_ctrls(vfh-ctrl_handler, p);
+   return v4l2_g_ext_ctrls(vfh-ctrl_handler, p, false);
if (vfd-ctrl_handler)
-   return v4l2_g_ext_ctrls(vfd-ctrl_handler, p);
+   return v4l2_g_ext_ctrls(vfd-ctrl_handler, p, false);
if (ops-vidioc_g_ext_ctrls == NULL)
return -ENOTTY;
return check_ext_ctrls(p, 0) ? ops-vidioc_g_ext_ctrls(file, fh, p) :
diff --git 

[RFC v2 20/27] media/i2c/tvp7002: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/tvp7002.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/tvp7002.c b/drivers/media/i2c/tvp7002.c
index 05077cffd235..006170ebe3da 100644
--- a/drivers/media/i2c/tvp7002.c
+++ b/drivers/media/i2c/tvp7002.c
@@ -862,6 +862,7 @@ tvp7002_set_pad_format(struct v4l2_subdev *sd, struct 
v4l2_subdev_pad_config *cf
 static const struct v4l2_subdev_core_ops tvp7002_core_ops = {
.log_status = tvp7002_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 25/27] media/radio/saa7706h: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/radio/saa7706h.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/radio/saa7706h.c b/drivers/media/radio/saa7706h.c
index ec805b09c608..cac1496da7e2 100644
--- a/drivers/media/radio/saa7706h.c
+++ b/drivers/media/radio/saa7706h.c
@@ -338,6 +338,7 @@ static const struct v4l2_ctrl_ops saa7706h_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops saa7706h_core_ops = {
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 03/27] videodev2.h: Fix typo in comment

2015-06-12 Thread Ricardo Ribalda Delgado
Referenced file has moved

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 include/uapi/linux/videodev2.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index b9468a3b833e..b059237f0214 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -2272,7 +2272,7 @@ struct v4l2_create_buffers {
 #define VIDIOC_G_DEF_EXT_CTRLS _IOWR('V', 104, struct v4l2_ext_controls)
 
 /* Reminder: when adding new ioctls please add support for them to
-   drivers/media/video/v4l2-compat-ioctl32.c as well! */
+   drivers/media/v4l2-core/v4l2-compat-ioctl32.c as well! */
 
 #define BASE_VIDIOC_PRIVATE192 /* 192-255 are private */
 
-- 
2.1.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


[RFC v2 11/27] media/i2c/msp3400-driver: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/msp3400-driver.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/msp3400-driver.c 
b/drivers/media/i2c/msp3400-driver.c
index dcc68ec71732..10837564af8e 100644
--- a/drivers/media/i2c/msp3400-driver.c
+++ b/drivers/media/i2c/msp3400-driver.c
@@ -643,6 +643,7 @@ static const struct v4l2_ctrl_ops msp_ctrl_ops = {
 static const struct v4l2_subdev_core_ops msp_core_ops = {
.log_status = msp_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.4

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


Re: [PATCH 02/13] dmaengine: Introduce dma_request_slave_channel_compat_reason()

2015-06-12 Thread Vinod Koul
On Thu, Jun 04, 2015 at 06:58:06PM +0300, Peter Ujfalusi wrote:
 Vinod,
 
 On 06/02/2015 03:55 PM, Vinod Koul wrote:
  On Fri, May 29, 2015 at 05:32:50PM +0300, Peter Ujfalusi wrote:
  On 05/29/2015 01:18 PM, Vinod Koul wrote:
  On Fri, May 29, 2015 at 11:42:27AM +0200, Geert Uytterhoeven wrote:
  On Fri, May 29, 2015 at 11:33 AM, Vinod Koul vinod.k...@intel.com 
  wrote:
  On Tue, May 26, 2015 at 04:25:57PM +0300, Peter Ujfalusi wrote:
  dma_request_slave_channel_compat() 'eats' up the returned error codes 
  which
  prevents drivers using the compat call to be able to do deferred 
  probing.
 
  The new wrapper is identical in functionality but it will return with 
  error
  code in case of failure and will pass the -EPROBE_DEFER to the caller 
  in
  case dma_request_slave_channel_reason() returned with it.
  This is okay but am worried about one more warpper, how about fixing
  dma_request_slave_channel_compat()
 
  Then all callers of dma_request_slave_channel_compat() have to be
  modified to handle ERR_PTR first.
 
  The same is true for (the existing) dma_request_slave_channel_reason()
  vs. dma_request_slave_channel().
  Good point, looking again, I think we should rather fix
  dma_request_slave_channel_reason() as it was expected to return err code 
  and
  add new users. Anyway users of this API do expect the reason...
 
  Hrm, they are for different use.dma_request_slave_channel()/_reason() is 
  for
  drivers only working via DT or ACPI while
  dma_request_slave_channel_compat()/_reason() is for drivers expected to 
  run in
  DT/ACPI or legacy mode as well.
 
  I added the dma_request_slave_channel_compat_reason() because OMAP/daVinci
  drivers are using this to request channels - they need to support DT and
  legacy mode.
  I think we should hide these things behind the API and do this behind the
  hood for ACPI/DT systems.
  
  Also it makes sense to use right API and mark rest as depricated
 
 So to convert the dma_request_slave_channel_compat() and not to create _reason
 variant?
 
 Or to have single API to request channel? The problem with that is that we
 need different parameters for legacy and DT for example.
Sorry this slipped thru

Thinking about it again, I think we should coverge to two APIs and mark the
legacy depracuated and look to convert folks and phase that out


-- 
~Vinod
--
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


[RFC v2 19/27] media/i2c/tvp514x: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/tvp514x.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/tvp514x.c b/drivers/media/i2c/tvp514x.c
index 24e47279e30c..d69708aac627 100644
--- a/drivers/media/i2c/tvp514x.c
+++ b/drivers/media/i2c/tvp514x.c
@@ -959,6 +959,7 @@ static int tvp514x_set_pad_format(struct v4l2_subdev *sd,
 
 static const struct v4l2_subdev_core_ops tvp514x_core_ops = {
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 18/27] media/i2c/tvaudio: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/tvaudio.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/tvaudio.c b/drivers/media/i2c/tvaudio.c
index 0c50e5285cf6..05972a5d2c68 100644
--- a/drivers/media/i2c/tvaudio.c
+++ b/drivers/media/i2c/tvaudio.c
@@ -1856,6 +1856,7 @@ static const struct v4l2_ctrl_ops tvaudio_ctrl_ops = {
 static const struct v4l2_subdev_core_ops tvaudio_core_ops = {
.log_status = tvaudio_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 15/27] media/i2c/sr030pc30: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/sr030pc30.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/sr030pc30.c b/drivers/media/i2c/sr030pc30.c
index b62b6ddc4356..23836801218a 100644
--- a/drivers/media/i2c/sr030pc30.c
+++ b/drivers/media/i2c/sr030pc30.c
@@ -637,6 +637,7 @@ static const struct v4l2_ctrl_ops sr030pc30_ctrl_ops = {
 static const struct v4l2_subdev_core_ops sr030pc30_core_ops = {
.s_power= sr030pc30_s_power,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 17/27] media/i2c/tlv320aic23b: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/tlv320aic23b.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/tlv320aic23b.c b/drivers/media/i2c/tlv320aic23b.c
index ef87f7b09ea2..4e279de8e194 100644
--- a/drivers/media/i2c/tlv320aic23b.c
+++ b/drivers/media/i2c/tlv320aic23b.c
@@ -123,6 +123,7 @@ static const struct v4l2_ctrl_ops tlv320aic23b_ctrl_ops = {
 static const struct v4l2_subdev_core_ops tlv320aic23b_core_ops = {
.log_status = tlv320aic23b_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 27/27] Documentation: media: Fix code sample

2015-06-12 Thread Ricardo Ribalda Delgado
Add newly created core op to the example.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 Documentation/video4linux/v4l2-controls.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/video4linux/v4l2-controls.txt 
b/Documentation/video4linux/v4l2-controls.txt
index 7e3dfcacdbee..1d25de0199c4 100644
--- a/Documentation/video4linux/v4l2-controls.txt
+++ b/Documentation/video4linux/v4l2-controls.txt
@@ -105,6 +105,7 @@ Basic usage for V4L2 and sub-device drivers
.g_ctrl = v4l2_subdev_g_ctrl,
.s_ctrl = v4l2_subdev_s_ctrl,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
 
-- 
2.1.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


[RFC v2 10/27] media/i2c/cx25840/cx25840-core: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/cx25840/cx25840-core.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/cx25840/cx25840-core.c 
b/drivers/media/i2c/cx25840/cx25840-core.c
index e15a789ad596..5d8d25e6bbf0 100644
--- a/drivers/media/i2c/cx25840/cx25840-core.c
+++ b/drivers/media/i2c/cx25840/cx25840-core.c
@@ -5044,6 +5044,7 @@ static const struct v4l2_subdev_core_ops cx25840_core_ops 
= {
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.queryctrl = v4l2_subdev_queryctrl,
.querymenu = v4l2_subdev_querymenu,
.reset = cx25840_reset,
-- 
2.1.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


[RFC v2 21/27] media/i2c/vpx3220: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/vpx3220.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/vpx3220.c b/drivers/media/i2c/vpx3220.c
index 016e766e72ba..60d635250b19 100644
--- a/drivers/media/i2c/vpx3220.c
+++ b/drivers/media/i2c/vpx3220.c
@@ -451,6 +451,7 @@ static const struct v4l2_ctrl_ops vpx3220_ctrl_ops = {
 static const struct v4l2_subdev_core_ops vpx3220_core_ops = {
.init = vpx3220_init,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 07/27] media/i2c/bt819: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/bt819.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/bt819.c b/drivers/media/i2c/bt819.c
index 76b334a6a56d..b3e9ac3616b5 100644
--- a/drivers/media/i2c/bt819.c
+++ b/drivers/media/i2c/bt819.c
@@ -381,6 +381,7 @@ static const struct v4l2_ctrl_ops bt819_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops bt819_core_ops = {
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 23/27] media/i2c/wm8775: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/wm8775.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/wm8775.c b/drivers/media/i2c/wm8775.c
index bee7946faa7c..45d4873aca74 100644
--- a/drivers/media/i2c/wm8775.c
+++ b/drivers/media/i2c/wm8775.c
@@ -179,6 +179,7 @@ static const struct v4l2_ctrl_ops wm8775_ctrl_ops = {
 static const struct v4l2_subdev_core_ops wm8775_core_ops = {
.log_status = wm8775_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 08/27] media/i2c/cs5345: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/cs5345.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/cs5345.c b/drivers/media/i2c/cs5345.c
index 34b76a9e7515..ad3c89585909 100644
--- a/drivers/media/i2c/cs5345.c
+++ b/drivers/media/i2c/cs5345.c
@@ -133,6 +133,7 @@ static const struct v4l2_ctrl_ops cs5345_ctrl_ops = {
 static const struct v4l2_subdev_core_ops cs5345_core_ops = {
.log_status = cs5345_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v2 12/27] media/i2c/saa7110: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/saa7110.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/saa7110.c b/drivers/media/i2c/saa7110.c
index 99689ee57d7e..964cc2cf1508 100644
--- a/drivers/media/i2c/saa7110.c
+++ b/drivers/media/i2c/saa7110.c
@@ -359,6 +359,7 @@ static const struct v4l2_ctrl_ops saa7110_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops saa7110_core_ops = {
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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] Kconfig: disable Media Controller for DVB

2015-06-12 Thread Mauro Carvalho Chehab
Since when we start discussions about the usage Media Controller
for complex hardware, one thing become clear: the way it is, MC
fails to map anything more complex than a webcam.

The point is that MC has entities named as devnodes, but the only
devnode used (before the DVB patches) is MEDIA_ENT_T_DEVNODE_V4L.
Due to the way MC got implemented, however, this entity actually
doesn't represent the devnode, but the hardware I/O engine that
receives data via DMA.

By coincidence, such DMA is associated with the V4L device node
on webcam hardware, but this is not true even for other V4L2
devices. For example, on USB hardware, the DMA is done via the
USB controller. The data passes though a in-kernel filter that
strips off the URB headers. Other V4L2 devices like radio may not
even have DMA. When it have, the DMA is done via ALSA, and not
via the V4L devnode.

In other words, MC is broken as a hole, but tagging it as BROKEN
right now would do more harm than good.

So, instead, let's mark, for now, the DVB part as broken and
block all new changes to it while we don't fix this mess, with
we hopefully will do for the next Kernel version.

Requested-by: Laurent Pinchart laurent.pinch...@ideasonboard.com
Signed-off-by: Mauro Carvalho Chehab mche...@osg.samsung.com

diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig
index 3ef0f90b128f..157099243d61 100644
--- a/drivers/media/Kconfig
+++ b/drivers/media/Kconfig
@@ -97,6 +97,7 @@ config MEDIA_CONTROLLER
 config MEDIA_CONTROLLER_DVB
bool Enable Media controller for DVB
depends on MEDIA_CONTROLLER
+   depends on BROKEN
---help---
  Enable the media controller API support for DVB.
 
-- 
2.4.2

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


[PATCH v2] Kconfig: disable Media Controller for DVB

2015-06-12 Thread Mauro Carvalho Chehab
Since when we start discussions about the usage Media Controller
for complex hardware, one thing become clear: the way it is, MC
fails to map anything more complex than a webcam.

The point is that MC has entities named as devnodes, but the only
devnode used (before the DVB patches) is MEDIA_ENT_T_DEVNODE_V4L.
Due to the way MC got implemented, however, this entity actually
doesn't represent the devnode, but the hardware I/O engine that
receives data via DMA.

By coincidence, such DMA is associated with the V4L device node
on webcam hardware, but this is not true even for other V4L2
devices. For example, on USB hardware, the DMA is done via the
USB controller. The data passes though a in-kernel filter that
strips off the URB headers. Other V4L2 devices like radio may not
even have DMA. When it have, the DMA is done via ALSA, and not
via the V4L devnode.

In other words, MC is broken as a whole, but tagging it as BROKEN
right now would do more harm than good.

So, instead, let's mark, for now, the DVB part as broken and
block all new changes to MC while we fix this mess, whith
we hopefully will do for the next Kernel version.

Requested-by: Laurent Pinchart laurent.pinch...@ideasonboard.com
Signed-off-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Mauro Carvalho Chehab mche...@osg.samsung.com

diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig
index 3ef0f90b128f..157099243d61 100644
--- a/drivers/media/Kconfig
+++ b/drivers/media/Kconfig
@@ -97,6 +97,7 @@ config MEDIA_CONTROLLER
 config MEDIA_CONTROLLER_DVB
bool Enable Media controller for DVB
depends on MEDIA_CONTROLLER
+   depends on BROKEN
---help---
  Enable the media controller API support for DVB.
 
-- 
2.4.2

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


Re: [PATCH] media: i2c/adp1653: set enable gpio to output

2015-06-12 Thread Sakari Ailus
Hallo Uwe,

Thanks for the patch!

On Fri, Jun 12, 2015 at 09:47:28AM +0200, Uwe Kleine-König wrote:
 Without setting the direction of a gpio to output a call to
 gpiod_set_value doesn't have a defined outcome.
 
 Furthermore this is one caller less that stops us making the flags
 argument to gpiod_get*() mandatory.
 
 Signed-off-by: Uwe Kleine-König u.kleine-koe...@pengutronix.de
 ---
 Hello,
 
 this patch applies to next and is only necessary on top of 074c57a25fa2
 ([media] media: i2c/adp1653: Devicetree support for adp1653).
 
 Note I plan to make the flags parameter mandatory for 4.3. So unless
 this change gets into 4.2, would it be ok to let it go in via the gpio
 tree?

Fine for me.

For the patch,

Acked-by: Sakari Ailus sakari.ai...@iki.fi

-- 
Freundliche hilsen,

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


Re: media_tree log has not been updated for about a month

2015-06-12 Thread Mauro Carvalho Chehab
Em 12 de junho de 2015 15:20:56 BRT, Tycho Lürsen tycholur...@gmail.com 
escreveu:
Hi all,
I don't know who is responsible for a functioning web frontend of your 
development tree in git.
The thing is: http://git.linuxtv.org/cgit.cgi/media_tree.git/log/ has 
not been updated for about a month.
It still shows   356484cabe44984d2dc66a90bd5e3465ba1f64fb ([media] 
dw2102: resync fifo when demod locks) as the last commit.
That is very inconvenient to me.
Can anyone fix this, please?

Kind regards,
Tycho.
--
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

Not sure what happened.  Just removed the cache manually. Please test again.

Cheers,
Mauro
--
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: AverMedia HD Duet (White Box) A188WB drivers

2015-06-12 Thread Manu Abraham
Hi David,

The saa7160 chipset is supported by the saa716x driver.
I wrote a driver for it, which is over here.
http://git.linuxtv.org/cgit.cgi/manu/saa716x_new.git

I do have the A188 card and documentation also with me,
thanks to Avermedia.

The card is not yet supported in the above tree, so cloning
that tree will not help much in your case. Though I have
some code related to that, it is only on my local testbox

I've been with an accident and my other hand is in a restrictive
state with minimal movements. It will be a few weeks, before
I can do something in this area. It's not much help to you at
this point right now, but just fyi

Manu



On Sat, Jun 13, 2015 at 8:46 AM, David Nelson nelson...@gmail.com wrote:
 I have the AverMedia HD Duet (White Box) A188WB. Which has been
 working great for several years in Windows 7 Media Center. I just
 tried installing Mythbuntu but it does not appear to be recognized. I
 am a bit of a newbie but I managed to find some info about it.

 Does anyone know of a driver for it? lspci says it uses the Philips
 SAA7160 which does appear to be in a few other supported devices.

 Details follow

 I get the following from lspci -vvnnk

 03:00.0 Multimedia controller [0480]: Philips Semiconductors SAA7160
 [1131:7160] (rev 01)
 Subsystem: Avermedia Technologies Inc Device [1461:1e55]
 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
 Stepping- SERR- FastB2B- DisINTx-
 Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast TAbort-
 TAbort- MAbort- SERR- PERR- INTx-
 Latency: 0, Cache Line Size: 64 bytes
 Interrupt: pin A routed to IRQ 10
 Region 0: Memory at ef80 (64-bit, non-prefetchable) [size=1M]
 Capabilities: access denied


 I can see that there is a driver for a few other devices with this
 chip at http://www.linuxtv.org/wiki/index.php/NXP_SAA716x  (i.e.
 heading As of (2014-06-07)


 --
 -David Nelson
 --
 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
--
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


AverMedia HD Duet (White Box) A188WB drivers

2015-06-12 Thread David Nelson
I have the AverMedia HD Duet (White Box) A188WB. Which has been
working great for several years in Windows 7 Media Center. I just
tried installing Mythbuntu but it does not appear to be recognized. I
am a bit of a newbie but I managed to find some info about it.

Does anyone know of a driver for it? lspci says it uses the Philips
SAA7160 which does appear to be in a few other supported devices.

Details follow

I get the following from lspci -vvnnk

03:00.0 Multimedia controller [0480]: Philips Semiconductors SAA7160
[1131:7160] (rev 01)
Subsystem: Avermedia Technologies Inc Device [1461:1e55]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast TAbort-
TAbort- MAbort- SERR- PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 10
Region 0: Memory at ef80 (64-bit, non-prefetchable) [size=1M]
Capabilities: access denied


I can see that there is a driver for a few other devices with this
chip at http://www.linuxtv.org/wiki/index.php/NXP_SAA716x  (i.e.
heading As of (2014-06-07)


-- 
-David Nelson
--
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: [Xen-devel] RIP MTRR - status update for upcoming v4.2

2015-06-12 Thread James Bottomley
On Fri, 2015-06-12 at 16:15 -0700, Andy Lutomirski wrote:
 On Jun 12, 2015 12:59 AM, Jan Beulich jbeul...@suse.com wrote:
 
   On 12.06.15 at 01:23, toshi.k...@hp.com wrote:
   There are two usages on MTRRs:
1) MTRR entries set by firmware
2) MTRR entries set by OS drivers
  
   We can obsolete 2), but we have no control over 1).  As UEFI firmwares
   also set this up, this usage will continue to stay.  So, we should not
   get rid of the MTRR code that looks up the MTRR entries, while we have
   no need to modify them.
  
   Such MTRR entries provide safe guard to /dev/mem, which allows
   privileged user to access a range that may require UC mapping while
   the /dev/mem driver blindly maps it with WB.  MTRRs converts WB to UC in
   such a case.
 
  But it wouldn't be impossible to simply read the MTRRs upon boot,
  store the information, disable MTRRs, and correctly use PAT to
  achieve the same effect (i.e. the blindly maps part of course
  would need fixing).
 
 This may crash and burn badly when we call a UEFI function or an SMI
 happens.  I think we should just leave the MTRRs alone.

Wholeheartedly agree: PAT only works when the given memory map is in
operation but MTRRs function everywhere.  Anything that goes into real
mode or installs its own memory map won't see the Linux page attributes.

James


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


drivers/media/dvb-frontends/rtl2832_sdr.c:1435:3-8: No need to set .owner here. The core will do it.

2015-06-12 Thread kbuild test robot
tree:   git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   b85dfd30cb37318587018ee430c2c1cfabf3dabc
commit: 63bdab5d31b987c5ccb81c3c6662016d07cbb5b7 [media] rtl2832_sdr: convert 
to platform driver
date:   4 months ago


coccinelle warnings: (new ones prefixed by )

 drivers/media/dvb-frontends/rtl2832_sdr.c:1435:3-8: No need to set .owner 
 here. The core will do it.

vim +1435 drivers/media/dvb-frontends/rtl2832_sdr.c

  1419  mutex_lock(dev-v4l2_lock);
  1420  /* No need to keep the urbs around after disconnection */
  1421  dev-udev = NULL;
  1422  v4l2_device_disconnect(dev-v4l2_dev);
  1423  video_unregister_device(dev-vdev);
  1424  mutex_unlock(dev-v4l2_lock);
  1425  mutex_unlock(dev-vb_queue_lock);
  1426  
  1427  v4l2_device_put(dev-v4l2_dev);
  1428  
  1429  return 0;
  1430  }
  1431  
  1432  static struct platform_driver rtl2832_sdr_driver = {
  1433  .driver = {
  1434  .name   = rtl2832_sdr,
 1435  .owner  = THIS_MODULE,
  1436  },
  1437  .probe  = rtl2832_sdr_probe,
  1438  .remove = rtl2832_sdr_remove,
  1439  };
  1440  module_platform_driver(rtl2832_sdr_driver);
  1441  
  1442  MODULE_AUTHOR(Antti Palosaari cr...@iki.fi);
  1443  MODULE_DESCRIPTION(Realtek RTL2832 SDR driver);

---
0-DAY kernel test infrastructureOpen Source Technology Center
http://lists.01.org/mailman/listinfo/kbuild Intel Corporation
--
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 v1.1 1/1] omap3isp: Fix sub-device power management code

2015-06-12 Thread Sakari Ailus
Commit 813f5c0ac5cc (media: Change media device link_notify behaviour)
modified the media controller link setup notification API and updated the
OMAP3 ISP driver accordingly. As a side effect it introduced a bug by
turning power on after setting the link instead of before. This results in
sub-devices not being powered down in some cases when they should be. Fix
it.

Signed-off-by: Sakari Ailus sakari.ai...@iki.fi
Fixes: 813f5c0ac5cc [media] media: Change media device link_notify behaviour
Cc: sta...@vger.kernel.org # since v3.10
---
Hi Laurent,

I amended the commit message a bit. Let me know if you're ok with it.

 drivers/media/platform/omap3isp/isp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/omap3isp/isp.c 
b/drivers/media/platform/omap3isp/isp.c
index 6bcab28..ce0556c 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -829,14 +829,14 @@ static int isp_pipeline_link_notify(struct media_link 
*link, u32 flags,
int ret;
 
if (notification == MEDIA_DEV_NOTIFY_POST_LINK_CH 
-   !(link-flags  MEDIA_LNK_FL_ENABLED)) {
+   !(flags  MEDIA_LNK_FL_ENABLED)) {
/* Powering off entities is assumed to never fail. */
isp_pipeline_pm_power(source, -sink_use);
isp_pipeline_pm_power(sink, -source_use);
return 0;
}
 
-   if (notification == MEDIA_DEV_NOTIFY_POST_LINK_CH 
+   if (notification == MEDIA_DEV_NOTIFY_PRE_LINK_CH 
(flags  MEDIA_LNK_FL_ENABLED)) {
 
ret = isp_pipeline_pm_power(source, sink_use);
-- 
2.1.4

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


Re: [PATCH 1/1] omap3isp: Fix sub-device power management code

2015-06-12 Thread Sakari Ailus
Hi Laurent,

On Fri, Jun 12, 2015 at 10:24:28AM +0300, Laurent Pinchart wrote:
 Hi Sakari,
 
 On Thursday 11 June 2015 00:38:11 Sakari Ailus wrote:
  On Wed, Jun 10, 2015 at 03:52:50AM +0300, Laurent Pinchart wrote:
   On Friday 29 May 2015 02:17:47 Sakari Ailus wrote:
The power management code was reworked a little due to interface changes
in the MC. Due to those changes the power management broke a bit, fix it
so the functionality is reverted to old behaviour.
   
   I found the commit message a bit vague. How about
   
   Commit 813f5c0ac5cc (media: Change media device link_notify behaviour)
   modified the media controller link setup notification API and updated the
   OMAP3 ISP driver accordingly. As a side effect it introduced a bug by
   turning power on after setting the link instead of before. This results
   in powered off entities being accessed. Fix it.
   
   Or have I misunderstood the problem ?
  
  Not entirely, but it's not just that: depending on the order in which the
  links are changed and the video nodes opened or closed, the use counts may
  end up being too high or too low (even negative).
 
 OK. Could you please update the commit message accordingly ?

Hmm. I'm still not fully certain how did I manage to reproduce that, but in
a few occasions the sensor was powered down when it shouldn't have been and
the power count was decreased more than it was first increased.

What's indeed easy to see is that in post notification of enabling the links
the use counts of the partial pipelines are in fact not those of the
partial, but the complete one, and thus end up being twice as much they
should be.

I'm fine with using the commit message you suggested, the bottom line still
is that it was broken, and the patch fixes it.

-- 
Regards,

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


Re: [Xen-devel] RIP MTRR - status update for upcoming v4.2

2015-06-12 Thread Andy Lutomirski
On Jun 12, 2015 12:59 AM, Jan Beulich jbeul...@suse.com wrote:

  On 12.06.15 at 01:23, toshi.k...@hp.com wrote:
  There are two usages on MTRRs:
   1) MTRR entries set by firmware
   2) MTRR entries set by OS drivers
 
  We can obsolete 2), but we have no control over 1).  As UEFI firmwares
  also set this up, this usage will continue to stay.  So, we should not
  get rid of the MTRR code that looks up the MTRR entries, while we have
  no need to modify them.
 
  Such MTRR entries provide safe guard to /dev/mem, which allows
  privileged user to access a range that may require UC mapping while
  the /dev/mem driver blindly maps it with WB.  MTRRs converts WB to UC in
  such a case.

 But it wouldn't be impossible to simply read the MTRRs upon boot,
 store the information, disable MTRRs, and correctly use PAT to
 achieve the same effect (i.e. the blindly maps part of course
 would need fixing).

This may crash and burn badly when we call a UEFI function or an SMI
happens.  I think we should just leave the MTRRs alone.

--Andy
--
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

2015-06-12 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:   Sat Jun 13 04:00:17 CEST 2015
git branch: test
git hash:   e42c8c6eb456f8978de417ea349eef676ef4385c
gcc version:i686-linux-gcc (GCC) 5.1.0
sparse version: v0.5.0-44-g40791b9
smatch version: 0.4.1-3153-g7d56ab3
host hardware:  x86_64
host os:4.0.0-3.slh.1-amd64

linux-git-arm-at91: OK
linux-git-arm-davinci: OK
linux-git-arm-exynos: OK
linux-git-arm-mx: OK
linux-git-arm-omap: OK
linux-git-arm-omap1: OK
linux-git-arm-pxa: OK
linux-git-blackfin-bf561: OK
linux-git-i686: OK
linux-git-m32r: OK
linux-git-mips: OK
linux-git-powerpc64: OK
linux-git-sh: OK
linux-git-x86_64: OK
linux-2.6.32.27-i686: WARNINGS
linux-2.6.33.7-i686: WARNINGS
linux-2.6.34.7-i686: WARNINGS
linux-2.6.35.9-i686: WARNINGS
linux-2.6.36.4-i686: WARNINGS
linux-2.6.37.6-i686: WARNINGS
linux-2.6.38.8-i686: WARNINGS
linux-2.6.39.4-i686: WARNINGS
linux-3.0.60-i686: OK
linux-3.1.10-i686: OK
linux-3.2.37-i686: OK
linux-3.3.8-i686: OK
linux-3.4.27-i686: OK
linux-3.5.7-i686: OK
linux-3.6.11-i686: OK
linux-3.7.4-i686: OK
linux-3.8-i686: OK
linux-3.9.2-i686: OK
linux-3.10.1-i686: OK
linux-3.11.1-i686: OK
linux-3.12.23-i686: OK
linux-3.13.11-i686: OK
linux-3.14.9-i686: OK
linux-3.15.2-i686: OK
linux-3.16.7-i686: OK
linux-3.17.8-i686: OK
linux-3.18.7-i686: OK
linux-3.19-i686: OK
linux-4.0-i686: OK
linux-4.1-rc1-i686: OK
linux-2.6.32.27-x86_64: WARNINGS
linux-2.6.33.7-x86_64: WARNINGS
linux-2.6.34.7-x86_64: WARNINGS
linux-2.6.35.9-x86_64: WARNINGS
linux-2.6.36.4-x86_64: WARNINGS
linux-2.6.37.6-x86_64: WARNINGS
linux-2.6.38.8-x86_64: WARNINGS
linux-2.6.39.4-x86_64: WARNINGS
linux-3.0.60-x86_64: OK
linux-3.1.10-x86_64: OK
linux-3.2.37-x86_64: OK
linux-3.3.8-x86_64: OK
linux-3.4.27-x86_64: OK
linux-3.5.7-x86_64: OK
linux-3.6.11-x86_64: OK
linux-3.7.4-x86_64: OK
linux-3.8-x86_64: OK
linux-3.9.2-x86_64: OK
linux-3.10.1-x86_64: OK
linux-3.11.1-x86_64: OK
linux-3.12.23-x86_64: OK
linux-3.13.11-x86_64: OK
linux-3.14.9-x86_64: OK
linux-3.15.2-x86_64: OK
linux-3.16.7-x86_64: OK
linux-3.17.8-x86_64: OK
linux-3.18.7-x86_64: OK
linux-3.19-x86_64: OK
linux-4.0-x86_64: OK
linux-4.1-rc1-x86_64: OK
apps: OK
spec-git: OK
sparse: WARNINGS
smatch: ERRORS

Detailed results are available here:

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

Full logs are available here:

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

The Media Infrastructure API from this daily build is here:

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


[PATCH 04/12] media/i2c/saa717x: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/saa717x.c | 7 ---
 1 file changed, 7 deletions(-)

diff --git a/drivers/media/i2c/saa717x.c b/drivers/media/i2c/saa717x.c
index 7d517361e419..c6ba19cf1aa5 100644
--- a/drivers/media/i2c/saa717x.c
+++ b/drivers/media/i2c/saa717x.c
@@ -1204,13 +1204,6 @@ static const struct v4l2_subdev_core_ops 
saa717x_core_ops = {
.g_register = saa717x_g_register,
.s_register = saa717x_s_register,
 #endif
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
.log_status = saa717x_log_status,
 };
 
-- 
2.1.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 11/12] pci/ivtv/ivtv-gpio: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/pci/ivtv/ivtv-gpio.c | 7 ---
 1 file changed, 7 deletions(-)

diff --git a/drivers/media/pci/ivtv/ivtv-gpio.c 
b/drivers/media/pci/ivtv/ivtv-gpio.c
index af52def700cc..f752f3993687 100644
--- a/drivers/media/pci/ivtv/ivtv-gpio.c
+++ b/drivers/media/pci/ivtv/ivtv-gpio.c
@@ -313,13 +313,6 @@ static const struct v4l2_ctrl_ops gpio_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops subdev_core_ops = {
.log_status = subdev_log_status,
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
 };
 
 static const struct v4l2_subdev_tuner_ops subdev_tuner_ops = {
-- 
2.1.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 00/12] media/subdevices: Remove unused compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
Remove no longer used compat control ops, as they are not used in their
bridge drivers.

Working tree can be found at
https://github.com/ribalda/linux/tree/compat_control_clean

Ricardo Ribalda Delgado (12):
  media/i2c/adv7343: Remove compat control ops
  media/i2c/adv7393: Remove compat control ops
  media/i2c/cs5345: Remove compat control ops
  media/i2c/saa717x: Remove compat control ops
  media/i2c/sr030pc30: Remove compat control ops
  media/i2c/tda7432: Remove compat control ops
  media/i2c/tlv320aic23: Remove compat control ops
  media/i2c/tvp514x: Remove compat control ops
  media/i2c/tvp7002: Remove compat control ops
  i2c/wm8739: Remove compat control ops
  pci/ivtv/ivtv-gpio: Remove compat control ops
  media/radio/saa7706h: Remove compat control ops

 drivers/media/i2c/adv7343.c|  7 ---
 drivers/media/i2c/adv7393.c|  7 ---
 drivers/media/i2c/cs5345.c |  7 ---
 drivers/media/i2c/saa717x.c|  7 ---
 drivers/media/i2c/sr030pc30.c  |  7 ---
 drivers/media/i2c/tda7432.c|  7 ---
 drivers/media/i2c/tlv320aic23b.c   |  7 ---
 drivers/media/i2c/tvp514x.c| 11 ---
 drivers/media/i2c/tvp7002.c|  7 ---
 drivers/media/i2c/wm8739.c |  7 ---
 drivers/media/pci/ivtv/ivtv-gpio.c |  7 ---
 drivers/media/radio/saa7706h.c | 16 ++--
 12 files changed, 2 insertions(+), 95 deletions(-)

-- 
2.1.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 08/12] media/i2c/tvp514x: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/tvp514x.c | 11 ---
 1 file changed, 11 deletions(-)

diff --git a/drivers/media/i2c/tvp514x.c b/drivers/media/i2c/tvp514x.c
index 24e47279e30c..a93985a9b070 100644
--- a/drivers/media/i2c/tvp514x.c
+++ b/drivers/media/i2c/tvp514x.c
@@ -957,16 +957,6 @@ static int tvp514x_set_pad_format(struct v4l2_subdev *sd,
return 0;
 }
 
-static const struct v4l2_subdev_core_ops tvp514x_core_ops = {
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
-};
-
 static const struct v4l2_subdev_video_ops tvp514x_video_ops = {
.s_std = tvp514x_s_std,
.s_routing = tvp514x_s_routing,
@@ -983,7 +973,6 @@ static const struct v4l2_subdev_pad_ops tvp514x_pad_ops = {
 };
 
 static const struct v4l2_subdev_ops tvp514x_ops = {
-   .core = tvp514x_core_ops,
.video = tvp514x_video_ops,
.pad = tvp514x_pad_ops,
 };
-- 
2.1.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 02/12] media/i2c/adv7393: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/adv7393.c | 7 ---
 1 file changed, 7 deletions(-)

diff --git a/drivers/media/i2c/adv7393.c b/drivers/media/i2c/adv7393.c
index 558f19154eb9..0215f95c2245 100644
--- a/drivers/media/i2c/adv7393.c
+++ b/drivers/media/i2c/adv7393.c
@@ -306,13 +306,6 @@ static const struct v4l2_ctrl_ops adv7393_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops adv7393_core_ops = {
.log_status = adv7393_log_status,
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
 };
 
 static int adv7393_s_std_output(struct v4l2_subdev *sd, v4l2_std_id std)
-- 
2.1.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 07/12] media/i2c/tlv320aic23: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/tlv320aic23b.c | 7 ---
 1 file changed, 7 deletions(-)

diff --git a/drivers/media/i2c/tlv320aic23b.c b/drivers/media/i2c/tlv320aic23b.c
index ef87f7b09ea2..0370dd89f1fc 100644
--- a/drivers/media/i2c/tlv320aic23b.c
+++ b/drivers/media/i2c/tlv320aic23b.c
@@ -122,13 +122,6 @@ static const struct v4l2_ctrl_ops tlv320aic23b_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops tlv320aic23b_core_ops = {
.log_status = tlv320aic23b_log_status,
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
 };
 
 static const struct v4l2_subdev_audio_ops tlv320aic23b_audio_ops = {
-- 
2.1.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 06/12] media/i2c/tda7432: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/tda7432.c | 7 ---
 1 file changed, 7 deletions(-)

diff --git a/drivers/media/i2c/tda7432.c b/drivers/media/i2c/tda7432.c
index cf93021a6500..d3834a4c48da 100644
--- a/drivers/media/i2c/tda7432.c
+++ b/drivers/media/i2c/tda7432.c
@@ -331,13 +331,6 @@ static const struct v4l2_ctrl_ops tda7432_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops tda7432_core_ops = {
.log_status = tda7432_log_status,
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
 };
 
 static const struct v4l2_subdev_ops tda7432_ops = {
-- 
2.1.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 01/12] media/i2c/adv7343: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/adv7343.c | 7 ---
 1 file changed, 7 deletions(-)

diff --git a/drivers/media/i2c/adv7343.c b/drivers/media/i2c/adv7343.c
index 7c50833e7d17..d27283135490 100644
--- a/drivers/media/i2c/adv7343.c
+++ b/drivers/media/i2c/adv7343.c
@@ -319,13 +319,6 @@ static const struct v4l2_ctrl_ops adv7343_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops adv7343_core_ops = {
.log_status = adv7343_log_status,
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
 };
 
 static int adv7343_s_std_output(struct v4l2_subdev *sd, v4l2_std_id std)
-- 
2.1.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 09/12] media/i2c/tvp7002: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/tvp7002.c | 7 ---
 1 file changed, 7 deletions(-)

diff --git a/drivers/media/i2c/tvp7002.c b/drivers/media/i2c/tvp7002.c
index 05077cffd235..f617d8b745ee 100644
--- a/drivers/media/i2c/tvp7002.c
+++ b/drivers/media/i2c/tvp7002.c
@@ -861,13 +861,6 @@ tvp7002_set_pad_format(struct v4l2_subdev *sd, struct 
v4l2_subdev_pad_config *cf
 /* V4L2 core operation handlers */
 static const struct v4l2_subdev_core_ops tvp7002_core_ops = {
.log_status = tvp7002_log_status,
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
 #ifdef CONFIG_VIDEO_ADV_DEBUG
.g_register = tvp7002_g_register,
.s_register = tvp7002_s_register,
-- 
2.1.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 10/12] i2c/wm8739: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/wm8739.c | 7 ---
 1 file changed, 7 deletions(-)

diff --git a/drivers/media/i2c/wm8739.c b/drivers/media/i2c/wm8739.c
index 3be73f6a40e9..534b0e560317 100644
--- a/drivers/media/i2c/wm8739.c
+++ b/drivers/media/i2c/wm8739.c
@@ -176,13 +176,6 @@ static const struct v4l2_ctrl_ops wm8739_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops wm8739_core_ops = {
.log_status = wm8739_log_status,
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
 };
 
 static const struct v4l2_subdev_audio_ops wm8739_audio_ops = {
-- 
2.1.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 12/12] media/radio/saa7706h: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/radio/saa7706h.c | 16 ++--
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/drivers/media/radio/saa7706h.c b/drivers/media/radio/saa7706h.c
index ec805b09c608..183e92719140 100644
--- a/drivers/media/radio/saa7706h.c
+++ b/drivers/media/radio/saa7706h.c
@@ -336,19 +336,7 @@ static const struct v4l2_ctrl_ops saa7706h_ctrl_ops = {
.s_ctrl = saa7706h_s_ctrl,
 };
 
-static const struct v4l2_subdev_core_ops saa7706h_core_ops = {
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
-};
-
-static const struct v4l2_subdev_ops saa7706h_ops = {
-   .core = saa7706h_core_ops,
-};
+static const struct v4l2_subdev_ops empty_ops = {};
 
 /*
  * Generic i2c probe
@@ -373,7 +361,7 @@ static int saa7706h_probe(struct i2c_client *client,
if (state == NULL)
return -ENOMEM;
sd = state-sd;
-   v4l2_i2c_subdev_init(sd, client, saa7706h_ops);
+   v4l2_i2c_subdev_init(sd, client, empty_ops);
 
v4l2_ctrl_handler_init(state-hdl, 4);
v4l2_ctrl_new_std(state-hdl, saa7706h_ctrl_ops,
-- 
2.1.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 05/12] media/i2c/sr030pc30: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/sr030pc30.c | 7 ---
 1 file changed, 7 deletions(-)

diff --git a/drivers/media/i2c/sr030pc30.c b/drivers/media/i2c/sr030pc30.c
index b62b6ddc4356..229dc76c44a5 100644
--- a/drivers/media/i2c/sr030pc30.c
+++ b/drivers/media/i2c/sr030pc30.c
@@ -636,13 +636,6 @@ static const struct v4l2_ctrl_ops sr030pc30_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops sr030pc30_core_ops = {
.s_power= sr030pc30_s_power,
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
 };
 
 static const struct v4l2_subdev_pad_ops sr030pc30_pad_ops = {
-- 
2.1.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 03/12] media/i2c/cs5345: Remove compat control ops

2015-06-12 Thread Ricardo Ribalda Delgado
They are no longer used in old non-control-framework
bridge drivers.

Reported-by: Hans Verkuil hans.verk...@cisco.com
Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/cs5345.c | 7 ---
 1 file changed, 7 deletions(-)

diff --git a/drivers/media/i2c/cs5345.c b/drivers/media/i2c/cs5345.c
index 34b76a9e7515..8cebf9cc8007 100644
--- a/drivers/media/i2c/cs5345.c
+++ b/drivers/media/i2c/cs5345.c
@@ -132,13 +132,6 @@ static const struct v4l2_ctrl_ops cs5345_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops cs5345_core_ops = {
.log_status = cs5345_log_status,
-   .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
-   .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
-   .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
-   .g_ctrl = v4l2_subdev_g_ctrl,
-   .s_ctrl = v4l2_subdev_s_ctrl,
-   .queryctrl = v4l2_subdev_queryctrl,
-   .querymenu = v4l2_subdev_querymenu,
 #ifdef CONFIG_VIDEO_ADV_DEBUG
.g_register = cs5345_g_register,
.s_register = cs5345_s_register,
-- 
2.1.4

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


Re: [RFC v2 00/27] New ioct VIDIOC_G_DEF_EXT_CTRLS

2015-06-12 Thread Hans Verkuil
On 06/12/2015 03:11 PM, Ricardo Ribalda Delgado wrote:
 Integer controls provide a way to get their default/initial value, but
 any other control (p_u32, p_u8.) provide no other way to get the
 initial value than unloading the module and loading it back.
 
 *What is the actual problem?
 I have a custom control with WIDTH integer values. Every value
 represents the calibrated FPN (fixed pattern noise) correction value for that
 column
 -Application A changes the FPN correction value
 -Application B wants to restore the calibrated value but it cant :(
 
 *What is the proposed solution?
 -Add a new ioctl VIDIOC_G_DEF_EXT_CTRLS, with the same API as
 G_EXT_CTRLS, but that returns the initial value of a given control.
 
 
 I have posted a copy of my working tree to
 
 https://github.com/ribalda/linux/tree/g_def_ext
 
 It has been tested with a hacked version of yavta (for normal controls) and a
 custom program for the array control.
 
 Changelog v2:
 -Add documentation
 -Split in multiple patches
 -Comments by Hans:
   -Rename ioctl to G_DEF_EXT_CTRL
   -Much! better implementation of def_to_user
 
 
 THANKS!
 
 Ricardo Ribalda Delgado (27):
   media/v4l2-core: Add argument def_value to g_ext_ctrl
   media/v4l2-core: add new ioctl VIDIOC_G_DEF_EXT_CTRLS
   videodev2.h: Fix typo in comment
   v4l2-subdev: Add g_def_ext_ctrls to core_ops
   media/i2c/adv7343: Implement g_def_ext_ctrls core_op
   media/i2c/adv7393: Implement g_def_ext_ctrls core_op
   media/i2c/bt819: Implement g_def_ext_ctrls core_op
   media/i2c/cs5345: Implement g_def_ext_ctrls core_op
   media/i2c/cs53l32a: Implement g_def_ext_ctrls core_op
   media/i2c/cx25840/cx25840-core: Implement g_def_ext_ctrls core_op
   media/i2c/msp3400-driver: Implement g_def_ext_ctrls core_op
   media/i2c/saa7110: Implement g_def_ext_ctrls core_op
   media/i2c/saa7115: Implement g_def_ext_ctrls core_op
   media/i2c/saa717x: Implement g_def_ext_ctrls core_op
   media/i2c/sr030pc30: Implement g_def_ext_ctrls core_op
   media/i2c/tda7432: Implement g_def_ext_ctrls core_op
   media/i2c/tlv320aic23b: Implement g_def_ext_ctrls core_op
   media/i2c/tvaudio: Implement g_def_ext_ctrls core_op
   media/i2c/tvp514x: Implement g_def_ext_ctrls core_op
   media/i2c/tvp7002: Implement g_def_ext_ctrls core_op
   media/i2c/vpx3220: Implement g_def_ext_ctrls core_op
   media/i2c/wm8739: Implement g_def_ext_ctrls core_op
   media/i2c/wm8775: Implement g_def_ext_ctrls core_op
   media/pci/ivtv/ivtv-gpio: Implement g_def_ext_ctrls core_op
   media/radio/saa7706h: Implement g_def_ext_ctrls core_op

I did a quick analysis and for the following i2c modules you can just remove the
compat control ops altogether since they are no longer used in old 
non-control-framework
bridge drivers:

saa7706
ivtv-gpio
wm8739
tvp7002
tvp514x
tvl320aic23b
tda7432
sr030pc30
saa717x
cs5345
adv7393
adv7343

Also note that the uvc driver needs to be adapted manually since it can't use
the control framework. The ioctls are implemented in the driver itself.

Regards,

Hans

   Docbook: media: new ioctl VIDIOC_G_DEF_EXT_CTRLS
   Documentation: media: Fix code sample
 
  Documentation/DocBook/media/v4l/v4l2.xml   |  8 ++
  .../DocBook/media/v4l/vidioc-g-ext-ctrls.xml   | 13 ++---
  Documentation/video4linux/v4l2-controls.txt|  4 ++-
  Documentation/video4linux/v4l2-framework.txt   |  1 +
  Documentation/zh_CN/video4linux/v4l2-framework.txt |  1 +
  drivers/media/i2c/adv7343.c|  1 +
  drivers/media/i2c/adv7393.c|  1 +
  drivers/media/i2c/bt819.c  |  1 +
  drivers/media/i2c/cs5345.c |  1 +
  drivers/media/i2c/cs53l32a.c   |  1 +
  drivers/media/i2c/cx25840/cx25840-core.c   |  1 +
  drivers/media/i2c/msp3400-driver.c |  1 +
  drivers/media/i2c/saa7110.c|  1 +
  drivers/media/i2c/saa7115.c|  1 +
  drivers/media/i2c/saa717x.c|  1 +
  drivers/media/i2c/sr030pc30.c  |  1 +
  drivers/media/i2c/tda7432.c|  1 +
  drivers/media/i2c/tlv320aic23b.c   |  1 +
  drivers/media/i2c/tvaudio.c|  1 +
  drivers/media/i2c/tvp514x.c|  1 +
  drivers/media/i2c/tvp7002.c|  1 +
  drivers/media/i2c/vpx3220.c|  1 +
  drivers/media/i2c/wm8739.c |  1 +
  drivers/media/i2c/wm8775.c |  1 +
  drivers/media/pci/ivtv/ivtv-gpio.c |  1 +
  drivers/media/platform/omap3isp/ispvideo.c |  2 +-
  drivers/media/radio/saa7706h.c |  1 +
  drivers/media/v4l2-core/v4l2-compat-ioctl32.c  |  4 +++
  drivers/media/v4l2-core/v4l2-ctrls.c   | 32 
 ++
  drivers/media/v4l2-core/v4l2-ioctl.c   | 25 +++--
  

Re: [RFC v2 00/27] New ioct VIDIOC_G_DEF_EXT_CTRLS

2015-06-12 Thread Ricardo Ribalda Delgado
Hello Hans

On Fri, Jun 12, 2015 at 3:41 PM, Hans Verkuil hverk...@xs4all.nl wrote:


 I did a quick analysis and for the following i2c modules you can just remove 
 the
 compat control ops altogether since they are no longer used in old 
 non-control-framework
 bridge drivers:

 saa7706
 ivtv-gpio
 wm8739
 tvp7002
 tvp514x
 tvl320aic23b
 tda7432
 sr030pc30
 saa717x
 cs5345
 adv7393
 adv7343

 Also note that the uvc driver needs to be adapted manually since it can't use
 the control framework. The ioctls are implemented in the driver itself.

Would it make sense to split this patchset in two?

1) This patchset - all i2c modules that dont need compat control ops +
uvc driver
2) A new patchset removing compat control ops on the list that you provided

Thanks
--
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 1/3] modify the vb2_buffer structure for common video buffer and make struct vb2_v4l2_buffer

2015-06-12 Thread Hans Verkuil
On 06/12/2015 11:58 AM, Hans Verkuil wrote:
 Hi Junghak,
 
 On 06/08/2015 03:35 PM, Junghak Sung wrote:
 Make the struct vb2_buffer to common buffer by removing v4l2-specific 
 members.
 And common video buffer is embedded into v4l2-specific video buffer like:
 struct vb2_v4l2_buffer {
 struct vb2_buffervb2;
 struct v4l2_bufferv4l2_buf;
 struct v4l2_planev4l2_planes[VIDEO_MAX_PLANES];
 };
 This changes require the modifications of all device drivers that use this 
 structure.
 
 It's next to impossible to review just large diffs, but it is unavoidable for
 changes like this I guess.
 
 I do recommend that you do a 'git grep videobuf2-core' to make sure all usages
 of that have been replaced with videobuf2-v4l2. I think I saw videobuf2-core
 mentioned in a comment, but it is hard to be sure.
 
 It would also be easier to review if the renaming of core.[ch] to v4l2.[ch] 
 was
 done in a separate patch. If it is relatively easy to split it up like that,
 then I would appreciate it, but if it takes a lot of time, then leave it as 
 is.
 
 Anyway, assuming that 'git grep videobuf2-core' doesn't find anything:
 
 Acked-by: Hans Verkuil hans.verk...@cisco.com

Sorry, I'm retracting that Acked-by: I tried to apply it and I saw it was 
against
an old kernel version, not against the media_tree master branch.

Also, I thought videobuf2-core.[ch] was renamed to videobuf2-v4l2.[ch], but 
that's
not the case. I think that would make much more sense. Later patches can split 
up
videobuf2-v4l2.c/h into a videobuf2-core and -v4l2 part.

Regards,

Hans

 
 Regards,
 
   Hans
 

 Signed-off-by: Junghak Sung jh1009.s...@samsung.com
 ---
  Documentation/video4linux/v4l2-pci-skeleton.c  |   12 +-
  drivers/media/dvb-frontends/rtl2832_sdr.c  |   10 +-
  drivers/media/pci/cx23885/cx23885-417.c|   12 +-
  drivers/media/pci/cx23885/cx23885-dvb.c|   12 +-
  drivers/media/pci/cx23885/cx23885-vbi.c|   12 +-
  drivers/media/pci/cx23885/cx23885-video.c  |   12 +-
  drivers/media/pci/cx23885/cx23885.h|2 +-
  drivers/media/pci/cx25821/cx25821-video.c  |   12 +-
  drivers/media/pci/cx25821/cx25821.h|2 +-
  drivers/media/pci/cx88/cx88-blackbird.c|   14 +-
  drivers/media/pci/cx88/cx88-dvb.c  |   14 +-
  drivers/media/pci/cx88/cx88-vbi.c  |   12 +-
  drivers/media/pci/cx88/cx88-video.c|   12 +-
  drivers/media/pci/cx88/cx88.h  |2 +-
  drivers/media/pci/saa7134/saa7134-empress.c|2 +-
  drivers/media/pci/saa7134/saa7134-ts.c |   10 +-
  drivers/media/pci/saa7134/saa7134-vbi.c|   12 +-
  drivers/media/pci/saa7134/saa7134-video.c  |   18 +-
  drivers/media/pci/saa7134/saa7134.h|8 +-
  drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c |   14 +-
  drivers/media/pci/solo6x10/solo6x10-v4l2.c |6 +-
  drivers/media/pci/solo6x10/solo6x10.h  |4 +-
  drivers/media/pci/sta2x11/sta2x11_vip.c|   20 +-
  drivers/media/pci/tw68/tw68-video.c|   12 +-
  drivers/media/pci/tw68/tw68.h  |2 +-
  drivers/media/platform/am437x/am437x-vpfe.c|   16 +-
  drivers/media/platform/am437x/am437x-vpfe.h|2 +-
  drivers/media/platform/blackfin/bfin_capture.c |   20 +-
  drivers/media/platform/coda/coda-bit.c |   20 +-
  drivers/media/platform/coda/coda-common.c  |   24 +-
  drivers/media/platform/coda/coda-jpeg.c|2 +-
  drivers/media/platform/coda/coda.h |6 +-
  drivers/media/platform/davinci/vpbe_display.c  |8 +-
  drivers/media/platform/davinci/vpif_capture.c  |   16 +-
  drivers/media/platform/davinci/vpif_capture.h  |2 +-
  drivers/media/platform/davinci/vpif_display.c  |   18 +-
  drivers/media/platform/davinci/vpif_display.h  |6 +-
  drivers/media/platform/exynos-gsc/gsc-core.c   |2 +-
  drivers/media/platform/exynos-gsc/gsc-core.h   |6 +-
  drivers/media/platform/exynos-gsc/gsc-m2m.c|   16 +-
  drivers/media/platform/exynos4-is/fimc-capture.c   |   12 +-
  drivers/media/platform/exynos4-is/fimc-core.c  |4 +-
  drivers/media/platform/exynos4-is/fimc-core.h  |6 +-
  drivers/media/platform/exynos4-is/fimc-is.h|2 +-
  drivers/media/platform/exynos4-is/fimc-isp-video.c |   14 +-
  drivers/media/platform/exynos4-is/fimc-isp-video.h |2 +-
  drivers/media/platform/exynos4-is/fimc-isp.h   |4 +-
  drivers/media/platform/exynos4-is/fimc-lite.c  |   10 +-
  drivers/media/platform/exynos4-is/fimc-lite.h  |4 +-
  drivers/media/platform/exynos4-is/fimc-m2m.c   |   16 +-
  drivers/media/platform/m2m-deinterlace.c   |   16 +-
  drivers/media/platform/marvell-ccic/mcam-core.c|   24 +-
  

Re: [RFC PATCH 0/3] Refactoring Videobuf2 for common use

2015-06-12 Thread Hans Verkuil
Hi Junghak,

On 06/08/2015 03:35 PM, Junghak Sung wrote:
 Hello everybody,
 
 This patch series refactories exsiting Videobuf2, so that not only V4L2
 but also other frameworks can use it to manage buffer and utilize
 queue.
 
 I would separate existing Videobuf2-core framework into two parts - common
 and v4l2-specific part. This work is as follows :
 
 1. Separate existing vb2_buffer structure into common buffer and
v4l2-specific parts by removing v4l2-specific members and
embedding it into vb2_v4l2_buffer structure like this:
 
 struct vb2_v4l2_buffer {
 struct vb2_buffervb2;
 struct v4l2_buffer   v4l2_buf;
 struct v4l2_planev4l2_planes[VIDEO_MAX_PLANES];
 };
 
 2. Abstract the v4l2-specific elements, and specify them when the device
drives use them. For example, vb2_v4l2_buffer structure can be abstracted
by vb2_buffer structure, and device drivers can get framework-specific
object such as vb2_v4l2_buffer by using container_of().
 
 3. Separate VB2-core framework into real VB2-core and v4l2-specific part.
This means that it moves V4L2-specific parts of VB2-core to v4l2-specific
part because current VB2-core framework has some codes dependent of V4L2.
As a result, we will have two VB2 files - videobuf2-core.c and
videobuf2-v4l2.c.
 
 Why do we try to make the VB2 framework to be common?
 
 As you may know, current DVB framework uses ringbuffer mechanism to demux
 MPEG-2 TS data and pass it to userspace. However, this mechanism requires
 extra memory copy because DVB framework provides only read() system call for
 application - read() system call copies the kernel data to user-space buffer.
 
 So if we can use VB2 framework which supports streaming I/O and buffer
 sharing mechanism, then we could enhance existing DVB framework by removing
 the extra memory copy - with VB2 framework, application can access the kernel
 data directly through mmap system call.
 
 This patch series is the first step for it.
 
 We have a plan for this work as follows:
 
 1. Separate existing VB2 framework into three parts - VB2 common, VB2-v4l2,
and VB2-dvb. Of course, this change should not affect other v4l2-based
device drivers. This patch series includes some parts of this step.
 
 2. Add new APIs for DVB streaming I/O. These APIs will be implemented
in VB2-dvb framework. So, we can remove unnecessary memory copy between
kernel-space and user-space by using these new APIs.
However, we leaves legacy interfaces as-is for backward compatibility.
 
 We are working on this project with Mauro and have a discussion with him
 on IRC channel weekly. Nowaday, we are discussing more detailed DVB user
 scenario for streaming I/O.
 
 The final goal of this project is to enhance current DVB framework.
 The first mission is to achieve zero-copy functionality between kernel-space
 and user-space with mmap system call. More missions are under consideration:
 i.e., we could share the buffer not only between kernel-space and user-space
 but also between devices - demux, hw video codec - by exporting a buffer
 to dmabuf fd with VB2 framework.
 
 Any suggestions and comments are welcome.

I've tried to review it, but in the current form it is too hard to do. It's not
helped by the fact that patch 2 didn't make it to the mailinglist. It might
be better to just split up such large patches and make a note that the pull
request will combine the two (or more) patches into one.

BTW, I fully agree with what you want to do, where I am having trouble is
verifying that nothing breaks and in the details of the vb2 API changes.

Can you make a new patch series that only shows the changes to the videobuf2
sources and headers, so without all the driver changes? The driver changes
are automatically checked by the compiler when you build the drivers, so I
believe that that's correct (I hope :-) ).

Also try to split it up in smaller pieces. I had the feeling that you combined
multiple but otherwise independent changes in one patch. The vb2 framework is
an important piece of code, and I want to be confident about the changes made.

Regarding the split into core and v4l2 sources/headers: I've been thinking about
this a bit more, and what would probably make reviewing easiest is if you start
off with making a simple videobuf2-v4l2.h header that just includes core.h and
slowly move the v4l2-specific parts from videobuf2-core.h to videobuf2-v4l2.h.

And do the same with videobuf2-v4l2.c: start off with an empty source and move
code from core.c to v4l2.c whenever a v4l2-specific part migrates.

Another note: I noticed that the queue_setup op was changed so the v4l2_format
argument became a void *. I do not think that that is the right approach since
we lose strong typing.

I wonder if v4l2-specific queue ops should be introduced. I'm not sure how that
would work out, but I think we can look at that for the next round of patches.

Regards,

Hans

 
 Best regards,

Re: [PATCH] Kconfig: disable Media Controller for DVB

2015-06-12 Thread Hans Verkuil
On 06/12/2015 12:57 PM, Mauro Carvalho Chehab wrote:
 Since when we start discussions about the usage Media Controller
 for complex hardware, one thing become clear: the way it is, MC
 fails to map anything more complex than a webcam.
 
 The point is that MC has entities named as devnodes, but the only
 devnode used (before the DVB patches) is MEDIA_ENT_T_DEVNODE_V4L.
 Due to the way MC got implemented, however, this entity actually
 doesn't represent the devnode, but the hardware I/O engine that
 receives data via DMA.
 
 By coincidence, such DMA is associated with the V4L device node
 on webcam hardware, but this is not true even for other V4L2
 devices. For example, on USB hardware, the DMA is done via the
 USB controller. The data passes though a in-kernel filter that
 strips off the URB headers. Other V4L2 devices like radio may not
 even have DMA. When it have, the DMA is done via ALSA, and not
 via the V4L devnode.
 
 In other words, MC is broken as a hole, but tagging it as BROKEN

hole - whole

One of these days you'll have retrained your brain for this :-)

 right now would do more harm than good.
 
 So, instead, let's mark, for now, the DVB part as broken and
 block all new changes to it while we don't fix this mess, with

while we fix this mess, which

After fixing the typos:

Signed-off-by: Hans Verkuil hans.verk...@cisco.com

Regards,

Hans

 we hopefully will do for the next Kernel version.
 
 Requested-by: Laurent Pinchart laurent.pinch...@ideasonboard.com
 Signed-off-by: Mauro Carvalho Chehab mche...@osg.samsung.com
 
 diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig
 index 3ef0f90b128f..157099243d61 100644
 --- a/drivers/media/Kconfig
 +++ b/drivers/media/Kconfig
 @@ -97,6 +97,7 @@ config MEDIA_CONTROLLER
  config MEDIA_CONTROLLER_DVB
   bool Enable Media controller for DVB
   depends on MEDIA_CONTROLLER
 + depends on BROKEN
   ---help---
 Enable the media controller API support for DVB.
  
 

--
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] Kconfig: disable Media Controller for DVB

2015-06-12 Thread Mauro Carvalho Chehab
Em Fri, 12 Jun 2015 13:02:00 +0200
Hans Verkuil hverk...@xs4all.nl escreveu:

 On 06/12/2015 12:57 PM, Mauro Carvalho Chehab wrote:
  Since when we start discussions about the usage Media Controller
  for complex hardware, one thing become clear: the way it is, MC
  fails to map anything more complex than a webcam.
  
  The point is that MC has entities named as devnodes, but the only
  devnode used (before the DVB patches) is MEDIA_ENT_T_DEVNODE_V4L.
  Due to the way MC got implemented, however, this entity actually
  doesn't represent the devnode, but the hardware I/O engine that
  receives data via DMA.
  
  By coincidence, such DMA is associated with the V4L device node
  on webcam hardware, but this is not true even for other V4L2
  devices. For example, on USB hardware, the DMA is done via the
  USB controller. The data passes though a in-kernel filter that
  strips off the URB headers. Other V4L2 devices like radio may not
  even have DMA. When it have, the DMA is done via ALSA, and not
  via the V4L devnode.
  
  In other words, MC is broken as a hole, but tagging it as BROKEN
 
 hole - whole
 
 One of these days you'll have retrained your brain for this :-)

Heh ;)

 
  right now would do more harm than good.
  
  So, instead, let's mark, for now, the DVB part as broken and
  block all new changes to it while we don't fix this mess, with
 
 while we fix this mess, which

Changed to:
   block all new changes to MC while we fix this mess, which


Sending version 2.

Regards,
Mauro
--
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: RIP MTRR - status update for upcoming v4.2

2015-06-12 Thread Toshi Kani
On Fri, 2015-06-12 at 02:52 +0200, Luis R. Rodriguez wrote:
 On Thu, Jun 11, 2015 at 05:23:16PM -0600, Toshi Kani wrote:
  On Thu, 2015-06-11 at 13:36 -0700, Luis R. Rodriguez wrote:
   :
   Pending RIP MTRR patches
   
   
   There are a few pending series so I wanted to provide a status update
   on those series.
   
   mtrr: bury MTRR - unexport mtrr_add() and mtrr_del()
   
   This is the nail on the MTRR coffin, it will prevent future direct
   access to MTRR code. This will not be posted until all of the below
   patches are in and merged. A possible next step here might be to
   consider separating PAT code from MTRR code and making PAT a first
   class citizen, enabling distributions to disable MTRR code in the
   future. I thought this was possible but for some reason I recently
   thought that there was one possible issue to make this happen. I
   suppose we won't know unless we try, unless of course someone already
   knows, Toshi?
  
  There are two usages on MTRRs:
   1) MTRR entries set by firmware
   2) MTRR entries set by OS drivers
  
  We can obsolete 2), but we have no control over 1).  As UEFI firmwares
  also set this up, this usage will continue to stay.  So, we should not
  get rid of the MTRR code that looks up the MTRR entries, while we have
  no need to modify them.
  
  Such MTRR entries provide safe guard to /dev/mem, which allows
  privileged user to access a range that may require UC mapping while
  the /dev/mem driver blindly maps it with WB.  MTRRs converts WB to UC in
  such a case.
  
  UEFI memory table has memory attribute, which describes cache types
  supported in physical memory ranges.  However, this information gets
  lost when it it is converted to e820 table.
 
 Is there no way to modify CPU capability bits upon boot and kick UEFI
 to re-evaluate ? In such UEFI cases what happens for instance when
 Xen is used which does not support MTRR?

EFI GetMemoryMap() is a boot service, and won't be available after
ExitBootServices() is called.  But we should be able to keep the
attribute information copied into some table if necessary.

Xen provides virtual firmware on their guests, right?  If this firmware
does not set up MTRRs today, then I do not think it needs to set up for
UEFI, either.  Assuming the guest physical address is virtualized, it
does not have to carry the same platform attribute  restriction.

Thanks,
-Toshi


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


[RFC v3 02/19] media/v4l2-core: add new ioctl VIDIOC_G_DEF_EXT_CTRLS

2015-06-12 Thread Ricardo Ribalda Delgado
This ioctl returns the default value of one or more extended controls.
It has the same interface as VIDIOC_EXT_CTRLS.

It is needed due to the fact that QUERYCTRL was not enough to
provide the initial value of pointer type controls.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/v4l2-core/v4l2-compat-ioctl32.c |  4 
 drivers/media/v4l2-core/v4l2-ioctl.c  | 21 +
 drivers/media/v4l2-core/v4l2-subdev.c |  3 +++
 include/media/v4l2-ioctl.h|  2 ++
 include/uapi/linux/videodev2.h|  1 +
 5 files changed, 31 insertions(+)

diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c 
b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
index af635430524e..b7ab852b642f 100644
--- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
+++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
@@ -817,6 +817,7 @@ static int put_v4l2_edid32(struct v4l2_edid *kp, struct 
v4l2_edid32 __user *up)
 #defineVIDIOC_DQEVENT32_IOR ('V', 89, struct v4l2_event32)
 #define VIDIOC_CREATE_BUFS32   _IOWR('V', 92, struct v4l2_create_buffers32)
 #define VIDIOC_PREPARE_BUF32   _IOWR('V', 93, struct v4l2_buffer32)
+#define VIDIOC_G_DEF_EXT_CTRLS32 _IOWR('V', 104, struct v4l2_ext_controls32)
 
 #define VIDIOC_OVERLAY32   _IOW ('V', 14, s32)
 #define VIDIOC_STREAMON32  _IOW ('V', 18, s32)
@@ -858,6 +859,7 @@ static long do_video_ioctl(struct file *file, unsigned int 
cmd, unsigned long ar
case VIDIOC_ENUMINPUT32: cmd = VIDIOC_ENUMINPUT; break;
case VIDIOC_TRY_FMT32: cmd = VIDIOC_TRY_FMT; break;
case VIDIOC_G_EXT_CTRLS32: cmd = VIDIOC_G_EXT_CTRLS; break;
+   case VIDIOC_G_DEF_EXT_CTRLS32: cmd = VIDIOC_G_DEF_EXT_CTRLS; break;
case VIDIOC_S_EXT_CTRLS32: cmd = VIDIOC_S_EXT_CTRLS; break;
case VIDIOC_TRY_EXT_CTRLS32: cmd = VIDIOC_TRY_EXT_CTRLS; break;
case VIDIOC_DQEVENT32: cmd = VIDIOC_DQEVENT; break;
@@ -935,6 +937,7 @@ static long do_video_ioctl(struct file *file, unsigned int 
cmd, unsigned long ar
break;
 
case VIDIOC_G_EXT_CTRLS:
+   case VIDIOC_G_DEF_EXT_CTRLS:
case VIDIOC_S_EXT_CTRLS:
case VIDIOC_TRY_EXT_CTRLS:
err = get_v4l2_ext_controls32(karg.v2ecs, up);
@@ -962,6 +965,7 @@ static long do_video_ioctl(struct file *file, unsigned int 
cmd, unsigned long ar
   contain information on which control failed. */
switch (cmd) {
case VIDIOC_G_EXT_CTRLS:
+   case VIDIOC_G_DEF_EXT_CTRLS:
case VIDIOC_S_EXT_CTRLS:
case VIDIOC_TRY_EXT_CTRLS:
if (put_v4l2_ext_controls32(karg.v2ecs, up))
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c 
b/drivers/media/v4l2-core/v4l2-ioctl.c
index a675ccc8f27a..5ed03b8588ec 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1991,6 +1991,25 @@ static int v4l_g_ext_ctrls(const struct v4l2_ioctl_ops 
*ops,
-EINVAL;
 }
 
+static int v4l_g_def_ext_ctrls(const struct v4l2_ioctl_ops *ops,
+   struct file *file, void *fh, void *arg)
+{
+   struct video_device *vfd = video_devdata(file);
+   struct v4l2_ext_controls *p = arg;
+   struct v4l2_fh *vfh =
+   test_bit(V4L2_FL_USES_V4L2_FH, vfd-flags) ? fh : NULL;
+
+   p-error_idx = p-count;
+   if (vfh  vfh-ctrl_handler)
+   return v4l2_g_ext_ctrls(vfh-ctrl_handler, p, true);
+   if (vfd-ctrl_handler)
+   return v4l2_g_ext_ctrls(vfd-ctrl_handler, p, true);
+   if (ops-vidioc_g_def_ext_ctrls == NULL)
+   return -ENOTTY;
+   return check_ext_ctrls(p, 0) ?
+   ops-vidioc_g_def_ext_ctrls(file, fh, p) : -EINVAL;
+}
+
 static int v4l_s_ext_ctrls(const struct v4l2_ioctl_ops *ops,
struct file *file, void *fh, void *arg)
 {
@@ -2435,6 +2454,7 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = {
IOCTL_INFO_FNC(VIDIOC_G_SLICED_VBI_CAP, v4l_g_sliced_vbi_cap, 
v4l_print_sliced_vbi_cap, INFO_FL_CLEAR(v4l2_sliced_vbi_cap, type)),
IOCTL_INFO_FNC(VIDIOC_LOG_STATUS, v4l_log_status, v4l_print_newline, 0),
IOCTL_INFO_FNC(VIDIOC_G_EXT_CTRLS, v4l_g_ext_ctrls, 
v4l_print_ext_controls, INFO_FL_CTRL),
+   IOCTL_INFO_FNC(VIDIOC_G_DEF_EXT_CTRLS, v4l_g_def_ext_ctrls, 
v4l_print_ext_controls, INFO_FL_CTRL),
IOCTL_INFO_FNC(VIDIOC_S_EXT_CTRLS, v4l_s_ext_ctrls, 
v4l_print_ext_controls, INFO_FL_PRIO | INFO_FL_CTRL),
IOCTL_INFO_FNC(VIDIOC_TRY_EXT_CTRLS, v4l_try_ext_ctrls, 
v4l_print_ext_controls, INFO_FL_CTRL),
IOCTL_INFO_STD(VIDIOC_ENUM_FRAMESIZES, vidioc_enum_framesizes, 
v4l_print_frmsizeenum, INFO_FL_CLEAR(v4l2_frmsizeenum, pixel_format)),
@@ -2643,6 +2663,7 @@ static int check_array_args(unsigned int cmd, void *parg, 
size_t *array_size,
 
case VIDIOC_S_EXT_CTRLS:
case VIDIOC_G_EXT_CTRLS:
+   case 

[RFC v3 00/19] New ioct VIDIOC_G_DEF_EXT_CTRLS

2015-06-12 Thread Ricardo Ribalda Delgado
Integer controls provide a way to get their default/initial value, but
any other control (p_u32, p_u8.) provide no other way to get the
initial value than unloading the module and loading it back.

*What is the actual problem?
I have a custom control with WIDTH integer values. Every value
represents the calibrated FPN (fixed pattern noise) correction value for that
column
-Application A changes the FPN correction value
-Application B wants to restore the calibrated value but it cant :(

*What is the proposed solution?
-Add a new ioctl VIDIOC_G_DEF_EXT_CTRLS, with the same API as
G_EXT_CTRLS, but that returns the initial value of a given control.


I have posted a copy of my working tree to

https://github.com/ribalda/linux/tree/g_def_ext-rfc3

It has been tested with a hacked version of yavta (for normal controls) and a
custom program for the array control.

Changelog v3:
-Comments by Hans Verkuil:
-Remove the control ops from the following drivers
saa7706
ivtv-gpio
wm8739
tvp7002
tvp514x
tvl320aic23b
tda7432
sr030pc30
saa717x
cs5345
adv7393
adv7343

Changelog v2:
-Add documentation
-Split in multiple patches
-Comments by Hans Verkuil:
-Rename ioctl to G_DEF_EXT_CTRL
-Much! better implementation of def_to_user


THANKS!


Ricardo Ribalda Delgado (19):
  media/v4l2-core: Add argument def_value to g_ext_ctrl
  media/v4l2-core: add new ioctl VIDIOC_G_DEF_EXT_CTRLS
  videodev2.h: Fix typo in comment
  media/usb/uvc: Implement vivioc_g_def_ext_ctrls
  media/pci/saa7164-encoder: Implement vivioc_g_def_ext_ctrls
  media/pci/saa7164-vbi: Implement vivioc_g_def_ext_ctrls
  media/usb/prusb2: Implement vivioc_g_def_ext_ctrls
  v4l2-subdev: Add g_def_ext_ctrls to core_ops
  media/i2c/bt819: Implement g_def_ext_ctrls core_op
  media/i2c/cs53l32a: Implement g_def_ext_ctrls core_op
  media/i2c/cx25840/cx25840-core: Implement g_def_ext_ctrls core_op
  media/i2c/msp3400-driver: Implement g_def_ext_ctrls core_op
  media/i2c/saa7110: Implement g_def_ext_ctrls core_op
  media/i2c/saa7115: Implement g_def_ext_ctrls core_op
  media/i2c/tlv320aic23b: Implement g_def_ext_ctrls core_op
  media/i2c/vpx3220: Implement g_def_ext_ctrls core_op
  media/i2c/wm8775: Implement g_def_ext_ctrls core_op
  Docbook: media: new ioctl VIDIOC_G_DEF_EXT_CTRLS
  Documentation: media: Fix code sample

 Documentation/DocBook/media/v4l/v4l2.xml   |  8 ++
 .../DocBook/media/v4l/vidioc-g-ext-ctrls.xml   | 13 ++---
 Documentation/video4linux/v4l2-controls.txt|  4 ++-
 Documentation/video4linux/v4l2-framework.txt   |  1 +
 Documentation/zh_CN/video4linux/v4l2-framework.txt |  1 +
 drivers/media/i2c/bt819.c  |  1 +
 drivers/media/i2c/cs53l32a.c   |  1 +
 drivers/media/i2c/cx25840/cx25840-core.c   |  1 +
 drivers/media/i2c/msp3400-driver.c |  1 +
 drivers/media/i2c/saa7110.c|  1 +
 drivers/media/i2c/saa7115.c|  1 +
 drivers/media/i2c/tlv320aic23b.c   |  1 +
 drivers/media/i2c/vpx3220.c|  1 +
 drivers/media/i2c/wm8775.c |  1 +
 drivers/media/pci/saa7164/saa7164-encoder.c| 28 +++
 drivers/media/pci/saa7164/saa7164-vbi.c| 28 +++
 drivers/media/platform/omap3isp/ispvideo.c |  2 +-
 drivers/media/usb/pvrusb2/pvrusb2-v4l2.c   | 28 +++
 drivers/media/usb/uvc/uvc_v4l2.c   | 30 
 drivers/media/v4l2-core/v4l2-compat-ioctl32.c  |  4 +++
 drivers/media/v4l2-core/v4l2-ctrls.c   | 32 ++
 drivers/media/v4l2-core/v4l2-ioctl.c   | 25 +++--
 drivers/media/v4l2-core/v4l2-subdev.c  |  5 +++-
 include/media/v4l2-ctrls.h |  5 +++-
 include/media/v4l2-ioctl.h |  2 ++
 include/media/v4l2-subdev.h|  2 ++
 include/uapi/linux/videodev2.h |  3 +-
 27 files changed, 214 insertions(+), 16 deletions(-)

-- 
2.1.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


[RFC v3 04/19] media/usb/uvc: Implement vivioc_g_def_ext_ctrls

2015-06-12 Thread Ricardo Ribalda Delgado
Callback needed by ioctl VIDIOC_G_DEF_EXT_CTRLS as this driver does not
use the controller framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/usb/uvc/uvc_v4l2.c | 30 ++
 1 file changed, 30 insertions(+)

diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
index 2764f43607c1..e2698a77138a 100644
--- a/drivers/media/usb/uvc/uvc_v4l2.c
+++ b/drivers/media/usb/uvc/uvc_v4l2.c
@@ -1001,6 +1001,35 @@ static int uvc_ioctl_g_ext_ctrls(struct file *file, void 
*fh,
return uvc_ctrl_rollback(handle);
 }
 
+static int uvc_ioctl_g_def_ext_ctrls(struct file *file, void *fh,
+struct v4l2_ext_controls *ctrls)
+{
+   struct uvc_fh *handle = fh;
+   struct uvc_video_chain *chain = handle-chain;
+   struct v4l2_ext_control *ctrl = ctrls-controls;
+   unsigned int i;
+   int ret;
+   struct v4l2_queryctrl qc;
+
+   ret = uvc_ctrl_begin(chain);
+   if (ret  0)
+   return ret;
+
+   for (i = 0; i  ctrls-count; ++ctrl, ++i) {
+   qc.id = ctrl-id;
+   ret = uvc_query_v4l2_ctrl(chain, qc);
+   if (ret  0) {
+   ctrls-error_idx = i;
+   return ret;
+   }
+   ctrl-value = qc.default_value;
+   }
+
+   ctrls-error_idx = 0;
+
+   return 0;
+}
+
 static int uvc_ioctl_s_try_ext_ctrls(struct uvc_fh *handle,
 struct v4l2_ext_controls *ctrls,
 bool commit)
@@ -1500,6 +1529,7 @@ const struct v4l2_ioctl_ops uvc_ioctl_ops = {
.vidioc_g_ctrl = uvc_ioctl_g_ctrl,
.vidioc_s_ctrl = uvc_ioctl_s_ctrl,
.vidioc_g_ext_ctrls = uvc_ioctl_g_ext_ctrls,
+   .vidioc_g_def_ext_ctrls = uvc_ioctl_g_def_ext_ctrls,
.vidioc_s_ext_ctrls = uvc_ioctl_s_ext_ctrls,
.vidioc_try_ext_ctrls = uvc_ioctl_try_ext_ctrls,
.vidioc_querymenu = uvc_ioctl_querymenu,
-- 
2.1.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


[RFC v3 01/19] media/v4l2-core: Add argument def_value to g_ext_ctrl

2015-06-12 Thread Ricardo Ribalda Delgado
If def_value is set, the default value for the controls is returned.

Helper function def_to_user is also added with the same interface as
cur_to_user or new_to_user.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/platform/omap3isp/ispvideo.c |  2 +-
 drivers/media/v4l2-core/v4l2-ctrls.c   | 25 -
 drivers/media/v4l2-core/v4l2-ioctl.c   |  4 ++--
 drivers/media/v4l2-core/v4l2-subdev.c  |  2 +-
 include/media/v4l2-ctrls.h |  3 ++-
 5 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/drivers/media/platform/omap3isp/ispvideo.c 
b/drivers/media/platform/omap3isp/ispvideo.c
index d285af18df7f..cdcc51ff6fa7 100644
--- a/drivers/media/platform/omap3isp/ispvideo.c
+++ b/drivers/media/platform/omap3isp/ispvideo.c
@@ -941,7 +941,7 @@ static int isp_video_check_external_subdevs(struct 
isp_video *video,
ctrls.count = 1;
ctrls.controls = ctrl;
 
-   ret = v4l2_g_ext_ctrls(pipe-external-ctrl_handler, ctrls);
+   ret = v4l2_g_ext_ctrls(pipe-external-ctrl_handler, ctrls, false);
if (ret  0) {
dev_warn(isp-dev, no pixel rate control in subdev %s\n,
 pipe-external-name);
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c 
b/drivers/media/v4l2-core/v4l2-ctrls.c
index b6b7dcc1b77d..02ff6f573fd2 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -1489,6 +1489,17 @@ static int new_to_user(struct v4l2_ext_control *c,
return ptr_to_user(c, ctrl, ctrl-p_new);
 }
 
+/* Helper function: copy the initial control value back to the caller */
+static int def_to_user(struct v4l2_ext_control *c, struct v4l2_ctrl *ctrl)
+{
+   int idx;
+
+   for (idx = 0; idx  ctrl-elems; idx++)
+   ctrl-type_ops-init(ctrl, idx, ctrl-p_new);
+
+   return ptr_to_user(c, ctrl, ctrl-p_new);
+}
+
 /* Helper function: copy the caller-provider value to the given control value 
*/
 static int user_to_ptr(struct v4l2_ext_control *c,
   struct v4l2_ctrl *ctrl,
@@ -2795,7 +2806,8 @@ static int class_check(struct v4l2_ctrl_handler *hdl, u32 
ctrl_class)
 
 
 /* Get extended controls. Allocates the helpers array if needed. */
-int v4l2_g_ext_ctrls(struct v4l2_ctrl_handler *hdl, struct v4l2_ext_controls 
*cs)
+int v4l2_g_ext_ctrls(struct v4l2_ctrl_handler *hdl,
+struct v4l2_ext_controls *cs, bool def_value)
 {
struct v4l2_ctrl_helper helper[4];
struct v4l2_ctrl_helper *helpers = helper;
@@ -2827,9 +2839,11 @@ int v4l2_g_ext_ctrls(struct v4l2_ctrl_handler *hdl, 
struct v4l2_ext_controls *cs
 
for (i = 0; !ret  i  cs-count; i++) {
int (*ctrl_to_user)(struct v4l2_ext_control *c,
-   struct v4l2_ctrl *ctrl) = cur_to_user;
+   struct v4l2_ctrl *ctrl);
struct v4l2_ctrl *master;
 
+   ctrl_to_user = def_value ? def_to_user : cur_to_user;
+
if (helpers[i].mref == NULL)
continue;
 
@@ -2839,8 +2853,9 @@ int v4l2_g_ext_ctrls(struct v4l2_ctrl_handler *hdl, 
struct v4l2_ext_controls *cs
v4l2_ctrl_lock(master);
 
/* g_volatile_ctrl will update the new control values */
-   if ((master-flags  V4L2_CTRL_FLAG_VOLATILE) ||
-   (master-has_volatiles  !is_cur_manual(master))) {
+   if (!def_value 
+   ((master-flags  V4L2_CTRL_FLAG_VOLATILE) ||
+   (master-has_volatiles  !is_cur_manual(master {
for (j = 0; j  master-ncontrols; j++)
cur_to_new(master-cluster[j]);
ret = call_op(master, g_volatile_ctrl);
@@ -2869,7 +2884,7 @@ EXPORT_SYMBOL(v4l2_g_ext_ctrls);
 
 int v4l2_subdev_g_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls 
*cs)
 {
-   return v4l2_g_ext_ctrls(sd-ctrl_handler, cs);
+   return v4l2_g_ext_ctrls(sd-ctrl_handler, cs, false);
 }
 EXPORT_SYMBOL(v4l2_subdev_g_ext_ctrls);
 
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c 
b/drivers/media/v4l2-core/v4l2-ioctl.c
index 85de4557f696..a675ccc8f27a 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1982,9 +1982,9 @@ static int v4l_g_ext_ctrls(const struct v4l2_ioctl_ops 
*ops,
 
p-error_idx = p-count;
if (vfh  vfh-ctrl_handler)
-   return v4l2_g_ext_ctrls(vfh-ctrl_handler, p);
+   return v4l2_g_ext_ctrls(vfh-ctrl_handler, p, false);
if (vfd-ctrl_handler)
-   return v4l2_g_ext_ctrls(vfd-ctrl_handler, p);
+   return v4l2_g_ext_ctrls(vfd-ctrl_handler, p, false);
if (ops-vidioc_g_ext_ctrls == NULL)
return -ENOTTY;
return check_ext_ctrls(p, 0) ? ops-vidioc_g_ext_ctrls(file, fh, p) :
diff --git 

[RFC v3 07/19] media/usb/prusb2: Implement vivioc_g_def_ext_ctrls

2015-06-12 Thread Ricardo Ribalda Delgado
Callback needed by ioctl VIDIOC_G_DEF_EXT_CTRLS as this driver does not
use the controller framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/usb/pvrusb2/pvrusb2-v4l2.c | 28 
 1 file changed, 28 insertions(+)

diff --git a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
index 1c5f85bf7ed4..16198c53ffa3 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
@@ -649,6 +649,33 @@ static int pvr2_g_ext_ctrls(struct file *file, void *priv,
return 0;
 }
 
+static int pvr2_g_def_ext_ctrls(struct file *file, void *priv,
+   struct v4l2_ext_controls *ctls)
+{
+   struct pvr2_v4l2_fh *fh = file-private_data;
+   struct pvr2_hdw *hdw = fh-channel.mc_head-hdw;
+   struct v4l2_ext_control *ctrl;
+   unsigned int idx;
+   int ret;
+   struct pvr2_ctrl *cptr;
+
+   ret = 0;
+   for (idx = 0; idx  ctls-count; idx++) {
+   ctrl = ctls-controls + idx;
+   cptr = pvr2_hdw_get_ctrl_v4l(hdw, ctrl-id);
+   if (!ctrl){
+   ctls-error_idx = idx;
+   return -EINVAL;
+   }
+
+   /* Ensure that if read as a 64 bit value, the user
+  will still get a hopefully sane value */
+   ctrl-value64 = 0;
+   pvr2_ctrl_get_def(cptr, ctrl-value);
+   }
+   return 0;
+}
+
 static int pvr2_s_ext_ctrls(struct file *file, void *priv,
struct v4l2_ext_controls *ctls)
 {
@@ -809,6 +836,7 @@ static const struct v4l2_ioctl_ops pvr2_ioctl_ops = {
.vidioc_g_ctrl  = pvr2_g_ctrl,
.vidioc_s_ctrl  = pvr2_s_ctrl,
.vidioc_g_ext_ctrls = pvr2_g_ext_ctrls,
+   .vidioc_g_def_ext_ctrls = pvr2_g_def_ext_ctrls,
.vidioc_s_ext_ctrls = pvr2_s_ext_ctrls,
.vidioc_try_ext_ctrls   = pvr2_try_ext_ctrls,
 };
-- 
2.1.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


[RFC v3 06/19] media/pci/saa7164-vbi: Implement vivioc_g_def_ext_ctrls

2015-06-12 Thread Ricardo Ribalda Delgado
Callback needed by ioctl VIDIOC_G_DEF_EXT_CTRLS as this driver does not
use the controller framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/pci/saa7164/saa7164-vbi.c | 28 
 1 file changed, 28 insertions(+)

diff --git a/drivers/media/pci/saa7164/saa7164-vbi.c 
b/drivers/media/pci/saa7164/saa7164-vbi.c
index 859fd03d82f9..e3f6cf8e83ee 100644
--- a/drivers/media/pci/saa7164/saa7164-vbi.c
+++ b/drivers/media/pci/saa7164/saa7164-vbi.c
@@ -810,6 +810,33 @@ static int vidioc_queryctrl(struct file *file, void *priv,
return -EINVAL;
 }
 
+static int vidioc_g_def_ext_ctrls(struct file *file, void *priv,
+   struct v4l2_ext_controls *ctrls)
+{
+   struct saa7164_vbi_fh *fh = file-private_data;
+   struct saa7164_port *port = fh-port;
+   int i, err = 0;
+   struct v4l2_queryctrl q;
+
+   if (ctrls-ctrl_class == V4L2_CTRL_CLASS_MPEG) {
+   for (i = 0; i  ctrls-count; i++) {
+   struct v4l2_ext_control *ctrl = ctrls-controls + i;
+
+   q.id = ctrl-id;
+   err = fill_queryctrl(port-vbi_params, q);
+   if (err) {
+   ctrls-error_idx = i;
+   break;
+   }
+   ctrl-value = q.default_value;
+   }
+   return err;
+
+   }
+
+   return -EINVAL;
+}
+
 static int saa7164_vbi_stop_port(struct saa7164_port *port)
 {
struct saa7164_dev *dev = port-dev;
@@ -1263,6 +1290,7 @@ static const struct v4l2_ioctl_ops vbi_ioctl_ops = {
.vidioc_try_fmt_vid_cap  = vidioc_try_fmt_vid_cap,
.vidioc_s_fmt_vid_cap= vidioc_s_fmt_vid_cap,
.vidioc_g_ext_ctrls  = vidioc_g_ext_ctrls,
+   .vidioc_g_def_ext_ctrls  = vidioc_g_def_ext_ctrls,
.vidioc_s_ext_ctrls  = vidioc_s_ext_ctrls,
.vidioc_try_ext_ctrls= vidioc_try_ext_ctrls,
.vidioc_queryctrl= vidioc_queryctrl,
-- 
2.1.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


[RFC v3 16/19] media/i2c/vpx3220: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/vpx3220.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/vpx3220.c b/drivers/media/i2c/vpx3220.c
index 016e766e72ba..60d635250b19 100644
--- a/drivers/media/i2c/vpx3220.c
+++ b/drivers/media/i2c/vpx3220.c
@@ -451,6 +451,7 @@ static const struct v4l2_ctrl_ops vpx3220_ctrl_ops = {
 static const struct v4l2_subdev_core_ops vpx3220_core_ops = {
.init = vpx3220_init,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v3 17/19] media/i2c/wm8775: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/wm8775.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/wm8775.c b/drivers/media/i2c/wm8775.c
index bee7946faa7c..45d4873aca74 100644
--- a/drivers/media/i2c/wm8775.c
+++ b/drivers/media/i2c/wm8775.c
@@ -179,6 +179,7 @@ static const struct v4l2_ctrl_ops wm8775_ctrl_ops = {
 static const struct v4l2_subdev_core_ops wm8775_core_ops = {
.log_status = wm8775_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v3 12/19] media/i2c/msp3400-driver: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/msp3400-driver.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/msp3400-driver.c 
b/drivers/media/i2c/msp3400-driver.c
index dcc68ec71732..10837564af8e 100644
--- a/drivers/media/i2c/msp3400-driver.c
+++ b/drivers/media/i2c/msp3400-driver.c
@@ -643,6 +643,7 @@ static const struct v4l2_ctrl_ops msp_ctrl_ops = {
 static const struct v4l2_subdev_core_ops msp_core_ops = {
.log_status = msp_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v3 14/19] media/i2c/saa7115: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/saa7115.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/saa7115.c b/drivers/media/i2c/saa7115.c
index 0eae5f4471e2..c227dc11b136 100644
--- a/drivers/media/i2c/saa7115.c
+++ b/drivers/media/i2c/saa7115.c
@@ -1582,6 +1582,7 @@ static const struct v4l2_ctrl_ops saa711x_ctrl_ops = {
 static const struct v4l2_subdev_core_ops saa711x_core_ops = {
.log_status = saa711x_log_status,
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v3 05/19] media/pci/saa7164-encoder: Implement vivioc_g_def_ext_ctrls

2015-06-12 Thread Ricardo Ribalda Delgado
Callback needed by ioctl VIDIOC_G_DEF_EXT_CTRLS as this driver does not
use the controller framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/pci/saa7164/saa7164-encoder.c | 28 
 1 file changed, 28 insertions(+)

diff --git a/drivers/media/pci/saa7164/saa7164-encoder.c 
b/drivers/media/pci/saa7164/saa7164-encoder.c
index 4434e0f28c26..63840bc0 100644
--- a/drivers/media/pci/saa7164/saa7164-encoder.c
+++ b/drivers/media/pci/saa7164/saa7164-encoder.c
@@ -884,6 +884,33 @@ static int vidioc_queryctrl(struct file *file, void *priv,
return -EINVAL;
 }
 
+static int vidioc_g_def_ext_ctrls(struct file *file, void *priv,
+   struct v4l2_ext_controls *ctrls)
+{
+   struct saa7164_encoder_fh *fh = file-private_data;
+   struct saa7164_port *port = fh-port;
+   int i, err = 0;
+   struct v4l2_queryctrl q;
+
+   if (ctrls-ctrl_class == V4L2_CTRL_CLASS_MPEG) {
+   for (i = 0; i  ctrls-count; i++) {
+   struct v4l2_ext_control *ctrl = ctrls-controls + i;
+
+   q.id = ctrl-id;
+   err = fill_queryctrl(port-encoder_params, q);
+   if (err) {
+   ctrls-error_idx = i;
+   break;
+   }
+   ctrl-value = q.default_value;
+   }
+   return err;
+
+   }
+
+   return -EINVAL;
+}
+
 static int saa7164_encoder_stop_port(struct saa7164_port *port)
 {
struct saa7164_dev *dev = port-dev;
@@ -1317,6 +1344,7 @@ static const struct v4l2_ioctl_ops mpeg_ioctl_ops = {
.vidioc_try_fmt_vid_cap  = vidioc_try_fmt_vid_cap,
.vidioc_s_fmt_vid_cap= vidioc_s_fmt_vid_cap,
.vidioc_g_ext_ctrls  = vidioc_g_ext_ctrls,
+   .vidioc_g_def_ext_ctrls  = vidioc_g_def_ext_ctrls,
.vidioc_s_ext_ctrls  = vidioc_s_ext_ctrls,
.vidioc_try_ext_ctrls= vidioc_try_ext_ctrls,
.vidioc_queryctrl= vidioc_queryctrl,
-- 
2.1.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


[RFC v3 13/19] media/i2c/saa7110: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/saa7110.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/saa7110.c b/drivers/media/i2c/saa7110.c
index 99689ee57d7e..964cc2cf1508 100644
--- a/drivers/media/i2c/saa7110.c
+++ b/drivers/media/i2c/saa7110.c
@@ -359,6 +359,7 @@ static const struct v4l2_ctrl_ops saa7110_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops saa7110_core_ops = {
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


[RFC v3 03/19] videodev2.h: Fix typo in comment

2015-06-12 Thread Ricardo Ribalda Delgado
Referenced file has moved

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 include/uapi/linux/videodev2.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index b9468a3b833e..b059237f0214 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -2272,7 +2272,7 @@ struct v4l2_create_buffers {
 #define VIDIOC_G_DEF_EXT_CTRLS _IOWR('V', 104, struct v4l2_ext_controls)
 
 /* Reminder: when adding new ioctls please add support for them to
-   drivers/media/video/v4l2-compat-ioctl32.c as well! */
+   drivers/media/v4l2-core/v4l2-compat-ioctl32.c as well! */
 
 #define BASE_VIDIOC_PRIVATE192 /* 192-255 are private */
 
-- 
2.1.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


[RFC v3 09/19] media/i2c/bt819: Implement g_def_ext_ctrls core_op

2015-06-12 Thread Ricardo Ribalda Delgado
Via control framework.

Signed-off-by: Ricardo Ribalda Delgado ricardo.riba...@gmail.com
---
 drivers/media/i2c/bt819.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/i2c/bt819.c b/drivers/media/i2c/bt819.c
index 76b334a6a56d..b3e9ac3616b5 100644
--- a/drivers/media/i2c/bt819.c
+++ b/drivers/media/i2c/bt819.c
@@ -381,6 +381,7 @@ static const struct v4l2_ctrl_ops bt819_ctrl_ops = {
 
 static const struct v4l2_subdev_core_ops bt819_core_ops = {
.g_ext_ctrls = v4l2_subdev_g_ext_ctrls,
+   .g_def_ext_ctrls = v4l2_subdev_g_def_ext_ctrls,
.try_ext_ctrls = v4l2_subdev_try_ext_ctrls,
.s_ext_ctrls = v4l2_subdev_s_ext_ctrls,
.g_ctrl = v4l2_subdev_g_ctrl,
-- 
2.1.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


  1   2   >