Lines Matching refs:info
125 * @info: M-5MOLS driver data structure
130 int m5mols_do_scenemode(struct m5mols_info *info, u8 mode)
132 struct v4l2_subdev *sd = &info->sd;
139 ret = v4l2_ctrl_s_ctrl(info->lock_3a, 0);
160 if (!ret && is_available_af(info))
162 if (!ret && is_available_af(info))
169 ret = m5mols_set_mode(info, REG_CAPTURE);
181 ret = m5mols_set_mode(info, REG_MONITOR);
186 static int m5mols_3a_lock(struct m5mols_info *info, struct v4l2_ctrl *ctrl)
194 ret = m5mols_write(&info->sd, AE_LOCK, ae_lock ?
201 && info->auto_wb->val) {
204 ret = m5mols_write(&info->sd, AWB_LOCK, awb_lock ?
210 if (!info->ver.af || !af_lock)
214 ret = m5mols_write(&info->sd, AF_EXECUTE, REG_AF_STOP);
219 static int m5mols_set_metering_mode(struct m5mols_info *info, int mode)
235 return m5mols_write(&info->sd, AE_MODE, metering);
238 static int m5mols_set_exposure(struct m5mols_info *info, int exposure)
240 struct v4l2_subdev *sd = &info->sd;
245 info->lock_3a->val &= ~V4L2_LOCK_EXPOSURE;
246 m5mols_3a_lock(info, info->lock_3a);
248 ret = m5mols_set_metering_mode(info, info->metering->val);
254 __func__, info->exposure_bias->val,
255 info->metering->val);
257 return m5mols_write(sd, AE_INDEX, info->exposure_bias->val);
264 info->exposure->val);
267 info->exposure->val);
270 __func__, info->exposure->val);
276 static int m5mols_set_white_balance(struct m5mols_info *info, int val)
290 struct v4l2_subdev *sd = &info->sd;
314 static int m5mols_set_saturation(struct m5mols_info *info, int val)
316 int ret = m5mols_write(&info->sd, MON_CHROMA_LVL, val);
320 return m5mols_write(&info->sd, MON_CHROMA_EN, REG_CHROMA_ON);
323 static int m5mols_set_color_effect(struct m5mols_info *info, int val)
328 struct v4l2_subdev *sd = &info->sd;
365 static int m5mols_set_iso(struct m5mols_info *info, int auto_iso)
367 u32 iso = auto_iso ? 0 : info->iso->val + 1;
369 return m5mols_write(&info->sd, AE_ISO, iso);
372 static int m5mols_set_wdr(struct m5mols_info *info, int wdr)
376 ret = m5mols_write(&info->sd, MON_TONE_CTL, wdr ? 9 : 5);
380 ret = m5mols_set_mode(info, REG_CAPTURE);
384 return m5mols_write(&info->sd, CAPP_WDR_EN, wdr);
387 static int m5mols_set_stabilization(struct m5mols_info *info, int val)
389 struct v4l2_subdev *sd = &info->sd;
403 struct m5mols_info *info = to_m5mols(sd);
408 __func__, ctrl->name, info->isp_ready);
410 if (!info->isp_ready)
419 info->iso->val = status - 1;
429 info->lock_3a->val |= V4L2_LOCK_EXPOSURE;
435 info->lock_3a->val |= V4L2_LOCK_EXPOSURE;
439 info->lock_3a->val |= V4L2_LOCK_EXPOSURE;
450 struct m5mols_info *info = to_m5mols(sd);
451 int last_mode = info->mode;
458 if (!info->isp_ready) {
459 info->ctrl_sync = 0;
466 if (ctrl_mode && ctrl_mode != info->mode) {
467 ret = m5mols_set_mode(info, ctrl_mode);
474 ret = m5mols_3a_lock(info, ctrl);
482 ret = m5mols_set_exposure(info, ctrl->val);
486 ret = m5mols_set_iso(info, ctrl->val);
490 ret = m5mols_set_white_balance(info, ctrl->val);
494 ret = m5mols_set_saturation(info, ctrl->val);
498 ret = m5mols_set_color_effect(info, ctrl->val);
502 ret = m5mols_set_wdr(info, ctrl->val);
506 ret = m5mols_set_stabilization(info, ctrl->val);
514 if (ret == 0 && info->mode != last_mode)
515 ret = m5mols_set_mode(info, last_mode);
539 struct m5mols_info *info = to_m5mols(sd);
549 zoom_step = is_manufacturer(info, REG_SAMSUNG_OPTICS) ? 31 : 1;
550 v4l2_ctrl_handler_init(&info->handle, 20);
552 info->auto_wb = v4l2_ctrl_new_std_menu(&info->handle,
557 info->auto_exposure = v4l2_ctrl_new_std_menu(&info->handle,
561 info->exposure = v4l2_ctrl_new_std(&info->handle,
565 info->exposure_bias = v4l2_ctrl_new_int_menu(&info->handle,
571 info->metering = v4l2_ctrl_new_std_menu(&info->handle,
576 info->auto_iso = v4l2_ctrl_new_std_menu(&info->handle, &m5mols_ctrl_ops,
579 info->iso = v4l2_ctrl_new_int_menu(&info->handle, &m5mols_ctrl_ops,
583 info->saturation = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops,
586 info->zoom = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops,
589 info->colorfx = v4l2_ctrl_new_std_menu(&info->handle, &m5mols_ctrl_ops,
592 info->wdr = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops,
595 info->stabilization = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops,
598 info->jpeg_quality = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops,
601 info->lock_3a = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops,
604 if (info->handle.error) {
605 int ret = info->handle.error;
607 v4l2_ctrl_handler_free(&info->handle);
611 v4l2_ctrl_auto_cluster(4, &info->auto_exposure, 1, false);
612 info->auto_iso->flags |= V4L2_CTRL_FLAG_VOLATILE |
614 v4l2_ctrl_auto_cluster(2, &info->auto_iso, 0, false);
616 info->lock_3a->flags |= V4L2_CTRL_FLAG_VOLATILE;
618 m5mols_set_ctrl_mode(info->auto_exposure, REG_PARAMETER);
619 m5mols_set_ctrl_mode(info->auto_wb, REG_PARAMETER);
620 m5mols_set_ctrl_mode(info->colorfx, REG_MONITOR);
622 sd->ctrl_handler = &info->handle;