Lines Matching refs:aw8601_dev

521 static void aw8601_subdev_cleanup(struct aw8601_device *aw8601_dev)  in aw8601_subdev_cleanup()  argument
523 v4l2_device_unregister_subdev(&aw8601_dev->sd); in aw8601_subdev_cleanup()
524 v4l2_device_unregister(&aw8601_dev->vdev); in aw8601_subdev_cleanup()
525 v4l2_ctrl_handler_free(&aw8601_dev->ctrls_vcm); in aw8601_subdev_cleanup()
526 media_entity_cleanup(&aw8601_dev->sd.entity); in aw8601_subdev_cleanup()
550 struct aw8601_device *aw8601_dev; in aw8601_probe() local
612 aw8601_dev = devm_kzalloc(&client->dev, sizeof(*aw8601_dev), in aw8601_probe()
614 if (aw8601_dev == NULL) in aw8601_probe()
618 &aw8601_dev->module_index); in aw8601_probe()
620 &aw8601_dev->module_facing); in aw8601_probe()
627 v4l2_i2c_subdev_init(&aw8601_dev->sd, client, &aw8601_ops); in aw8601_probe()
628 aw8601_dev->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; in aw8601_probe()
629 aw8601_dev->sd.internal_ops = &aw8601_int_ops; in aw8601_probe()
631 aw8601_dev->max_logicalpos = VCMDRV_MAX_LOG; in aw8601_probe()
632 ret = aw8601_init_controls(aw8601_dev); in aw8601_probe()
636 ret = media_entity_pads_init(&aw8601_dev->sd.entity, 0, NULL); in aw8601_probe()
640 sd = &aw8601_dev->sd; in aw8601_probe()
644 if (strcmp(aw8601_dev->module_facing, "back") == 0) in aw8601_probe()
650 aw8601_dev->module_index, facing, in aw8601_probe()
656 aw8601_dev->max_ma = max_ma; in aw8601_probe()
657 aw8601_dev->vcm_cfg.start_ma = start_ma; in aw8601_probe()
658 aw8601_dev->vcm_cfg.rated_ma = rated_ma; in aw8601_probe()
659 aw8601_dev->vcm_cfg.step_mode = step_mode; in aw8601_probe()
660 aw8601_update_vcm_cfg(aw8601_dev); in aw8601_probe()
661 aw8601_dev->move_us = 0; in aw8601_probe()
662 aw8601_dev->current_related_pos = aw8601_dev->max_logicalpos; in aw8601_probe()
663 aw8601_dev->start_move_tv = ns_to_kernel_old_timeval(ktime_get_ns()); in aw8601_probe()
664 aw8601_dev->end_move_tv = ns_to_kernel_old_timeval(ktime_get_ns()); in aw8601_probe()
666 aw8601_dev->t_src = t_src; in aw8601_probe()
667 aw8601_dev->t_div = t_div; in aw8601_probe()
669 aw8601_dev->vcm_movefull_t = in aw8601_probe()
670 aw8601_move_time(aw8601_dev, AW8601_MAX_REG); in aw8601_probe()
680 aw8601_subdev_cleanup(aw8601_dev); in aw8601_probe()
688 struct aw8601_device *aw8601_dev = sd_to_aw8601_vcm(sd); in aw8601_remove() local
691 aw8601_subdev_cleanup(aw8601_dev); in aw8601_remove()