1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 /* Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd. */ 3 4 #ifndef RK_VCM_HEAD_H 5 #define RK_VCM_HEAD_H 6 7 #define RK_VCM_HEAD_VERSION KERNEL_VERSION(0, 0x02, 0x0) 8 /* 9 * Focus position values: 10 * 65 logical positions ( 0 - 64 ) 11 * where 64 is the setting for infinity and 0 for macro 12 */ 13 #define VCMDRV_MAX_LOG 64U 14 #define VCMDRV_SETZOOM_MAXCNT 300U 15 16 #define OF_CAMERA_VCMDRV_MAX_CURRENT "rockchip,vcm-max-current" 17 #define OF_CAMERA_VCMDRV_START_CURRENT "rockchip,vcm-start-current" 18 #define OF_CAMERA_VCMDRV_RATED_CURRENT "rockchip,vcm-rated-current" 19 #define OF_CAMERA_VCMDRV_STEP_MODE "rockchip,vcm-step-mode" 20 #define OF_CAMERA_VCMDRV_DLC_ENABLE "rockchip,vcm-dlc-enable" 21 #define OF_CAMERA_VCMDRV_MCLK "rockchip,vcm-mclk" 22 #define OF_CAMERA_VCMDRV_T_SRC "rockchip,vcm-t-src" 23 #define OF_CAMERA_VCMDRV_T_DIV "rockchip,vcm-t-div" 24 #define VCMDRV_SETZOOM_MAXCNT 300U 25 26 #define RK_VIDIOC_VCM_TIMEINFO \ 27 _IOR('V', BASE_VIDIOC_PRIVATE + 0, struct rk_cam_vcm_tim) 28 #define RK_VIDIOC_IRIS_TIMEINFO \ 29 _IOR('V', BASE_VIDIOC_PRIVATE + 1, struct rk_cam_vcm_tim) 30 #define RK_VIDIOC_ZOOM_TIMEINFO \ 31 _IOR('V', BASE_VIDIOC_PRIVATE + 2, struct rk_cam_vcm_tim) 32 33 #define RK_VIDIOC_GET_VCM_CFG \ 34 _IOR('V', BASE_VIDIOC_PRIVATE + 3, struct rk_cam_vcm_cfg) 35 #define RK_VIDIOC_SET_VCM_CFG \ 36 _IOW('V', BASE_VIDIOC_PRIVATE + 4, struct rk_cam_vcm_cfg) 37 38 #define RK_VIDIOC_FOCUS_CORRECTION \ 39 _IOR('V', BASE_VIDIOC_PRIVATE + 5, unsigned int) 40 #define RK_VIDIOC_IRIS_CORRECTION \ 41 _IOR('V', BASE_VIDIOC_PRIVATE + 6, unsigned int) 42 #define RK_VIDIOC_ZOOM_CORRECTION \ 43 _IOR('V', BASE_VIDIOC_PRIVATE + 7, unsigned int) 44 45 #define RK_VIDIOC_FOCUS_SET_BACKLASH \ 46 _IOR('V', BASE_VIDIOC_PRIVATE + 8, unsigned int) 47 #define RK_VIDIOC_IRIS_SET_BACKLASH \ 48 _IOR('V', BASE_VIDIOC_PRIVATE + 9, unsigned int) 49 #define RK_VIDIOC_ZOOM_SET_BACKLASH \ 50 _IOR('V', BASE_VIDIOC_PRIVATE + 10, unsigned int) 51 52 #define RK_VIDIOC_ZOOM1_TIMEINFO \ 53 _IOR('V', BASE_VIDIOC_PRIVATE + 11, struct rk_cam_vcm_tim) 54 #define RK_VIDIOC_ZOOM1_CORRECTION \ 55 _IOR('V', BASE_VIDIOC_PRIVATE + 12, unsigned int) 56 #define RK_VIDIOC_ZOOM1_SET_BACKLASH \ 57 _IOR('V', BASE_VIDIOC_PRIVATE + 13, unsigned int) 58 59 #define RK_VIDIOC_ZOOM_SET_POSITION \ 60 _IOW('V', BASE_VIDIOC_PRIVATE + 14, struct rk_cam_set_zoom) 61 #define RK_VIDIOC_FOCUS_SET_POSITION \ 62 _IOW('V', BASE_VIDIOC_PRIVATE + 15, struct rk_cam_set_focus) 63 #define RK_VIDIOC_MODIFY_POSITION \ 64 _IOW('V', BASE_VIDIOC_PRIVATE + 16, struct rk_cam_modify_pos) 65 66 #define RK_VIDIOC_COMPAT_VCM_TIMEINFO \ 67 _IOR('V', BASE_VIDIOC_PRIVATE + 0, struct rk_cam_compat_vcm_tim) 68 #define RK_VIDIOC_COMPAT_IRIS_TIMEINFO \ 69 _IOR('V', BASE_VIDIOC_PRIVATE + 1, struct rk_cam_compat_vcm_tim) 70 #define RK_VIDIOC_COMPAT_ZOOM_TIMEINFO \ 71 _IOR('V', BASE_VIDIOC_PRIVATE + 2, struct rk_cam_compat_vcm_tim) 72 #define RK_VIDIOC_COMPAT_ZOOM1_TIMEINFO \ 73 _IOR('V', BASE_VIDIOC_PRIVATE + 11, struct rk_cam_compat_vcm_tim) 74 75 struct rk_cam_modify_pos { 76 s32 focus_pos; 77 s32 zoom_pos; 78 s32 zoom1_pos; 79 }; 80 81 struct rk_cam_set_focus { 82 bool is_need_reback; 83 s32 focus_pos; 84 }; 85 86 struct rk_cam_zoom_pos { 87 s32 zoom_pos; 88 s32 focus_pos; 89 }; 90 91 struct rk_cam_set_zoom { 92 bool is_need_zoom_reback; 93 bool is_need_focus_reback; 94 u32 setzoom_cnt; 95 struct rk_cam_zoom_pos zoom_pos[VCMDRV_SETZOOM_MAXCNT]; 96 }; 97 98 struct rk_cam_vcm_tim { 99 struct __kernel_old_timeval vcm_start_t; 100 struct __kernel_old_timeval vcm_end_t; 101 }; 102 103 struct rk_cam_compat_vcm_tim { 104 struct old_timeval32 vcm_start_t; 105 struct old_timeval32 vcm_end_t; 106 }; 107 108 struct rk_cam_vcm_cfg { 109 int start_ma; 110 int rated_ma; 111 int step_mode; 112 }; 113 114 #endif /* RK_VCM_HEAD_H */ 115 116