分享

actuator

 RK34 2014-07-03
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
};


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多