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