|
@@ -317,6 +317,18 @@ static int vimc_sen_s_ctrl(struct v4l2_ctrl *ctrl)
|
|
case V4L2_CID_VFLIP:
|
|
case V4L2_CID_VFLIP:
|
|
tpg_s_vflip(&vsen->tpg, ctrl->val);
|
|
tpg_s_vflip(&vsen->tpg, ctrl->val);
|
|
break;
|
|
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:
|
|
default:
|
|
return -EINVAL;
|
|
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_CID_VFLIP, 0, 1, 1, 0);
|
|
v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
|
|
v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
|
|
V4L2_CID_HFLIP, 0, 1, 1, 0);
|
|
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;
|
|
vsen->sd.ctrl_handler = &vsen->hdl;
|
|
if (vsen->hdl.error) {
|
|
if (vsen->hdl.error) {
|
|
ret = vsen->hdl.error;
|
|
ret = vsen->hdl.error;
|