Lines Matching refs:info
133 int m5mols_do_scenemode(struct m5mols_info *info, u8 mode) in m5mols_do_scenemode() argument
135 struct v4l2_subdev *sd = &info->sd; in m5mols_do_scenemode()
142 ret = v4l2_ctrl_s_ctrl(info->lock_3a, 0); in m5mols_do_scenemode()
163 if (!ret && is_available_af(info)) in m5mols_do_scenemode()
165 if (!ret && is_available_af(info)) in m5mols_do_scenemode()
172 ret = m5mols_set_mode(info, REG_CAPTURE); in m5mols_do_scenemode()
184 ret = m5mols_set_mode(info, REG_MONITOR); in m5mols_do_scenemode()
189 static int m5mols_3a_lock(struct m5mols_info *info, struct v4l2_ctrl *ctrl) in m5mols_3a_lock() argument
197 ret = m5mols_write(&info->sd, AE_LOCK, ae_lock ? in m5mols_3a_lock()
204 && info->auto_wb->val) { in m5mols_3a_lock()
207 ret = m5mols_write(&info->sd, AWB_LOCK, awb_lock ? in m5mols_3a_lock()
213 if (!info->ver.af || !af_lock) in m5mols_3a_lock()
217 ret = m5mols_write(&info->sd, AF_EXECUTE, REG_AF_STOP); in m5mols_3a_lock()
222 static int m5mols_set_metering_mode(struct m5mols_info *info, int mode) in m5mols_set_metering_mode() argument
238 return m5mols_write(&info->sd, AE_MODE, metering); in m5mols_set_metering_mode()
241 static int m5mols_set_exposure(struct m5mols_info *info, int exposure) in m5mols_set_exposure() argument
243 struct v4l2_subdev *sd = &info->sd; in m5mols_set_exposure()
248 info->lock_3a->val &= ~V4L2_LOCK_EXPOSURE; in m5mols_set_exposure()
249 m5mols_3a_lock(info, info->lock_3a); in m5mols_set_exposure()
251 ret = m5mols_set_metering_mode(info, info->metering->val); in m5mols_set_exposure()
257 __func__, info->exposure_bias->val, in m5mols_set_exposure()
258 info->metering->val); in m5mols_set_exposure()
260 return m5mols_write(sd, AE_INDEX, info->exposure_bias->val); in m5mols_set_exposure()
267 info->exposure->val); in m5mols_set_exposure()
270 info->exposure->val); in m5mols_set_exposure()
273 __func__, info->exposure->val); in m5mols_set_exposure()
279 static int m5mols_set_white_balance(struct m5mols_info *info, int val) in m5mols_set_white_balance() argument
293 struct v4l2_subdev *sd = &info->sd; in m5mols_set_white_balance()
317 static int m5mols_set_saturation(struct m5mols_info *info, int val) in m5mols_set_saturation() argument
319 int ret = m5mols_write(&info->sd, MON_CHROMA_LVL, val); in m5mols_set_saturation()
323 return m5mols_write(&info->sd, MON_CHROMA_EN, REG_CHROMA_ON); in m5mols_set_saturation()
326 static int m5mols_set_color_effect(struct m5mols_info *info, int val) in m5mols_set_color_effect() argument
331 struct v4l2_subdev *sd = &info->sd; in m5mols_set_color_effect()
368 static int m5mols_set_iso(struct m5mols_info *info, int auto_iso) in m5mols_set_iso() argument
370 u32 iso = auto_iso ? 0 : info->iso->val + 1; in m5mols_set_iso()
372 return m5mols_write(&info->sd, AE_ISO, iso); in m5mols_set_iso()
375 static int m5mols_set_wdr(struct m5mols_info *info, int wdr) in m5mols_set_wdr() argument
379 ret = m5mols_write(&info->sd, MON_TONE_CTL, wdr ? 9 : 5); in m5mols_set_wdr()
383 ret = m5mols_set_mode(info, REG_CAPTURE); in m5mols_set_wdr()
387 return m5mols_write(&info->sd, CAPP_WDR_EN, wdr); in m5mols_set_wdr()
390 static int m5mols_set_stabilization(struct m5mols_info *info, int val) in m5mols_set_stabilization() argument
392 struct v4l2_subdev *sd = &info->sd; in m5mols_set_stabilization()
406 struct m5mols_info *info = to_m5mols(sd); in m5mols_g_volatile_ctrl() local
411 __func__, ctrl->name, info->isp_ready); in m5mols_g_volatile_ctrl()
413 if (!info->isp_ready) in m5mols_g_volatile_ctrl()
422 info->iso->val = status - 1; in m5mols_g_volatile_ctrl()
432 info->lock_3a->val |= V4L2_LOCK_EXPOSURE; in m5mols_g_volatile_ctrl()
438 info->lock_3a->val |= V4L2_LOCK_EXPOSURE; in m5mols_g_volatile_ctrl()
442 info->lock_3a->val |= V4L2_LOCK_EXPOSURE; in m5mols_g_volatile_ctrl()
453 struct m5mols_info *info = to_m5mols(sd); in m5mols_s_ctrl() local
454 int last_mode = info->mode; in m5mols_s_ctrl()
461 if (!info->isp_ready) { in m5mols_s_ctrl()
462 info->ctrl_sync = 0; in m5mols_s_ctrl()
469 if (ctrl_mode && ctrl_mode != info->mode) { in m5mols_s_ctrl()
470 ret = m5mols_set_mode(info, ctrl_mode); in m5mols_s_ctrl()
477 ret = m5mols_3a_lock(info, ctrl); in m5mols_s_ctrl()
485 ret = m5mols_set_exposure(info, ctrl->val); in m5mols_s_ctrl()
489 ret = m5mols_set_iso(info, ctrl->val); in m5mols_s_ctrl()
493 ret = m5mols_set_white_balance(info, ctrl->val); in m5mols_s_ctrl()
497 ret = m5mols_set_saturation(info, ctrl->val); in m5mols_s_ctrl()
501 ret = m5mols_set_color_effect(info, ctrl->val); in m5mols_s_ctrl()
505 ret = m5mols_set_wdr(info, ctrl->val); in m5mols_s_ctrl()
509 ret = m5mols_set_stabilization(info, ctrl->val); in m5mols_s_ctrl()
517 if (ret == 0 && info->mode != last_mode) in m5mols_s_ctrl()
518 ret = m5mols_set_mode(info, last_mode); in m5mols_s_ctrl()
542 struct m5mols_info *info = to_m5mols(sd); in m5mols_init_controls() local
552 zoom_step = is_manufacturer(info, REG_SAMSUNG_OPTICS) ? 31 : 1; in m5mols_init_controls()
553 v4l2_ctrl_handler_init(&info->handle, 20); in m5mols_init_controls()
555 info->auto_wb = v4l2_ctrl_new_std_menu(&info->handle, in m5mols_init_controls()
560 info->auto_exposure = v4l2_ctrl_new_std_menu(&info->handle, in m5mols_init_controls()
564 info->exposure = v4l2_ctrl_new_std(&info->handle, in m5mols_init_controls()
568 info->exposure_bias = v4l2_ctrl_new_int_menu(&info->handle, in m5mols_init_controls()
574 info->metering = v4l2_ctrl_new_std_menu(&info->handle, in m5mols_init_controls()
579 info->auto_iso = v4l2_ctrl_new_std_menu(&info->handle, &m5mols_ctrl_ops, in m5mols_init_controls()
582 info->iso = v4l2_ctrl_new_int_menu(&info->handle, &m5mols_ctrl_ops, in m5mols_init_controls()
586 info->saturation = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops, in m5mols_init_controls()
589 info->zoom = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops, in m5mols_init_controls()
592 info->colorfx = v4l2_ctrl_new_std_menu(&info->handle, &m5mols_ctrl_ops, in m5mols_init_controls()
595 info->wdr = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops, in m5mols_init_controls()
598 info->stabilization = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops, in m5mols_init_controls()
601 info->jpeg_quality = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops, in m5mols_init_controls()
604 info->lock_3a = v4l2_ctrl_new_std(&info->handle, &m5mols_ctrl_ops, in m5mols_init_controls()
607 if (info->handle.error) { in m5mols_init_controls()
608 int ret = info->handle.error; in m5mols_init_controls()
610 v4l2_ctrl_handler_free(&info->handle); in m5mols_init_controls()
614 v4l2_ctrl_auto_cluster(4, &info->auto_exposure, 1, false); in m5mols_init_controls()
615 info->auto_iso->flags |= V4L2_CTRL_FLAG_VOLATILE | in m5mols_init_controls()
617 v4l2_ctrl_auto_cluster(2, &info->auto_iso, 0, false); in m5mols_init_controls()
619 info->lock_3a->flags |= V4L2_CTRL_FLAG_VOLATILE; in m5mols_init_controls()
621 m5mols_set_ctrl_mode(info->auto_exposure, REG_PARAMETER); in m5mols_init_controls()
622 m5mols_set_ctrl_mode(info->auto_wb, REG_PARAMETER); in m5mols_init_controls()
623 m5mols_set_ctrl_mode(info->colorfx, REG_MONITOR); in m5mols_init_controls()
625 sd->ctrl_handler = &info->handle; in m5mols_init_controls()