hc
2024-08-16 a24a44ff9ca902811b99aa9663d697cf452e08ef
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/* 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
 
#include <linux/types.h>
#include <linux/time_types.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 VCMDRV_SETZOOM_MAXCNT    300U
 
#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 OF_CAMERA_VCMDRV_T_DIV        "rockchip,vcm-t-div"
#define OF_CAMERA_VCMDRV_ADVANCED_MODE    "rockchip,vcm-adcanced-mode"
#define OF_CAMERA_VCMDRV_SAC_MODE    "rockchip,vcm-sac-mode"
#define OF_CAMERA_VCMDRV_SAC_TIME    "rockchip,vcm-sac-time"
#define OF_CAMERA_VCMDRV_PRESC        "rockchip,vcm-prescl"
#define OF_CAMERA_VCMDRV_NRC_EN        "rockchip,vcm-nrc-en"
#define OF_CAMERA_VCMDRV_NRC_MODE    "rockchip,vcm-nrc-mode"
#define OF_CAMERA_VCMDRV_NRC_PRESET    "rockchip,vcm-nrc-preset"
#define OF_CAMERA_VCMDRV_NRC_INFL    "rockchip,vcm-nrc-infl"
#define OF_CAMERA_VCMDRV_NRC_TIME    "rockchip,vcm-nrc-time"
#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)
 
#define RK_VIDIOC_SET_VCM_MAX_LOGICALPOS \
   _IOW('V', BASE_VIDIOC_PRIVATE + 17, unsigned int)
 
#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)
 
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 __kernel_old_timeval vcm_start_t;
   struct __kernel_old_timeval vcm_end_t;
};
 
#ifndef __kernel_old_timeval32
struct __kernel_old_timeval32 {
   __s32 tv_sec;
   __s32 tv_usec;
};
#endif
 
struct rk_cam_compat_vcm_tim {
   struct __kernel_old_timeval32 vcm_start_t;
   struct __kernel_old_timeval32 vcm_end_t;
};
 
struct rk_cam_vcm_cfg {
   int start_ma;
   int rated_ma;
   int step_mode;
};
 
#endif /* RK_VCM_HEAD_H */