msm_actuator.c name:qcom,actuator static struct v4l2_subdev_core_ops msm_actuator_subdev_core_ops = { .ioctl = msm_actuator_subdev_ioctl, .s_power = msm_actuator_power, }; static struct v4l2_subdev_ops msm_actuator_subdev_ops = { .core = &msm_actuator_subdev_core_ops, }; static const struct v4l2_subdev_internal_ops msm_actuator_internal_ops = { .open = msm_actuator_open, .close = msm_actuator_close, }; static long msm_actuator_subdev_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg) { struct msm_actuator_ctrl_t *a_ctrl = v4l2_get_subdevdata(sd); void __user *argp = (void __user *)arg; CDBG("Enter\n"); CDBG("%s:%d a_ctrl %p argp %p\n", __func__, __LINE__, a_ctrl, argp); switch (cmd) { case VIDIOC_MSM_SENSOR_GET_SUBDEV_ID: return msm_actuator_get_subdev_id(a_ctrl, argp); case VIDIOC_MSM_ACTUATOR_CFG: return msm_actuator_config(a_ctrl, argp); case MSM_SD_SHUTDOWN: msm_actuator_close(sd, NULL); return 0; default: return -ENOIOCTLCMD; } } static int32_t msm_actuator_config() { } media/msm_cam_sensor.h enum msm_actuator_cfg_type_t { CFG_GET_ACTUATOR_INFO, CFG_SET_ACTUATOR_INFO, CFG_SET_DEFAULT_FOCUS, CFG_SET_POSITION, CFG_MOVE_FOCUS, CFG_ACTUATOR_POWERDOWN, CFG_SET_OIS_STRENGTH, }; #define VIDIOC_MSM_SENSOR_GET_SUBDEV_ID \ _IOWR('V', BASE_VIDIOC_PRIVATE + 3, uint32_t) #define VIDIOC_MSM_ACTUATOR_CFG \ _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct msm_actuator_cfg_data) enum af_camera_name { ACTUATOR_MAIN_CAM_0, ACTUATOR_MAIN_CAM_1, ACTUATOR_MAIN_CAM_2, ACTUATOR_MAIN_CAM_3, ACTUATOR_MAIN_CAM_4, ACTUATOR_MAIN_CAM_5, ACTUATOR_MAIN_CAM_6, ACTUATOR_WEB_CAM_0, ACTUATOR_WEB_CAM_1, ACTUATOR_WEB_CAM_2, }; msm_actuator_t->cam_name = pdev->id; case CFG_SET_ACTUATOR_INFO: static int32_t msm_actuator_init(struct msm_actuator_ctrl_t *a_ctrl,struct msm_actuator_set_info_t *set_info) { for (i = 0; i < ARRAY_SIZE(actuators); i++) { if (set_info->actuator_params.act_type ==
actuators[i]->act_type) { a_ctrl->func_tbl = &actuators[i]->func_tbl; rc = 0; } } }static struct msm_actuator *actuators[] = { &msm_vcm_actuator_table, &msm_piezo_actuator_table, &msm_close_loop_actuator_table, &msm_ois_actuator_table }; |
|