OSDN Git Service

media: vimc: implement basic v4l2-ctrls
authorGuilherme Gallo <gagallo7@gmail.com>
Tue, 4 Sep 2018 01:45:59 +0000 (21:45 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Tue, 11 Sep 2018 14:51:08 +0000 (10:51 -0400)
Add brightness, contrast, hue and saturation controls in vimc-sensor

Signed-off-by: Guilherme Alcarde Gallo <gagallo7@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/vimc/vimc-sensor.c

index b2b8931..edf4c85 100644 (file)
@@ -317,6 +317,18 @@ static int vimc_sen_s_ctrl(struct v4l2_ctrl *ctrl)
        case V4L2_CID_VFLIP:
                tpg_s_vflip(&vsen->tpg, ctrl->val);
                break;
+       case V4L2_CID_BRIGHTNESS:
+               tpg_s_brightness(&vsen->tpg, ctrl->val);
+               break;
+       case V4L2_CID_CONTRAST:
+               tpg_s_contrast(&vsen->tpg, ctrl->val);
+               break;
+       case V4L2_CID_HUE:
+               tpg_s_hue(&vsen->tpg, ctrl->val);
+               break;
+       case V4L2_CID_SATURATION:
+               tpg_s_saturation(&vsen->tpg, ctrl->val);
+               break;
        default:
                return -EINVAL;
        }
@@ -378,6 +390,14 @@ static int vimc_sen_comp_bind(struct device *comp, struct device *master,
                          V4L2_CID_VFLIP, 0, 1, 1, 0);
        v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
                          V4L2_CID_HFLIP, 0, 1, 1, 0);
+       v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
+                         V4L2_CID_BRIGHTNESS, 0, 255, 1, 128);
+       v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
+                         V4L2_CID_CONTRAST, 0, 255, 1, 128);
+       v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
+                         V4L2_CID_HUE, -128, 127, 1, 0);
+       v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
+                         V4L2_CID_SATURATION, 0, 255, 1, 128);
        vsen->sd.ctrl_handler = &vsen->hdl;
        if (vsen->hdl.error) {
                ret = vsen->hdl.error;