Signed-off-by: Volokh Konstantin <volok...@gmail.com>
---
 drivers/staging/media/go7007/go7007-v4l2.c |   95 ++++++++++++++++++++++++++++
 drivers/staging/media/go7007/go7007.h      |   18 +++++
 2 files changed, 113 insertions(+), 0 deletions(-)

diff --git a/drivers/staging/media/go7007/go7007-v4l2.c 
b/drivers/staging/media/go7007/go7007-v4l2.c
index 91e5572..c4d0ca2 100644
--- a/drivers/staging/media/go7007/go7007-v4l2.c
+++ b/drivers/staging/media/go7007/go7007-v4l2.c
@@ -1137,6 +1137,101 @@ static struct video_device go7007_template = {
        .tvnorms        = V4L2_STD_ALL,
 };
 
+static struct v4l2_ctrl_config md_configs[] = {
+       {
+               .ops = &go7007_ctrl_ops
+               ,.id = V4L2_CID_USER_MODET_REGION_NUMBER
+               ,.name = "Region MD"
+               ,.type = V4L2_CTRL_TYPE_INTEGER
+               ,.min = 0
+               ,.max = 3
+               ,.step = 1
+               ,.def = 0
+       }
+       ,{
+               .ops = &go7007_ctrl_ops
+               ,.id = V4L2_CID_USER_MODET_PIXEL_THRESOLD
+               ,.name = "Pixel Thresold"
+               ,.type = V4L2_CTRL_TYPE_INTEGER
+               ,.min = 0
+               ,.max = 65535
+               ,.step = 1
+               ,.def = 32767
+       }
+       ,{
+               .ops = &go7007_ctrl_ops
+               ,.id = V4L2_CID_USER_MODET_MOTION_THRESOLD
+               ,.name = "Motion Thresold"
+               ,.type = V4L2_CTRL_TYPE_INTEGER
+               ,.min = 0
+               ,.max = 65535
+               ,.step = 1
+               ,.def = 32767
+       }
+       ,{
+               .ops = &go7007_ctrl_ops
+               ,.id = V4L2_CID_USER_MODET_TRIGGER
+               ,.name = "Trigger"
+               ,.type = V4L2_CTRL_TYPE_INTEGER
+               ,.min = 0
+               ,.max = 65535
+               ,.step = 1
+               ,.def = 32767
+       }
+       ,{
+               .ops = &go7007_ctrl_ops
+               ,.id = V4L2_CID_USER_MODET_CLIP_LEFT
+               ,.name = "Left of Region"
+               ,.type = V4L2_CTRL_TYPE_INTEGER
+               ,.min = 0
+               ,.step = 1
+               ,.def = 0
+       }
+       ,{
+               .ops = &go7007_ctrl_ops
+               ,.id = V4L2_CID_USER_MODET_CLIP_TOP
+               ,.name = "Top of Region"
+               ,.type = V4L2_CTRL_TYPE_INTEGER
+               ,.min = 0
+               ,.step = 1
+               ,.def = 0
+       }
+       ,{
+               .ops = &go7007_ctrl_ops
+               ,.id = V4L2_CID_USER_MODET_CLIP_WIDTH
+               ,.name = "Width of Region"
+               ,.type = V4L2_CTRL_TYPE_INTEGER
+               ,.min = 0
+               ,.step = 1
+               ,.def = 0
+       }
+       ,{
+               .ops = &go7007_ctrl_ops
+               ,.id = V4L2_CID_USER_MODET_CLIP_HEIGHT
+               ,.name = "Height of Region"
+               ,.type = V4L2_CTRL_TYPE_INTEGER
+               ,.min = 0
+               ,.step = 1
+               ,.def = 0
+       }
+       ,{
+               .ops = &go7007_ctrl_ops
+               ,.id = V4L2_CID_USER_MODET_REGION_CONTROL
+               ,.name = "Region Control"
+               ,.type = V4L2_CTRL_TYPE_MENU
+               ,.min = rcAdd
+               ,.max = rcClear
+               ,.step = 0
+               ,.def = rcClear
+               ,.qmenu = (const char * const[]){
+                       "Add"
+                       ,"Delete"
+                       ,"Clear"
+                       ,NULL
+               }
+       }
+};
+
 int go7007_v4l2_ctrl_init(struct go7007 *go)
 {
        struct v4l2_ctrl_handler *hdl = &go->hdl;
diff --git a/drivers/staging/media/go7007/go7007.h 
b/drivers/staging/media/go7007/go7007.h
index 54b9897..fcb45ea 100644
--- a/drivers/staging/media/go7007/go7007.h
+++ b/drivers/staging/media/go7007/go7007.h
@@ -38,3 +38,21 @@ struct go7007_md_region {
                                        struct go7007_md_params)
 #define        GO7007IOC_S_MD_REGION   _IOW('V', BASE_VIDIOC_PRIVATE + 8, \
                                        struct go7007_md_region)
+
+#define V4L2_CID_USER_GO7007_BASE                      (V4L2_CID_USER_BASE + 
0x1000)
+#define V4L2_CID_USER_MODET_REGION_NUMBER              
(V4L2_CID_USER_GO7007_BASE + 0x01)
+#define V4L2_CID_USER_MODET_PIXEL_THRESOLD             
(V4L2_CID_USER_GO7007_BASE + 0x02)
+#define V4L2_CID_USER_MODET_MOTION_THRESOLD            
(V4L2_CID_USER_GO7007_BASE + 0x03)
+#define V4L2_CID_USER_MODET_TRIGGER                    
(V4L2_CID_USER_GO7007_BASE + 0x04)
+#define V4L2_CID_USER_MODET_REGION_CONTROL             
(V4L2_CID_USER_GO7007_BASE + 0x05)
+#define V4L2_CID_USER_MODET_CLIP_LEFT                  
(V4L2_CID_USER_GO7007_BASE + 0x06)
+#define V4L2_CID_USER_MODET_CLIP_TOP                   
(V4L2_CID_USER_GO7007_BASE + 0x07)
+#define V4L2_CID_USER_MODET_CLIP_WIDTH                 
(V4L2_CID_USER_GO7007_BASE + 0x08)
+#define V4L2_CID_USER_MODET_CLIP_HEIGHT                        
(V4L2_CID_USER_GO7007_BASE + 0x09)
+#define V4L2_CID_USER_MODET_ALARM                      
(V4L2_CID_USER_GO7007_BASE + 0x09)
+
+enum RegionControl {
+       rcAdd = 0
+       ,rcDelete = 1
+       ,rcClear = 2
+};
-- 
1.7.7.6

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

Reply via email to