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