xref: /OK3568_Linux_fs/kernel/include/uapi/linux/rk_vcm_head.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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