Lines Matching refs:dev_vcm
152 static int __fp5510_power_on(struct fp5510_device *dev_vcm) in __fp5510_power_on() argument
154 if (!IS_ERR(dev_vcm->pwdn_gpio)) { in __fp5510_power_on()
155 gpiod_set_value_cansleep(dev_vcm->pwdn_gpio, 1); in __fp5510_power_on()
156 dev_err(dev_vcm->sd.dev, "power on success!\n"); in __fp5510_power_on()
162 static int __fp5510_power_off(struct fp5510_device *dev_vcm) in __fp5510_power_off() argument
164 if (!IS_ERR(dev_vcm->pwdn_gpio)) { in __fp5510_power_off()
165 gpiod_set_value_cansleep(dev_vcm->pwdn_gpio, 0); in __fp5510_power_off()
166 dev_err(dev_vcm->sd.dev, "power off success!\n"); in __fp5510_power_off()
254 static unsigned int fp5510_move_time(struct fp5510_device *dev_vcm, in fp5510_move_time() argument
265 struct i2c_client *client = v4l2_get_subdevdata(&dev_vcm->sd); in fp5510_move_time()
267 if (dev_vcm->esc_enable == ENABLE || in fp5510_move_time()
268 dev_vcm->tsc_enable == ENABLE) { in fp5510_move_time()
269 step_case = dev_vcm->mclk & 0x3; in fp5510_move_time()
273 if (fp5510_dlc_time_table[i].t_src == dev_vcm->t_src) in fp5510_move_time()
277 step_case = dev_vcm->step_mode & 0x3; in fp5510_move_time()
281 if (fp5510_lsc_time_table[i].t_src == dev_vcm->t_src) in fp5510_move_time()
312 codes_per_step = (dev_vcm->step_mode & 0x0c) >> 2; in fp5510_move_time()
316 if (dev_vcm->esc_enable == ENABLE || dev_vcm->tsc_enable == ENABLE) in fp5510_move_time()
321 if (dev_vcm->tsc_enable == ENABLE) { in fp5510_move_time()
323 } else if (dev_vcm->esc_enable == ENABLE) { in fp5510_move_time()
336 static int fp5510_get_pos(struct fp5510_device *dev_vcm, in fp5510_get_pos() argument
339 struct i2c_client *client = v4l2_get_subdevdata(&dev_vcm->sd); in fp5510_get_pos()
351 if (abs_step <= dev_vcm->start_current) in fp5510_get_pos()
353 else if ((abs_step > dev_vcm->start_current) && in fp5510_get_pos()
354 (abs_step <= dev_vcm->rated_current)) in fp5510_get_pos()
355 abs_step = (dev_vcm->rated_current - abs_step) / dev_vcm->step; in fp5510_get_pos()
369 static int fp5510_set_pos(struct fp5510_device *dev_vcm, in fp5510_set_pos() argument
376 struct i2c_client *client = v4l2_get_subdevdata(&dev_vcm->sd); in fp5510_set_pos()
379 position = dev_vcm->start_current; in fp5510_set_pos()
381 position = dev_vcm->start_current + in fp5510_set_pos()
382 (dev_vcm->step * (VCMDRV_MAX_LOG - dest_pos)); in fp5510_set_pos()
389 dev_vcm->current_lens_pos = position; in fp5510_set_pos()
390 dev_vcm->current_related_pos = dest_pos; in fp5510_set_pos()
391 msb = (0x00U | ((dev_vcm->current_lens_pos & 0x3F0U) >> 4U)); in fp5510_set_pos()
392 lsb = (((dev_vcm->current_lens_pos & 0x0FU) << 4U) | in fp5510_set_pos()
393 dev_vcm->step_mode); in fp5510_set_pos()
407 struct fp5510_device *dev_vcm = to_fp5510_vcm(ctrl); in fp5510_get_ctrl() local
410 return fp5510_get_pos(dev_vcm, &ctrl->val); in fp5510_get_ctrl()
417 struct fp5510_device *dev_vcm = to_fp5510_vcm(ctrl); in fp5510_set_ctrl() local
418 struct i2c_client *client = v4l2_get_subdevdata(&dev_vcm->sd); in fp5510_set_ctrl()
432 move_pos = dev_vcm->current_related_pos - dest_pos; in fp5510_set_ctrl()
436 ret = fp5510_set_pos(dev_vcm, dest_pos); in fp5510_set_ctrl()
438 dev_vcm->move_ms = in fp5510_set_ctrl()
439 ((dev_vcm->vcm_movefull_t * in fp5510_set_ctrl()
443 dev_vcm->start_move_tv = ns_to_kernel_old_timeval(ktime_get_ns()); in fp5510_set_ctrl()
444 mv_us = dev_vcm->start_move_tv.tv_usec + in fp5510_set_ctrl()
445 dev_vcm->move_ms * 1000; in fp5510_set_ctrl()
447 dev_vcm->end_move_tv.tv_sec = in fp5510_set_ctrl()
448 dev_vcm->start_move_tv.tv_sec + 1; in fp5510_set_ctrl()
449 dev_vcm->end_move_tv.tv_usec = mv_us - 1000000; in fp5510_set_ctrl()
451 dev_vcm->end_move_tv.tv_sec = in fp5510_set_ctrl()
452 dev_vcm->start_move_tv.tv_sec; in fp5510_set_ctrl()
453 dev_vcm->end_move_tv.tv_usec = mv_us; in fp5510_set_ctrl()
490 static void fp5510_update_vcm_cfg(struct fp5510_device *dev_vcm) in fp5510_update_vcm_cfg() argument
492 struct i2c_client *client = v4l2_get_subdevdata(&dev_vcm->sd); in fp5510_update_vcm_cfg()
495 if (dev_vcm->max_ma == 0) { in fp5510_update_vcm_cfg()
500 cur_dist = dev_vcm->vcm_cfg.rated_ma - dev_vcm->vcm_cfg.start_ma; in fp5510_update_vcm_cfg()
501 cur_dist = cur_dist * FP5510_MAX_REG / dev_vcm->max_ma; in fp5510_update_vcm_cfg()
502 dev_vcm->step = (cur_dist + (VCMDRV_MAX_LOG - 1)) / VCMDRV_MAX_LOG; in fp5510_update_vcm_cfg()
503 dev_vcm->start_current = dev_vcm->vcm_cfg.start_ma * in fp5510_update_vcm_cfg()
504 FP5510_MAX_REG / dev_vcm->max_ma; in fp5510_update_vcm_cfg()
505 dev_vcm->rated_current = dev_vcm->start_current + in fp5510_update_vcm_cfg()
506 VCMDRV_MAX_LOG * dev_vcm->step; in fp5510_update_vcm_cfg()
507 dev_vcm->step_mode = dev_vcm->vcm_cfg.step_mode; in fp5510_update_vcm_cfg()
511 dev_vcm->vcm_cfg.start_ma, in fp5510_update_vcm_cfg()
512 dev_vcm->vcm_cfg.rated_ma, in fp5510_update_vcm_cfg()
513 dev_vcm->vcm_cfg.step_mode, in fp5510_update_vcm_cfg()
514 dev_vcm->max_ma); in fp5510_update_vcm_cfg()
632 static int fp5510_init_controls(struct fp5510_device *dev_vcm) in fp5510_init_controls() argument
634 struct v4l2_ctrl_handler *hdl = &dev_vcm->ctrls_vcm; in fp5510_init_controls()
643 dev_err(dev_vcm->sd.dev, "%s fail error: 0x%x\n", in fp5510_init_controls()
645 dev_vcm->sd.ctrl_handler = hdl; in fp5510_init_controls()