New IOCTLs added to the V4L2 framework according to the
comments received from the open source.

Signed-off-by: Brijesh Jadav <[EMAIL PROTECTED]>
                Hari Nagalla <[EMAIL PROTECTED]>
                Hardik Shah <[EMAIL PROTECTED]>
                Manjunath Hadli <[EMAIL PROTECTED]>
                R Sivaraj <[EMAIL PROTECTED]>
                Vaibhav Hiremath <[EMAIL PROTECTED]>
---
 drivers/media/video/v4l2-ioctl.c |   19 +++++++++++++++++++
 include/linux/videodev2.h        |   18 +++++++++++++++++-
 include/media/v4l2-ioctl.h       |    4 ++++
 3 files changed, 40 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c
index 140ef92..39d1d6d 100644
--- a/drivers/media/video/v4l2-ioctl.c
+++ b/drivers/media/video/v4l2-ioctl.c
@@ -269,6 +269,8 @@ static const char *v4l2_ioctls[] = {
        [_IOC_NR(VIDIOC_G_CHIP_IDENT)]     = "VIDIOC_G_CHIP_IDENT",
        [_IOC_NR(VIDIOC_S_HW_FREQ_SEEK)]   = "VIDIOC_S_HW_FREQ_SEEK",
 #endif
+       [_IOC_NR(VIDIOC_S_COLOR_SPACE_CONV)]   = "VIDIOC_S_COLOR_SPACE_CONV",
+       [_IOC_NR(VIDIOC_G_COLOR_SPACE_CONV)]   = "VIDIOC_G_COLOR_SPACE_CONV",
 };
 #define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
 
@@ -1761,6 +1763,23 @@ static int __video_do_ioctl(struct inode *inode, struct 
file *file,
                ret = ops->vidioc_s_hw_freq_seek(file, fh, p);
                break;
        }
+       /*---------------Color space conversion------------------------------*/
+       case VIDIOC_S_COLOR_SPACE_CONV:
+       {
+               struct v4l2_color_space_conversion *p = arg;
+               if (!ops->vidioc_s_color_space_conv)
+                       break;
+               ret = ops->vidioc_s_color_space_conv(file, fh, p);
+               break;
+       }
+       case VIDIOC_G_COLOR_SPACE_CONV:
+       {
+               struct v4l2_color_space_conversion *p = arg;
+               if (!ops->vidioc_g_color_space_conv)
+                       break;
+               ret = ops->vidioc_g_color_space_conv(file, fh, p);
+               break;
+       }
        default:
        {
                if (!ops->vidioc_default)
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 303d93f..3112cc0 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -869,8 +869,10 @@ enum v4l2_power_line_frequency {
 #define V4L2_CID_BACKLIGHT_COMPENSATION        (V4L2_CID_BASE+28)
 #define V4L2_CID_CHROMA_AGC                     (V4L2_CID_BASE+29)
 #define V4L2_CID_COLOR_KILLER                   (V4L2_CID_BASE+30)
+#define V4L2_CID_ROTATION                      (V4L2_CID_BASE+31)
+#define V4L2_CID_BG_COLOR                      (V4L2_CID_BASE+32)
 /* last CID + 1 */
-#define V4L2_CID_LASTP1                         (V4L2_CID_BASE+31)
+#define V4L2_CID_LASTP1                         (V4L2_CID_BASE+33)
 
 /*  MPEG-class control IDs defined by V4L2 */
 #define V4L2_CID_MPEG_BASE                     (V4L2_CTRL_CLASS_MPEG | 0x900)
@@ -1150,6 +1152,18 @@ struct v4l2_hw_freq_seek {
 };
 
 /*
+ * Color conversion
+ * User needs to pass pointer to color conversion matrix
+ * defined by hardware
+ */
+struct v4l2_color_space_conversion {
+       __s32 coefficients[3][3];
+       __s32 const_factor;
+       __s32 input_offs[3];
+       __s32 output_offs[3];
+};
+
+/*
  *     A U D I O
  */
 struct v4l2_audio {
@@ -1425,6 +1439,8 @@ struct v4l2_chip_ident {
 #define VIDIOC_G_CHIP_IDENT     _IOWR('V', 81, struct v4l2_chip_ident)
 #endif
 #define VIDIOC_S_HW_FREQ_SEEK   _IOW('V', 82, struct v4l2_hw_freq_seek)
+#define VIDIOC_S_COLOR_SPACE_CONV       _IOW('V', 83, struct 
v4l2_color_space_conversion)
+#define VIDIOC_G_COLOR_SPACE_CONV       _IOR('V', 84, struct 
v4l2_color_space_conversion)
 
 #ifdef __OLD_VIDIOC_
 /* for compatibility, will go away some day */
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
index dc64046..62771af 100644
--- a/include/media/v4l2-ioctl.h
+++ b/include/media/v4l2-ioctl.h
@@ -240,6 +240,10 @@ struct v4l2_ioctl_ops {
        /* For other private ioctls */
        int (*vidioc_default)          (struct file *file, void *fh,
                                        int cmd, void *arg);
+       int (*vidioc_s_color_space_conv)     (struct file *file, void *fh,
+                                       struct v4l2_color_space_conversion *a);
+       int (*vidioc_g_color_space_conv)     (struct file *file, void *fh,
+                                       struct v4l2_color_space_conversion *a);
 };
 
 
-- 
1.5.6

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to