kernel: Fix build breaks
[linux-3.10.git] / include / media / sh532u.h
1 /*
2  * Copyright (C) 2011-2012 NVIDIA Corporation.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
16  * 02111-1307, USA
17  */
18
19 #ifndef __SH532U_H__
20 #define __SH532U_H__
21
22 #include <media/nvc.h>
23 #include <media/nvc_focus.h>
24
25 /* See notes in the nvc.h file on the GPIO usage */
26 enum sh532u_gpio {
27         SH532U_GPIO_RESET = 0,
28         SH532U_GPIO_I2CMUX,
29         SH532U_GPIO_GP1,
30         SH532U_GPIO_GP2,
31         SH532U_GPIO_GP3,
32 };
33
34 /* The enumeration must be in the order the regulators are to be enabled */
35 /* See Power Requirements note in the driver */
36 enum sh532u_vreg {
37         SH532U_VREG_DVDD = 0,
38         SH532U_VREG_AVDD,
39 };
40
41 struct sh532u_pdata_info {
42         __s16 pos_low;
43         __s16 pos_high;
44         __s16 limit_low;
45         __s16 limit_high;
46         int move_timeoutms;
47         __u32 focus_hyper_ratio;
48         __u32 focus_hyper_div;
49 };
50
51 struct sh532u_platform_data {
52         unsigned cfg;
53         unsigned num;
54         unsigned sync;
55         const char *dev_name;
56         unsigned gpio_count; /* see nvc.h GPIO notes */
57         struct nvc_gpio_pdata *gpio; /* see nvc.h GPIO notes */
58         struct nvc_focus_nvc (*nvc);
59         struct nvc_focus_cap (*cap);
60         struct sh532u_pdata_info (*info);
61         __u8 i2c_addr_rom;
62 };
63
64 /* Register Definition  : Sany Driver IC */
65 /* EEPROM addresses */
66 #define addrHallOffset          0x10
67 #define addrHallBias            0x11
68 #define addrInf1                0x12
69 #define addrMac1                0x13
70 #define addrLoopGainH           0x14
71 #define addrLoopGainL           0x15
72 #define addrInf2                0x16
73 #define addrMac2                0x17
74
75 #define addrInf1_H              0x20 /* bottom mechanical limit of HVCA */
76 #define addrInf1_L              0x21
77 #define addrMac1_H              0x22 /* top mechanical limit of HVCA */
78 #define addrMac1_L              0x23
79 #define addrInf2_H              0x24 /* lens position when object is ?120cm */
80 #define addrInf2_L              0x25
81 #define addrMac2_H              0x26 /* lens position when object is ?10cm */
82 #define addrMac2_L              0x27
83 #define addrDacDeltaUp_H        0x28 /* difference between face up and down */
84 #define addrDacDeltaUp_L        0x29
85 #define addrAFoffset_H          0x2A /* best focus position subtract value */
86 #define addrAFoffset_L          0x2B
87
88 /* Convergence Judgement */
89 #define INI_MSSET_211           0x00
90 #define CHTGOKN_TIME            0x80
91 #define CHTGOKN_WAIT            1
92 #define CHTGOKN_TIMEOUT         50
93 #define CHTGSTOKN_TOMEOUT       15
94
95 /* StepMove */
96 #define STMV_SIZE               0x0180
97
98 #define STMCHTG_ON              0x08
99 #define STMSV_ON                0x04
100 #define STMLFF_ON               0x02
101 #define STMVEN_ON               0x01
102 #define STMCHTG_OFF             0x00
103 #define STMSV_OFF               0x00
104 #define STMLFF_OFF              0x00
105 #define STMVEN_OFF              0x00
106
107 #define STMCHTG_SET             STMCHTG_ON
108 #define STMSV_SET               STMSV_ON
109 #define STMLFF_SET              STMLFF_OFF
110
111 #define CHTGST_ON               0x01
112 #define DEFAULT_DADAT           0x8040
113
114 /* Delay RAM 00h ~ 3Fh */
115 #define ADHXI_211H              0x00
116 #define ADHXI_211L              0x01
117 #define PIDZO_211H              0x02
118 #define PIDZO_211L              0x03
119 #define RZ_211H                 0x04
120 #define RZ_211L                 0x05
121 #define DZ1_211H                0x06
122 #define DZ1_211L                0x07
123 #define DZ2_211H                0x08
124 #define DZ2_211L                0x09
125 #define UZ1_211H                0x0A
126 #define UZ1_211L                0x0B
127 #define UZ2_211H                0x0C
128 #define UZ2_211L                0x0D
129 #define IZ1_211H                0x0E
130 #define IZ1_211L                0x0F
131 #define IZ2_211H                0x10
132 #define IZ2_211L                0x11
133 #define MS1Z01_211H             0x12
134 #define MS1Z01_211L             0x13
135 #define MS1Z11_211H             0x14
136 #define MS1Z11_211L             0x15
137 #define MS1Z12_211H             0x16
138 #define MS1Z12_211L             0x17
139 #define MS1Z22_211H             0x18
140 #define MS1Z22_211L             0x19
141 #define MS2Z01_211H             0x1A
142 #define MS2Z01_211L             0x1B
143 #define MS2Z11_211H             0x1C
144 #define MS2Z11_211L             0x1D
145 #define MS2Z12_211H             0x1E
146 #define MS2Z12_211L             0x1F
147 #define MS2Z22_211H             0x20
148 #define MS2Z22_211L             0x21
149 #define MS2Z23_211H             0x22
150 #define MS2Z23_211L             0x23
151 #define OZ1_211H                0x24
152 #define OZ1_211L                0x25
153 #define OZ2_211H                0x26
154 #define OZ2_211L                0x27
155 #define DAHLXO_211H             0x28
156 #define DAHLXO_211L             0x29
157 #define OZ3_211H                0x2A
158 #define OZ3_211L                0x2B
159 #define OZ4_211H                0x2C
160 #define OZ4_211L                0x2D
161 #define OZ5_211H                0x2E
162 #define OZ5_211L                0x2F
163 #define oe_211H                 0x30
164 #define oe_211L                 0x31
165 #define MSR1CMAX_211H           0x32
166 #define MSR1CMAX_211L           0x33
167 #define MSR1CMIN_211H           0x34
168 #define MSR1CMIN_211L           0x35
169 #define MSR2CMAX_211H           0x36
170 #define MSR2CMAX_211L           0x37
171 #define MSR2CMIN_211H           0x38
172 #define MSR2CMIN_211L           0x39
173 #define OFFSET_211H             0x3A
174 #define OFFSET_211L             0x3B
175 #define ADOFFSET_211H           0x3C
176 #define ADOFFSET_211L           0x3D
177 #define EZ_211H                 0x3E
178 #define EZ_211L                 0x3F
179
180 /* Coefficient RAM 40h ~ 7Fh */
181 #define ag_211H                 0x40
182 #define ag_211L                 0x41
183 #define da_211H                 0x42
184 #define da_211L                 0x43
185 #define db_211H                 0x44
186 #define db_211L                 0x45
187 #define dc_211H                 0x46
188 #define dc_211L                 0x47
189 #define dg_211H                 0x48
190 #define dg_211L                 0x49
191 #define pg_211H                 0x4A
192 #define pg_211L                 0x4B
193 #define gain1_211H              0x4C
194 #define gain1_211L              0x4D
195 #define gain2_211H              0x4E
196 #define gain2_211L              0x4F
197 #define ua_211H                 0x50
198 #define ua_211L                 0x51
199 #define uc_211H                 0x52
200 #define uc_211L                 0x53
201 #define ia_211H                 0x54
202 #define ia_211L                 0x55
203 #define ib_211H                 0x56
204 #define ib_211L                 0x57
205 #define i_c_211H                0x58
206 #define i_c_211L                0x59
207 #define ms11a_211H              0x5A
208 #define ms11a_211L              0x5B
209 #define ms11c_211H              0x5C
210 #define ms11c_211L              0x5D
211 #define ms12a_211H              0x5E
212 #define ms12a_211L              0x5F
213 #define ms12c_211H              0x60
214 #define ms12c_211L              0x61
215 #define ms21a_211H              0x62
216 #define ms21a_211L              0x63
217 #define ms21b_211H              0x64
218 #define ms21b_211L              0x65
219 #define ms21c_211H              0x66
220 #define ms21c_211L              0x67
221 #define ms22a_211H              0x68
222 #define ms22a_211L              0x69
223 #define ms22c_211H              0x6A
224 #define ms22c_211L              0x6B
225 #define ms22d_211H              0x6C
226 #define ms22d_211L              0x6D
227 #define ms22e_211H              0x6E
228 #define ms22e_211L              0x6F
229 #define ms23p_211H              0x70
230 #define ms23p_211L              0x71
231 #define oa_211H                 0x72
232 #define oa_211L                 0x73
233 #define oc_211H                 0x74
234 #define oc_211L                 0x75
235 #define PX12_211H               0x76
236 #define PX12_211L               0x77
237 #define PX3_211H                0x78
238 #define PX3_211L                0x79
239 #define MS2X_211H               0x7A
240 #define MS2X_211L               0x7B
241 #define CHTGX_211H              0x7C
242 #define CHTGX_211L              0x7D
243 #define CHTGN_211H              0x7E
244 #define CHTGN_211L              0x7F
245
246 /* Register 80h ~  9F */
247 #define CLKSEL_211              0x80
248 #define ADSET_211               0x81
249 #define PWMSEL_211              0x82
250 #define SWTCH_211               0x83
251 #define STBY_211                0x84
252 #define CLR_211                 0x85
253 #define DSSEL_211               0x86
254 #define ENBL_211                0x87
255 #define ANA1_211                0x88
256 #define STMVEN_211              0x8A
257 #define STPT_211                0x8B
258 #define SWFC_211                0x8C
259 #define SWEN_211                0x8D
260 #define MSNUM_211               0x8E
261 #define MSSET_211               0x8F
262 #define DLYMON_211              0x90
263 #define MONA_211                0x91
264 #define PWMLIMIT_211            0x92
265 #define PINSEL_211              0x93
266 #define PWMSEL2_211             0x94
267 #define SFTRST_211              0x95
268 #define TEST_211                0x96
269 #define PWMZONE2_211            0x97
270 #define PWMZONE1_211            0x98
271 #define PWMZONE0_211            0x99
272 #define ZONE3_211               0x9A
273 #define ZONE2_211               0x9B
274 #define ZONE1_211               0x9C
275 #define ZONE0_211               0x9D
276 #define GCTIM_211               0x9E
277 #define GCTIM_211NU             0x9F
278 #define STMINT_211              0xA0
279 #define STMVENDH_211            0xA1
280 #define STMVENDL_211            0xA2
281 #define MSNUMR_211              0xA3
282 #define  ANA2_211               0xA4
283
284 /* Device ID of HVCA Drive IC */
285 #define HVCA_DEVICE_ID          0xE4
286
287 /* Device ID of E2P ROM */
288 #define EEP_DEVICE_ID           0xA0
289 #define EEP_PAGE0               0x00
290 #define EEP_PAGE1               0x02
291 #define EEP_PAGE2               0x04
292 #define EEP_PAGE3               0x06
293 /* E2P ROM has 1023 bytes. So there are 4 pages memory */
294 /* E2PROM Device ID = 1 0 1 0  0 P0 P1 0 */
295 /*
296 P0  P1
297 0   0   : Page 0
298 0   1   : Page 1
299 1   0   : Page 2
300 1   1   : Page 3
301 */
302 /* Page 0: address 0x000~0x0FF, E2PROM Device ID = E2P_DEVICE_ID|E2P_PAGE0 */
303 /* Page 1: address 0x100~0x1FF, E2PROM Device ID = E2P_DEVICE_ID|E2P_PAGE1 */
304 /* Page 2: address 0x200~0x2FF, E2PROM Device ID = E2P_DEVICE_ID|E2P_PAGE2 */
305 /* Page 3: address 0x300~0x3FF, E2PROM Device ID = E2P_DEVICE_ID|E2P_PAGE3 */
306 /*
307 */
308
309 /* E2P data type define of HVCA Initial Value Section */
310 #define DIRECT_MODE             0x00
311 #define INDIRECT_EEPROM         0x10
312 #define INDIRECT_HVCA           0x20
313 #define MASK_AND                0x70
314 #define MASK_OR                 0x80
315
316 #define DATA_1BYTE              0x01
317 #define DATA_2BYTE              0x02
318
319 #define START_ADDR              0x0030
320 #define END_ADDR                0x01BF
321
322 /*Macro define*/
323 #if !defined(abs)
324 #define abs(a)          (((a) > 0) ? (a) : -(a))
325 #endif
326
327 #endif
328 /* __SH532U_H__ */
329