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 #include <linux/types.h> 8 #include <linux/time_types.h> 9 10 #define RK_VCM_HEAD_VERSION KERNEL_VERSION(0, 0x02, 0x0) 11 /* 12 * Focus position values: 13 * 65 logical positions ( 0 - 64 ) 14 * where 64 is the setting for infinity and 0 for macro 15 */ 16 #define VCMDRV_MAX_LOG 64U 17 #define VCMDRV_SETZOOM_MAXCNT 300U 18 19 #define OF_CAMERA_VCMDRV_MAX_CURRENT "rockchip,vcm-max-current" 20 #define OF_CAMERA_VCMDRV_START_CURRENT "rockchip,vcm-start-current" 21 #define OF_CAMERA_VCMDRV_RATED_CURRENT "rockchip,vcm-rated-current" 22 #define OF_CAMERA_VCMDRV_STEP_MODE "rockchip,vcm-step-mode" 23 #define OF_CAMERA_VCMDRV_DLC_ENABLE "rockchip,vcm-dlc-enable" 24 #define OF_CAMERA_VCMDRV_MCLK "rockchip,vcm-mclk" 25 #define OF_CAMERA_VCMDRV_T_SRC "rockchip,vcm-t-src" 26 #define OF_CAMERA_VCMDRV_T_DIV "rockchip,vcm-t-div" 27 #define OF_CAMERA_VCMDRV_ADVANCED_MODE "rockchip,vcm-adcanced-mode" 28 #define OF_CAMERA_VCMDRV_SAC_MODE "rockchip,vcm-sac-mode" 29 #define OF_CAMERA_VCMDRV_SAC_TIME "rockchip,vcm-sac-time" 30 #define OF_CAMERA_VCMDRV_PRESC "rockchip,vcm-prescl" 31 #define OF_CAMERA_VCMDRV_NRC_EN "rockchip,vcm-nrc-en" 32 #define OF_CAMERA_VCMDRV_NRC_MODE "rockchip,vcm-nrc-mode" 33 #define OF_CAMERA_VCMDRV_NRC_PRESET "rockchip,vcm-nrc-preset" 34 #define OF_CAMERA_VCMDRV_NRC_INFL "rockchip,vcm-nrc-infl" 35 #define OF_CAMERA_VCMDRV_NRC_TIME "rockchip,vcm-nrc-time" 36 #define VCMDRV_SETZOOM_MAXCNT 300U 37 38 #define RK_VIDIOC_VCM_TIMEINFO \ 39 _IOR('V', BASE_VIDIOC_PRIVATE + 0, struct rk_cam_vcm_tim) 40 #define RK_VIDIOC_IRIS_TIMEINFO \ 41 _IOR('V', BASE_VIDIOC_PRIVATE + 1, struct rk_cam_vcm_tim) 42 #define RK_VIDIOC_ZOOM_TIMEINFO \ 43 _IOR('V', BASE_VIDIOC_PRIVATE + 2, struct rk_cam_vcm_tim) 44 45 #define RK_VIDIOC_GET_VCM_CFG \ 46 _IOR('V', BASE_VIDIOC_PRIVATE + 3, struct rk_cam_vcm_cfg) 47 #define RK_VIDIOC_SET_VCM_CFG \ 48 _IOW('V', BASE_VIDIOC_PRIVATE + 4, struct rk_cam_vcm_cfg) 49 50 #define RK_VIDIOC_FOCUS_CORRECTION \ 51 _IOR('V', BASE_VIDIOC_PRIVATE + 5, unsigned int) 52 #define RK_VIDIOC_IRIS_CORRECTION \ 53 _IOR('V', BASE_VIDIOC_PRIVATE + 6, unsigned int) 54 #define RK_VIDIOC_ZOOM_CORRECTION \ 55 _IOR('V', BASE_VIDIOC_PRIVATE + 7, unsigned int) 56 57 #define RK_VIDIOC_FOCUS_SET_BACKLASH \ 58 _IOR('V', BASE_VIDIOC_PRIVATE + 8, unsigned int) 59 #define RK_VIDIOC_IRIS_SET_BACKLASH \ 60 _IOR('V', BASE_VIDIOC_PRIVATE + 9, unsigned int) 61 #define RK_VIDIOC_ZOOM_SET_BACKLASH \ 62 _IOR('V', BASE_VIDIOC_PRIVATE + 10, unsigned int) 63 64 #define RK_VIDIOC_ZOOM1_TIMEINFO \ 65 _IOR('V', BASE_VIDIOC_PRIVATE + 11, struct rk_cam_vcm_tim) 66 #define RK_VIDIOC_ZOOM1_CORRECTION \ 67 _IOR('V', BASE_VIDIOC_PRIVATE + 12, unsigned int) 68 #define RK_VIDIOC_ZOOM1_SET_BACKLASH \ 69 _IOR('V', BASE_VIDIOC_PRIVATE + 13, unsigned int) 70 71 #define RK_VIDIOC_ZOOM_SET_POSITION \ 72 _IOW('V', BASE_VIDIOC_PRIVATE + 14, struct rk_cam_set_zoom) 73 #define RK_VIDIOC_FOCUS_SET_POSITION \ 74 _IOW('V', BASE_VIDIOC_PRIVATE + 15, struct rk_cam_set_focus) 75 #define RK_VIDIOC_MODIFY_POSITION \ 76 _IOW('V', BASE_VIDIOC_PRIVATE + 16, struct rk_cam_modify_pos) 77 78 #define RK_VIDIOC_SET_VCM_MAX_LOGICALPOS \ 79 _IOW('V', BASE_VIDIOC_PRIVATE + 17, unsigned int) 80 81 #define RK_VIDIOC_COMPAT_VCM_TIMEINFO \ 82 _IOR('V', BASE_VIDIOC_PRIVATE + 0, struct rk_cam_compat_vcm_tim) 83 #define RK_VIDIOC_COMPAT_IRIS_TIMEINFO \ 84 _IOR('V', BASE_VIDIOC_PRIVATE + 1, struct rk_cam_compat_vcm_tim) 85 #define RK_VIDIOC_COMPAT_ZOOM_TIMEINFO \ 86 _IOR('V', BASE_VIDIOC_PRIVATE + 2, struct rk_cam_compat_vcm_tim) 87 #define RK_VIDIOC_COMPAT_ZOOM1_TIMEINFO \ 88 _IOR('V', BASE_VIDIOC_PRIVATE + 11, struct rk_cam_compat_vcm_tim) 89 90 struct rk_cam_modify_pos { 91 __s32 focus_pos; 92 __s32 zoom_pos; 93 __s32 zoom1_pos; 94 }; 95 96 struct rk_cam_set_focus { 97 _Bool is_need_reback; 98 __s32 focus_pos; 99 }; 100 101 struct rk_cam_zoom_pos { 102 __s32 zoom_pos; 103 __s32 focus_pos; 104 }; 105 106 struct rk_cam_set_zoom { 107 _Bool is_need_zoom_reback; 108 _Bool is_need_focus_reback; 109 __u32 setzoom_cnt; 110 struct rk_cam_zoom_pos zoom_pos[VCMDRV_SETZOOM_MAXCNT]; 111 }; 112 113 struct rk_cam_vcm_tim { 114 struct __kernel_old_timeval vcm_start_t; 115 struct __kernel_old_timeval vcm_end_t; 116 }; 117 118 #ifndef __kernel_old_timeval32 119 struct __kernel_old_timeval32 { 120 __s32 tv_sec; 121 __s32 tv_usec; 122 }; 123 #endif 124 125 struct rk_cam_compat_vcm_tim { 126 struct __kernel_old_timeval32 vcm_start_t; 127 struct __kernel_old_timeval32 vcm_end_t; 128 }; 129 130 struct rk_cam_vcm_cfg { 131 int start_ma; 132 int rated_ma; 133 int step_mode; 134 }; 135 136 #endif /* RK_VCM_HEAD_H */ 137 138