2 * Driver for M5MO (5MP Camera) from NEC
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
13 enum m5mo_prev_frmsize {
25 enum m5mo_cap_frmsize {
26 M5MO_CAPTURE_VGA, /* 640 x 480 */
27 M5MO_CAPTURE_WVGA, /* 800 x 480 */
28 M5MO_CAPTURE_HD, /* 1280 x 720 */
29 M5MO_CAPTURE_W1MP, /* 1600 x 960 */
30 M5MO_CAPTURE_2MP, /* UXGA - 1600 x 1200 */
31 M5MO_CAPTURE_FULLHD, /* 1920 x 1080 */
32 M5MO_CAPTURE_W2MP, /* 2048 x 1232 */
33 M5MO_CAPTURE_3MP, /* QXGA - 2048 x 1536 */
34 M5MO_CAPTURE_W4MP, /* WQXGA - 2560 x 1536 */
35 M5MO_CAPTURE_5MP, /* 2560 x 1920 */
36 M5MO_CAPTURE_6MP, /* 3264 x 1960 */
37 M5MO_CAPTURE_W6MP, /* 3072 x 1856 */
38 M5MO_CAPTURE_7MP, /* 3072 x 2304 */
39 M5MO_CAPTURE_W7MP, /* WQXGA - 2560 x 1536 */
40 M5MO_CAPTURE_8MP, /* 3264 x 2448 */
46 s32 minimum; /* Note signedness */
52 struct m5mo_frmsizeenum {
56 u8 reg_val; /* a value for category parameter */
61 wait_queue_head_t wait;
62 unsigned int irq; /* irq issued by ISP */
64 unsigned int int_factor;
65 unsigned int bad_fw:1;
70 unsigned int main_size; /* Main JPEG file size */
71 unsigned int thumb_size; /* Thumbnail file size */
72 unsigned int main_offset;
73 unsigned int thumb_offset;
74 unsigned int postview_offset;
95 int tv; /* shutter speed */
96 int bv; /* brightness */
97 int ebv; /* exposure bias */
100 #ifdef CONFIG_VIDEO_M5MO_I2C_DEBUG
109 struct m5mo_platform_data *pdata;
110 struct v4l2_subdev sd;
112 const struct m5mo_frmsizeenum *preview;
113 const struct m5mo_frmsizeenum *capture;
114 enum v4l2_pix_format_mode format_mode;
123 struct m5mo_focus focus; /* lock, status, focusing, */
124 struct m5mo_jpeg jpeg;
125 struct m5mo_exif exif;
126 enum v4l2_flash_mode flash_mode;
127 enum v4l2_colorfx colorfx;
141 #ifdef CONFIG_VIDEO_M5MO_I2C_DEBUG
142 struct m5mo_debug dbg;
144 #if 0 /* unused Controls */
149 #define is_interrupted(__factor) (state->isp.int_factor & __factor)
150 #define is_issued(__state) (state->isp.issued)
151 #define is_locked(__lock) (state->focus.lock == __lock)
152 #define is_focus(__mode) (state->focus.mode == __mode)
153 #define is_format(__mode) (state->format_mode == __mode)
154 #define is_scenemode(__mode) (state->scenemode == __mode)
157 #define M5MO_CATEGORY_SYS 0x00
158 #define M5MO_CATEGORY_PARM 0x01
159 #define M5MO_CATEGORY_MON 0x02
160 #define M5MO_CATEGORY_AE 0x03
161 #define M5MO_CATEGORY_WB 0x06
162 #define M5MO_CATEGORY_EXIF 0x07
163 #define M5MO_CATEGORY_FD 0x09
164 #define M5MO_CATEGORY_LENS 0x0A
165 #define M5MO_CATEGORY_CAPPARM 0x0B
166 #define M5MO_CATEGORY_CAPCTRL 0x0C
167 #define M5MO_CATEGORY_TEST 0x0D
168 #define M5MO_CATEGORY_ADJST 0x0E
169 #define M5MO_CATEGORY_FLASH 0x0F /* F/W update */
171 /* M5MO_CATEGORY_SYS: 0x00 */
172 #define M5MO_SYS_PJT_CODE 0x01
173 #define M5MO_SYS_VER_FW 0x02
174 #define M5MO_SYS_VER_HW 0x04
175 #define M5MO_SYS_VER_PARAM 0x06
176 #define M5MO_SYS_VER_AWB 0x08
177 #define M5MO_SYS_USER_VER 0x0A
178 #define M5MO_SYS_MODE 0x0B
179 #define M5MO_SYS_STATUS 0x0C
180 #define M5MO_SYS_ESD_INT 0x0E
181 #define M5MO_SYS_INT_FACTOR 0x10
182 #define M5MO_SYS_INT_EN 0x11
183 #define M5MO_SYS_ROOT_EN 0x12
185 /* M5MO_CATEGORY_PARAM: 0x01 */
186 #define M5MO_PARM_OUT_SEL 0x00
187 #define M5MO_PARM_MON_SIZE 0x01
188 #define M5MO_PARM_EFFECT 0x0B
189 #define M5MO_PARM_FLEX_FPS 0x31
190 #define M5MO_PARM_HDMOVIE 0x32
191 #define M5MO_PARM_HDR_MON 0x39
192 #define M5MO_PARM_HDR_MON_OFFSET_EV 0x3A
194 /* M5MO_CATEGORY_MON: 0x02 */
195 #define M5MO_MON_ZOOM 0x01
196 #define M5MO_MON_MON_REVERSE 0x05
197 #define M5MO_MON_MON_MIRROR 0x06
198 #define M5MO_MON_SHOT_REVERSE 0x07
199 #define M5MO_MON_SHOT_MIRROR 0x08
200 #define M5MO_MON_CFIXB 0x09
201 #define M5MO_MON_CFIXR 0x0A
202 #define M5MO_MON_COLOR_EFFECT 0x0B
203 #define M5MO_MON_CHROMA_LVL 0x0F
204 #define M5MO_MON_EDGE_LVL 0x11
205 #define M5MO_MON_TONE_CTRL 0x25
207 /* M5MO_CATEGORY_AE: 0x03 */
208 #define M5MO_AE_LOCK 0x00
209 #define M5MO_AE_MODE 0x01
210 #define M5MO_AE_TARGET 0x02
211 #define M5MO_AE_SPEED 0x03
212 #define M5MO_AE_ISOSEL 0x05
213 #define M5MO_AE_FLICKER 0x06
214 #define M5MO_AE_EV_BIAS 0x09
215 #define M5MO_AE_EP_MODE_MON 0x0A
216 #define M5MO_AE_EP_MODE_CAP 0x0B
217 #define M5MO_AE_NOW_GAIN 0x0E
218 #define M5MO_AE_NOW_EV 0x0F
219 #define M5MO_AE_NOW_EXPOSURE 0x10
220 #define M5MO_AE_MAX_EXP_MON 0x16
221 #define M5MO_AE_MAX_EXP_CAP 0x18
222 #define M5MO_AE_ONESHOT_MAX_EXP 0x36
223 #define M5MO_AE_INDEX 0x38
225 /* M5MO_CATEGORY_WB: 0x06 */
226 #define M5MO_AWB_LOCK 0x00
227 #define M5MO_WB_AWB_MODE 0x02
228 #define M5MO_WB_AWB_MANUAL 0x03
230 /* M5MO_CATEGORY_EXIF: 0x07 */
231 #define M5MO_EXIF_EXPTIME_NUM 0x00
232 #define M5MO_EXIF_EXPTIME_DEN 0x04
233 #define M5MO_EXIF_TV_NUM 0x08
234 #define M5MO_EXIF_TV_DEN 0x0C
235 #define M5MO_EXIF_BV_NUM 0x18
236 #define M5MO_EXIF_BV_DEN 0x1C
237 #define M5MO_EXIF_EBV_NUM 0x20
238 #define M5MO_EXIF_EBV_DEN 0x24
239 #define M5MO_EXIF_ISO 0x28
240 #define M5MO_EXIF_FLASH 0x2A
242 /* M5MO_CATEGORY_FD: 0x09 */
243 #define M5MO_FD_CTL 0x00
244 #define M5MO_FD_SIZE 0x01
245 #define M5MO_FD_MAX 0x02
247 /* M5MO_CATEGORY_LENS: 0x0A */
248 #define M5MO_LENS_AF_MODE 0x01
249 #define M5MO_LENS_AF_START 0x02
250 #define M5MO_LENS_AF_STATUS 0x03
251 #define M5MO_LENS_AF_UPBYTE_STEP 0x06
252 #define M5MO_LENS_AF_LOWBYTE_STEP 0x07
253 #define M5MO_LENS_AF_CAL 0x1D
254 #define M5MO_LENS_AF_TOUCH_POSX 0x30
255 #define M5MO_LENS_AF_TOUCH_POSY 0x32
257 /* M5MO_CATEGORY_CAPPARM: 0x0B */
258 #define M5MO_CAPPARM_YUVOUT_MAIN 0x00
259 #define M5MO_CAPPARM_MAIN_IMG_SIZE 0x01
260 #define M5MO_CAPPARM_YUVOUT_PREVIEW 0x05
261 #define M5MO_CAPPARM_PREVIEW_IMG_SIZE 0x06
262 #define M5MO_CAPPARM_YUVOUT_THUMB 0x0A
263 #define M5MO_CAPPARM_THUMB_IMG_SIZE 0x0B
264 #define M5MO_CAPPARM_JPEG_SIZE_MAX 0x0F
265 #define M5MO_CAPPARM_JPEG_RATIO 0x17
266 #define M5MO_CAPPARM_MCC_MODE 0x1D
267 #define M5MO_CAPPARM_WDR_EN 0x2C
268 #define M5MO_CAPPARM_LIGHT_CTRL 0x40
269 #define M5MO_CAPPARM_FLASH_CTRL 0x41
270 #define M5MO_CAPPARM_JPEG_RATIO_OFS 0x34
271 #define M5MO_CAPPARM_THUMB_JPEG_MAX 0x3C
272 #define M5MO_CAPPARM_AFB_CAP_EN 0x53
274 /* M5MO_CATEGORY_CAPCTRL: 0x0C */
275 #define M5MO_CAPCTRL_FRM_SEL 0x06
276 #define M5MO_CAPCTRL_TRANSFER 0x09
277 #define M5MO_CAPCTRL_IMG_SIZE 0x0D
278 #define M5MO_CAPCTRL_THUMB_SIZE 0x11
280 /* M5MO_CATEGORY_ADJST: 0x0E */
281 #define M5MO_ADJST_AWB_RG_H 0x3B
282 #define M5MO_ADJST_AWB_RG_L 0x3D
283 #define M5MO_ADJST_AWB_BG_H 0x3E
284 #define M5MO_ADJST_AWB_BG_L 0x3F
286 /* M5MO_CATEGORY_FLASH: 0x0F */
287 #define M5MO_FLASH_ADDR 0x00
288 #define M5MO_FLASH_BYTE 0x04
289 #define M5MO_FLASH_ERASE 0x06
290 #define M5MO_FLASH_WR 0x07
291 #define M5MO_FLASH_RAM_CLEAR 0x08
292 #define M5MO_FLASH_CAM_START 0x12
293 #define M5MO_FLASH_SEL 0x13
295 /* M5MO_CATEGORY_TEST: 0x0D */
296 #define M5MO_TEST_OUTPUT_YCO_TEST_DATA 0x1B
297 #define M5MO_TEST_ISP_PROCESS 0x59
299 /* M5MO Sensor Mode */
300 #define M5MO_SYSINIT_MODE 0x0
301 #define M5MO_PARMSET_MODE 0x1
302 #define M5MO_MONITOR_MODE 0x2
303 #define M5MO_STILLCAP_MODE 0x3
305 /* Interrupt Factor */
306 #define M5MO_INT_SOUND (1 << 7)
307 #define M5MO_INT_LENS_INIT (1 << 6)
308 #define M5MO_INT_FD (1 << 5)
309 #define M5MO_INT_FRAME_SYNC (1 << 4)
310 #define M5MO_INT_CAPTURE (1 << 3)
311 #define M5MO_INT_ZOOM (1 << 2)
312 #define M5MO_INT_AF (1 << 1)
313 #define M5MO_INT_MODE (1 << 0)
314 #define M5MO_INT_NONE 0x00
317 #define M5MO_INT_ESD (1 << 0)
319 #define M5MO_AF_STATUS_FAILED 0
320 #define M5MO_AF_STATUS_MOVING 1
321 #define M5MO_AF_STATUS_SUCCESS 2
322 #define M5MO_AF_STATUS_IDLE 4
323 #define M5MO_AF_STATUS_BUSY 5
325 #define M5MO_AF_STOP 0
326 #define M5MO_AF_START 1
327 #define M5MO_AF_RELEASE 2
330 #endif /* __M5MO_H */