]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - drivers/staging/media/atomisp/i2c/mt9m114.h
media: staging: atomisp: Switch i2c drivers to use ->probe_new()
[mirror_ubuntu-bionic-kernel.git] / drivers / staging / media / atomisp / i2c / mt9m114.h
1 /*
2 * Support for mt9m114 Camera Sensor.
3 *
4 * Copyright (c) 2010 Intel Corporation. All Rights Reserved.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License version
8 * 2 as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 * 02110-1301, USA.
19 *
20 */
21
22 #ifndef __A1040_H__
23 #define __A1040_H__
24
25 #include <linux/kernel.h>
26 #include <linux/types.h>
27 #include <linux/i2c.h>
28 #include <linux/delay.h>
29 #include <linux/videodev2.h>
30 #include <linux/spinlock.h>
31 #include <media/v4l2-subdev.h>
32 #include <media/v4l2-device.h>
33 #include <media/v4l2-ctrls.h>
34 #include <linux/v4l2-mediabus.h>
35 #include <media/media-entity.h>
36 #include "../include/linux/atomisp_platform.h"
37 #include "../include/linux/atomisp.h"
38
39 #define V4L2_IDENT_MT9M114 8245
40
41 #define MT9P111_REV3
42 #define FULLINISUPPORT
43
44 /* #defines for register writes and register array processing */
45 #define MISENSOR_8BIT 1
46 #define MISENSOR_16BIT 2
47 #define MISENSOR_32BIT 4
48
49 #define MISENSOR_FWBURST0 0x80
50 #define MISENSOR_FWBURST1 0x81
51 #define MISENSOR_FWBURST4 0x84
52 #define MISENSOR_FWBURST 0x88
53
54 #define MISENSOR_TOK_TERM 0xf000 /* terminating token for reg list */
55 #define MISENSOR_TOK_DELAY 0xfe00 /* delay token for reg list */
56 #define MISENSOR_TOK_FWLOAD 0xfd00 /* token indicating load FW */
57 #define MISENSOR_TOK_POLL 0xfc00 /* token indicating poll instruction */
58 #define MISENSOR_TOK_RMW 0x0010 /* RMW operation */
59 #define MISENSOR_TOK_MASK 0xfff0
60 #define MISENSOR_AWB_STEADY (1<<0) /* awb steady */
61 #define MISENSOR_AE_READY (1<<3) /* ae status ready */
62
63 /* mask to set sensor read_mode via misensor_rmw_reg */
64 #define MISENSOR_R_MODE_MASK 0x0330
65 /* mask to set sensor vert_flip and horz_mirror */
66 #define MISENSOR_VFLIP_MASK 0x0002
67 #define MISENSOR_HFLIP_MASK 0x0001
68 #define MISENSOR_FLIP_EN 1
69 #define MISENSOR_FLIP_DIS 0
70
71 /* bits set to set sensor read_mode via misensor_rmw_reg */
72 #define MISENSOR_SKIPPING_SET 0x0011
73 #define MISENSOR_SUMMING_SET 0x0033
74 #define MISENSOR_NORMAL_SET 0x0000
75
76 /* sensor register that control sensor read-mode and mirror */
77 #define MISENSOR_READ_MODE 0xC834
78 /* sensor ae-track status register */
79 #define MISENSOR_AE_TRACK_STATUS 0xA800
80 /* sensor awb status register */
81 #define MISENSOR_AWB_STATUS 0xAC00
82 /* sensor coarse integration time register */
83 #define MISENSOR_COARSE_INTEGRATION_TIME 0xC83C
84
85 /* registers */
86 #define REG_SW_RESET 0x301A
87 #define REG_SW_STREAM 0xDC00
88 #define REG_SCCB_CTRL 0x3100
89 #define REG_SC_CMMN_CHIP_ID 0x0000
90 #define REG_V_START 0xc800 /* 16bits */
91 #define REG_H_START 0xc802 /* 16bits */
92 #define REG_V_END 0xc804 /* 16bits */
93 #define REG_H_END 0xc806 /* 16bits */
94 #define REG_PIXEL_CLK 0xc808 /* 32bits */
95 #define REG_TIMING_VTS 0xc812 /* 16bits */
96 #define REG_TIMING_HTS 0xc814 /* 16bits */
97 #define REG_WIDTH 0xC868 /* 16bits */
98 #define REG_HEIGHT 0xC86A /* 16bits */
99 #define REG_EXPO_COARSE 0x3012 /* 16bits */
100 #define REG_EXPO_FINE 0x3014 /* 16bits */
101 #define REG_GAIN 0x305E
102 #define REG_ANALOGGAIN 0x305F
103 #define REG_ADDR_ACESSS 0x098E /* logical_address_access */
104 #define REG_COMM_Register 0x0080 /* command_register */
105
106 #define SENSOR_DETECTED 1
107 #define SENSOR_NOT_DETECTED 0
108
109 #define I2C_RETRY_COUNT 5
110 #define MSG_LEN_OFFSET 2
111
112 #ifndef MIPI_CONTROL
113 #define MIPI_CONTROL 0x3400 /* MIPI_Control */
114 #endif
115
116 /* GPIO pin on Moorestown */
117 #define GPIO_SCLK_25 44
118 #define GPIO_STB_PIN 47
119
120 #define GPIO_STDBY_PIN 49 /* ab:new */
121 #define GPIO_RESET_PIN 50
122
123 /* System control register for Aptina A-1040SOC*/
124 #define MT9M114_PID 0x0
125
126 /* MT9P111_DEVICE_ID */
127 #define MT9M114_MOD_ID 0x2481
128
129 #define MT9M114_FINE_INTG_TIME_MIN 0
130 #define MT9M114_FINE_INTG_TIME_MAX_MARGIN 0
131 #define MT9M114_COARSE_INTG_TIME_MIN 1
132 #define MT9M114_COARSE_INTG_TIME_MAX_MARGIN 6
133
134
135 /* ulBPat; */
136
137 #define MT9M114_BPAT_RGRGGBGB (1 << 0)
138 #define MT9M114_BPAT_GRGRBGBG (1 << 1)
139 #define MT9M114_BPAT_GBGBRGRG (1 << 2)
140 #define MT9M114_BPAT_BGBGGRGR (1 << 3)
141
142 #define MT9M114_FOCAL_LENGTH_NUM 208 /*2.08mm*/
143 #define MT9M114_FOCAL_LENGTH_DEM 100
144 #define MT9M114_F_NUMBER_DEFAULT_NUM 24
145 #define MT9M114_F_NUMBER_DEM 10
146 #define MT9M114_WAIT_STAT_TIMEOUT 100
147 #define MT9M114_FLICKER_MODE_50HZ 1
148 #define MT9M114_FLICKER_MODE_60HZ 2
149 /*
150 * focal length bits definition:
151 * bits 31-16: numerator, bits 15-0: denominator
152 */
153 #define MT9M114_FOCAL_LENGTH_DEFAULT 0xD00064
154
155 /*
156 * current f-number bits definition:
157 * bits 31-16: numerator, bits 15-0: denominator
158 */
159 #define MT9M114_F_NUMBER_DEFAULT 0x18000a
160
161 /*
162 * f-number range bits definition:
163 * bits 31-24: max f-number numerator
164 * bits 23-16: max f-number denominator
165 * bits 15-8: min f-number numerator
166 * bits 7-0: min f-number denominator
167 */
168 #define MT9M114_F_NUMBER_RANGE 0x180a180a
169
170 /* Supported resolutions */
171 enum {
172 MT9M114_RES_736P,
173 MT9M114_RES_864P,
174 MT9M114_RES_960P,
175 };
176 #define MT9M114_RES_960P_SIZE_H 1296
177 #define MT9M114_RES_960P_SIZE_V 976
178 #define MT9M114_RES_720P_SIZE_H 1280
179 #define MT9M114_RES_720P_SIZE_V 720
180 #define MT9M114_RES_576P_SIZE_H 1024
181 #define MT9M114_RES_576P_SIZE_V 576
182 #define MT9M114_RES_480P_SIZE_H 768
183 #define MT9M114_RES_480P_SIZE_V 480
184 #define MT9M114_RES_VGA_SIZE_H 640
185 #define MT9M114_RES_VGA_SIZE_V 480
186 #define MT9M114_RES_QVGA_SIZE_H 320
187 #define MT9M114_RES_QVGA_SIZE_V 240
188 #define MT9M114_RES_QCIF_SIZE_H 176
189 #define MT9M114_RES_QCIF_SIZE_V 144
190
191 #define MT9M114_RES_720_480p_768_SIZE_H 736
192 #define MT9M114_RES_720_480p_768_SIZE_V 496
193 #define MT9M114_RES_736P_SIZE_H 1296
194 #define MT9M114_RES_736P_SIZE_V 736
195 #define MT9M114_RES_864P_SIZE_H 1296
196 #define MT9M114_RES_864P_SIZE_V 864
197 #define MT9M114_RES_976P_SIZE_H 1296
198 #define MT9M114_RES_976P_SIZE_V 976
199
200 #define MT9M114_BIN_FACTOR_MAX 3
201
202 #define MT9M114_DEFAULT_FIRST_EXP 0x10
203 #define MT9M114_MAX_FIRST_EXP 0x302
204
205 /* completion status polling requirements, usage based on Aptina .INI Rev2 */
206 enum poll_reg {
207 NO_POLLING,
208 PRE_POLLING,
209 POST_POLLING,
210 };
211 /*
212 * struct misensor_reg - MI sensor register format
213 * @length: length of the register
214 * @reg: 16-bit offset to register
215 * @val: 8/16/32-bit register value
216 * Define a structure for sensor register initialization values
217 */
218 struct misensor_reg {
219 u32 length;
220 u32 reg;
221 u32 val; /* value or for read/mod/write, AND mask */
222 u32 val2; /* optional; for rmw, OR mask */
223 };
224
225 /*
226 * struct misensor_fwreg - Firmware burst command
227 * @type: FW burst or 8/16 bit register
228 * @addr: 16-bit offset to register or other values depending on type
229 * @valx: data value for burst (or other commands)
230 *
231 * Define a structure for sensor register initialization values
232 */
233 struct misensor_fwreg {
234 u32 type; /* type of value, register or FW burst string */
235 u32 addr; /* target address */
236 u32 val0;
237 u32 val1;
238 u32 val2;
239 u32 val3;
240 u32 val4;
241 u32 val5;
242 u32 val6;
243 u32 val7;
244 };
245
246 struct regval_list {
247 u16 reg_num;
248 u8 value;
249 };
250
251 struct mt9m114_device {
252 struct v4l2_subdev sd;
253 struct media_pad pad;
254 struct v4l2_mbus_framefmt format;
255
256 struct camera_sensor_platform_data *platform_data;
257 struct mutex input_lock; /* serialize sensor's ioctl */
258 struct v4l2_ctrl_handler ctrl_handler;
259 int real_model_id;
260 int nctx;
261 int power;
262
263 unsigned int bus_width;
264 unsigned int mode;
265 unsigned int field_inv;
266 unsigned int field_sel;
267 unsigned int ycseq;
268 unsigned int conv422;
269 unsigned int bpat;
270 unsigned int hpol;
271 unsigned int vpol;
272 unsigned int edge;
273 unsigned int bls;
274 unsigned int gamma;
275 unsigned int cconv;
276 unsigned int res;
277 unsigned int dwn_sz;
278 unsigned int blc;
279 unsigned int agc;
280 unsigned int awb;
281 unsigned int aec;
282 /* extention SENSOR version 2 */
283 unsigned int cie_profile;
284
285 /* extention SENSOR version 3 */
286 unsigned int flicker_freq;
287
288 /* extension SENSOR version 4 */
289 unsigned int smia_mode;
290 unsigned int mipi_mode;
291
292 /* Add name here to load shared library */
293 unsigned int type;
294
295 /*Number of MIPI lanes*/
296 unsigned int mipi_lanes;
297 /*WA for low light AE*/
298 unsigned int first_exp;
299 unsigned int first_gain;
300 unsigned int first_diggain;
301 char name[32];
302
303 u8 lightfreq;
304 u8 streamon;
305 };
306
307 struct mt9m114_format_struct {
308 u8 *desc;
309 u32 pixelformat;
310 struct regval_list *regs;
311 };
312
313 struct mt9m114_res_struct {
314 u8 *desc;
315 int res;
316 int width;
317 int height;
318 int fps;
319 int skip_frames;
320 bool used;
321 struct regval_list *regs;
322 u16 pixels_per_line;
323 u16 lines_per_frame;
324 u8 bin_factor_x;
325 u8 bin_factor_y;
326 u8 bin_mode;
327 };
328
329 /* 2 bytes used for address: 256 bytes total */
330 #define MT9M114_MAX_WRITE_BUF_SIZE 254
331 struct mt9m114_write_buffer {
332 u16 addr;
333 u8 data[MT9M114_MAX_WRITE_BUF_SIZE];
334 };
335
336 struct mt9m114_write_ctrl {
337 int index;
338 struct mt9m114_write_buffer buffer;
339 };
340
341 /*
342 * Modes supported by the mt9m114 driver.
343 * Please, keep them in ascending order.
344 */
345 static struct mt9m114_res_struct mt9m114_res[] = {
346 {
347 .desc = "720P",
348 .res = MT9M114_RES_736P,
349 .width = 1296,
350 .height = 736,
351 .fps = 30,
352 .used = false,
353 .regs = NULL,
354 .skip_frames = 1,
355
356 .pixels_per_line = 0x0640,
357 .lines_per_frame = 0x0307,
358 .bin_factor_x = 1,
359 .bin_factor_y = 1,
360 .bin_mode = 0,
361 },
362 {
363 .desc = "848P",
364 .res = MT9M114_RES_864P,
365 .width = 1296,
366 .height = 864,
367 .fps = 30,
368 .used = false,
369 .regs = NULL,
370 .skip_frames = 1,
371
372 .pixels_per_line = 0x0640,
373 .lines_per_frame = 0x03E8,
374 .bin_factor_x = 1,
375 .bin_factor_y = 1,
376 .bin_mode = 0,
377 },
378 {
379 .desc = "960P",
380 .res = MT9M114_RES_960P,
381 .width = 1296,
382 .height = 976,
383 .fps = 30,
384 .used = false,
385 .regs = NULL,
386 .skip_frames = 1,
387
388 .pixels_per_line = 0x0644, /* consistent with regs arrays */
389 .lines_per_frame = 0x03E5, /* consistent with regs arrays */
390 .bin_factor_x = 1,
391 .bin_factor_y = 1,
392 .bin_mode = 0,
393 },
394 };
395 #define N_RES (ARRAY_SIZE(mt9m114_res))
396
397 static struct misensor_reg const mt9m114_exitstandby[] = {
398 {MISENSOR_16BIT, 0x098E, 0xDC00},
399 /* exit-standby */
400 {MISENSOR_8BIT, 0xDC00, 0x54},
401 {MISENSOR_16BIT, 0x0080, 0x8002},
402 {MISENSOR_TOK_TERM, 0, 0}
403 };
404
405 static struct misensor_reg const mt9m114_exp_win[5][5] = {
406 {
407 {MISENSOR_8BIT, 0xA407, 0x64},
408 {MISENSOR_8BIT, 0xA408, 0x64},
409 {MISENSOR_8BIT, 0xA409, 0x64},
410 {MISENSOR_8BIT, 0xA40A, 0x64},
411 {MISENSOR_8BIT, 0xA40B, 0x64},
412 },
413 {
414 {MISENSOR_8BIT, 0xA40C, 0x64},
415 {MISENSOR_8BIT, 0xA40D, 0x64},
416 {MISENSOR_8BIT, 0xA40E, 0x64},
417 {MISENSOR_8BIT, 0xA40F, 0x64},
418 {MISENSOR_8BIT, 0xA410, 0x64},
419 },
420 {
421 {MISENSOR_8BIT, 0xA411, 0x64},
422 {MISENSOR_8BIT, 0xA412, 0x64},
423 {MISENSOR_8BIT, 0xA413, 0x64},
424 {MISENSOR_8BIT, 0xA414, 0x64},
425 {MISENSOR_8BIT, 0xA415, 0x64},
426 },
427 {
428 {MISENSOR_8BIT, 0xA416, 0x64},
429 {MISENSOR_8BIT, 0xA417, 0x64},
430 {MISENSOR_8BIT, 0xA418, 0x64},
431 {MISENSOR_8BIT, 0xA419, 0x64},
432 {MISENSOR_8BIT, 0xA41A, 0x64},
433 },
434 {
435 {MISENSOR_8BIT, 0xA41B, 0x64},
436 {MISENSOR_8BIT, 0xA41C, 0x64},
437 {MISENSOR_8BIT, 0xA41D, 0x64},
438 {MISENSOR_8BIT, 0xA41E, 0x64},
439 {MISENSOR_8BIT, 0xA41F, 0x64},
440 },
441 };
442
443 static struct misensor_reg const mt9m114_exp_average[] = {
444 {MISENSOR_8BIT, 0xA407, 0x00},
445 {MISENSOR_8BIT, 0xA408, 0x00},
446 {MISENSOR_8BIT, 0xA409, 0x00},
447 {MISENSOR_8BIT, 0xA40A, 0x00},
448 {MISENSOR_8BIT, 0xA40B, 0x00},
449 {MISENSOR_8BIT, 0xA40C, 0x00},
450 {MISENSOR_8BIT, 0xA40D, 0x00},
451 {MISENSOR_8BIT, 0xA40E, 0x00},
452 {MISENSOR_8BIT, 0xA40F, 0x00},
453 {MISENSOR_8BIT, 0xA410, 0x00},
454 {MISENSOR_8BIT, 0xA411, 0x00},
455 {MISENSOR_8BIT, 0xA412, 0x00},
456 {MISENSOR_8BIT, 0xA413, 0x00},
457 {MISENSOR_8BIT, 0xA414, 0x00},
458 {MISENSOR_8BIT, 0xA415, 0x00},
459 {MISENSOR_8BIT, 0xA416, 0x00},
460 {MISENSOR_8BIT, 0xA417, 0x00},
461 {MISENSOR_8BIT, 0xA418, 0x00},
462 {MISENSOR_8BIT, 0xA419, 0x00},
463 {MISENSOR_8BIT, 0xA41A, 0x00},
464 {MISENSOR_8BIT, 0xA41B, 0x00},
465 {MISENSOR_8BIT, 0xA41C, 0x00},
466 {MISENSOR_8BIT, 0xA41D, 0x00},
467 {MISENSOR_8BIT, 0xA41E, 0x00},
468 {MISENSOR_8BIT, 0xA41F, 0x00},
469 {MISENSOR_TOK_TERM, 0, 0}
470 };
471
472 static struct misensor_reg const mt9m114_exp_center[] = {
473 {MISENSOR_8BIT, 0xA407, 0x19},
474 {MISENSOR_8BIT, 0xA408, 0x19},
475 {MISENSOR_8BIT, 0xA409, 0x19},
476 {MISENSOR_8BIT, 0xA40A, 0x19},
477 {MISENSOR_8BIT, 0xA40B, 0x19},
478 {MISENSOR_8BIT, 0xA40C, 0x19},
479 {MISENSOR_8BIT, 0xA40D, 0x4B},
480 {MISENSOR_8BIT, 0xA40E, 0x4B},
481 {MISENSOR_8BIT, 0xA40F, 0x4B},
482 {MISENSOR_8BIT, 0xA410, 0x19},
483 {MISENSOR_8BIT, 0xA411, 0x19},
484 {MISENSOR_8BIT, 0xA412, 0x4B},
485 {MISENSOR_8BIT, 0xA413, 0x64},
486 {MISENSOR_8BIT, 0xA414, 0x4B},
487 {MISENSOR_8BIT, 0xA415, 0x19},
488 {MISENSOR_8BIT, 0xA416, 0x19},
489 {MISENSOR_8BIT, 0xA417, 0x4B},
490 {MISENSOR_8BIT, 0xA418, 0x4B},
491 {MISENSOR_8BIT, 0xA419, 0x4B},
492 {MISENSOR_8BIT, 0xA41A, 0x19},
493 {MISENSOR_8BIT, 0xA41B, 0x19},
494 {MISENSOR_8BIT, 0xA41C, 0x19},
495 {MISENSOR_8BIT, 0xA41D, 0x19},
496 {MISENSOR_8BIT, 0xA41E, 0x19},
497 {MISENSOR_8BIT, 0xA41F, 0x19},
498 {MISENSOR_TOK_TERM, 0, 0}
499 };
500
501 static struct misensor_reg const mt9m114_suspend[] = {
502 {MISENSOR_16BIT, 0x098E, 0xDC00},
503 {MISENSOR_8BIT, 0xDC00, 0x40},
504 {MISENSOR_16BIT, 0x0080, 0x8002},
505 {MISENSOR_TOK_TERM, 0, 0}
506 };
507
508 static struct misensor_reg const mt9m114_streaming[] = {
509 {MISENSOR_16BIT, 0x098E, 0xDC00},
510 {MISENSOR_8BIT, 0xDC00, 0x34},
511 {MISENSOR_16BIT, 0x0080, 0x8002},
512 {MISENSOR_TOK_TERM, 0, 0}
513 };
514
515 static struct misensor_reg const mt9m114_standby_reg[] = {
516 {MISENSOR_16BIT, 0x098E, 0xDC00},
517 {MISENSOR_8BIT, 0xDC00, 0x50},
518 {MISENSOR_16BIT, 0x0080, 0x8002},
519 {MISENSOR_TOK_TERM, 0, 0}
520 };
521
522 static struct misensor_reg const mt9m114_wakeup_reg[] = {
523 {MISENSOR_16BIT, 0x098E, 0xDC00},
524 {MISENSOR_8BIT, 0xDC00, 0x54},
525 {MISENSOR_16BIT, 0x0080, 0x8002},
526 {MISENSOR_TOK_TERM, 0, 0}
527 };
528
529 static struct misensor_reg const mt9m114_chgstat_reg[] = {
530 {MISENSOR_16BIT, 0x098E, 0xDC00},
531 {MISENSOR_8BIT, 0xDC00, 0x28},
532 {MISENSOR_16BIT, 0x0080, 0x8002},
533 {MISENSOR_TOK_TERM, 0, 0}
534 };
535
536 /* [1296x976_30fps] - Intel */
537 static struct misensor_reg const mt9m114_960P_init[] = {
538 {MISENSOR_16BIT, 0x098E, 0x1000},
539 {MISENSOR_8BIT, 0xC97E, 0x01}, /* cam_sysctl_pll_enable = 1 */
540 {MISENSOR_16BIT, 0xC980, 0x0128}, /* cam_sysctl_pll_divider_m_n = 276 */
541 {MISENSOR_16BIT, 0xC982, 0x0700}, /* cam_sysctl_pll_divider_p = 1792 */
542 {MISENSOR_16BIT, 0xC800, 0x0000}, /* cam_sensor_cfg_y_addr_start = 0 */
543 {MISENSOR_16BIT, 0xC802, 0x0000}, /* cam_sensor_cfg_x_addr_start = 0 */
544 {MISENSOR_16BIT, 0xC804, 0x03CF}, /* cam_sensor_cfg_y_addr_end = 971 */
545 {MISENSOR_16BIT, 0xC806, 0x050F}, /* cam_sensor_cfg_x_addr_end = 1291 */
546 {MISENSOR_16BIT, 0xC808, 0x02DC}, /* cam_sensor_cfg_pixclk = 48000000 */
547 {MISENSOR_16BIT, 0xC80A, 0x6C00},
548 {MISENSOR_16BIT, 0xC80C, 0x0001}, /* cam_sensor_cfg_row_speed = 1 */
549 /* cam_sensor_cfg_fine_integ_time_min = 219 */
550 {MISENSOR_16BIT, 0xC80E, 0x00DB},
551 /* cam_sensor_cfg_fine_integ_time_max = 1459 */
552 {MISENSOR_16BIT, 0xC810, 0x05B3},
553 /* cam_sensor_cfg_frame_length_lines = 1006 */
554 {MISENSOR_16BIT, 0xC812, 0x03F6},
555 /* cam_sensor_cfg_line_length_pck = 1590 */
556 {MISENSOR_16BIT, 0xC814, 0x063E},
557 /* cam_sensor_cfg_fine_correction = 96 */
558 {MISENSOR_16BIT, 0xC816, 0x0060},
559 /* cam_sensor_cfg_cpipe_last_row = 963 */
560 {MISENSOR_16BIT, 0xC818, 0x03C3},
561 {MISENSOR_16BIT, 0xC826, 0x0020}, /* cam_sensor_cfg_reg_0_data = 32 */
562 {MISENSOR_16BIT, 0xC834, 0x0000}, /* cam_sensor_control_read_mode = 0 */
563 {MISENSOR_16BIT, 0xC854, 0x0000}, /* cam_crop_window_xoffset = 0 */
564 {MISENSOR_16BIT, 0xC856, 0x0000}, /* cam_crop_window_yoffset = 0 */
565 {MISENSOR_16BIT, 0xC858, 0x0508}, /* cam_crop_window_width = 1280 */
566 {MISENSOR_16BIT, 0xC85A, 0x03C8}, /* cam_crop_window_height = 960 */
567 {MISENSOR_8BIT, 0xC85C, 0x03}, /* cam_crop_cropmode = 3 */
568 {MISENSOR_16BIT, 0xC868, 0x0508}, /* cam_output_width = 1280 */
569 {MISENSOR_16BIT, 0xC86A, 0x03C8}, /* cam_output_height = 960 */
570 {MISENSOR_TOK_TERM, 0, 0},
571 };
572
573 /* [1296x976_30fps_768Mbps] */
574 static struct misensor_reg const mt9m114_976P_init[] = {
575 {MISENSOR_16BIT, 0x98E, 0x1000},
576 {MISENSOR_8BIT, 0xC97E, 0x01}, /* cam_sysctl_pll_enable = 1 */
577 {MISENSOR_16BIT, 0xC980, 0x0128}, /* cam_sysctl_pll_divider_m_n = 276 */
578 {MISENSOR_16BIT, 0xC982, 0x0700}, /* cam_sysctl_pll_divider_p = 1792 */
579 {MISENSOR_16BIT, 0xC800, 0x0000}, /* cam_sensor_cfg_y_addr_start = 0 */
580 {MISENSOR_16BIT, 0xC802, 0x0000}, /* cam_sensor_cfg_x_addr_start = 0 */
581 {MISENSOR_16BIT, 0xC804, 0x03CF}, /* cam_sensor_cfg_y_addr_end = 975 */
582 {MISENSOR_16BIT, 0xC806, 0x050F}, /* cam_sensor_cfg_x_addr_end = 1295 */
583 {MISENSOR_32BIT, 0xC808, 0x2DC6C00},/* cam_sensor_cfg_pixclk = 480000*/
584 {MISENSOR_16BIT, 0xC80C, 0x0001}, /* cam_sensor_cfg_row_speed = 1 */
585 /* cam_sensor_cfg_fine_integ_time_min = 219 */
586 {MISENSOR_16BIT, 0xC80E, 0x00DB},
587 /* 0x062E //cam_sensor_cfg_fine_integ_time_max = 1459 */
588 {MISENSOR_16BIT, 0xC810, 0x05B3},
589 /* 0x074C //cam_sensor_cfg_frame_length_lines = 1006 */
590 {MISENSOR_16BIT, 0xC812, 0x03E5},
591 /* 0x06B1 /cam_sensor_cfg_line_length_pck = 1590 */
592 {MISENSOR_16BIT, 0xC814, 0x0644},
593 /* cam_sensor_cfg_fine_correction = 96 */
594 {MISENSOR_16BIT, 0xC816, 0x0060},
595 /* cam_sensor_cfg_cpipe_last_row = 963 */
596 {MISENSOR_16BIT, 0xC818, 0x03C3},
597 {MISENSOR_16BIT, 0xC826, 0x0020}, /* cam_sensor_cfg_reg_0_data = 32 */
598 {MISENSOR_16BIT, 0xC834, 0x0000}, /* cam_sensor_control_read_mode = 0 */
599 {MISENSOR_16BIT, 0xC854, 0x0000}, /* cam_crop_window_xoffset = 0 */
600 {MISENSOR_16BIT, 0xC856, 0x0000}, /* cam_crop_window_yoffset = 0 */
601 {MISENSOR_16BIT, 0xC858, 0x0508}, /* cam_crop_window_width = 1288 */
602 {MISENSOR_16BIT, 0xC85A, 0x03C8}, /* cam_crop_window_height = 968 */
603 {MISENSOR_8BIT, 0xC85C, 0x03}, /* cam_crop_cropmode = 3 */
604 {MISENSOR_16BIT, 0xC868, 0x0508}, /* cam_output_width = 1288 */
605 {MISENSOR_16BIT, 0xC86A, 0x03C8}, /* cam_output_height = 968 */
606 {MISENSOR_8BIT, 0xC878, 0x00}, /* 0x0E //cam_aet_aemode = 0 */
607 {MISENSOR_TOK_TERM, 0, 0}
608 };
609
610 /* [1296x864_30fps] */
611 static struct misensor_reg const mt9m114_864P_init[] = {
612 {MISENSOR_16BIT, 0x98E, 0x1000},
613 {MISENSOR_8BIT, 0xC97E, 0x01}, /* cam_sysctl_pll_enable = 1 */
614 {MISENSOR_16BIT, 0xC980, 0x0128}, /* cam_sysctl_pll_divider_m_n = 276 */
615 {MISENSOR_16BIT, 0xC982, 0x0700}, /* cam_sysctl_pll_divider_p = 1792 */
616 {MISENSOR_16BIT, 0xC800, 0x0038}, /* cam_sensor_cfg_y_addr_start = 56 */
617 {MISENSOR_16BIT, 0xC802, 0x0000}, /* cam_sensor_cfg_x_addr_start = 0 */
618 {MISENSOR_16BIT, 0xC804, 0x0397}, /* cam_sensor_cfg_y_addr_end = 919 */
619 {MISENSOR_16BIT, 0xC806, 0x050F}, /* cam_sensor_cfg_x_addr_end = 1295 */
620 /* cam_sensor_cfg_pixclk = 48000000 */
621 {MISENSOR_32BIT, 0xC808, 0x2DC6C00},
622 {MISENSOR_16BIT, 0xC80C, 0x0001}, /* cam_sensor_cfg_row_speed = 1 */
623 /* cam_sensor_cfg_fine_integ_time_min = 219 */
624 {MISENSOR_16BIT, 0xC80E, 0x00DB},
625 /* cam_sensor_cfg_fine_integ_time_max = 1469 */
626 {MISENSOR_16BIT, 0xC810, 0x05BD},
627 /* cam_sensor_cfg_frame_length_lines = 1000 */
628 {MISENSOR_16BIT, 0xC812, 0x03E8},
629 /* cam_sensor_cfg_line_length_pck = 1600 */
630 {MISENSOR_16BIT, 0xC814, 0x0640},
631 /* cam_sensor_cfg_fine_correction = 96 */
632 {MISENSOR_16BIT, 0xC816, 0x0060},
633 /* cam_sensor_cfg_cpipe_last_row = 859 */
634 {MISENSOR_16BIT, 0xC818, 0x035B},
635 {MISENSOR_16BIT, 0xC826, 0x0020}, /* cam_sensor_cfg_reg_0_data = 32 */
636 {MISENSOR_16BIT, 0xC834, 0x0000}, /* cam_sensor_control_read_mode = 0 */
637 {MISENSOR_16BIT, 0xC854, 0x0000}, /* cam_crop_window_xoffset = 0 */
638 {MISENSOR_16BIT, 0xC856, 0x0000}, /* cam_crop_window_yoffset = 0 */
639 {MISENSOR_16BIT, 0xC858, 0x0508}, /* cam_crop_window_width = 1288 */
640 {MISENSOR_16BIT, 0xC85A, 0x0358}, /* cam_crop_window_height = 856 */
641 {MISENSOR_8BIT, 0xC85C, 0x03}, /* cam_crop_cropmode = 3 */
642 {MISENSOR_16BIT, 0xC868, 0x0508}, /* cam_output_width = 1288 */
643 {MISENSOR_16BIT, 0xC86A, 0x0358}, /* cam_output_height = 856 */
644 {MISENSOR_8BIT, 0xC878, 0x00}, /* 0x0E //cam_aet_aemode = 0 */
645 {MISENSOR_TOK_TERM, 0, 0}
646 };
647
648 /* [1296x736_30fps] */
649 static struct misensor_reg const mt9m114_736P_init[] = {
650 {MISENSOR_16BIT, 0x98E, 0x1000},
651 {MISENSOR_8BIT, 0xC97E, 0x01}, /* cam_sysctl_pll_enable = 1 */
652 {MISENSOR_16BIT, 0xC980, 0x011F}, /* cam_sysctl_pll_divider_m_n = 287 */
653 {MISENSOR_16BIT, 0xC982, 0x0700}, /* cam_sysctl_pll_divider_p = 1792 */
654 {MISENSOR_16BIT, 0xC800, 0x0078}, /* cam_sensor_cfg_y_addr_start = 120*/
655 {MISENSOR_16BIT, 0xC802, 0x0000}, /* cam_sensor_cfg_x_addr_start = 0 */
656 {MISENSOR_16BIT, 0xC804, 0x0357}, /* cam_sensor_cfg_y_addr_end = 855 */
657 {MISENSOR_16BIT, 0xC806, 0x050F}, /* cam_sensor_cfg_x_addr_end = 1295 */
658 {MISENSOR_32BIT, 0xC808, 0x237A07F}, /* cam_sensor_cfg_pixclk=37199999*/
659 {MISENSOR_16BIT, 0xC80C, 0x0001}, /* cam_sensor_cfg_row_speed = 1 */
660 /* cam_sensor_cfg_fine_integ_time_min = 219 */
661 {MISENSOR_16BIT, 0xC80E, 0x00DB},
662 /* 0x062E //cam_sensor_cfg_fine_integ_time_max = 1469 */
663 {MISENSOR_16BIT, 0xC810, 0x05BD},
664 /* 0x074C //cam_sensor_cfg_frame_length_lines = 775 */
665 {MISENSOR_16BIT, 0xC812, 0x0307},
666 /* 0x06B1 /cam_sensor_cfg_line_length_pck = 1600 */
667 {MISENSOR_16BIT, 0xC814, 0x0640},
668 /* cam_sensor_cfg_fine_correction = 96 */
669 {MISENSOR_16BIT, 0xC816, 0x0060},
670 /* cam_sensor_cfg_cpipe_last_row = 731 */
671 {MISENSOR_16BIT, 0xC818, 0x02DB},
672 {MISENSOR_16BIT, 0xC826, 0x0020}, /* cam_sensor_cfg_reg_0_data = 32 */
673 {MISENSOR_16BIT, 0xC834, 0x0000}, /* cam_sensor_control_read_mode = 0 */
674 {MISENSOR_16BIT, 0xC854, 0x0000}, /* cam_crop_window_xoffset = 0 */
675 {MISENSOR_16BIT, 0xC856, 0x0000}, /* cam_crop_window_yoffset = 0 */
676 {MISENSOR_16BIT, 0xC858, 0x0508}, /* cam_crop_window_width = 1288 */
677 {MISENSOR_16BIT, 0xC85A, 0x02D8}, /* cam_crop_window_height = 728 */
678 {MISENSOR_8BIT, 0xC85C, 0x03}, /* cam_crop_cropmode = 3 */
679 {MISENSOR_16BIT, 0xC868, 0x0508}, /* cam_output_width = 1288 */
680 {MISENSOR_16BIT, 0xC86A, 0x02D8}, /* cam_output_height = 728 */
681 {MISENSOR_8BIT, 0xC878, 0x00}, /* 0x0E //cam_aet_aemode = 0 */
682 {MISENSOR_TOK_TERM, 0, 0}
683 };
684
685 /* [736x496_30fps_768Mbps] */
686 static struct misensor_reg const mt9m114_720_480P_init[] = {
687 {MISENSOR_16BIT, 0x98E, 0x1000},
688 {MISENSOR_8BIT, 0xC97E, 0x01}, /* cam_sysctl_pll_enable = 1 */
689 {MISENSOR_16BIT, 0xC980, 0x0128}, /* cam_sysctl_pll_divider_m_n = 276 */
690 {MISENSOR_16BIT, 0xC982, 0x0700}, /* cam_sysctl_pll_divider_p = 1792 */
691 {MISENSOR_16BIT, 0xC800, 0x00F0}, /* cam_sensor_cfg_y_addr_start = 240*/
692 {MISENSOR_16BIT, 0xC802, 0x0118}, /* cam_sensor_cfg_x_addr_start = 280*/
693 {MISENSOR_16BIT, 0xC804, 0x02DF}, /* cam_sensor_cfg_y_addr_end = 735 */
694 {MISENSOR_16BIT, 0xC806, 0x03F7}, /* cam_sensor_cfg_x_addr_end = 1015 */
695 /* cam_sensor_cfg_pixclk = 48000000 */
696 {MISENSOR_32BIT, 0xC808, 0x2DC6C00},
697 {MISENSOR_16BIT, 0xC80C, 0x0001}, /* cam_sensor_cfg_row_speed = 1 */
698 /* cam_sensor_cfg_fine_integ_time_min = 219 */
699 {MISENSOR_16BIT, 0xC80E, 0x00DB},
700 /* 0x062E //cam_sensor_cfg_fine_integ_time_max = 1459 */
701 {MISENSOR_16BIT, 0xC810, 0x05B3},
702 /* 0x074C //cam_sensor_cfg_frame_length_lines = 997 */
703 {MISENSOR_16BIT, 0xC812, 0x03E5},
704 /* 0x06B1 /cam_sensor_cfg_line_length_pck = 1604 */
705 {MISENSOR_16BIT, 0xC814, 0x0644},
706 /* cam_sensor_cfg_fine_correction = 96 */
707 {MISENSOR_16BIT, 0xC816, 0x0060},
708 {MISENSOR_16BIT, 0xC818, 0x03C3}, /* cam_sensor_cfg_cpipe_last_row=963*/
709 {MISENSOR_16BIT, 0xC826, 0x0020}, /* cam_sensor_cfg_reg_0_data = 32 */
710 {MISENSOR_16BIT, 0xC834, 0x0000}, /* cam_sensor_control_read_mode = 0*/
711 {MISENSOR_16BIT, 0xC854, 0x0000}, /* cam_crop_window_xoffset = 0 */
712 {MISENSOR_16BIT, 0xC856, 0x0000}, /* cam_crop_window_yoffset = 0 */
713 {MISENSOR_16BIT, 0xC858, 0x02D8}, /* cam_crop_window_width = 728 */
714 {MISENSOR_16BIT, 0xC85A, 0x01E8}, /* cam_crop_window_height = 488 */
715 {MISENSOR_8BIT, 0xC85C, 0x03}, /* cam_crop_cropmode = 3 */
716 {MISENSOR_16BIT, 0xC868, 0x02D8}, /* cam_output_width = 728 */
717 {MISENSOR_16BIT, 0xC86A, 0x01E8}, /* cam_output_height = 488 */
718 {MISENSOR_8BIT, 0xC878, 0x00}, /* 0x0E //cam_aet_aemode = 0 */
719 {MISENSOR_TOK_TERM, 0, 0}
720 };
721
722 static struct misensor_reg const mt9m114_common[] = {
723 /* reset */
724 {MISENSOR_16BIT, 0x301A, 0x0234},
725 /* LOAD = Step2-PLL_Timing //PLL and Timing */
726 {MISENSOR_16BIT, 0x098E, 0x1000}, /* LOGICAL_ADDRESS_ACCESS */
727 {MISENSOR_8BIT, 0xC97E, 0x01}, /* cam_sysctl_pll_enable = 1 */
728 {MISENSOR_16BIT, 0xC980, 0x0128}, /* cam_sysctl_pll_divider_m_n = 276 */
729 {MISENSOR_16BIT, 0xC982, 0x0700}, /* cam_sysctl_pll_divider_p = 1792 */
730 {MISENSOR_16BIT, 0xC800, 0x0000}, /* cam_sensor_cfg_y_addr_start = 216*/
731 {MISENSOR_16BIT, 0xC802, 0x0000}, /* cam_sensor_cfg_x_addr_start = 168*/
732 {MISENSOR_16BIT, 0xC804, 0x03CD}, /* cam_sensor_cfg_y_addr_end = 761 */
733 {MISENSOR_16BIT, 0xC806, 0x050D}, /* cam_sensor_cfg_x_addr_end = 1127 */
734 {MISENSOR_16BIT, 0xC808, 0x02DC}, /* cam_sensor_cfg_pixclk = 24000000 */
735 {MISENSOR_16BIT, 0xC80A, 0x6C00},
736 {MISENSOR_16BIT, 0xC80C, 0x0001}, /* cam_sensor_cfg_row_speed = 1 */
737 /* cam_sensor_cfg_fine_integ_time_min = 219 */
738 {MISENSOR_16BIT, 0xC80E, 0x01C3},
739 /* cam_sensor_cfg_fine_integ_time_max = 1149 */
740 {MISENSOR_16BIT, 0xC810, 0x03F7},
741 /* cam_sensor_cfg_frame_length_lines = 625 */
742 {MISENSOR_16BIT, 0xC812, 0x0500},
743 /* cam_sensor_cfg_line_length_pck = 1280 */
744 {MISENSOR_16BIT, 0xC814, 0x04E2},
745 /* cam_sensor_cfg_fine_correction = 96 */
746 {MISENSOR_16BIT, 0xC816, 0x00E0},
747 /* cam_sensor_cfg_cpipe_last_row = 541 */
748 {MISENSOR_16BIT, 0xC818, 0x01E3},
749 {MISENSOR_16BIT, 0xC826, 0x0020}, /* cam_sensor_cfg_reg_0_data = 32 */
750 {MISENSOR_16BIT, 0xC834, 0x0330}, /* cam_sensor_control_read_mode = 0 */
751 {MISENSOR_16BIT, 0xC854, 0x0000}, /* cam_crop_window_xoffset = 0 */
752 {MISENSOR_16BIT, 0xC856, 0x0000}, /* cam_crop_window_yoffset = 0 */
753 {MISENSOR_16BIT, 0xC858, 0x0280}, /* cam_crop_window_width = 952 */
754 {MISENSOR_16BIT, 0xC85A, 0x01E0}, /* cam_crop_window_height = 538 */
755 {MISENSOR_8BIT, 0xC85C, 0x03}, /* cam_crop_cropmode = 3 */
756 {MISENSOR_16BIT, 0xC868, 0x0280}, /* cam_output_width = 952 */
757 {MISENSOR_16BIT, 0xC86A, 0x01E0}, /* cam_output_height = 538 */
758 /* LOAD = Step3-Recommended
759 * Patch,Errata and Sensor optimization Setting */
760 {MISENSOR_16BIT, 0x316A, 0x8270}, /* DAC_TXLO_ROW */
761 {MISENSOR_16BIT, 0x316C, 0x8270}, /* DAC_TXLO */
762 {MISENSOR_16BIT, 0x3ED0, 0x2305}, /* DAC_LD_4_5 */
763 {MISENSOR_16BIT, 0x3ED2, 0x77CF}, /* DAC_LD_6_7 */
764 {MISENSOR_16BIT, 0x316E, 0x8202}, /* DAC_ECL */
765 {MISENSOR_16BIT, 0x3180, 0x87FF}, /* DELTA_DK_CONTROL */
766 {MISENSOR_16BIT, 0x30D4, 0x6080}, /* COLUMN_CORRECTION */
767 {MISENSOR_16BIT, 0xA802, 0x0008}, /* AE_TRACK_MODE */
768 {MISENSOR_16BIT, 0x3E14, 0xFF39}, /* SAMP_COL_PUP2 */
769 {MISENSOR_16BIT, 0x31E0, 0x0003}, /* PIX_DEF_ID */
770 /* LOAD = Step8-Features //Ports, special features, etc. */
771 {MISENSOR_16BIT, 0x098E, 0x0000}, /* LOGICAL_ADDRESS_ACCESS */
772 {MISENSOR_16BIT, 0x001E, 0x0777}, /* PAD_SLEW */
773 {MISENSOR_16BIT, 0x098E, 0x0000}, /* LOGICAL_ADDRESS_ACCESS */
774 {MISENSOR_16BIT, 0xC984, 0x8001}, /* CAM_PORT_OUTPUT_CONTROL */
775 {MISENSOR_16BIT, 0xC988, 0x0F00}, /* CAM_PORT_MIPI_TIMING_T_HS_ZERO */
776 /* CAM_PORT_MIPI_TIMING_T_HS_EXIT_HS_TRAIL */
777 {MISENSOR_16BIT, 0xC98A, 0x0B07},
778 /* CAM_PORT_MIPI_TIMING_T_CLK_POST_CLK_PRE */
779 {MISENSOR_16BIT, 0xC98C, 0x0D01},
780 /* CAM_PORT_MIPI_TIMING_T_CLK_TRAIL_CLK_ZERO */
781 {MISENSOR_16BIT, 0xC98E, 0x071D},
782 {MISENSOR_16BIT, 0xC990, 0x0006}, /* CAM_PORT_MIPI_TIMING_T_LPX */
783 {MISENSOR_16BIT, 0xC992, 0x0A0C}, /* CAM_PORT_MIPI_TIMING_INIT_TIMING */
784 {MISENSOR_16BIT, 0x3C5A, 0x0009}, /* MIPI_DELAY_TRIM */
785 {MISENSOR_16BIT, 0xC86C, 0x0210}, /* CAM_OUTPUT_FORMAT */
786 {MISENSOR_16BIT, 0xA804, 0x0000}, /* AE_TRACK_ALGO */
787 /* default exposure */
788 {MISENSOR_16BIT, 0x3012, 0x0110}, /* COMMAND_REGISTER */
789 {MISENSOR_TOK_TERM, 0, 0},
790
791 };
792
793 static struct misensor_reg const mt9m114_antiflicker_50hz[] = {
794 {MISENSOR_16BIT, 0x098E, 0xC88B},
795 {MISENSOR_8BIT, 0xC88B, 0x32},
796 {MISENSOR_8BIT, 0xDC00, 0x28},
797 {MISENSOR_16BIT, 0x0080, 0x8002},
798 {MISENSOR_TOK_TERM, 0, 0}
799 };
800
801 static struct misensor_reg const mt9m114_antiflicker_60hz[] = {
802 {MISENSOR_16BIT, 0x098E, 0xC88B},
803 {MISENSOR_8BIT, 0xC88B, 0x3C},
804 {MISENSOR_8BIT, 0xDC00, 0x28},
805 {MISENSOR_16BIT, 0x0080, 0x8002},
806 {MISENSOR_TOK_TERM, 0, 0}
807 };
808
809 static struct misensor_reg const mt9m114_iq[] = {
810 /* [Step3-Recommended] [Sensor optimization] */
811 {MISENSOR_16BIT, 0x316A, 0x8270},
812 {MISENSOR_16BIT, 0x316C, 0x8270},
813 {MISENSOR_16BIT, 0x3ED0, 0x2305},
814 {MISENSOR_16BIT, 0x3ED2, 0x77CF},
815 {MISENSOR_16BIT, 0x316E, 0x8202},
816 {MISENSOR_16BIT, 0x3180, 0x87FF},
817 {MISENSOR_16BIT, 0x30D4, 0x6080},
818 {MISENSOR_16BIT, 0xA802, 0x0008},
819
820 /* This register is from vender to avoid low light color noise */
821 {MISENSOR_16BIT, 0x31E0, 0x0001},
822
823 /* LOAD=Errata item 1 */
824 {MISENSOR_16BIT, 0x3E14, 0xFF39},
825
826 /* LOAD=Errata item 2 */
827 {MISENSOR_16BIT, 0x301A, 0x8234},
828
829 /*
830 * LOAD=Errata item 3
831 * LOAD=Patch 0202;
832 * Feature Recommended; Black level correction fix
833 */
834 {MISENSOR_16BIT, 0x0982, 0x0001},
835 {MISENSOR_16BIT, 0x098A, 0x5000},
836 {MISENSOR_16BIT, 0xD000, 0x70CF},
837 {MISENSOR_16BIT, 0xD002, 0xFFFF},
838 {MISENSOR_16BIT, 0xD004, 0xC5D4},
839 {MISENSOR_16BIT, 0xD006, 0x903A},
840 {MISENSOR_16BIT, 0xD008, 0x2144},
841 {MISENSOR_16BIT, 0xD00A, 0x0C00},
842 {MISENSOR_16BIT, 0xD00C, 0x2186},
843 {MISENSOR_16BIT, 0xD00E, 0x0FF3},
844 {MISENSOR_16BIT, 0xD010, 0xB844},
845 {MISENSOR_16BIT, 0xD012, 0xB948},
846 {MISENSOR_16BIT, 0xD014, 0xE082},
847 {MISENSOR_16BIT, 0xD016, 0x20CC},
848 {MISENSOR_16BIT, 0xD018, 0x80E2},
849 {MISENSOR_16BIT, 0xD01A, 0x21CC},
850 {MISENSOR_16BIT, 0xD01C, 0x80A2},
851 {MISENSOR_16BIT, 0xD01E, 0x21CC},
852 {MISENSOR_16BIT, 0xD020, 0x80E2},
853 {MISENSOR_16BIT, 0xD022, 0xF404},
854 {MISENSOR_16BIT, 0xD024, 0xD801},
855 {MISENSOR_16BIT, 0xD026, 0xF003},
856 {MISENSOR_16BIT, 0xD028, 0xD800},
857 {MISENSOR_16BIT, 0xD02A, 0x7EE0},
858 {MISENSOR_16BIT, 0xD02C, 0xC0F1},
859 {MISENSOR_16BIT, 0xD02E, 0x08BA},
860
861 {MISENSOR_16BIT, 0xD030, 0x0600},
862 {MISENSOR_16BIT, 0xD032, 0xC1A1},
863 {MISENSOR_16BIT, 0xD034, 0x76CF},
864 {MISENSOR_16BIT, 0xD036, 0xFFFF},
865 {MISENSOR_16BIT, 0xD038, 0xC130},
866 {MISENSOR_16BIT, 0xD03A, 0x6E04},
867 {MISENSOR_16BIT, 0xD03C, 0xC040},
868 {MISENSOR_16BIT, 0xD03E, 0x71CF},
869 {MISENSOR_16BIT, 0xD040, 0xFFFF},
870 {MISENSOR_16BIT, 0xD042, 0xC790},
871 {MISENSOR_16BIT, 0xD044, 0x8103},
872 {MISENSOR_16BIT, 0xD046, 0x77CF},
873 {MISENSOR_16BIT, 0xD048, 0xFFFF},
874 {MISENSOR_16BIT, 0xD04A, 0xC7C0},
875 {MISENSOR_16BIT, 0xD04C, 0xE001},
876 {MISENSOR_16BIT, 0xD04E, 0xA103},
877 {MISENSOR_16BIT, 0xD050, 0xD800},
878 {MISENSOR_16BIT, 0xD052, 0x0C6A},
879 {MISENSOR_16BIT, 0xD054, 0x04E0},
880 {MISENSOR_16BIT, 0xD056, 0xB89E},
881 {MISENSOR_16BIT, 0xD058, 0x7508},
882 {MISENSOR_16BIT, 0xD05A, 0x8E1C},
883 {MISENSOR_16BIT, 0xD05C, 0x0809},
884 {MISENSOR_16BIT, 0xD05E, 0x0191},
885
886 {MISENSOR_16BIT, 0xD060, 0xD801},
887 {MISENSOR_16BIT, 0xD062, 0xAE1D},
888 {MISENSOR_16BIT, 0xD064, 0xE580},
889 {MISENSOR_16BIT, 0xD066, 0x20CA},
890 {MISENSOR_16BIT, 0xD068, 0x0022},
891 {MISENSOR_16BIT, 0xD06A, 0x20CF},
892 {MISENSOR_16BIT, 0xD06C, 0x0522},
893 {MISENSOR_16BIT, 0xD06E, 0x0C5C},
894 {MISENSOR_16BIT, 0xD070, 0x04E2},
895 {MISENSOR_16BIT, 0xD072, 0x21CA},
896 {MISENSOR_16BIT, 0xD074, 0x0062},
897 {MISENSOR_16BIT, 0xD076, 0xE580},
898 {MISENSOR_16BIT, 0xD078, 0xD901},
899 {MISENSOR_16BIT, 0xD07A, 0x79C0},
900 {MISENSOR_16BIT, 0xD07C, 0xD800},
901 {MISENSOR_16BIT, 0xD07E, 0x0BE6},
902 {MISENSOR_16BIT, 0xD080, 0x04E0},
903 {MISENSOR_16BIT, 0xD082, 0xB89E},
904 {MISENSOR_16BIT, 0xD084, 0x70CF},
905 {MISENSOR_16BIT, 0xD086, 0xFFFF},
906 {MISENSOR_16BIT, 0xD088, 0xC8D4},
907 {MISENSOR_16BIT, 0xD08A, 0x9002},
908 {MISENSOR_16BIT, 0xD08C, 0x0857},
909 {MISENSOR_16BIT, 0xD08E, 0x025E},
910
911 {MISENSOR_16BIT, 0xD090, 0xFFDC},
912 {MISENSOR_16BIT, 0xD092, 0xE080},
913 {MISENSOR_16BIT, 0xD094, 0x25CC},
914 {MISENSOR_16BIT, 0xD096, 0x9022},
915 {MISENSOR_16BIT, 0xD098, 0xF225},
916 {MISENSOR_16BIT, 0xD09A, 0x1700},
917 {MISENSOR_16BIT, 0xD09C, 0x108A},
918 {MISENSOR_16BIT, 0xD09E, 0x73CF},
919 {MISENSOR_16BIT, 0xD0A0, 0xFF00},
920 {MISENSOR_16BIT, 0xD0A2, 0x3174},
921 {MISENSOR_16BIT, 0xD0A4, 0x9307},
922 {MISENSOR_16BIT, 0xD0A6, 0x2A04},
923 {MISENSOR_16BIT, 0xD0A8, 0x103E},
924 {MISENSOR_16BIT, 0xD0AA, 0x9328},
925 {MISENSOR_16BIT, 0xD0AC, 0x2942},
926 {MISENSOR_16BIT, 0xD0AE, 0x7140},
927 {MISENSOR_16BIT, 0xD0B0, 0x2A04},
928 {MISENSOR_16BIT, 0xD0B2, 0x107E},
929 {MISENSOR_16BIT, 0xD0B4, 0x9349},
930 {MISENSOR_16BIT, 0xD0B6, 0x2942},
931 {MISENSOR_16BIT, 0xD0B8, 0x7141},
932 {MISENSOR_16BIT, 0xD0BA, 0x2A04},
933 {MISENSOR_16BIT, 0xD0BC, 0x10BE},
934 {MISENSOR_16BIT, 0xD0BE, 0x934A},
935
936 {MISENSOR_16BIT, 0xD0C0, 0x2942},
937 {MISENSOR_16BIT, 0xD0C2, 0x714B},
938 {MISENSOR_16BIT, 0xD0C4, 0x2A04},
939 {MISENSOR_16BIT, 0xD0C6, 0x10BE},
940 {MISENSOR_16BIT, 0xD0C8, 0x130C},
941 {MISENSOR_16BIT, 0xD0CA, 0x010A},
942 {MISENSOR_16BIT, 0xD0CC, 0x2942},
943 {MISENSOR_16BIT, 0xD0CE, 0x7142},
944 {MISENSOR_16BIT, 0xD0D0, 0x2250},
945 {MISENSOR_16BIT, 0xD0D2, 0x13CA},
946 {MISENSOR_16BIT, 0xD0D4, 0x1B0C},
947 {MISENSOR_16BIT, 0xD0D6, 0x0284},
948 {MISENSOR_16BIT, 0xD0D8, 0xB307},
949 {MISENSOR_16BIT, 0xD0DA, 0xB328},
950 {MISENSOR_16BIT, 0xD0DC, 0x1B12},
951 {MISENSOR_16BIT, 0xD0DE, 0x02C4},
952 {MISENSOR_16BIT, 0xD0E0, 0xB34A},
953 {MISENSOR_16BIT, 0xD0E2, 0xED88},
954 {MISENSOR_16BIT, 0xD0E4, 0x71CF},
955 {MISENSOR_16BIT, 0xD0E6, 0xFF00},
956 {MISENSOR_16BIT, 0xD0E8, 0x3174},
957 {MISENSOR_16BIT, 0xD0EA, 0x9106},
958 {MISENSOR_16BIT, 0xD0EC, 0xB88F},
959 {MISENSOR_16BIT, 0xD0EE, 0xB106},
960
961 {MISENSOR_16BIT, 0xD0F0, 0x210A},
962 {MISENSOR_16BIT, 0xD0F2, 0x8340},
963 {MISENSOR_16BIT, 0xD0F4, 0xC000},
964 {MISENSOR_16BIT, 0xD0F6, 0x21CA},
965 {MISENSOR_16BIT, 0xD0F8, 0x0062},
966 {MISENSOR_16BIT, 0xD0FA, 0x20F0},
967 {MISENSOR_16BIT, 0xD0FC, 0x0040},
968 {MISENSOR_16BIT, 0xD0FE, 0x0B02},
969 {MISENSOR_16BIT, 0xD100, 0x0320},
970 {MISENSOR_16BIT, 0xD102, 0xD901},
971 {MISENSOR_16BIT, 0xD104, 0x07F1},
972 {MISENSOR_16BIT, 0xD106, 0x05E0},
973 {MISENSOR_16BIT, 0xD108, 0xC0A1},
974 {MISENSOR_16BIT, 0xD10A, 0x78E0},
975 {MISENSOR_16BIT, 0xD10C, 0xC0F1},
976 {MISENSOR_16BIT, 0xD10E, 0x71CF},
977 {MISENSOR_16BIT, 0xD110, 0xFFFF},
978 {MISENSOR_16BIT, 0xD112, 0xC7C0},
979 {MISENSOR_16BIT, 0xD114, 0xD840},
980 {MISENSOR_16BIT, 0xD116, 0xA900},
981 {MISENSOR_16BIT, 0xD118, 0x71CF},
982 {MISENSOR_16BIT, 0xD11A, 0xFFFF},
983 {MISENSOR_16BIT, 0xD11C, 0xD02C},
984 {MISENSOR_16BIT, 0xD11E, 0xD81E},
985
986 {MISENSOR_16BIT, 0xD120, 0x0A5A},
987 {MISENSOR_16BIT, 0xD122, 0x04E0},
988 {MISENSOR_16BIT, 0xD124, 0xDA00},
989 {MISENSOR_16BIT, 0xD126, 0xD800},
990 {MISENSOR_16BIT, 0xD128, 0xC0D1},
991 {MISENSOR_16BIT, 0xD12A, 0x7EE0},
992
993 {MISENSOR_16BIT, 0x098E, 0x0000},
994 {MISENSOR_16BIT, 0xE000, 0x010C},
995 {MISENSOR_16BIT, 0xE002, 0x0202},
996 {MISENSOR_16BIT, 0xE004, 0x4103},
997 {MISENSOR_16BIT, 0xE006, 0x0202},
998 {MISENSOR_16BIT, 0x0080, 0xFFF0},
999 {MISENSOR_16BIT, 0x0080, 0xFFF1},
1000
1001 /* LOAD=Patch 0302; Feature Recommended; Adaptive Sensitivity */
1002 {MISENSOR_16BIT, 0x0982, 0x0001},
1003 {MISENSOR_16BIT, 0x098A, 0x512C},
1004 {MISENSOR_16BIT, 0xD12C, 0x70CF},
1005 {MISENSOR_16BIT, 0xD12E, 0xFFFF},
1006 {MISENSOR_16BIT, 0xD130, 0xC5D4},
1007 {MISENSOR_16BIT, 0xD132, 0x903A},
1008 {MISENSOR_16BIT, 0xD134, 0x2144},
1009 {MISENSOR_16BIT, 0xD136, 0x0C00},
1010 {MISENSOR_16BIT, 0xD138, 0x2186},
1011 {MISENSOR_16BIT, 0xD13A, 0x0FF3},
1012 {MISENSOR_16BIT, 0xD13C, 0xB844},
1013 {MISENSOR_16BIT, 0xD13E, 0x262F},
1014 {MISENSOR_16BIT, 0xD140, 0xF008},
1015 {MISENSOR_16BIT, 0xD142, 0xB948},
1016 {MISENSOR_16BIT, 0xD144, 0x21CC},
1017 {MISENSOR_16BIT, 0xD146, 0x8021},
1018 {MISENSOR_16BIT, 0xD148, 0xD801},
1019 {MISENSOR_16BIT, 0xD14A, 0xF203},
1020 {MISENSOR_16BIT, 0xD14C, 0xD800},
1021 {MISENSOR_16BIT, 0xD14E, 0x7EE0},
1022 {MISENSOR_16BIT, 0xD150, 0xC0F1},
1023 {MISENSOR_16BIT, 0xD152, 0x71CF},
1024 {MISENSOR_16BIT, 0xD154, 0xFFFF},
1025 {MISENSOR_16BIT, 0xD156, 0xC610},
1026 {MISENSOR_16BIT, 0xD158, 0x910E},
1027 {MISENSOR_16BIT, 0xD15A, 0x208C},
1028 {MISENSOR_16BIT, 0xD15C, 0x8014},
1029 {MISENSOR_16BIT, 0xD15E, 0xF418},
1030 {MISENSOR_16BIT, 0xD160, 0x910F},
1031 {MISENSOR_16BIT, 0xD162, 0x208C},
1032 {MISENSOR_16BIT, 0xD164, 0x800F},
1033 {MISENSOR_16BIT, 0xD166, 0xF414},
1034 {MISENSOR_16BIT, 0xD168, 0x9116},
1035 {MISENSOR_16BIT, 0xD16A, 0x208C},
1036 {MISENSOR_16BIT, 0xD16C, 0x800A},
1037 {MISENSOR_16BIT, 0xD16E, 0xF410},
1038 {MISENSOR_16BIT, 0xD170, 0x9117},
1039 {MISENSOR_16BIT, 0xD172, 0x208C},
1040 {MISENSOR_16BIT, 0xD174, 0x8807},
1041 {MISENSOR_16BIT, 0xD176, 0xF40C},
1042 {MISENSOR_16BIT, 0xD178, 0x9118},
1043 {MISENSOR_16BIT, 0xD17A, 0x2086},
1044 {MISENSOR_16BIT, 0xD17C, 0x0FF3},
1045 {MISENSOR_16BIT, 0xD17E, 0xB848},
1046 {MISENSOR_16BIT, 0xD180, 0x080D},
1047 {MISENSOR_16BIT, 0xD182, 0x0090},
1048 {MISENSOR_16BIT, 0xD184, 0xFFEA},
1049 {MISENSOR_16BIT, 0xD186, 0xE081},
1050 {MISENSOR_16BIT, 0xD188, 0xD801},
1051 {MISENSOR_16BIT, 0xD18A, 0xF203},
1052 {MISENSOR_16BIT, 0xD18C, 0xD800},
1053 {MISENSOR_16BIT, 0xD18E, 0xC0D1},
1054 {MISENSOR_16BIT, 0xD190, 0x7EE0},
1055 {MISENSOR_16BIT, 0xD192, 0x78E0},
1056 {MISENSOR_16BIT, 0xD194, 0xC0F1},
1057 {MISENSOR_16BIT, 0xD196, 0x71CF},
1058 {MISENSOR_16BIT, 0xD198, 0xFFFF},
1059 {MISENSOR_16BIT, 0xD19A, 0xC610},
1060 {MISENSOR_16BIT, 0xD19C, 0x910E},
1061 {MISENSOR_16BIT, 0xD19E, 0x208C},
1062 {MISENSOR_16BIT, 0xD1A0, 0x800A},
1063 {MISENSOR_16BIT, 0xD1A2, 0xF418},
1064 {MISENSOR_16BIT, 0xD1A4, 0x910F},
1065 {MISENSOR_16BIT, 0xD1A6, 0x208C},
1066 {MISENSOR_16BIT, 0xD1A8, 0x8807},
1067 {MISENSOR_16BIT, 0xD1AA, 0xF414},
1068 {MISENSOR_16BIT, 0xD1AC, 0x9116},
1069 {MISENSOR_16BIT, 0xD1AE, 0x208C},
1070 {MISENSOR_16BIT, 0xD1B0, 0x800A},
1071 {MISENSOR_16BIT, 0xD1B2, 0xF410},
1072 {MISENSOR_16BIT, 0xD1B4, 0x9117},
1073 {MISENSOR_16BIT, 0xD1B6, 0x208C},
1074 {MISENSOR_16BIT, 0xD1B8, 0x8807},
1075 {MISENSOR_16BIT, 0xD1BA, 0xF40C},
1076 {MISENSOR_16BIT, 0xD1BC, 0x9118},
1077 {MISENSOR_16BIT, 0xD1BE, 0x2086},
1078 {MISENSOR_16BIT, 0xD1C0, 0x0FF3},
1079 {MISENSOR_16BIT, 0xD1C2, 0xB848},
1080 {MISENSOR_16BIT, 0xD1C4, 0x080D},
1081 {MISENSOR_16BIT, 0xD1C6, 0x0090},
1082 {MISENSOR_16BIT, 0xD1C8, 0xFFD9},
1083 {MISENSOR_16BIT, 0xD1CA, 0xE080},
1084 {MISENSOR_16BIT, 0xD1CC, 0xD801},
1085 {MISENSOR_16BIT, 0xD1CE, 0xF203},
1086 {MISENSOR_16BIT, 0xD1D0, 0xD800},
1087 {MISENSOR_16BIT, 0xD1D2, 0xF1DF},
1088 {MISENSOR_16BIT, 0xD1D4, 0x9040},
1089 {MISENSOR_16BIT, 0xD1D6, 0x71CF},
1090 {MISENSOR_16BIT, 0xD1D8, 0xFFFF},
1091 {MISENSOR_16BIT, 0xD1DA, 0xC5D4},
1092 {MISENSOR_16BIT, 0xD1DC, 0xB15A},
1093 {MISENSOR_16BIT, 0xD1DE, 0x9041},
1094 {MISENSOR_16BIT, 0xD1E0, 0x73CF},
1095 {MISENSOR_16BIT, 0xD1E2, 0xFFFF},
1096 {MISENSOR_16BIT, 0xD1E4, 0xC7D0},
1097 {MISENSOR_16BIT, 0xD1E6, 0xB140},
1098 {MISENSOR_16BIT, 0xD1E8, 0x9042},
1099 {MISENSOR_16BIT, 0xD1EA, 0xB141},
1100 {MISENSOR_16BIT, 0xD1EC, 0x9043},
1101 {MISENSOR_16BIT, 0xD1EE, 0xB142},
1102 {MISENSOR_16BIT, 0xD1F0, 0x9044},
1103 {MISENSOR_16BIT, 0xD1F2, 0xB143},
1104 {MISENSOR_16BIT, 0xD1F4, 0x9045},
1105 {MISENSOR_16BIT, 0xD1F6, 0xB147},
1106 {MISENSOR_16BIT, 0xD1F8, 0x9046},
1107 {MISENSOR_16BIT, 0xD1FA, 0xB148},
1108 {MISENSOR_16BIT, 0xD1FC, 0x9047},
1109 {MISENSOR_16BIT, 0xD1FE, 0xB14B},
1110 {MISENSOR_16BIT, 0xD200, 0x9048},
1111 {MISENSOR_16BIT, 0xD202, 0xB14C},
1112 {MISENSOR_16BIT, 0xD204, 0x9049},
1113 {MISENSOR_16BIT, 0xD206, 0x1958},
1114 {MISENSOR_16BIT, 0xD208, 0x0084},
1115 {MISENSOR_16BIT, 0xD20A, 0x904A},
1116 {MISENSOR_16BIT, 0xD20C, 0x195A},
1117 {MISENSOR_16BIT, 0xD20E, 0x0084},
1118 {MISENSOR_16BIT, 0xD210, 0x8856},
1119 {MISENSOR_16BIT, 0xD212, 0x1B36},
1120 {MISENSOR_16BIT, 0xD214, 0x8082},
1121 {MISENSOR_16BIT, 0xD216, 0x8857},
1122 {MISENSOR_16BIT, 0xD218, 0x1B37},
1123 {MISENSOR_16BIT, 0xD21A, 0x8082},
1124 {MISENSOR_16BIT, 0xD21C, 0x904C},
1125 {MISENSOR_16BIT, 0xD21E, 0x19A7},
1126 {MISENSOR_16BIT, 0xD220, 0x009C},
1127 {MISENSOR_16BIT, 0xD222, 0x881A},
1128 {MISENSOR_16BIT, 0xD224, 0x7FE0},
1129 {MISENSOR_16BIT, 0xD226, 0x1B54},
1130 {MISENSOR_16BIT, 0xD228, 0x8002},
1131 {MISENSOR_16BIT, 0xD22A, 0x78E0},
1132 {MISENSOR_16BIT, 0xD22C, 0x71CF},
1133 {MISENSOR_16BIT, 0xD22E, 0xFFFF},
1134 {MISENSOR_16BIT, 0xD230, 0xC350},
1135 {MISENSOR_16BIT, 0xD232, 0xD828},
1136 {MISENSOR_16BIT, 0xD234, 0xA90B},
1137 {MISENSOR_16BIT, 0xD236, 0x8100},
1138 {MISENSOR_16BIT, 0xD238, 0x01C5},
1139 {MISENSOR_16BIT, 0xD23A, 0x0320},
1140 {MISENSOR_16BIT, 0xD23C, 0xD900},
1141 {MISENSOR_16BIT, 0xD23E, 0x78E0},
1142 {MISENSOR_16BIT, 0xD240, 0x220A},
1143 {MISENSOR_16BIT, 0xD242, 0x1F80},
1144 {MISENSOR_16BIT, 0xD244, 0xFFFF},
1145 {MISENSOR_16BIT, 0xD246, 0xD4E0},
1146 {MISENSOR_16BIT, 0xD248, 0xC0F1},
1147 {MISENSOR_16BIT, 0xD24A, 0x0811},
1148 {MISENSOR_16BIT, 0xD24C, 0x0051},
1149 {MISENSOR_16BIT, 0xD24E, 0x2240},
1150 {MISENSOR_16BIT, 0xD250, 0x1200},
1151 {MISENSOR_16BIT, 0xD252, 0xFFE1},
1152 {MISENSOR_16BIT, 0xD254, 0xD801},
1153 {MISENSOR_16BIT, 0xD256, 0xF006},
1154 {MISENSOR_16BIT, 0xD258, 0x2240},
1155 {MISENSOR_16BIT, 0xD25A, 0x1900},
1156 {MISENSOR_16BIT, 0xD25C, 0xFFDE},
1157 {MISENSOR_16BIT, 0xD25E, 0xD802},
1158 {MISENSOR_16BIT, 0xD260, 0x1A05},
1159 {MISENSOR_16BIT, 0xD262, 0x1002},
1160 {MISENSOR_16BIT, 0xD264, 0xFFF2},
1161 {MISENSOR_16BIT, 0xD266, 0xF195},
1162 {MISENSOR_16BIT, 0xD268, 0xC0F1},
1163 {MISENSOR_16BIT, 0xD26A, 0x0E7E},
1164 {MISENSOR_16BIT, 0xD26C, 0x05C0},
1165 {MISENSOR_16BIT, 0xD26E, 0x75CF},
1166 {MISENSOR_16BIT, 0xD270, 0xFFFF},
1167 {MISENSOR_16BIT, 0xD272, 0xC84C},
1168 {MISENSOR_16BIT, 0xD274, 0x9502},
1169 {MISENSOR_16BIT, 0xD276, 0x77CF},
1170 {MISENSOR_16BIT, 0xD278, 0xFFFF},
1171 {MISENSOR_16BIT, 0xD27A, 0xC344},
1172 {MISENSOR_16BIT, 0xD27C, 0x2044},
1173 {MISENSOR_16BIT, 0xD27E, 0x008E},
1174 {MISENSOR_16BIT, 0xD280, 0xB8A1},
1175 {MISENSOR_16BIT, 0xD282, 0x0926},
1176 {MISENSOR_16BIT, 0xD284, 0x03E0},
1177 {MISENSOR_16BIT, 0xD286, 0xB502},
1178 {MISENSOR_16BIT, 0xD288, 0x9502},
1179 {MISENSOR_16BIT, 0xD28A, 0x952E},
1180 {MISENSOR_16BIT, 0xD28C, 0x7E05},
1181 {MISENSOR_16BIT, 0xD28E, 0xB5C2},
1182 {MISENSOR_16BIT, 0xD290, 0x70CF},
1183 {MISENSOR_16BIT, 0xD292, 0xFFFF},
1184 {MISENSOR_16BIT, 0xD294, 0xC610},
1185 {MISENSOR_16BIT, 0xD296, 0x099A},
1186 {MISENSOR_16BIT, 0xD298, 0x04A0},
1187 {MISENSOR_16BIT, 0xD29A, 0xB026},
1188 {MISENSOR_16BIT, 0xD29C, 0x0E02},
1189 {MISENSOR_16BIT, 0xD29E, 0x0560},
1190 {MISENSOR_16BIT, 0xD2A0, 0xDE00},
1191 {MISENSOR_16BIT, 0xD2A2, 0x0A12},
1192 {MISENSOR_16BIT, 0xD2A4, 0x0320},
1193 {MISENSOR_16BIT, 0xD2A6, 0xB7C4},
1194 {MISENSOR_16BIT, 0xD2A8, 0x0B36},
1195 {MISENSOR_16BIT, 0xD2AA, 0x03A0},
1196 {MISENSOR_16BIT, 0xD2AC, 0x70C9},
1197 {MISENSOR_16BIT, 0xD2AE, 0x9502},
1198 {MISENSOR_16BIT, 0xD2B0, 0x7608},
1199 {MISENSOR_16BIT, 0xD2B2, 0xB8A8},
1200 {MISENSOR_16BIT, 0xD2B4, 0xB502},
1201 {MISENSOR_16BIT, 0xD2B6, 0x70CF},
1202 {MISENSOR_16BIT, 0xD2B8, 0x0000},
1203 {MISENSOR_16BIT, 0xD2BA, 0x5536},
1204 {MISENSOR_16BIT, 0xD2BC, 0x7860},
1205 {MISENSOR_16BIT, 0xD2BE, 0x2686},
1206 {MISENSOR_16BIT, 0xD2C0, 0x1FFB},
1207 {MISENSOR_16BIT, 0xD2C2, 0x9502},
1208 {MISENSOR_16BIT, 0xD2C4, 0x78C5},
1209 {MISENSOR_16BIT, 0xD2C6, 0x0631},
1210 {MISENSOR_16BIT, 0xD2C8, 0x05E0},
1211 {MISENSOR_16BIT, 0xD2CA, 0xB502},
1212 {MISENSOR_16BIT, 0xD2CC, 0x72CF},
1213 {MISENSOR_16BIT, 0xD2CE, 0xFFFF},
1214 {MISENSOR_16BIT, 0xD2D0, 0xC5D4},
1215 {MISENSOR_16BIT, 0xD2D2, 0x923A},
1216 {MISENSOR_16BIT, 0xD2D4, 0x73CF},
1217 {MISENSOR_16BIT, 0xD2D6, 0xFFFF},
1218 {MISENSOR_16BIT, 0xD2D8, 0xC7D0},
1219 {MISENSOR_16BIT, 0xD2DA, 0xB020},
1220 {MISENSOR_16BIT, 0xD2DC, 0x9220},
1221 {MISENSOR_16BIT, 0xD2DE, 0xB021},
1222 {MISENSOR_16BIT, 0xD2E0, 0x9221},
1223 {MISENSOR_16BIT, 0xD2E2, 0xB022},
1224 {MISENSOR_16BIT, 0xD2E4, 0x9222},
1225 {MISENSOR_16BIT, 0xD2E6, 0xB023},
1226 {MISENSOR_16BIT, 0xD2E8, 0x9223},
1227 {MISENSOR_16BIT, 0xD2EA, 0xB024},
1228 {MISENSOR_16BIT, 0xD2EC, 0x9227},
1229 {MISENSOR_16BIT, 0xD2EE, 0xB025},
1230 {MISENSOR_16BIT, 0xD2F0, 0x9228},
1231 {MISENSOR_16BIT, 0xD2F2, 0xB026},
1232 {MISENSOR_16BIT, 0xD2F4, 0x922B},
1233 {MISENSOR_16BIT, 0xD2F6, 0xB027},
1234 {MISENSOR_16BIT, 0xD2F8, 0x922C},
1235 {MISENSOR_16BIT, 0xD2FA, 0xB028},
1236 {MISENSOR_16BIT, 0xD2FC, 0x1258},
1237 {MISENSOR_16BIT, 0xD2FE, 0x0101},
1238 {MISENSOR_16BIT, 0xD300, 0xB029},
1239 {MISENSOR_16BIT, 0xD302, 0x125A},
1240 {MISENSOR_16BIT, 0xD304, 0x0101},
1241 {MISENSOR_16BIT, 0xD306, 0xB02A},
1242 {MISENSOR_16BIT, 0xD308, 0x1336},
1243 {MISENSOR_16BIT, 0xD30A, 0x8081},
1244 {MISENSOR_16BIT, 0xD30C, 0xA836},
1245 {MISENSOR_16BIT, 0xD30E, 0x1337},
1246 {MISENSOR_16BIT, 0xD310, 0x8081},
1247 {MISENSOR_16BIT, 0xD312, 0xA837},
1248 {MISENSOR_16BIT, 0xD314, 0x12A7},
1249 {MISENSOR_16BIT, 0xD316, 0x0701},
1250 {MISENSOR_16BIT, 0xD318, 0xB02C},
1251 {MISENSOR_16BIT, 0xD31A, 0x1354},
1252 {MISENSOR_16BIT, 0xD31C, 0x8081},
1253 {MISENSOR_16BIT, 0xD31E, 0x7FE0},
1254 {MISENSOR_16BIT, 0xD320, 0xA83A},
1255 {MISENSOR_16BIT, 0xD322, 0x78E0},
1256 {MISENSOR_16BIT, 0xD324, 0xC0F1},
1257 {MISENSOR_16BIT, 0xD326, 0x0DC2},
1258 {MISENSOR_16BIT, 0xD328, 0x05C0},
1259 {MISENSOR_16BIT, 0xD32A, 0x7608},
1260 {MISENSOR_16BIT, 0xD32C, 0x09BB},
1261 {MISENSOR_16BIT, 0xD32E, 0x0010},
1262 {MISENSOR_16BIT, 0xD330, 0x75CF},
1263 {MISENSOR_16BIT, 0xD332, 0xFFFF},
1264 {MISENSOR_16BIT, 0xD334, 0xD4E0},
1265 {MISENSOR_16BIT, 0xD336, 0x8D21},
1266 {MISENSOR_16BIT, 0xD338, 0x8D00},
1267 {MISENSOR_16BIT, 0xD33A, 0x2153},
1268 {MISENSOR_16BIT, 0xD33C, 0x0003},
1269 {MISENSOR_16BIT, 0xD33E, 0xB8C0},
1270 {MISENSOR_16BIT, 0xD340, 0x8D45},
1271 {MISENSOR_16BIT, 0xD342, 0x0B23},
1272 {MISENSOR_16BIT, 0xD344, 0x0000},
1273 {MISENSOR_16BIT, 0xD346, 0xEA8F},
1274 {MISENSOR_16BIT, 0xD348, 0x0915},
1275 {MISENSOR_16BIT, 0xD34A, 0x001E},
1276 {MISENSOR_16BIT, 0xD34C, 0xFF81},
1277 {MISENSOR_16BIT, 0xD34E, 0xE808},
1278 {MISENSOR_16BIT, 0xD350, 0x2540},
1279 {MISENSOR_16BIT, 0xD352, 0x1900},
1280 {MISENSOR_16BIT, 0xD354, 0xFFDE},
1281 {MISENSOR_16BIT, 0xD356, 0x8D00},
1282 {MISENSOR_16BIT, 0xD358, 0xB880},
1283 {MISENSOR_16BIT, 0xD35A, 0xF004},
1284 {MISENSOR_16BIT, 0xD35C, 0x8D00},
1285 {MISENSOR_16BIT, 0xD35E, 0xB8A0},
1286 {MISENSOR_16BIT, 0xD360, 0xAD00},
1287 {MISENSOR_16BIT, 0xD362, 0x8D05},
1288 {MISENSOR_16BIT, 0xD364, 0xE081},
1289 {MISENSOR_16BIT, 0xD366, 0x20CC},
1290 {MISENSOR_16BIT, 0xD368, 0x80A2},
1291 {MISENSOR_16BIT, 0xD36A, 0xDF00},
1292 {MISENSOR_16BIT, 0xD36C, 0xF40A},
1293 {MISENSOR_16BIT, 0xD36E, 0x71CF},
1294 {MISENSOR_16BIT, 0xD370, 0xFFFF},
1295 {MISENSOR_16BIT, 0xD372, 0xC84C},
1296 {MISENSOR_16BIT, 0xD374, 0x9102},
1297 {MISENSOR_16BIT, 0xD376, 0x7708},
1298 {MISENSOR_16BIT, 0xD378, 0xB8A6},
1299 {MISENSOR_16BIT, 0xD37A, 0x2786},
1300 {MISENSOR_16BIT, 0xD37C, 0x1FFE},
1301 {MISENSOR_16BIT, 0xD37E, 0xB102},
1302 {MISENSOR_16BIT, 0xD380, 0x0B42},
1303 {MISENSOR_16BIT, 0xD382, 0x0180},
1304 {MISENSOR_16BIT, 0xD384, 0x0E3E},
1305 {MISENSOR_16BIT, 0xD386, 0x0180},
1306 {MISENSOR_16BIT, 0xD388, 0x0F4A},
1307 {MISENSOR_16BIT, 0xD38A, 0x0160},
1308 {MISENSOR_16BIT, 0xD38C, 0x70C9},
1309 {MISENSOR_16BIT, 0xD38E, 0x8D05},
1310 {MISENSOR_16BIT, 0xD390, 0xE081},
1311 {MISENSOR_16BIT, 0xD392, 0x20CC},
1312 {MISENSOR_16BIT, 0xD394, 0x80A2},
1313 {MISENSOR_16BIT, 0xD396, 0xF429},
1314 {MISENSOR_16BIT, 0xD398, 0x76CF},
1315 {MISENSOR_16BIT, 0xD39A, 0xFFFF},
1316 {MISENSOR_16BIT, 0xD39C, 0xC84C},
1317 {MISENSOR_16BIT, 0xD39E, 0x082D},
1318 {MISENSOR_16BIT, 0xD3A0, 0x0051},
1319 {MISENSOR_16BIT, 0xD3A2, 0x70CF},
1320 {MISENSOR_16BIT, 0xD3A4, 0xFFFF},
1321 {MISENSOR_16BIT, 0xD3A6, 0xC90C},
1322 {MISENSOR_16BIT, 0xD3A8, 0x8805},
1323 {MISENSOR_16BIT, 0xD3AA, 0x09B6},
1324 {MISENSOR_16BIT, 0xD3AC, 0x0360},
1325 {MISENSOR_16BIT, 0xD3AE, 0xD908},
1326 {MISENSOR_16BIT, 0xD3B0, 0x2099},
1327 {MISENSOR_16BIT, 0xD3B2, 0x0802},
1328 {MISENSOR_16BIT, 0xD3B4, 0x9634},
1329 {MISENSOR_16BIT, 0xD3B6, 0xB503},
1330 {MISENSOR_16BIT, 0xD3B8, 0x7902},
1331 {MISENSOR_16BIT, 0xD3BA, 0x1523},
1332 {MISENSOR_16BIT, 0xD3BC, 0x1080},
1333 {MISENSOR_16BIT, 0xD3BE, 0xB634},
1334 {MISENSOR_16BIT, 0xD3C0, 0xE001},
1335 {MISENSOR_16BIT, 0xD3C2, 0x1D23},
1336 {MISENSOR_16BIT, 0xD3C4, 0x1002},
1337 {MISENSOR_16BIT, 0xD3C6, 0xF00B},
1338 {MISENSOR_16BIT, 0xD3C8, 0x9634},
1339 {MISENSOR_16BIT, 0xD3CA, 0x9503},
1340 {MISENSOR_16BIT, 0xD3CC, 0x6038},
1341 {MISENSOR_16BIT, 0xD3CE, 0xB614},
1342 {MISENSOR_16BIT, 0xD3D0, 0x153F},
1343 {MISENSOR_16BIT, 0xD3D2, 0x1080},
1344 {MISENSOR_16BIT, 0xD3D4, 0xE001},
1345 {MISENSOR_16BIT, 0xD3D6, 0x1D3F},
1346 {MISENSOR_16BIT, 0xD3D8, 0x1002},
1347 {MISENSOR_16BIT, 0xD3DA, 0xFFA4},
1348 {MISENSOR_16BIT, 0xD3DC, 0x9602},
1349 {MISENSOR_16BIT, 0xD3DE, 0x7F05},
1350 {MISENSOR_16BIT, 0xD3E0, 0xD800},
1351 {MISENSOR_16BIT, 0xD3E2, 0xB6E2},
1352 {MISENSOR_16BIT, 0xD3E4, 0xAD05},
1353 {MISENSOR_16BIT, 0xD3E6, 0x0511},
1354 {MISENSOR_16BIT, 0xD3E8, 0x05E0},
1355 {MISENSOR_16BIT, 0xD3EA, 0xD800},
1356 {MISENSOR_16BIT, 0xD3EC, 0xC0F1},
1357 {MISENSOR_16BIT, 0xD3EE, 0x0CFE},
1358 {MISENSOR_16BIT, 0xD3F0, 0x05C0},
1359 {MISENSOR_16BIT, 0xD3F2, 0x0A96},
1360 {MISENSOR_16BIT, 0xD3F4, 0x05A0},
1361 {MISENSOR_16BIT, 0xD3F6, 0x7608},
1362 {MISENSOR_16BIT, 0xD3F8, 0x0C22},
1363 {MISENSOR_16BIT, 0xD3FA, 0x0240},
1364 {MISENSOR_16BIT, 0xD3FC, 0xE080},
1365 {MISENSOR_16BIT, 0xD3FE, 0x20CA},
1366 {MISENSOR_16BIT, 0xD400, 0x0F82},
1367 {MISENSOR_16BIT, 0xD402, 0x0000},
1368 {MISENSOR_16BIT, 0xD404, 0x190B},
1369 {MISENSOR_16BIT, 0xD406, 0x0C60},
1370 {MISENSOR_16BIT, 0xD408, 0x05A2},
1371 {MISENSOR_16BIT, 0xD40A, 0x21CA},
1372 {MISENSOR_16BIT, 0xD40C, 0x0022},
1373 {MISENSOR_16BIT, 0xD40E, 0x0C56},
1374 {MISENSOR_16BIT, 0xD410, 0x0240},
1375 {MISENSOR_16BIT, 0xD412, 0xE806},
1376 {MISENSOR_16BIT, 0xD414, 0x0E0E},
1377 {MISENSOR_16BIT, 0xD416, 0x0220},
1378 {MISENSOR_16BIT, 0xD418, 0x70C9},
1379 {MISENSOR_16BIT, 0xD41A, 0xF048},
1380 {MISENSOR_16BIT, 0xD41C, 0x0896},
1381 {MISENSOR_16BIT, 0xD41E, 0x0440},
1382 {MISENSOR_16BIT, 0xD420, 0x0E96},
1383 {MISENSOR_16BIT, 0xD422, 0x0400},
1384 {MISENSOR_16BIT, 0xD424, 0x0966},
1385 {MISENSOR_16BIT, 0xD426, 0x0380},
1386 {MISENSOR_16BIT, 0xD428, 0x75CF},
1387 {MISENSOR_16BIT, 0xD42A, 0xFFFF},
1388 {MISENSOR_16BIT, 0xD42C, 0xD4E0},
1389 {MISENSOR_16BIT, 0xD42E, 0x8D00},
1390 {MISENSOR_16BIT, 0xD430, 0x084D},
1391 {MISENSOR_16BIT, 0xD432, 0x001E},
1392 {MISENSOR_16BIT, 0xD434, 0xFF47},
1393 {MISENSOR_16BIT, 0xD436, 0x080D},
1394 {MISENSOR_16BIT, 0xD438, 0x0050},
1395 {MISENSOR_16BIT, 0xD43A, 0xFF57},
1396 {MISENSOR_16BIT, 0xD43C, 0x0841},
1397 {MISENSOR_16BIT, 0xD43E, 0x0051},
1398 {MISENSOR_16BIT, 0xD440, 0x8D04},
1399 {MISENSOR_16BIT, 0xD442, 0x9521},
1400 {MISENSOR_16BIT, 0xD444, 0xE064},
1401 {MISENSOR_16BIT, 0xD446, 0x790C},
1402 {MISENSOR_16BIT, 0xD448, 0x702F},
1403 {MISENSOR_16BIT, 0xD44A, 0x0CE2},
1404 {MISENSOR_16BIT, 0xD44C, 0x05E0},
1405 {MISENSOR_16BIT, 0xD44E, 0xD964},
1406 {MISENSOR_16BIT, 0xD450, 0x72CF},
1407 {MISENSOR_16BIT, 0xD452, 0xFFFF},
1408 {MISENSOR_16BIT, 0xD454, 0xC700},
1409 {MISENSOR_16BIT, 0xD456, 0x9235},
1410 {MISENSOR_16BIT, 0xD458, 0x0811},
1411 {MISENSOR_16BIT, 0xD45A, 0x0043},
1412 {MISENSOR_16BIT, 0xD45C, 0xFF3D},
1413 {MISENSOR_16BIT, 0xD45E, 0x080D},
1414 {MISENSOR_16BIT, 0xD460, 0x0051},
1415 {MISENSOR_16BIT, 0xD462, 0xD801},
1416 {MISENSOR_16BIT, 0xD464, 0xFF77},
1417 {MISENSOR_16BIT, 0xD466, 0xF025},
1418 {MISENSOR_16BIT, 0xD468, 0x9501},
1419 {MISENSOR_16BIT, 0xD46A, 0x9235},
1420 {MISENSOR_16BIT, 0xD46C, 0x0911},
1421 {MISENSOR_16BIT, 0xD46E, 0x0003},
1422 {MISENSOR_16BIT, 0xD470, 0xFF49},
1423 {MISENSOR_16BIT, 0xD472, 0x080D},
1424 {MISENSOR_16BIT, 0xD474, 0x0051},
1425 {MISENSOR_16BIT, 0xD476, 0xD800},
1426 {MISENSOR_16BIT, 0xD478, 0xFF72},
1427 {MISENSOR_16BIT, 0xD47A, 0xF01B},
1428 {MISENSOR_16BIT, 0xD47C, 0x0886},
1429 {MISENSOR_16BIT, 0xD47E, 0x03E0},
1430 {MISENSOR_16BIT, 0xD480, 0xD801},
1431 {MISENSOR_16BIT, 0xD482, 0x0EF6},
1432 {MISENSOR_16BIT, 0xD484, 0x03C0},
1433 {MISENSOR_16BIT, 0xD486, 0x0F52},
1434 {MISENSOR_16BIT, 0xD488, 0x0340},
1435 {MISENSOR_16BIT, 0xD48A, 0x0DBA},
1436 {MISENSOR_16BIT, 0xD48C, 0x0200},
1437 {MISENSOR_16BIT, 0xD48E, 0x0AF6},
1438 {MISENSOR_16BIT, 0xD490, 0x0440},
1439 {MISENSOR_16BIT, 0xD492, 0x0C22},
1440 {MISENSOR_16BIT, 0xD494, 0x0400},
1441 {MISENSOR_16BIT, 0xD496, 0x0D72},
1442 {MISENSOR_16BIT, 0xD498, 0x0440},
1443 {MISENSOR_16BIT, 0xD49A, 0x0DC2},
1444 {MISENSOR_16BIT, 0xD49C, 0x0200},
1445 {MISENSOR_16BIT, 0xD49E, 0x0972},
1446 {MISENSOR_16BIT, 0xD4A0, 0x0440},
1447 {MISENSOR_16BIT, 0xD4A2, 0x0D3A},
1448 {MISENSOR_16BIT, 0xD4A4, 0x0220},
1449 {MISENSOR_16BIT, 0xD4A6, 0xD820},
1450 {MISENSOR_16BIT, 0xD4A8, 0x0BFA},
1451 {MISENSOR_16BIT, 0xD4AA, 0x0260},
1452 {MISENSOR_16BIT, 0xD4AC, 0x70C9},
1453 {MISENSOR_16BIT, 0xD4AE, 0x0451},
1454 {MISENSOR_16BIT, 0xD4B0, 0x05C0},
1455 {MISENSOR_16BIT, 0xD4B2, 0x78E0},
1456 {MISENSOR_16BIT, 0xD4B4, 0xD900},
1457 {MISENSOR_16BIT, 0xD4B6, 0xF00A},
1458 {MISENSOR_16BIT, 0xD4B8, 0x70CF},
1459 {MISENSOR_16BIT, 0xD4BA, 0xFFFF},
1460 {MISENSOR_16BIT, 0xD4BC, 0xD520},
1461 {MISENSOR_16BIT, 0xD4BE, 0x7835},
1462 {MISENSOR_16BIT, 0xD4C0, 0x8041},
1463 {MISENSOR_16BIT, 0xD4C2, 0x8000},
1464 {MISENSOR_16BIT, 0xD4C4, 0xE102},
1465 {MISENSOR_16BIT, 0xD4C6, 0xA040},
1466 {MISENSOR_16BIT, 0xD4C8, 0x09F1},
1467 {MISENSOR_16BIT, 0xD4CA, 0x8114},
1468 {MISENSOR_16BIT, 0xD4CC, 0x71CF},
1469 {MISENSOR_16BIT, 0xD4CE, 0xFFFF},
1470 {MISENSOR_16BIT, 0xD4D0, 0xD4E0},
1471 {MISENSOR_16BIT, 0xD4D2, 0x70CF},
1472 {MISENSOR_16BIT, 0xD4D4, 0xFFFF},
1473 {MISENSOR_16BIT, 0xD4D6, 0xC594},
1474 {MISENSOR_16BIT, 0xD4D8, 0xB03A},
1475 {MISENSOR_16BIT, 0xD4DA, 0x7FE0},
1476 {MISENSOR_16BIT, 0xD4DC, 0xD800},
1477 {MISENSOR_16BIT, 0xD4DE, 0x0000},
1478 {MISENSOR_16BIT, 0xD4E0, 0x0000},
1479 {MISENSOR_16BIT, 0xD4E2, 0x0500},
1480 {MISENSOR_16BIT, 0xD4E4, 0x0500},
1481 {MISENSOR_16BIT, 0xD4E6, 0x0200},
1482 {MISENSOR_16BIT, 0xD4E8, 0x0330},
1483 {MISENSOR_16BIT, 0xD4EA, 0x0000},
1484 {MISENSOR_16BIT, 0xD4EC, 0x0000},
1485 {MISENSOR_16BIT, 0xD4EE, 0x03CD},
1486 {MISENSOR_16BIT, 0xD4F0, 0x050D},
1487 {MISENSOR_16BIT, 0xD4F2, 0x01C5},
1488 {MISENSOR_16BIT, 0xD4F4, 0x03B3},
1489 {MISENSOR_16BIT, 0xD4F6, 0x00E0},
1490 {MISENSOR_16BIT, 0xD4F8, 0x01E3},
1491 {MISENSOR_16BIT, 0xD4FA, 0x0280},
1492 {MISENSOR_16BIT, 0xD4FC, 0x01E0},
1493 {MISENSOR_16BIT, 0xD4FE, 0x0109},
1494 {MISENSOR_16BIT, 0xD500, 0x0080},
1495 {MISENSOR_16BIT, 0xD502, 0x0500},
1496 {MISENSOR_16BIT, 0xD504, 0x0000},
1497 {MISENSOR_16BIT, 0xD506, 0x0000},
1498 {MISENSOR_16BIT, 0xD508, 0x0000},
1499 {MISENSOR_16BIT, 0xD50A, 0x0000},
1500 {MISENSOR_16BIT, 0xD50C, 0x0000},
1501 {MISENSOR_16BIT, 0xD50E, 0x0000},
1502 {MISENSOR_16BIT, 0xD510, 0x0000},
1503 {MISENSOR_16BIT, 0xD512, 0x0000},
1504 {MISENSOR_16BIT, 0xD514, 0x0000},
1505 {MISENSOR_16BIT, 0xD516, 0x0000},
1506 {MISENSOR_16BIT, 0xD518, 0x0000},
1507 {MISENSOR_16BIT, 0xD51A, 0x0000},
1508 {MISENSOR_16BIT, 0xD51C, 0x0000},
1509 {MISENSOR_16BIT, 0xD51E, 0x0000},
1510 {MISENSOR_16BIT, 0xD520, 0xFFFF},
1511 {MISENSOR_16BIT, 0xD522, 0xC9B4},
1512 {MISENSOR_16BIT, 0xD524, 0xFFFF},
1513 {MISENSOR_16BIT, 0xD526, 0xD324},
1514 {MISENSOR_16BIT, 0xD528, 0xFFFF},
1515 {MISENSOR_16BIT, 0xD52A, 0xCA34},
1516 {MISENSOR_16BIT, 0xD52C, 0xFFFF},
1517 {MISENSOR_16BIT, 0xD52E, 0xD3EC},
1518 {MISENSOR_16BIT, 0x098E, 0x0000},
1519 {MISENSOR_16BIT, 0xE000, 0x04B4},
1520 {MISENSOR_16BIT, 0xE002, 0x0302},
1521 {MISENSOR_16BIT, 0xE004, 0x4103},
1522 {MISENSOR_16BIT, 0xE006, 0x0202},
1523 {MISENSOR_16BIT, 0x0080, 0xFFF0},
1524 {MISENSOR_16BIT, 0x0080, 0xFFF1},
1525
1526 /* PGA parameter and APGA
1527 * [Step4-APGA] [TP101_MT9M114_APGA]
1528 */
1529 {MISENSOR_16BIT, 0x098E, 0x495E},
1530 {MISENSOR_16BIT, 0xC95E, 0x0000},
1531 {MISENSOR_16BIT, 0x3640, 0x02B0},
1532 {MISENSOR_16BIT, 0x3642, 0x8063},
1533 {MISENSOR_16BIT, 0x3644, 0x78D0},
1534 {MISENSOR_16BIT, 0x3646, 0x50CC},
1535 {MISENSOR_16BIT, 0x3648, 0x3511},
1536 {MISENSOR_16BIT, 0x364A, 0x0110},
1537 {MISENSOR_16BIT, 0x364C, 0xBD8A},
1538 {MISENSOR_16BIT, 0x364E, 0x0CD1},
1539 {MISENSOR_16BIT, 0x3650, 0x24ED},
1540 {MISENSOR_16BIT, 0x3652, 0x7C11},
1541 {MISENSOR_16BIT, 0x3654, 0x0150},
1542 {MISENSOR_16BIT, 0x3656, 0x124C},
1543 {MISENSOR_16BIT, 0x3658, 0x3130},
1544 {MISENSOR_16BIT, 0x365A, 0x508C},
1545 {MISENSOR_16BIT, 0x365C, 0x21F1},
1546 {MISENSOR_16BIT, 0x365E, 0x0090},
1547 {MISENSOR_16BIT, 0x3660, 0xBFCA},
1548 {MISENSOR_16BIT, 0x3662, 0x0A11},
1549 {MISENSOR_16BIT, 0x3664, 0x4F4B},
1550 {MISENSOR_16BIT, 0x3666, 0x28B1},
1551 {MISENSOR_16BIT, 0x3680, 0x50A9},
1552 {MISENSOR_16BIT, 0x3682, 0xA04B},
1553 {MISENSOR_16BIT, 0x3684, 0x0E2D},
1554 {MISENSOR_16BIT, 0x3686, 0x73EC},
1555 {MISENSOR_16BIT, 0x3688, 0x164F},
1556 {MISENSOR_16BIT, 0x368A, 0xF829},
1557 {MISENSOR_16BIT, 0x368C, 0xC1A8},
1558 {MISENSOR_16BIT, 0x368E, 0xB0EC},
1559 {MISENSOR_16BIT, 0x3690, 0xE76A},
1560 {MISENSOR_16BIT, 0x3692, 0x69AF},
1561 {MISENSOR_16BIT, 0x3694, 0x378C},
1562 {MISENSOR_16BIT, 0x3696, 0xA70D},
1563 {MISENSOR_16BIT, 0x3698, 0x884F},
1564 {MISENSOR_16BIT, 0x369A, 0xEE8B},
1565 {MISENSOR_16BIT, 0x369C, 0x5DEF},
1566 {MISENSOR_16BIT, 0x369E, 0x27CC},
1567 {MISENSOR_16BIT, 0x36A0, 0xCAAC},
1568 {MISENSOR_16BIT, 0x36A2, 0x840E},
1569 {MISENSOR_16BIT, 0x36A4, 0xDAA9},
1570 {MISENSOR_16BIT, 0x36A6, 0xF00C},
1571 {MISENSOR_16BIT, 0x36C0, 0x1371},
1572 {MISENSOR_16BIT, 0x36C2, 0x272F},
1573 {MISENSOR_16BIT, 0x36C4, 0x2293},
1574 {MISENSOR_16BIT, 0x36C6, 0xE6D0},
1575 {MISENSOR_16BIT, 0x36C8, 0xEC32},
1576 {MISENSOR_16BIT, 0x36CA, 0x11B1},
1577 {MISENSOR_16BIT, 0x36CC, 0x7BAF},
1578 {MISENSOR_16BIT, 0x36CE, 0x5813},
1579 {MISENSOR_16BIT, 0x36D0, 0xB871},
1580 {MISENSOR_16BIT, 0x36D2, 0x8913},
1581 {MISENSOR_16BIT, 0x36D4, 0x4610},
1582 {MISENSOR_16BIT, 0x36D6, 0x7EEE},
1583 {MISENSOR_16BIT, 0x36D8, 0x0DF3},
1584 {MISENSOR_16BIT, 0x36DA, 0xB84F},
1585 {MISENSOR_16BIT, 0x36DC, 0xB532},
1586 {MISENSOR_16BIT, 0x36DE, 0x1171},
1587 {MISENSOR_16BIT, 0x36E0, 0x13CF},
1588 {MISENSOR_16BIT, 0x36E2, 0x22F3},
1589 {MISENSOR_16BIT, 0x36E4, 0xE090},
1590 {MISENSOR_16BIT, 0x36E6, 0x8133},
1591 {MISENSOR_16BIT, 0x3700, 0x88AE},
1592 {MISENSOR_16BIT, 0x3702, 0x00EA},
1593 {MISENSOR_16BIT, 0x3704, 0x344F},
1594 {MISENSOR_16BIT, 0x3706, 0xEC88},
1595 {MISENSOR_16BIT, 0x3708, 0x3E91},
1596 {MISENSOR_16BIT, 0x370A, 0xF12D},
1597 {MISENSOR_16BIT, 0x370C, 0xB0EF},
1598 {MISENSOR_16BIT, 0x370E, 0x77CD},
1599 {MISENSOR_16BIT, 0x3710, 0x7930},
1600 {MISENSOR_16BIT, 0x3712, 0x5C12},
1601 {MISENSOR_16BIT, 0x3714, 0x500C},
1602 {MISENSOR_16BIT, 0x3716, 0x22CE},
1603 {MISENSOR_16BIT, 0x3718, 0x2370},
1604 {MISENSOR_16BIT, 0x371A, 0x258F},
1605 {MISENSOR_16BIT, 0x371C, 0x3D30},
1606 {MISENSOR_16BIT, 0x371E, 0x370C},
1607 {MISENSOR_16BIT, 0x3720, 0x03ED},
1608 {MISENSOR_16BIT, 0x3722, 0x9AD0},
1609 {MISENSOR_16BIT, 0x3724, 0x7ECF},
1610 {MISENSOR_16BIT, 0x3726, 0x1093},
1611 {MISENSOR_16BIT, 0x3740, 0x2391},
1612 {MISENSOR_16BIT, 0x3742, 0xAAD0},
1613 {MISENSOR_16BIT, 0x3744, 0x28F2},
1614 {MISENSOR_16BIT, 0x3746, 0xBA4F},
1615 {MISENSOR_16BIT, 0x3748, 0xC536},
1616 {MISENSOR_16BIT, 0x374A, 0x1472},
1617 {MISENSOR_16BIT, 0x374C, 0xD110},
1618 {MISENSOR_16BIT, 0x374E, 0x2933},
1619 {MISENSOR_16BIT, 0x3750, 0xD0D1},
1620 {MISENSOR_16BIT, 0x3752, 0x9F37},
1621 {MISENSOR_16BIT, 0x3754, 0x34D1},
1622 {MISENSOR_16BIT, 0x3756, 0x1C6C},
1623 {MISENSOR_16BIT, 0x3758, 0x3FD2},
1624 {MISENSOR_16BIT, 0x375A, 0xCB72},
1625 {MISENSOR_16BIT, 0x375C, 0xBA96},
1626 {MISENSOR_16BIT, 0x375E, 0x1551},
1627 {MISENSOR_16BIT, 0x3760, 0xB74F},
1628 {MISENSOR_16BIT, 0x3762, 0x1672},
1629 {MISENSOR_16BIT, 0x3764, 0x84F1},
1630 {MISENSOR_16BIT, 0x3766, 0xC2D6},
1631 {MISENSOR_16BIT, 0x3782, 0x01E0},
1632 {MISENSOR_16BIT, 0x3784, 0x0280},
1633 {MISENSOR_16BIT, 0x37C0, 0xA6EA},
1634 {MISENSOR_16BIT, 0x37C2, 0x874B},
1635 {MISENSOR_16BIT, 0x37C4, 0x85CB},
1636 {MISENSOR_16BIT, 0x37C6, 0x968A},
1637 {MISENSOR_16BIT, 0x098E, 0x0000},
1638 {MISENSOR_16BIT, 0xC960, 0x0AF0},
1639 {MISENSOR_16BIT, 0xC962, 0x79E2},
1640 {MISENSOR_16BIT, 0xC964, 0x5EC8},
1641 {MISENSOR_16BIT, 0xC966, 0x791F},
1642 {MISENSOR_16BIT, 0xC968, 0x76EE},
1643 {MISENSOR_16BIT, 0xC96A, 0x0FA0},
1644 {MISENSOR_16BIT, 0xC96C, 0x7DFA},
1645 {MISENSOR_16BIT, 0xC96E, 0x7DAF},
1646 {MISENSOR_16BIT, 0xC970, 0x7E02},
1647 {MISENSOR_16BIT, 0xC972, 0x7E0A},
1648 {MISENSOR_16BIT, 0xC974, 0x1964},
1649 {MISENSOR_16BIT, 0xC976, 0x7CDC},
1650 {MISENSOR_16BIT, 0xC978, 0x7838},
1651 {MISENSOR_16BIT, 0xC97A, 0x7C2F},
1652 {MISENSOR_16BIT, 0xC97C, 0x7792},
1653 {MISENSOR_16BIT, 0xC95E, 0x0003},
1654
1655 /* [Step4-APGA] */
1656 {MISENSOR_16BIT, 0x098E, 0x0000},
1657 {MISENSOR_16BIT, 0xC95E, 0x0003},
1658
1659 /* [Step5-AWB_CCM]1: LOAD=CCM */
1660 {MISENSOR_16BIT, 0xC892, 0x0267},
1661 {MISENSOR_16BIT, 0xC894, 0xFF1A},
1662 {MISENSOR_16BIT, 0xC896, 0xFFB3},
1663 {MISENSOR_16BIT, 0xC898, 0xFF80},
1664 {MISENSOR_16BIT, 0xC89A, 0x0166},
1665 {MISENSOR_16BIT, 0xC89C, 0x0003},
1666 {MISENSOR_16BIT, 0xC89E, 0xFF9A},
1667 {MISENSOR_16BIT, 0xC8A0, 0xFEB4},
1668 {MISENSOR_16BIT, 0xC8A2, 0x024D},
1669 {MISENSOR_16BIT, 0xC8A4, 0x01BF},
1670 {MISENSOR_16BIT, 0xC8A6, 0xFF01},
1671 {MISENSOR_16BIT, 0xC8A8, 0xFFF3},
1672 {MISENSOR_16BIT, 0xC8AA, 0xFF75},
1673 {MISENSOR_16BIT, 0xC8AC, 0x0198},
1674 {MISENSOR_16BIT, 0xC8AE, 0xFFFD},
1675 {MISENSOR_16BIT, 0xC8B0, 0xFF9A},
1676 {MISENSOR_16BIT, 0xC8B2, 0xFEE7},
1677 {MISENSOR_16BIT, 0xC8B4, 0x02A8},
1678 {MISENSOR_16BIT, 0xC8B6, 0x01D9},
1679 {MISENSOR_16BIT, 0xC8B8, 0xFF26},
1680 {MISENSOR_16BIT, 0xC8BA, 0xFFF3},
1681 {MISENSOR_16BIT, 0xC8BC, 0xFFB3},
1682 {MISENSOR_16BIT, 0xC8BE, 0x0132},
1683 {MISENSOR_16BIT, 0xC8C0, 0xFFE8},
1684 {MISENSOR_16BIT, 0xC8C2, 0xFFDA},
1685 {MISENSOR_16BIT, 0xC8C4, 0xFECD},
1686 {MISENSOR_16BIT, 0xC8C6, 0x02C2},
1687 {MISENSOR_16BIT, 0xC8C8, 0x0075},
1688 {MISENSOR_16BIT, 0xC8CA, 0x011C},
1689 {MISENSOR_16BIT, 0xC8CC, 0x009A},
1690 {MISENSOR_16BIT, 0xC8CE, 0x0105},
1691 {MISENSOR_16BIT, 0xC8D0, 0x00A4},
1692 {MISENSOR_16BIT, 0xC8D2, 0x00AC},
1693 {MISENSOR_16BIT, 0xC8D4, 0x0A8C},
1694 {MISENSOR_16BIT, 0xC8D6, 0x0F0A},
1695 {MISENSOR_16BIT, 0xC8D8, 0x1964},
1696
1697 /* LOAD=AWB */
1698 {MISENSOR_16BIT, 0xC914, 0x0000},
1699 {MISENSOR_16BIT, 0xC916, 0x0000},
1700 {MISENSOR_16BIT, 0xC918, 0x04FF},
1701 {MISENSOR_16BIT, 0xC91A, 0x02CF},
1702 {MISENSOR_16BIT, 0xC904, 0x0033},
1703 {MISENSOR_16BIT, 0xC906, 0x0040},
1704 {MISENSOR_8BIT, 0xC8F2, 0x03},
1705 {MISENSOR_8BIT, 0xC8F3, 0x02},
1706 {MISENSOR_16BIT, 0xC906, 0x003C},
1707 {MISENSOR_16BIT, 0xC8F4, 0x0000},
1708 {MISENSOR_16BIT, 0xC8F6, 0x0000},
1709 {MISENSOR_16BIT, 0xC8F8, 0x0000},
1710 {MISENSOR_16BIT, 0xC8FA, 0xE724},
1711 {MISENSOR_16BIT, 0xC8FC, 0x1583},
1712 {MISENSOR_16BIT, 0xC8FE, 0x2045},
1713 {MISENSOR_16BIT, 0xC900, 0x05DC},
1714 {MISENSOR_16BIT, 0xC902, 0x007C},
1715 {MISENSOR_8BIT, 0xC90C, 0x80},
1716 {MISENSOR_8BIT, 0xC90D, 0x80},
1717 {MISENSOR_8BIT, 0xC90E, 0x80},
1718 {MISENSOR_8BIT, 0xC90F, 0x88},
1719 {MISENSOR_8BIT, 0xC910, 0x80},
1720 {MISENSOR_8BIT, 0xC911, 0x80},
1721
1722 /* LOAD=Step7-CPIPE_Preference */
1723 {MISENSOR_16BIT, 0xC926, 0x0020},
1724 {MISENSOR_16BIT, 0xC928, 0x009A},
1725 {MISENSOR_16BIT, 0xC946, 0x0070},
1726 {MISENSOR_16BIT, 0xC948, 0x00F3},
1727 {MISENSOR_16BIT, 0xC952, 0x0020},
1728 {MISENSOR_16BIT, 0xC954, 0x009A},
1729 {MISENSOR_8BIT, 0xC92A, 0x80},
1730 {MISENSOR_8BIT, 0xC92B, 0x4B},
1731 {MISENSOR_8BIT, 0xC92C, 0x00},
1732 {MISENSOR_8BIT, 0xC92D, 0xFF},
1733 {MISENSOR_8BIT, 0xC92E, 0x3C},
1734 {MISENSOR_8BIT, 0xC92F, 0x02},
1735 {MISENSOR_8BIT, 0xC930, 0x06},
1736 {MISENSOR_8BIT, 0xC931, 0x64},
1737 {MISENSOR_8BIT, 0xC932, 0x01},
1738 {MISENSOR_8BIT, 0xC933, 0x0C},
1739 {MISENSOR_8BIT, 0xC934, 0x3C},
1740 {MISENSOR_8BIT, 0xC935, 0x3C},
1741 {MISENSOR_8BIT, 0xC936, 0x3C},
1742 {MISENSOR_8BIT, 0xC937, 0x0F},
1743 {MISENSOR_8BIT, 0xC938, 0x64},
1744 {MISENSOR_8BIT, 0xC939, 0x64},
1745 {MISENSOR_8BIT, 0xC93A, 0x64},
1746 {MISENSOR_8BIT, 0xC93B, 0x32},
1747 {MISENSOR_16BIT, 0xC93C, 0x0020},
1748 {MISENSOR_16BIT, 0xC93E, 0x009A},
1749 {MISENSOR_16BIT, 0xC940, 0x00DC},
1750 {MISENSOR_8BIT, 0xC942, 0x38},
1751 {MISENSOR_8BIT, 0xC943, 0x30},
1752 {MISENSOR_8BIT, 0xC944, 0x50},
1753 {MISENSOR_8BIT, 0xC945, 0x19},
1754 {MISENSOR_16BIT, 0xC94A, 0x0230},
1755 {MISENSOR_16BIT, 0xC94C, 0x0010},
1756 {MISENSOR_16BIT, 0xC94E, 0x01CD},
1757 {MISENSOR_8BIT, 0xC950, 0x05},
1758 {MISENSOR_8BIT, 0xC951, 0x40},
1759 {MISENSOR_8BIT, 0xC87B, 0x1B},
1760 {MISENSOR_8BIT, 0xC878, 0x0E},
1761 {MISENSOR_16BIT, 0xC890, 0x0080},
1762 {MISENSOR_16BIT, 0xC886, 0x0100},
1763 {MISENSOR_16BIT, 0xC87C, 0x005A},
1764 {MISENSOR_8BIT, 0xB42A, 0x05},
1765 {MISENSOR_8BIT, 0xA80A, 0x20},
1766
1767 /* Speed up AE/AWB */
1768 {MISENSOR_16BIT, 0x098E, 0x2802},
1769 {MISENSOR_16BIT, 0xA802, 0x0008},
1770 {MISENSOR_8BIT, 0xC908, 0x01},
1771 {MISENSOR_8BIT, 0xC879, 0x01},
1772 {MISENSOR_8BIT, 0xC909, 0x02},
1773 {MISENSOR_8BIT, 0xA80A, 0x18},
1774 {MISENSOR_8BIT, 0xA80B, 0x18},
1775 {MISENSOR_8BIT, 0xAC16, 0x18},
1776 {MISENSOR_8BIT, 0xC878, 0x0E},
1777
1778 {MISENSOR_TOK_TERM, 0, 0}
1779 };
1780
1781 #endif