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