[media] vivi: Add an integer menu test control
authorSakari Ailus <sakari.ailus@iki.fi>
Fri, 5 Aug 2011 09:38:05 +0000 (06:38 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 10 Apr 2012 17:59:59 +0000 (14:59 -0300)
Add an integer menu test control for the vivi driver.

Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/vivi.c

index b456d3ed11978c40e4cbf0473c0ab4b462f73004..ff39eb2f2d7b19204668e305cc8e8271afe8d0cf 100644 (file)
@@ -177,6 +177,7 @@ struct vivi_dev {
        struct v4l2_ctrl           *menu;
        struct v4l2_ctrl           *string;
        struct v4l2_ctrl           *bitmask;
+       struct v4l2_ctrl           *int_menu;
 
        spinlock_t                 slock;
        struct mutex               mutex;
@@ -503,6 +504,10 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf)
                        dev->boolean->cur.val,
                        dev->menu->qmenu[dev->menu->cur.val],
                        dev->string->cur.string);
+       snprintf(str, sizeof(str), " integer_menu %lld, value %d ",
+                       dev->int_menu->qmenu_int[dev->int_menu->cur.val],
+                       dev->int_menu->cur.val);
+       gen_text(dev, vbuf, line++ * 16, 16, str);
        mutex_unlock(&dev->ctrl_handler.lock);
        gen_text(dev, vbuf, line++ * 16, 16, str);
        if (dev->button_pressed) {
@@ -1158,6 +1163,22 @@ static const struct v4l2_ctrl_config vivi_ctrl_bitmask = {
        .step = 0,
 };
 
+static const s64 vivi_ctrl_int_menu_values[] = {
+       1, 1, 2, 3, 5, 8, 13, 21, 42,
+};
+
+static const struct v4l2_ctrl_config vivi_ctrl_int_menu = {
+       .ops = &vivi_ctrl_ops,
+       .id = VIVI_CID_CUSTOM_BASE + 7,
+       .name = "Integer menu",
+       .type = V4L2_CTRL_TYPE_INTEGER_MENU,
+       .min = 1,
+       .max = 8,
+       .def = 4,
+       .menu_skip_mask = 0x02,
+       .qmenu_int = vivi_ctrl_int_menu_values,
+};
+
 static const struct v4l2_file_operations vivi_fops = {
        .owner          = THIS_MODULE,
        .open           = v4l2_fh_open,
@@ -1268,6 +1289,7 @@ static int __init vivi_create_instance(int inst)
        dev->menu = v4l2_ctrl_new_custom(hdl, &vivi_ctrl_menu, NULL);
        dev->string = v4l2_ctrl_new_custom(hdl, &vivi_ctrl_string, NULL);
        dev->bitmask = v4l2_ctrl_new_custom(hdl, &vivi_ctrl_bitmask, NULL);
+       dev->int_menu = v4l2_ctrl_new_custom(hdl, &vivi_ctrl_int_menu, NULL);
        if (hdl->error) {
                ret = hdl->error;
                goto unreg_dev;