Merge tag 'v4.4-rc7'
[firefly-linux-kernel-4.4.55.git] / drivers / media / video / s5k5ca.c
1 /*
2  * Driver for OV5642 CMOS Image Sensor from OmniVision
3  *
4  * Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  */
10
11 #include <linux/videodev2.h>
12 #include <linux/slab.h>
13 #include <linux/i2c.h>
14 #include <linux/log2.h>
15 #include <linux/platform_device.h>
16 #include <linux/delay.h>
17 #include <linux/circ_buf.h>
18 #include <linux/miscdevice.h>
19 #include <media/v4l2-common.h>
20 #include <media/v4l2-chip-ident.h>
21 #include <media/soc_camera.h>
22 //#include <mach/gpio.h>
23 #include <plat/rk_camera.h>
24 #include <linux/delay.h>
25 #include "s5k5ca.h"
26
27 #define CURRENT_8MA
28
29 static int debug;
30 module_param(debug, int, S_IRUGO|S_IWUSR);
31
32 #define dprintk(level, fmt, arg...) do {                        \
33         if (debug >= level)                                     \
34         printk(KERN_WARNING fmt , ## arg); } while (0)
35
36 #define SENSOR_TR(format, ...) printk(KERN_ERR format, ## __VA_ARGS__)
37 #define SENSOR_DG(format, ...) dprintk(1, format, ## __VA_ARGS__)
38
39
40 #define _CONS(a,b) a##b
41 #define CONS(a,b) _CONS(a,b)
42
43 #define __STR(x) #x
44 #define _STR(x) __STR(x)
45 #define STR(x) _STR(x)
46
47 #define MIN(x,y)   ((x<y) ? x: y)
48 #define MAX(x,y)    ((x>y) ? x: y)
49
50 /* Sensor Driver Configuration */
51 #define SENSOR_NAME RK29_CAM_SENSOR_S5K5CA
52 #define SENSOR_V4L2_IDENT V4L2_IDENT_S5K5CA 
53 #define SENSOR_ID 0x05ca
54 #define SENSOR_ID_REG SEQUENCE_END
55 #define SENSOR_RESET_REG SEQUENCE_END
56 #define SENSOR_RESET_VAL    0x00
57 #define SENSOR_MIN_WIDTH    640
58 #define SENSOR_MIN_HEIGHT   480
59 #define SENSOR_MAX_WIDTH    2048
60 #define SENSOR_MAX_HEIGHT   1536
61 #define SENSOR_INIT_WIDTH       640                     /* Sensor pixel size for sensor_init_data array */
62 #define SENSOR_INIT_HEIGHT  480
63 #define SENSOR_INIT_WINSEQADR sensor_vga
64 #define SENSOR_INIT_PIXFMT V4L2_MBUS_FMT_UYVY8_2X8
65
66 #define CONFIG_SENSOR_WhiteBalance      1
67 #define CONFIG_SENSOR_Brightness        0
68 #define CONFIG_SENSOR_Contrast      0
69 #define CONFIG_SENSOR_Saturation    0
70 #define CONFIG_SENSOR_Effect        1
71 #define CONFIG_SENSOR_Scene         1
72 #define CONFIG_SENSOR_AntiBanding   0
73 #define CONFIG_SENSOR_DigitalZoom   0
74 #define CONFIG_SENSOR_Focus         0
75 #define CONFIG_SENSOR_Exposure      0
76 #define CONFIG_SENSOR_Flash         0
77 #define CONFIG_SENSOR_Mirror        0
78 #define CONFIG_SENSOR_Flip          0
79 #define CONFIG_SENSOR_Focus         0
80
81
82 #define CONFIG_SENSOR_I2C_SPEED     400000       /* Hz */
83 /* Sensor write register continues by preempt_disable/preempt_enable for current process not be scheduled */
84 #define CONFIG_SENSOR_I2C_NOSCHED   0
85 #define CONFIG_SENSOR_I2C_RDWRCHK   0
86
87
88 #define SENSOR_BUS_PARAM  (SOCAM_MASTER | SOCAM_PCLK_SAMPLE_RISING |\
89                           SOCAM_HSYNC_ACTIVE_HIGH | SOCAM_VSYNC_ACTIVE_HIGH |\
90                           SOCAM_DATA_ACTIVE_HIGH | SOCAM_DATAWIDTH_8  |SOCAM_MCLK_24MHZ)
91
92 #define COLOR_TEMPERATURE_CLOUDY_DN  6500
93 #define COLOR_TEMPERATURE_CLOUDY_UP    8000
94 #define COLOR_TEMPERATURE_CLEARDAY_DN  5000
95 #define COLOR_TEMPERATURE_CLEARDAY_UP    6500
96 #define COLOR_TEMPERATURE_OFFICE_DN     3500
97 #define COLOR_TEMPERATURE_OFFICE_UP     5000
98 #define COLOR_TEMPERATURE_HOME_DN       2500
99 #define COLOR_TEMPERATURE_HOME_UP       3500
100
101 #define SENSOR_NAME_STRING(a) STR(CONS(SENSOR_NAME, a))
102 #define SENSOR_NAME_VARFUN(a) CONS(SENSOR_NAME, a)
103
104 #define SENSOR_AF_IS_ERR    (0x00<<0)
105 #define SENSOR_AF_IS_OK         (0x01<<0)
106 #define SENSOR_INIT_IS_ERR   (0x00<<28)
107 #define SENSOR_INIT_IS_OK    (0x01<<28)
108
109 #if CONFIG_SENSOR_Focus
110 #define SENSOR_AF_MODE_INFINITY    0
111 #define SENSOR_AF_MODE_MACRO       1
112 #define SENSOR_AF_MODE_FIXED       2
113 #define SENSOR_AF_MODE_AUTO        3
114 #define SENSOR_AF_MODE_CONTINUOUS  4
115 #define SENSOR_AF_MODE_CLOSE       5
116 #endif
117
118 /* init 640X480 SVGA */
119 static struct reginfo sensor_init_data[] =
120 {
121         {0xFCFC, 0xD000},       //Reset                                  //
122         {0x0010, 0x0001},   //Clear host interrupt so main will wait //
123         {0x1030, 0x0000},   //ARM go                                 //
124         {0x0014, 0x0001},   //Wait100mSec                            //
125         {SEQUENCE_WAIT_MS,100}, //DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
126
127         //tp
128         {0x0028, 0x7000},
129         {0x002A, 0x2CF8},
130         {0x0F12, 0xB510},
131         {0x0F12, 0x4827},
132         {0x0F12, 0x21C0},
133         {0x0F12, 0x8041},
134         {0x0F12, 0x4825},
135         {0x0F12, 0x4A26},
136         {0x0F12, 0x3020},
137         {0x0F12, 0x8382},
138         {0x0F12, 0x1D12},
139         {0x0F12, 0x83C2},
140         {0x0F12, 0x4822},
141         {0x0F12, 0x3040},
142         {0x0F12, 0x8041},
143         {0x0F12, 0x4821},
144         {0x0F12, 0x4922},
145         {0x0F12, 0x3060},
146         {0x0F12, 0x8381},
147         {0x0F12, 0x1D09},
148         {0x0F12, 0x83C1},
149         {0x0F12, 0x4821},
150         {0x0F12, 0x491D},
151         {0x0F12, 0x8802},
152         {0x0F12, 0x3980},
153         {0x0F12, 0x804A},
154         {0x0F12, 0x8842},
155         {0x0F12, 0x808A},
156         {0x0F12, 0x8882},
157         {0x0F12, 0x80CA},
158         {0x0F12, 0x88C2},
159         {0x0F12, 0x810A},
160         {0x0F12, 0x8902},
161         {0x0F12, 0x491C},
162         {0x0F12, 0x80CA},
163         {0x0F12, 0x8942},
164         {0x0F12, 0x814A},
165         {0x0F12, 0x8982},
166         {0x0F12, 0x830A},
167         {0x0F12, 0x89C2},
168         {0x0F12, 0x834A},
169         {0x0F12, 0x8A00},
170         {0x0F12, 0x4918},
171         {0x0F12, 0x8188},
172         {0x0F12, 0x4918},
173         {0x0F12, 0x4819},
174         {0x0F12, 0xF000},
175     {0x0F12, 0xFA0C},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
176         {0x0F12, 0x4918},
177         {0x0F12, 0x4819},
178         {0x0F12, 0x6341},
179         {0x0F12, 0x4919},
180         {0x0F12, 0x4819},
181         {0x0F12, 0xF000},
182     {0x0F12, 0xFA05},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
183         {0x0F12, 0x4816},
184         {0x0F12, 0x4918},
185         {0x0F12, 0x3840},
186         {0x0F12, 0x62C1},
187         {0x0F12, 0x4918},
188         {0x0F12, 0x3880},
189         {0x0F12, 0x63C1},
190         {0x0F12, 0x4917},
191         {0x0F12, 0x6301},
192         {0x0F12, 0x4917},
193         {0x0F12, 0x3040},
194         {0x0F12, 0x6181},
195         {0x0F12, 0x4917},
196         {0x0F12, 0x4817},
197         {0x0F12, 0xF000},
198     {0x0F12, 0xF9F5},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
199         {0x0F12, 0x4917},
200         {0x0F12, 0x4817},
201         {0x0F12, 0xF000},
202     {0x0F12, 0xF9F1},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
203         {0x0F12, 0x4917},
204         {0x0F12, 0x4817},
205         {0x0F12, 0xF000},
206     {0x0F12, 0xF9ED},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
207         {0x0F12, 0xBC10},
208         {0x0F12, 0xBC08},
209         {0x0F12, 0x4718},
210         {0x0F12, 0x1100},
211         {0x0F12, 0xD000},
212         {0x0F12, 0x267C},
213         {0x0F12, 0x0000},
214         {0x0F12, 0x2CE8},
215         {0x0F12, 0x0000},
216         {0x0F12, 0x3274},
217         {0x0F12, 0x7000},
218         {0x0F12, 0xF400},
219         {0x0F12, 0xD000},
220         {0x0F12, 0xF520},
221         {0x0F12, 0xD000},
222         {0x0F12, 0x2DF1},
223         {0x0F12, 0x7000},
224         {0x0F12, 0x89A9},
225         {0x0F12, 0x0000},
226         {0x0F12, 0x2E43},
227         {0x0F12, 0x7000},
228         {0x0F12, 0x0140},
229         {0x0F12, 0x7000},
230     {0x0F12, 0x2E75},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
231         {0x0F12, 0x7000},
232         {0x0F12, 0xB4F7},
233         {0x0F12, 0x0000},
234     {0x0F12, 0x2EFF},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
235         {0x0F12, 0x7000},
236     {0x0F12, 0x2F23},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
237         {0x0F12, 0x7000},
238     {0x0F12, 0x2FCD},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
239         {0x0F12, 0x7000},
240     {0x0F12, 0x2FE1},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
241         {0x0F12, 0x7000},
242     {0x0F12, 0x2FB5},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
243         {0x0F12, 0x7000},
244         {0x0F12, 0x013D},
245         {0x0F12, 0x0001},
246     {0x0F12, 0x3067},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
247         {0x0F12, 0x7000},
248         {0x0F12, 0x5823},
249         {0x0F12, 0x0000},
250     {0x0F12, 0x30B5},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
251         {0x0F12, 0x7000},
252         {0x0F12, 0xD789},
253         {0x0F12, 0x0000},
254         {0x0F12, 0xB570},
255         {0x0F12, 0x6804},
256         {0x0F12, 0x6845},
257         {0x0F12, 0x6881},
258         {0x0F12, 0x6840},
259         {0x0F12, 0x2900},
260         {0x0F12, 0x6880},
261         {0x0F12, 0xD007},
262     {0x0F12, 0x49C2},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
263         {0x0F12, 0x8949},
264         {0x0F12, 0x084A},
265         {0x0F12, 0x1880},
266         {0x0F12, 0xF000},
267     {0x0F12, 0xF9B8},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
268         {0x0F12, 0x80A0},
269         {0x0F12, 0xE000},
270         {0x0F12, 0x80A0},
271         {0x0F12, 0x88A0},
272         {0x0F12, 0x2800},
273         {0x0F12, 0xD010},
274         {0x0F12, 0x68A9},
275         {0x0F12, 0x6828},
276         {0x0F12, 0x084A},
277         {0x0F12, 0x1880},
278         {0x0F12, 0xF000},
279     {0x0F12, 0xF9AC},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20 
280         {0x0F12, 0x8020},
281         {0x0F12, 0x1D2D},
282         {0x0F12, 0xCD03},
283         {0x0F12, 0x084A},
284         {0x0F12, 0x1880},
285         {0x0F12, 0xF000},
286     {0x0F12, 0xF9A5},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
287         {0x0F12, 0x8060},
288         {0x0F12, 0xBC70},
289         {0x0F12, 0xBC08},
290         {0x0F12, 0x4718},
291         {0x0F12, 0x2000},
292         {0x0F12, 0x8060},
293         {0x0F12, 0x8020},
294         {0x0F12, 0xE7F8},
295         {0x0F12, 0xB510},
296         {0x0F12, 0xF000},
297     //BEGIN: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
298     {0x0F12, 0xF9A0},
299         //{0x0F12, 0x48B2},
300         //{0x0F12, 0x8A40},
301         //{0x0F12, 0x2800},
302         //{0x0F12, 0xD00C},
303     //END: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
304         {0x0F12, 0x48B1},
305         {0x0F12, 0x49B2},
306         {0x0F12, 0x8800},
307         {0x0F12, 0x4AB2},
308         {0x0F12, 0x2805},
309         {0x0F12, 0xD003},
310         {0x0F12, 0x4BB1},
311         {0x0F12, 0x795B},
312         {0x0F12, 0x2B00},
313         {0x0F12, 0xD005},
314         {0x0F12, 0x2001},
315         {0x0F12, 0x8008},
316         {0x0F12, 0x8010},
317         {0x0F12, 0xBC10},
318         {0x0F12, 0xBC08},
319         {0x0F12, 0x4718},
320         {0x0F12, 0x2800},
321         {0x0F12, 0xD1FA},
322         {0x0F12, 0x2000},
323         {0x0F12, 0x8008},
324         {0x0F12, 0x8010},
325         {0x0F12, 0xE7F6},
326         {0x0F12, 0xB5F8},
327         {0x0F12, 0x2407},
328         {0x0F12, 0x2C06},
329         {0x0F12, 0xD035},
330         {0x0F12, 0x2C07},
331         {0x0F12, 0xD033},
332         {0x0F12, 0x48A3},
333         {0x0F12, 0x8BC1},
334         {0x0F12, 0x2900},
335         {0x0F12, 0xD02A},
336         {0x0F12, 0x00A2},
337         {0x0F12, 0x1815},
338         {0x0F12, 0x4AA4},
339         {0x0F12, 0x6DEE},
340         {0x0F12, 0x8A92},
341         {0x0F12, 0x4296},
342         {0x0F12, 0xD923},
343         {0x0F12, 0x0028},
344         {0x0F12, 0x3080},
345         {0x0F12, 0x0007},
346         {0x0F12, 0x69C0},
347         {0x0F12, 0xF000},
348     {0x0F12, 0xF96D},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
349         {0x0F12, 0x1C71},
350         {0x0F12, 0x0280},
351         {0x0F12, 0xF000},
352     {0x0F12, 0xF969},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
353         {0x0F12, 0x0006},
354         {0x0F12, 0x4898},
355         {0x0F12, 0x0061},
356         {0x0F12, 0x1808},
357         {0x0F12, 0x8D80},
358         {0x0F12, 0x0A01},
359         {0x0F12, 0x0600},
360         {0x0F12, 0x0E00},
361         {0x0F12, 0x1A08},
362         {0x0F12, 0xF000},
363     {0x0F12, 0xF96C},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
364         {0x0F12, 0x0002},
365         {0x0F12, 0x6DE9},
366         {0x0F12, 0x6FE8},
367         {0x0F12, 0x1A08},
368         {0x0F12, 0x4351},
369         {0x0F12, 0x0300},
370         {0x0F12, 0x1C49},
371         {0x0F12, 0xF000},
372     {0x0F12, 0xF955},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
373         {0x0F12, 0x0401},
374         {0x0F12, 0x0430},
375         {0x0F12, 0x0C00},
376         {0x0F12, 0x4301},
377         {0x0F12, 0x61F9},
378         {0x0F12, 0xE004},
379         {0x0F12, 0x00A2},
380         {0x0F12, 0x4990},
381         {0x0F12, 0x1810},
382         {0x0F12, 0x3080},
383         {0x0F12, 0x61C1},
384         {0x0F12, 0x1E64},
385         {0x0F12, 0xD2C5},
386         {0x0F12, 0x2006},
387         {0x0F12, 0xF000},
388     {0x0F12, 0xF95B},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
389         {0x0F12, 0x2007},
390         {0x0F12, 0xF000},
391     {0x0F12, 0xF958},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
392         {0x0F12, 0xBCF8},
393         {0x0F12, 0xBC08},
394         {0x0F12, 0x4718},
395         {0x0F12, 0xB510},
396         {0x0F12, 0xF000},
397     {0x0F12, 0xF95A},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
398         {0x0F12, 0x2800},
399         {0x0F12, 0xD00A},
400         {0x0F12, 0x4881},
401         {0x0F12, 0x8B81},
402         {0x0F12, 0x0089},
403         {0x0F12, 0x1808},
404         {0x0F12, 0x6DC1},
405         {0x0F12, 0x4883},
406         {0x0F12, 0x8A80},
407         {0x0F12, 0x4281},
408         {0x0F12, 0xD901},
409         {0x0F12, 0x2001},
410         {0x0F12, 0xE7A1},
411         {0x0F12, 0x2000},
412         {0x0F12, 0xE79F},
413         {0x0F12, 0xB5F8},
414         {0x0F12, 0x0004},
415         {0x0F12, 0x4F80},
416         {0x0F12, 0x227D},
417         {0x0F12, 0x8938},
418         {0x0F12, 0x0152},
419         {0x0F12, 0x4342},
420         {0x0F12, 0x487E},
421         {0x0F12, 0x9000},
422         {0x0F12, 0x8A01},
423         {0x0F12, 0x0848},
424         {0x0F12, 0x1810},
425         {0x0F12, 0xF000},
426     {0x0F12, 0xF91F},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
427         {0x0F12, 0x210F},
428         {0x0F12, 0xF000},
429     {0x0F12, 0xF942},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
430         {0x0F12, 0x497A},
431         {0x0F12, 0x8C49},
432         {0x0F12, 0x090E},
433         {0x0F12, 0x0136},
434         {0x0F12, 0x4306},
435         {0x0F12, 0x4979},
436         {0x0F12, 0x2C00},
437         {0x0F12, 0xD003},
438         {0x0F12, 0x2001},
439         {0x0F12, 0x0240},
440         {0x0F12, 0x4330},
441         {0x0F12, 0x8108},
442         {0x0F12, 0x4876},
443         {0x0F12, 0x2C00},
444         {0x0F12, 0x8D00},
445         {0x0F12, 0xD001},
446         {0x0F12, 0x2501},
447         {0x0F12, 0xE000},
448         {0x0F12, 0x2500},
449         {0x0F12, 0x4972},
450         {0x0F12, 0x4328},
451         {0x0F12, 0x8008},
452         {0x0F12, 0x207D},
453         {0x0F12, 0x00C0},
454         {0x0F12, 0xF000},
455     {0x0F12, 0xF930},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
456         {0x0F12, 0x2C00},
457         {0x0F12, 0x496E},
458         {0x0F12, 0x0328},
459         {0x0F12, 0x4330},
460         {0x0F12, 0x8108},
461         {0x0F12, 0x88F8},
462         {0x0F12, 0x2C00},
463         {0x0F12, 0x01AA},
464         {0x0F12, 0x4310},
465         {0x0F12, 0x8088},
466     {0x0F12, 0x2C00},//DTS2012071201781: add by huyouhua 00136760 at 2012-7-20
467     {0x0F12, 0xD00B},//DTS2012071201781: add by huyouhua 00136760 at 2012-7-20
468         {0x0F12, 0x9800},
469         {0x0F12, 0x8A01},
470     {0x0F12, 0x4869},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
471         {0x0F12, 0xF000},
472         {0x0F12, 0xF8F1},
473     {0x0F12, 0x4969},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
474         {0x0F12, 0x8809},
475         {0x0F12, 0x4348},
476         {0x0F12, 0x0400},
477         {0x0F12, 0x0C00},
478         {0x0F12, 0xF000},
479         {0x0F12, 0xF918},
480         {0x0F12, 0x0020},
481         {0x0F12, 0xF000},
482         {0x0F12, 0xF91D},
483     {0x0F12, 0x4865},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
484         {0x0F12, 0x7004},
485     {0x0F12, 0xE7A1},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
486         {0x0F12, 0xB510},
487         {0x0F12, 0x0004},
488         {0x0F12, 0xF000},
489         {0x0F12, 0xF91E},
490         {0x0F12, 0x6020},
491     {0x0F12, 0x4962},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
492         {0x0F12, 0x8B49},
493         {0x0F12, 0x0789},
494         {0x0F12, 0xD001},
495         {0x0F12, 0x0040},
496         {0x0F12, 0x6020},
497     {0x0F12, 0xE74A},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
498         {0x0F12, 0xB510},
499         {0x0F12, 0xF000},
500         {0x0F12, 0xF91B},
501     {0x0F12, 0x485E},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
502         {0x0F12, 0x8880},
503         {0x0F12, 0x0601},
504     {0x0F12, 0x4853},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
505         {0x0F12, 0x1609},
506         {0x0F12, 0x8141},
507     {0x0F12, 0xE740},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
508         {0x0F12, 0xB5F8},
509         {0x0F12, 0x000F},
510     {0x0F12, 0x4C54},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
511         {0x0F12, 0x3420},
512         {0x0F12, 0x2500},
513         {0x0F12, 0x5765},
514         {0x0F12, 0x0039},
515         {0x0F12, 0xF000},
516         {0x0F12, 0xF913},
517         {0x0F12, 0x9000},
518         {0x0F12, 0x2600},
519         {0x0F12, 0x57A6},
520     {0x0F12, 0x4C4B},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
521         {0x0F12, 0x42AE},
522         {0x0F12, 0xD01B},
523     {0x0F12, 0x4D53},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
524         {0x0F12, 0x8AE8},
525         {0x0F12, 0x2800},
526         {0x0F12, 0xD013},
527     {0x0F12, 0x484C},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
528         {0x0F12, 0x8A01},
529         {0x0F12, 0x8B80},
530         {0x0F12, 0x4378},
531         {0x0F12, 0xF000},
532         {0x0F12, 0xF8B5},
533         {0x0F12, 0x89A9},
534         {0x0F12, 0x1A41},
535     {0x0F12, 0x484D},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
536         {0x0F12, 0x3820},
537         {0x0F12, 0x8AC0},
538         {0x0F12, 0x4348},
539         {0x0F12, 0x17C1},
540         {0x0F12, 0x0D89},
541         {0x0F12, 0x1808},
542         {0x0F12, 0x1280},
543         {0x0F12, 0x8961},
544         {0x0F12, 0x1A08},
545         {0x0F12, 0x8160},
546         {0x0F12, 0xE003},
547         {0x0F12, 0x88A8},
548         {0x0F12, 0x0600},
549         {0x0F12, 0x1600},
550         {0x0F12, 0x8160},
551         {0x0F12, 0x200A},
552         {0x0F12, 0x5E20},
553         {0x0F12, 0x42B0},
554         {0x0F12, 0xD011},
555         {0x0F12, 0xF000},
556         {0x0F12, 0xF8AB},
557         {0x0F12, 0x1D40},
558         {0x0F12, 0x00C3},
559         {0x0F12, 0x1A18},
560         {0x0F12, 0x214B},
561         {0x0F12, 0xF000},
562         {0x0F12, 0xF897},
563         {0x0F12, 0x211F},
564         {0x0F12, 0xF000},
565         {0x0F12, 0xF8BA},
566         {0x0F12, 0x210A},
567         {0x0F12, 0x5E61},
568         {0x0F12, 0x0FC9},
569         {0x0F12, 0x0149},
570         {0x0F12, 0x4301},
571     {0x0F12, 0x483C},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
572         {0x0F12, 0x81C1},
573         {0x0F12, 0x9800},
574     {0x0F12, 0xE748},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
575         {0x0F12, 0xB5F1},
576         {0x0F12, 0xB082},
577         {0x0F12, 0x2500},
578     {0x0F12, 0x4839},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
579         {0x0F12, 0x9001},
580         {0x0F12, 0x2400},
581         {0x0F12, 0x2028},
582         {0x0F12, 0x4368},
583         {0x0F12, 0x4A39},
584     {0x0F12, 0x4937},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
585         {0x0F12, 0x1887},
586         {0x0F12, 0x1840},
587         {0x0F12, 0x9000},
588         {0x0F12, 0x9800},
589         {0x0F12, 0x0066},
590         {0x0F12, 0x9A01},
591         {0x0F12, 0x1980},
592         {0x0F12, 0x218C},
593         {0x0F12, 0x5A09},
594         {0x0F12, 0x8A80},
595         {0x0F12, 0x8812},
596         {0x0F12, 0xF000},
597         {0x0F12, 0xF8CA},
598         {0x0F12, 0x53B8},
599         {0x0F12, 0x1C64},
600         {0x0F12, 0x2C14},
601         {0x0F12, 0xDBF1},
602         {0x0F12, 0x1C6D},
603         {0x0F12, 0x2D03},
604         {0x0F12, 0xDBE6},
605         {0x0F12, 0x9802},
606         {0x0F12, 0x6800},
607         {0x0F12, 0x0600},
608         {0x0F12, 0x0E00},
609         {0x0F12, 0xF000},
610         {0x0F12, 0xF8C5},
611         {0x0F12, 0xBCFE},
612         {0x0F12, 0xBC08},
613         {0x0F12, 0x4718},
614         {0x0F12, 0xB570},
615         {0x0F12, 0x6805},
616         {0x0F12, 0x2404},
617         {0x0F12, 0xF000},
618         {0x0F12, 0xF8C5},
619         {0x0F12, 0x2800},
620         {0x0F12, 0xD103},
621         {0x0F12, 0xF000},
622         {0x0F12, 0xF8C9},
623         {0x0F12, 0x2800},
624         {0x0F12, 0xD000},
625         {0x0F12, 0x2400},
626         {0x0F12, 0x3540},
627         {0x0F12, 0x88E8},
628         {0x0F12, 0x0500},
629         {0x0F12, 0xD403},
630         {0x0F12, 0x4822},
631         {0x0F12, 0x89C0},
632         {0x0F12, 0x2800},
633         {0x0F12, 0xD002},
634         {0x0F12, 0x2008},
635         {0x0F12, 0x4304},
636         {0x0F12, 0xE001},
637         {0x0F12, 0x2010},
638         {0x0F12, 0x4304},
639         {0x0F12, 0x481F},
640         {0x0F12, 0x8B80},
641         {0x0F12, 0x0700},
642         {0x0F12, 0x0F81},
643         {0x0F12, 0x2001},
644         {0x0F12, 0x2900},
645         {0x0F12, 0xD000},
646         {0x0F12, 0x4304},
647         {0x0F12, 0x491C},
648         {0x0F12, 0x8B0A},
649         {0x0F12, 0x42A2},
650         {0x0F12, 0xD004},
651         {0x0F12, 0x0762},
652         {0x0F12, 0xD502},
653         {0x0F12, 0x4A19},
654         {0x0F12, 0x3220},
655         {0x0F12, 0x8110},
656         {0x0F12, 0x830C},
657     {0x0F12, 0xE693},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
658         {0x0F12, 0x0C3C},
659     //BEGIN: DTS2012071201781: del by huyouhua 00136760 at 2012-7-20
660         //{0x0F12, 0x7000},
661         //{0x0F12, 0x3274},
662     //END: DTS2012071201781: del by huyouhua 00136760 at 2012-7-20
663         {0x0F12, 0x7000},
664         {0x0F12, 0x26E8},
665         {0x0F12, 0x7000},
666         {0x0F12, 0x6100},
667         {0x0F12, 0xD000},
668         {0x0F12, 0x6500},
669         {0x0F12, 0xD000},
670         {0x0F12, 0x1A7C},
671         {0x0F12, 0x7000},
672         {0x0F12, 0x1120},
673         {0x0F12, 0x7000},
674         {0x0F12, 0xFFFF},
675         {0x0F12, 0x0000},
676         {0x0F12, 0x3374},
677         {0x0F12, 0x7000},
678         {0x0F12, 0x1D6C},
679         {0x0F12, 0x7000},
680         {0x0F12, 0x167C},
681         {0x0F12, 0x7000},
682         {0x0F12, 0xF400},
683         {0x0F12, 0xD000},
684         {0x0F12, 0x2C2C},
685         {0x0F12, 0x7000},
686         {0x0F12, 0x40A0},
687         {0x0F12, 0x00DD},
688         {0x0F12, 0xF520},
689         {0x0F12, 0xD000},
690         {0x0F12, 0x2C29},
691         {0x0F12, 0x7000},
692         {0x0F12, 0x1A54},
693         {0x0F12, 0x7000},
694         {0x0F12, 0x1564},
695         {0x0F12, 0x7000},
696         {0x0F12, 0xF2A0},
697         {0x0F12, 0xD000},
698         {0x0F12, 0x2440},
699     {0x0F12, 0x7000},//DTS2012071201781: add by huyouhua 00136760 at 2012-7-20
700     {0x0F12, 0x3274},//DTS2012071201781: add by huyouhua 00136760 at 2012-7-20
701         {0x0F12, 0x7000},
702         {0x0F12, 0x05A0},
703         {0x0F12, 0x7000},
704         {0x0F12, 0x2894},
705         {0x0F12, 0x7000},
706         {0x0F12, 0x1224},
707         {0x0F12, 0x7000},
708         {0x0F12, 0xB000},
709         {0x0F12, 0xD000},
710         {0x0F12, 0x4778},
711         {0x0F12, 0x46C0},
712         {0x0F12, 0xC000},
713         {0x0F12, 0xE59F},
714         {0x0F12, 0xFF1C},
715         {0x0F12, 0xE12F},
716         {0x0F12, 0x1A3F},
717         {0x0F12, 0x0001},
718         {0x0F12, 0x4778},
719         {0x0F12, 0x46C0},
720         {0x0F12, 0xF004},
721         {0x0F12, 0xE51F},
722         {0x0F12, 0x1F48},
723         {0x0F12, 0x0001},
724         {0x0F12, 0x4778},
725         {0x0F12, 0x46C0},
726         {0x0F12, 0xC000},
727         {0x0F12, 0xE59F},
728         {0x0F12, 0xFF1C},
729         {0x0F12, 0xE12F},
730         {0x0F12, 0x24BD},
731         {0x0F12, 0x0000},
732         {0x0F12, 0x4778},
733         {0x0F12, 0x46C0},
734         {0x0F12, 0xC000},
735         {0x0F12, 0xE59F},
736         {0x0F12, 0xFF1C},
737         {0x0F12, 0xE12F},
738         {0x0F12, 0x36DD},
739         {0x0F12, 0x0000},
740         {0x0F12, 0x4778},
741         {0x0F12, 0x46C0},
742         {0x0F12, 0xC000},
743         {0x0F12, 0xE59F},
744         {0x0F12, 0xFF1C},
745         {0x0F12, 0xE12F},
746         {0x0F12, 0xB4CF},
747         {0x0F12, 0x0000},
748         {0x0F12, 0x4778},
749         {0x0F12, 0x46C0},
750         {0x0F12, 0xC000},
751         {0x0F12, 0xE59F},
752         {0x0F12, 0xFF1C},
753         {0x0F12, 0xE12F},
754         {0x0F12, 0xB5D7},
755         {0x0F12, 0x0000},
756         {0x0F12, 0x4778},
757         {0x0F12, 0x46C0},
758         {0x0F12, 0xC000},
759         {0x0F12, 0xE59F},
760         {0x0F12, 0xFF1C},
761         {0x0F12, 0xE12F},
762         {0x0F12, 0x36ED},
763         {0x0F12, 0x0000},
764         {0x0F12, 0x4778},
765         {0x0F12, 0x46C0},
766         {0x0F12, 0xC000},
767         {0x0F12, 0xE59F},
768         {0x0F12, 0xFF1C},
769         {0x0F12, 0xE12F},
770         {0x0F12, 0xF53F},
771         {0x0F12, 0x0000},
772         {0x0F12, 0x4778},
773         {0x0F12, 0x46C0},
774         {0x0F12, 0xC000},
775         {0x0F12, 0xE59F},
776         {0x0F12, 0xFF1C},
777         {0x0F12, 0xE12F},
778         {0x0F12, 0xF5D9},
779         {0x0F12, 0x0000},
780         {0x0F12, 0x4778},
781         {0x0F12, 0x46C0},
782         {0x0F12, 0xC000},
783         {0x0F12, 0xE59F},
784         {0x0F12, 0xFF1C},
785         {0x0F12, 0xE12F},
786         {0x0F12, 0x013D},
787         {0x0F12, 0x0001},
788         {0x0F12, 0x4778},
789         {0x0F12, 0x46C0},
790         {0x0F12, 0xC000},
791         {0x0F12, 0xE59F},
792         {0x0F12, 0xFF1C},
793         {0x0F12, 0xE12F},
794         {0x0F12, 0xF5C9},
795         {0x0F12, 0x0000},
796         {0x0F12, 0x4778},
797         {0x0F12, 0x46C0},
798         {0x0F12, 0xC000},
799         {0x0F12, 0xE59F},
800         {0x0F12, 0xFF1C},
801         {0x0F12, 0xE12F},
802         {0x0F12, 0xFAA9},
803         {0x0F12, 0x0000},
804         {0x0F12, 0x4778},
805         {0x0F12, 0x46C0},
806         {0x0F12, 0xC000},
807         {0x0F12, 0xE59F},
808         {0x0F12, 0xFF1C},
809         {0x0F12, 0xE12F},
810         {0x0F12, 0x3723},
811         {0x0F12, 0x0000},
812         {0x0F12, 0x4778},
813         {0x0F12, 0x46C0},
814         {0x0F12, 0xC000},
815         {0x0F12, 0xE59F},
816         {0x0F12, 0xFF1C},
817         {0x0F12, 0xE12F},
818         {0x0F12, 0x5823},
819         {0x0F12, 0x0000},
820         {0x0F12, 0x4778},
821         {0x0F12, 0x46C0},
822         {0x0F12, 0xC000},
823         {0x0F12, 0xE59F},
824         {0x0F12, 0xFF1C},
825         {0x0F12, 0xE12F},
826         {0x0F12, 0xD771},
827         {0x0F12, 0x0000},
828         {0x0F12, 0x4778},
829         {0x0F12, 0x46C0},
830         {0x0F12, 0xC000},
831         {0x0F12, 0xE59F},
832         {0x0F12, 0xFF1C},
833         {0x0F12, 0xE12F},
834         {0x0F12, 0xD75B},
835         {0x0F12, 0x0000},
836     {0x0F12, 0x7E77},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
837         {0x0F12, 0x0000},
838         //end tp
839
840         //========================================================                      
841         // CIs/APs/An setting        - 400LsB  sYsCLK 32MHz                             
842         //========================================================                      
843         // This regis are for FACTORY ONLY. If you change it without prior notification,
844         // YOU are REsIBLE for the FAILURE that will happen in the future.              
845         //========================================================                      
846     {0x0028, 0x7000},//DTS2012071201781: add by huyouhua 00136760 at 2012-7-20                                                    
847
848         {0x002A, 0x157A},
849         {0x0F12, 0x0001},
850         {0x002A, 0x1578},
851         {0x0F12, 0x0001},
852         {0x002A, 0x1576},
853         {0x0F12, 0x0020},
854         {0x002A, 0x1574},
855         {0x0F12, 0x0006},
856         {0x002A, 0x156E},
857         {0x0F12, 0x0001},       // slope calibration tolerance in units of 1/256        
858         {0x002A, 0x1568},
859         {0x0F12, 0x00FC},
860
861         //ADC control 
862         {0x002A, 0x155A},
863         {0x0F12, 0x01CC},       //ADC sAT of 450mV for 10bit default in EVT1                            
864         {0x002A, 0x157E},                                                                        
865         {0x0F12, 0x0C80},       // 3200 Max. Reset ramp DCLK counts {default 2048 0x800}             
866         {0x0F12, 0x0578},       // 1400 Max. Reset ramp DCLK counts for x3.5                         
867         {0x002A, 0x157C},                                                                        
868         {0x0F12, 0x0190},       // 400 Reset ramp for x1 in DCLK counts                              
869         {0x002A, 0x1570},                                                                        
870         {0x0F12, 0x00A0},       // 160 LsB                                                           
871         {0x0F12, 0x0010},       // reset threshold                                                   
872         {0x002A, 0x12C4},                                                                        
873         {0x0F12, 0x006A},       // 106 additional timing columns.                                    
874         {0x002A, 0x12C8},                                                                        
875         {0x0F12, 0x08AC},       // 2220 ADC columns in normal mode including Hold & Latch            
876         {0x0F12, 0x0050},       // 80 addition of ADC columns in Y-ave mode {default 244 0x74}
877
878         {0x002A, 0x1696},       // based on APs guidelines                        
879         {0x0F12, 0x0000},   // based on APs guidelines                        
880         {0x0F12, 0x0000},   // default. 1492 used for ADC dark characteristics
881         {0x0F12, 0x00C6},   // default. 1492 used for ADC dark characteristics
882         {0x0F12, 0x00C6},                                                                                                       
883     //BEGIN: DTS2012071201781: add by huyouhua 00136760 at 2012-7-20
884     {0x002A, 0x12B8}, 
885     {0x0F12, 0x0B00}, //#senHal_ExpMinPixels //disable CINTR 0  
886     //END: DTS2012071201781: add by huyouhua 00136760 at 2012-7-20
887         {0x002A, 0x1690},   // when set double sampling is activated - requires different set of pointers                                                 
888         {0x0F12, 0x0001},                                                     
889
890         {0x002A, 0x12B0},   // comp and pixel bias control 0xF40E - default for EVT1                                                                      
891         {0x0F12, 0x0055},   // comp and pixel bias control 0xF40E for binning mode                                                                        
892         {0x0F12, 0x005A},                                                     
893
894         {0x002A, 0x337A},   // [7] - is used for rest-only mode {EVT0 value is 0xD and HW 0x6}                                                            
895         {0x0F12, 0x0006},
896         {0x0F12, 0x0068},
897     //BEGIN:DTS2012071201781: del by huyouhua 00136760 at 2012-7-20
898         //{0x002A, 0x169E},
899         //{0x0F12, 0x0007},
900         //{0x002A, 0x0BF6},
901         //{0x0F12, 0x0000},
902     //END:DTS2012071201781: del by huyouhua 00136760 at 2012-7-20
903
904         {0x002A, 0x327C},
905         {0x0F12, 0x1000},
906         {0x0F12, 0x6998},
907         {0x0F12, 0x0078},
908         {0x0F12, 0x04FE},
909         {0x0F12, 0x8800},
910 #if defined(CURRENT_4MA)
911         {0x002A, 0x3274},
912         {0x0F12, 0x0155},       //set IO driving current 4mA for Data 
913         {0x0F12, 0x0155},   //set IO driving current 4ma for Data             
914         {0x0F12, 0x1555},   //set IO driving current              
915         {0x0F12, 0x0555},   //set IO driving current 4ma for PCLK/HSYNC/Vsync             
916 #elif defined(CURRENT_8MA)
917         {0x002A, 0x3274},
918         {0x0F12, 0x02aa},       //set IO driving current 8mA for Data
919         {0x0F12, 0x02aa},   //set IO driving current              
920         {0x0F12, 0x1555},   //set IO driving current              
921         {0x0F12, 0x059a},   //set IO driving current              
922 #elif defined(CURRENT_12MA)
923         {0x002A, 0x3274},
924         {0x0F12, 0x03ff},       //set IO driving current 12mA for Data 
925         {0x0F12, 0x03ff},   //set IO driving current              
926         {0x0F12, 0x1555},   //set IO driving current              
927         {0x0F12, 0x05df},   //set IO driving current              
928     //BEGIN: DTS2012071201781 add by huyouhua 00136760 at 2012-7-23
929 #elif defined(CURRENT_SLIM)
930     {0x002A, 0x3274},
931     {0x0F12, 0x0155},//------- //#Tune_TP_IO_DrivingCurrent_D0_D4_cs10Set IO driving current--------------- 
932     {0x0F12, 0x0155},//------- //#Tune_TP_IO_DrivingCurrent_D9_D5_cs10Set IO driving current--------------- 
933     {0x0F12, 0x1555},//------- //#Tune_TP_IO_DrivingCurrent_GPIO_cd10 Set IO driving current--------------- 
934     //{0x0F12, 0x05DF}//0x0555},//------- - //059A//05DF//#Tune_TP_IO_DrivingCurrent_CLKs_cd10 Set IO driving current-
935     {0x0F12, 0x059A},//0x0555},//------- - //059A//05DF//#Tune_TP_IO_DrivingCurrent_CLKs_cd10 Set IO driving current-
936     //595,59A,5DA,5DF
937     //END: DTS2012071201781 add by huyouhua 00136760 at 2012-7-23
938 #endif
939
940     //BEGIN: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
941     {0x002A, 0x169E},
942     {0x0F12, 0x0007}, //evt1_senHal_Dblr2Value //        [3:0]- specifies the target (default 7)- DCLK = 64MHz instead of 116MHz. 
943     {0x002A, 0x0BF6},                                                                                     
944     {0x0F12, 0x0000}, //from ALEX //Enable Bayer Downscaler  
945     //END: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20                                             
946         {0x0028, 0x7000},       
947         {0x002A, 0x12D2},          
948         {0x0F12, 0x0003},       //senHal_pContSenModesRegsArray[0][0]2 700012D2     
949         {0x0F12, 0x0003},   //senHal_pContSenModesRegsArray[0][1]2 700012D4  
950         {0x0F12, 0x0003},   //senHal_pContSenModesRegsArray[0][2]2 700012D6  
951         {0x0F12, 0x0003},   //senHal_pContSenModesRegsArray[0][3]2 700012D8  
952         {0x0F12, 0x0884},   //senHal_pContSenModesRegsArray[1][0]2 700012DA  
953         {0x0F12, 0x08CF},   //senHal_pContSenModesRegsArray[1][1]2 700012DC  
954         {0x0F12, 0x0500},   //senHal_pContSenModesRegsArray[1][2]2 700012DE  
955         {0x0F12, 0x054B},   //senHal_pContSenModesRegsArray[1][3]2 700012E0  
956         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[2][0]2 700012E2  
957         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[2][1]2 700012E4  
958         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[2][2]2 700012E6  
959         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[2][3]2 700012E8  
960         {0x0F12, 0x0885},   //senHal_pContSenModesRegsArray[3][0]2 700012EA  
961         {0x0F12, 0x0467},   //senHal_pContSenModesRegsArray[3][1]2 700012EC  
962         {0x0F12, 0x0501},   //senHal_pContSenModesRegsArray[3][2]2 700012EE  
963         {0x0F12, 0x02A5},   //senHal_pContSenModesRegsArray[3][3]2 700012F0  
964         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[4][0]2 700012F2  
965         {0x0F12, 0x046A},   //senHal_pContSenModesRegsArray[4][1]2 700012F4  
966         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[4][2]2 700012F6  
967         {0x0F12, 0x02A8},   //senHal_pContSenModesRegsArray[4][3]2 700012F8  
968         {0x0F12, 0x0885},   //senHal_pContSenModesRegsArray[5][0]2 700012FA  
969         {0x0F12, 0x08D0},   //senHal_pContSenModesRegsArray[5][1]2 700012FC  
970         {0x0F12, 0x0501},   //senHal_pContSenModesRegsArray[5][2]2 700012FE  
971         {0x0F12, 0x054C},   //senHal_pContSenModesRegsArray[5][3]2 70001300  
972         {0x0F12, 0x0006},   //senHal_pContSenModesRegsArray[6][0]2 70001302  
973         {0x0F12, 0x0020},   //senHal_pContSenModesRegsArray[6][1]2 70001304  
974         {0x0F12, 0x0006},   //senHal_pContSenModesRegsArray[6][2]2 70001306  
975         {0x0F12, 0x0020},   //senHal_pContSenModesRegsArray[6][3]2 70001308  
976         {0x0F12, 0x0881},   //senHal_pContSenModesRegsArray[7][0]2 7000130A  
977         {0x0F12, 0x0463},   //senHal_pContSenModesRegsArray[7][1]2 7000130C  
978         {0x0F12, 0x04FD},   //senHal_pContSenModesRegsArray[7][2]2 7000130E  
979         {0x0F12, 0x02A1},   //senHal_pContSenModesRegsArray[7][3]2 70001310  
980         {0x0F12, 0x0006},   //senHal_pContSenModesRegsArray[8][0]2 70001312  
981         {0x0F12, 0x0489},   //senHal_pContSenModesRegsArray[8][1]2 70001314  
982         {0x0F12, 0x0006},   //senHal_pContSenModesRegsArray[8][2]2 70001316  
983         {0x0F12, 0x02C7},   //senHal_pContSenModesRegsArray[8][3]2 70001318  
984         {0x0F12, 0x0881},   //senHal_pContSenModesRegsArray[9][0]2 7000131A  
985         {0x0F12, 0x08CC},   //senHal_pContSenModesRegsArray[9][1]2 7000131C  
986         {0x0F12, 0x04FD},   //senHal_pContSenModesRegsArray[9][2]2 7000131E  
987         {0x0F12, 0x0548},   //senHal_pContSenModesRegsArray[9][3]2 70001320  
988         {0x0F12, 0x03A2},   //senHal_pContSenModesRegsArray[10][0] 2 70001322
989         {0x0F12, 0x01D3},   //senHal_pContSenModesRegsArray[10][1] 2 70001324
990         {0x0F12, 0x01E0},   //senHal_pContSenModesRegsArray[10][2] 2 70001326
991         {0x0F12, 0x00F2},   //senHal_pContSenModesRegsArray[10][3] 2 70001328
992         {0x0F12, 0x03F2},   //senHal_pContSenModesRegsArray[11][0] 2 7000132A
993         {0x0F12, 0x0223},   //senHal_pContSenModesRegsArray[11][1] 2 7000132C
994         {0x0F12, 0x0230},   //senHal_pContSenModesRegsArray[11][2] 2 7000132E
995         {0x0F12, 0x0142},   //senHal_pContSenModesRegsArray[11][3] 2 70001330
996         {0x0F12, 0x03A2},   //senHal_pContSenModesRegsArray[12][0] 2 70001332
997         {0x0F12, 0x063C},   //senHal_pContSenModesRegsArray[12][1] 2 70001334
998         {0x0F12, 0x01E0},   //senHal_pContSenModesRegsArray[12][2] 2 70001336
999         {0x0F12, 0x0399},   //senHal_pContSenModesRegsArray[12][3] 2 70001338
1000         {0x0F12, 0x03F2},   //senHal_pContSenModesRegsArray[13][0] 2 7000133A
1001         {0x0F12, 0x068C},   //senHal_pContSenModesRegsArray[13][1] 2 7000133C
1002         {0x0F12, 0x0230},   //senHal_pContSenModesRegsArray[13][2] 2 7000133E
1003         {0x0F12, 0x03E9},   //senHal_pContSenModesRegsArray[13][3] 2 70001340
1004         {0x0F12, 0x0002},   //senHal_pContSenModesRegsArray[14][0] 2 70001342
1005         {0x0F12, 0x0002},   //senHal_pContSenModesRegsArray[14][1] 2 70001344
1006         {0x0F12, 0x0002},   //senHal_pContSenModesRegsArray[14][2] 2 70001346
1007         {0x0F12, 0x0002},   //senHal_pContSenModesRegsArray[14][3] 2 70001348
1008         {0x0F12, 0x003C},   //senHal_pContSenModesRegsArray[15][0] 2 7000134A
1009         {0x0F12, 0x003C},   //senHal_pContSenModesRegsArray[15][1] 2 7000134C
1010         {0x0F12, 0x003C},   //senHal_pContSenModesRegsArray[15][2] 2 7000134E
1011         {0x0F12, 0x003C},   //senHal_pContSenModesRegsArray[15][3] 2 70001350
1012         {0x0F12, 0x01D3},   //senHal_pContSenModesRegsArray[16][0] 2 70001352
1013         {0x0F12, 0x01D3},   //senHal_pContSenModesRegsArray[16][1] 2 70001354
1014         {0x0F12, 0x00F2},   //senHal_pContSenModesRegsArray[16][2] 2 70001356
1015         {0x0F12, 0x00F2},   //senHal_pContSenModesRegsArray[16][3] 2 70001358
1016         {0x0F12, 0x020B},   //senHal_pContSenModesRegsArray[17][0] 2 7000135A
1017         {0x0F12, 0x024A},   //senHal_pContSenModesRegsArray[17][1] 2 7000135C
1018         {0x0F12, 0x012A},   //senHal_pContSenModesRegsArray[17][2] 2 7000135E
1019         {0x0F12, 0x0169},   //senHal_pContSenModesRegsArray[17][3] 2 70001360
1020         {0x0F12, 0x0002},   //senHal_pContSenModesRegsArray[18][0] 2 70001362
1021         {0x0F12, 0x046B},   //senHal_pContSenModesRegsArray[18][1] 2 70001364
1022         {0x0F12, 0x0002},   //senHal_pContSenModesRegsArray[18][2] 2 70001366
1023         {0x0F12, 0x02A9},   //senHal_pContSenModesRegsArray[18][3] 2 70001368
1024         {0x0F12, 0x0419},   //senHal_pContSenModesRegsArray[19][0] 2 7000136A
1025         {0x0F12, 0x04A5},   //senHal_pContSenModesRegsArray[19][1] 2 7000136C
1026         {0x0F12, 0x0257},   //senHal_pContSenModesRegsArray[19][2] 2 7000136E
1027         {0x0F12, 0x02E3},   //senHal_pContSenModesRegsArray[19][3] 2 70001370
1028         {0x0F12, 0x0630},   //senHal_pContSenModesRegsArray[20][0] 2 70001372
1029         {0x0F12, 0x063C},   //senHal_pContSenModesRegsArray[20][1] 2 70001374
1030         {0x0F12, 0x038D},   //senHal_pContSenModesRegsArray[20][2] 2 70001376
1031         {0x0F12, 0x0399},   //senHal_pContSenModesRegsArray[20][3] 2 70001378
1032         {0x0F12, 0x0668},   //senHal_pContSenModesRegsArray[21][0] 2 7000137A
1033         {0x0F12, 0x06B3},   //senHal_pContSenModesRegsArray[21][1] 2 7000137C
1034         {0x0F12, 0x03C5},   //senHal_pContSenModesRegsArray[21][2] 2 7000137E
1035         {0x0F12, 0x0410},   //senHal_pContSenModesRegsArray[21][3] 2 70001380
1036         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[22][0] 2 70001382
1037         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[22][1] 2 70001384
1038         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[22][2] 2 70001386
1039         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[22][3] 2 70001388
1040         {0x0F12, 0x03A2},   //senHal_pContSenModesRegsArray[23][0] 2 7000138A
1041         {0x0F12, 0x01D3},   //senHal_pContSenModesRegsArray[23][1] 2 7000138C
1042         {0x0F12, 0x01E0},   //senHal_pContSenModesRegsArray[23][2] 2 7000138E
1043         {0x0F12, 0x00F2},   //senHal_pContSenModesRegsArray[23][3] 2 70001390
1044         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[24][0] 2 70001392
1045         {0x0F12, 0x0461},   //senHal_pContSenModesRegsArray[24][1] 2 70001394
1046         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[24][2] 2 70001396
1047         {0x0F12, 0x029F},   //senHal_pContSenModesRegsArray[24][3] 2 70001398
1048         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[25][0] 2 7000139A
1049         {0x0F12, 0x063C},   //senHal_pContSenModesRegsArray[25][1] 2 7000139C
1050         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[25][2] 2 7000139E
1051         {0x0F12, 0x0399},   //senHal_pContSenModesRegsArray[25][3] 2 700013A0
1052         {0x0F12, 0x003D},   //senHal_pContSenModesRegsArray[26][0] 2 700013A2
1053         {0x0F12, 0x003D},   //senHal_pContSenModesRegsArray[26][1] 2 700013A4
1054         {0x0F12, 0x003D},   //senHal_pContSenModesRegsArray[26][2] 2 700013A6
1055         {0x0F12, 0x003D},   //senHal_pContSenModesRegsArray[26][3] 2 700013A8
1056         {0x0F12, 0x01D0},   //senHal_pContSenModesRegsArray[27][0] 2 700013AA
1057         {0x0F12, 0x01D0},   //senHal_pContSenModesRegsArray[27][1] 2 700013AC
1058         {0x0F12, 0x00EF},   //senHal_pContSenModesRegsArray[27][2] 2 700013AE
1059         {0x0F12, 0x00EF},   //senHal_pContSenModesRegsArray[27][3] 2 700013B0
1060         {0x0F12, 0x020C},   //senHal_pContSenModesRegsArray[28][0] 2 700013B2
1061         {0x0F12, 0x024B},   //senHal_pContSenModesRegsArray[28][1] 2 700013B4
1062         {0x0F12, 0x012B},   //senHal_pContSenModesRegsArray[28][2] 2 700013B6
1063         {0x0F12, 0x016A},   //senHal_pContSenModesRegsArray[28][3] 2 700013B8
1064         {0x0F12, 0x039F},   //senHal_pContSenModesRegsArray[29][0] 2 700013BA
1065         {0x0F12, 0x045E},   //senHal_pContSenModesRegsArray[29][1] 2 700013BC
1066         {0x0F12, 0x01DD},   //senHal_pContSenModesRegsArray[29][2] 2 700013BE
1067         {0x0F12, 0x029C},   //senHal_pContSenModesRegsArray[29][3] 2 700013C0
1068         {0x0F12, 0x041A},   //senHal_pContSenModesRegsArray[30][0] 2 700013C2
1069         {0x0F12, 0x04A6},   //senHal_pContSenModesRegsArray[30][1] 2 700013C4
1070         {0x0F12, 0x0258},   //senHal_pContSenModesRegsArray[30][2] 2 700013C6
1071         {0x0F12, 0x02E4},   //senHal_pContSenModesRegsArray[30][3] 2 700013C8
1072         {0x0F12, 0x062D},   //senHal_pContSenModesRegsArray[31][0] 2 700013CA
1073         {0x0F12, 0x0639},   //senHal_pContSenModesRegsArray[31][1] 2 700013CC
1074         {0x0F12, 0x038A},   //senHal_pContSenModesRegsArray[31][2] 2 700013CE
1075         {0x0F12, 0x0396},   //senHal_pContSenModesRegsArray[31][3] 2 700013D0
1076         {0x0F12, 0x0669},   //senHal_pContSenModesRegsArray[32][0] 2 700013D2
1077         {0x0F12, 0x06B4},   //senHal_pContSenModesRegsArray[32][1] 2 700013D4
1078         {0x0F12, 0x03C6},   //senHal_pContSenModesRegsArray[32][2] 2 700013D6
1079         {0x0F12, 0x0411},   //senHal_pContSenModesRegsArray[32][3] 2 700013D8
1080         {0x0F12, 0x087C},   //senHal_pContSenModesRegsArray[33][0] 2 700013DA
1081         {0x0F12, 0x08C7},   //senHal_pContSenModesRegsArray[33][1] 2 700013DC
1082         {0x0F12, 0x04F8},   //senHal_pContSenModesRegsArray[33][2] 2 700013DE
1083         {0x0F12, 0x0543},   //senHal_pContSenModesRegsArray[33][3] 2 700013E0
1084         {0x0F12, 0x0040},   //senHal_pContSenModesRegsArray[34][0] 2 700013E2
1085         {0x0F12, 0x0040},   //senHal_pContSenModesRegsArray[34][1] 2 700013E4
1086         {0x0F12, 0x0040},   //senHal_pContSenModesRegsArray[34][2] 2 700013E6
1087         {0x0F12, 0x0040},   //senHal_pContSenModesRegsArray[34][3] 2 700013E8
1088         {0x0F12, 0x01D0},   //senHal_pContSenModesRegsArray[35][0] 2 700013EA
1089         {0x0F12, 0x01D0},   //senHal_pContSenModesRegsArray[35][1] 2 700013EC
1090         {0x0F12, 0x00EF},   //senHal_pContSenModesRegsArray[35][2] 2 700013EE
1091         {0x0F12, 0x00EF},   //senHal_pContSenModesRegsArray[35][3] 2 700013F0
1092         {0x0F12, 0x020F},   //senHal_pContSenModesRegsArray[36][0] 2 700013F2
1093         {0x0F12, 0x024E},   //senHal_pContSenModesRegsArray[36][1] 2 700013F4
1094         {0x0F12, 0x012E},   //senHal_pContSenModesRegsArray[36][2] 2 700013F6
1095         {0x0F12, 0x016D},   //senHal_pContSenModesRegsArray[36][3] 2 700013F8
1096         {0x0F12, 0x039F},   //senHal_pContSenModesRegsArray[37][0] 2 700013FA
1097         {0x0F12, 0x045E},   //senHal_pContSenModesRegsArray[37][1] 2 700013FC
1098         {0x0F12, 0x01DD},   //senHal_pContSenModesRegsArray[37][2] 2 700013FE
1099         {0x0F12, 0x029C},   //senHal_pContSenModesRegsArray[37][3] 2 70001400
1100         {0x0F12, 0x041D},   //senHal_pContSenModesRegsArray[38][0] 2 70001402
1101         {0x0F12, 0x04A9},   //senHal_pContSenModesRegsArray[38][1] 2 70001404
1102         {0x0F12, 0x025B},   //senHal_pContSenModesRegsArray[38][2] 2 70001406
1103         {0x0F12, 0x02E7},   //senHal_pContSenModesRegsArray[38][3] 2 70001408
1104         {0x0F12, 0x062D},   //senHal_pContSenModesRegsArray[39][0] 2 7000140A
1105         {0x0F12, 0x0639},   //senHal_pContSenModesRegsArray[39][1] 2 7000140C
1106         {0x0F12, 0x038A},   //senHal_pContSenModesRegsArray[39][2] 2 7000140E
1107         {0x0F12, 0x0396},   //senHal_pContSenModesRegsArray[39][3] 2 70001410
1108         {0x0F12, 0x066C},   //senHal_pContSenModesRegsArray[40][0] 2 70001412
1109         {0x0F12, 0x06B7},   //senHal_pContSenModesRegsArray[40][1] 2 70001414
1110         {0x0F12, 0x03C9},   //senHal_pContSenModesRegsArray[40][2] 2 70001416
1111         {0x0F12, 0x0414},   //senHal_pContSenModesRegsArray[40][3] 2 70001418
1112         {0x0F12, 0x087C},   //senHal_pContSenModesRegsArray[41][0] 2 7000141A
1113         {0x0F12, 0x08C7},   //senHal_pContSenModesRegsArray[41][1] 2 7000141C
1114         {0x0F12, 0x04F8},   //senHal_pContSenModesRegsArray[41][2] 2 7000141E
1115         {0x0F12, 0x0543},   //senHal_pContSenModesRegsArray[41][3] 2 70001420
1116         {0x0F12, 0x0040},   //senHal_pContSenModesRegsArray[42][0] 2 70001422
1117         {0x0F12, 0x0040},   //senHal_pContSenModesRegsArray[42][1] 2 70001424
1118         {0x0F12, 0x0040},   //senHal_pContSenModesRegsArray[42][2] 2 70001426
1119         {0x0F12, 0x0040},   //senHal_pContSenModesRegsArray[42][3] 2 70001428
1120         {0x0F12, 0x01D0},   //senHal_pContSenModesRegsArray[43][0] 2 7000142A
1121         {0x0F12, 0x01D0},   //senHal_pContSenModesRegsArray[43][1] 2 7000142C
1122         {0x0F12, 0x00EF},   //senHal_pContSenModesRegsArray[43][2] 2 7000142E
1123         {0x0F12, 0x00EF},   //senHal_pContSenModesRegsArray[43][3] 2 70001430
1124         {0x0F12, 0x020F},   //senHal_pContSenModesRegsArray[44][0] 2 70001432
1125         {0x0F12, 0x024E},   //senHal_pContSenModesRegsArray[44][1] 2 70001434
1126         {0x0F12, 0x012E},   //senHal_pContSenModesRegsArray[44][2] 2 70001436
1127         {0x0F12, 0x016D},   //senHal_pContSenModesRegsArray[44][3] 2 70001438
1128         {0x0F12, 0x039F},   //senHal_pContSenModesRegsArray[45][0] 2 7000143A
1129         {0x0F12, 0x045E},   //senHal_pContSenModesRegsArray[45][1] 2 7000143C
1130         {0x0F12, 0x01DD},   //senHal_pContSenModesRegsArray[45][2] 2 7000143E
1131         {0x0F12, 0x029C},   //senHal_pContSenModesRegsArray[45][3] 2 70001440
1132         {0x0F12, 0x041D},   //senHal_pContSenModesRegsArray[46][0] 2 70001442
1133         {0x0F12, 0x04A9},   //senHal_pContSenModesRegsArray[46][1] 2 70001444
1134         {0x0F12, 0x025B},   //senHal_pContSenModesRegsArray[46][2] 2 70001446
1135         {0x0F12, 0x02E7},   //senHal_pContSenModesRegsArray[46][3] 2 70001448
1136         {0x0F12, 0x062D},   //senHal_pContSenModesRegsArray[47][0] 2 7000144A
1137         {0x0F12, 0x0639},   //senHal_pContSenModesRegsArray[47][1] 2 7000144C
1138         {0x0F12, 0x038A},   //senHal_pContSenModesRegsArray[47][2] 2 7000144E
1139         {0x0F12, 0x0396},   //senHal_pContSenModesRegsArray[47][3] 2 70001450
1140         {0x0F12, 0x066C},   //senHal_pContSenModesRegsArray[48][0] 2 70001452
1141         {0x0F12, 0x06B7},   //senHal_pContSenModesRegsArray[48][1] 2 70001454
1142         {0x0F12, 0x03C9},   //senHal_pContSenModesRegsArray[48][2] 2 70001456
1143         {0x0F12, 0x0414},   //senHal_pContSenModesRegsArray[48][3] 2 70001458
1144         {0x0F12, 0x087C},   //senHal_pContSenModesRegsArray[49][0] 2 7000145A
1145         {0x0F12, 0x08C7},   //senHal_pContSenModesRegsArray[49][1] 2 7000145C
1146         {0x0F12, 0x04F8},   //senHal_pContSenModesRegsArray[49][2] 2 7000145E
1147         {0x0F12, 0x0543},   //senHal_pContSenModesRegsArray[49][3] 2 70001460
1148         {0x0F12, 0x003D},   //senHal_pContSenModesRegsArray[50][0] 2 70001462
1149         {0x0F12, 0x003D},   //senHal_pContSenModesRegsArray[50][1] 2 70001464
1150         {0x0F12, 0x003D},   //senHal_pContSenModesRegsArray[50][2] 2 70001466
1151         {0x0F12, 0x003D},   //senHal_pContSenModesRegsArray[50][3] 2 70001468
1152         {0x0F12, 0x01D2},   //senHal_pContSenModesRegsArray[51][0] 2 7000146A
1153         {0x0F12, 0x01D2},   //senHal_pContSenModesRegsArray[51][1] 2 7000146C
1154         {0x0F12, 0x00F1},   //senHal_pContSenModesRegsArray[51][2] 2 7000146E
1155         {0x0F12, 0x00F1},   //senHal_pContSenModesRegsArray[51][3] 2 70001470
1156         {0x0F12, 0x020C},   //senHal_pContSenModesRegsArray[52][0] 2 70001472
1157         {0x0F12, 0x024B},   //senHal_pContSenModesRegsArray[52][1] 2 70001474
1158         {0x0F12, 0x012B},   //senHal_pContSenModesRegsArray[52][2] 2 70001476
1159         {0x0F12, 0x016A},   //senHal_pContSenModesRegsArray[52][3] 2 70001478
1160         {0x0F12, 0x03A1},   //senHal_pContSenModesRegsArray[53][0] 2 7000147A
1161         {0x0F12, 0x0460},   //senHal_pContSenModesRegsArray[53][1] 2 7000147C
1162         {0x0F12, 0x01DF},   //senHal_pContSenModesRegsArray[53][2] 2 7000147E
1163         {0x0F12, 0x029E},   //senHal_pContSenModesRegsArray[53][3] 2 70001480
1164         {0x0F12, 0x041A},   //senHal_pContSenModesRegsArray[54][0] 2 70001482
1165         {0x0F12, 0x04A6},   //senHal_pContSenModesRegsArray[54][1] 2 70001484
1166         {0x0F12, 0x0258},   //senHal_pContSenModesRegsArray[54][2] 2 70001486
1167         {0x0F12, 0x02E4},   //senHal_pContSenModesRegsArray[54][3] 2 70001488
1168         {0x0F12, 0x062F},   //senHal_pContSenModesRegsArray[55][0] 2 7000148A
1169         {0x0F12, 0x063B},   //senHal_pContSenModesRegsArray[55][1] 2 7000148C
1170         {0x0F12, 0x038C},   //senHal_pContSenModesRegsArray[55][2] 2 7000148E
1171         {0x0F12, 0x0398},   //senHal_pContSenModesRegsArray[55][3] 2 70001490
1172         {0x0F12, 0x0669},   //senHal_pContSenModesRegsArray[56][0] 2 70001492
1173         {0x0F12, 0x06B4},   //senHal_pContSenModesRegsArray[56][1] 2 70001494
1174         {0x0F12, 0x03C6},   //senHal_pContSenModesRegsArray[56][2] 2 70001496
1175         {0x0F12, 0x0411},   //senHal_pContSenModesRegsArray[56][3] 2 70001498
1176         {0x0F12, 0x087E},   //senHal_pContSenModesRegsArray[57][0] 2 7000149A
1177         {0x0F12, 0x08C9},   //senHal_pContSenModesRegsArray[57][1] 2 7000149C
1178         {0x0F12, 0x04FA},   //senHal_pContSenModesRegsArray[57][2] 2 7000149E
1179         {0x0F12, 0x0545},   //senHal_pContSenModesRegsArray[57][3] 2 700014A0
1180         {0x0F12, 0x03A2},   //senHal_pContSenModesRegsArray[58][0] 2 700014A2
1181         {0x0F12, 0x01D3},   //senHal_pContSenModesRegsArray[58][1] 2 700014A4
1182         {0x0F12, 0x01E0},   //senHal_pContSenModesRegsArray[58][2] 2 700014A6
1183         {0x0F12, 0x00F2},   //senHal_pContSenModesRegsArray[58][3] 2 700014A8
1184         {0x0F12, 0x03AF},   //senHal_pContSenModesRegsArray[59][0] 2 700014AA
1185         {0x0F12, 0x01E0},   //senHal_pContSenModesRegsArray[59][1] 2 700014AC
1186         {0x0F12, 0x01ED},   //senHal_pContSenModesRegsArray[59][2] 2 700014AE
1187         {0x0F12, 0x00FF},   //senHal_pContSenModesRegsArray[59][3] 2 700014B0
1188         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[60][0] 2 700014B2
1189         {0x0F12, 0x0461},   //senHal_pContSenModesRegsArray[60][1] 2 700014B4
1190         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[60][2] 2 700014B6
1191         {0x0F12, 0x029F},   //senHal_pContSenModesRegsArray[60][3] 2 700014B8
1192         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[61][0] 2 700014BA
1193         {0x0F12, 0x046E},   //senHal_pContSenModesRegsArray[61][1] 2 700014BC
1194         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[61][2] 2 700014BE
1195         {0x0F12, 0x02AC},   //senHal_pContSenModesRegsArray[61][3] 2 700014C0
1196         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[62][0] 2 700014C2
1197         {0x0F12, 0x063C},   //senHal_pContSenModesRegsArray[62][1] 2 700014C4
1198         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[62][2] 2 700014C6
1199         {0x0F12, 0x0399},   //senHal_pContSenModesRegsArray[62][3] 2 700014C8
1200         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[63][0] 2 700014CA
1201         {0x0F12, 0x0649},   //senHal_pContSenModesRegsArray[63][1] 2 700014CC
1202         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[63][2] 2 700014CE
1203         {0x0F12, 0x03A6},   //senHal_pContSenModesRegsArray[63][3] 2 700014D0
1204         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[64][0] 2 700014D2
1205         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[64][1] 2 700014D4
1206         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[64][2] 2 700014D6
1207         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[64][3] 2 700014D8
1208         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[65][0] 2 700014DA
1209         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[65][1] 2 700014DC
1210         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[65][2] 2 700014DE
1211         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[65][3] 2 700014E0
1212         {0x0F12, 0x03AA},   //senHal_pContSenModesRegsArray[66][0] 2 700014E2
1213         {0x0F12, 0x01DB},   //senHal_pContSenModesRegsArray[66][1] 2 700014E4
1214         {0x0F12, 0x01E8},   //senHal_pContSenModesRegsArray[66][2] 2 700014E6
1215         {0x0F12, 0x00FA},   //senHal_pContSenModesRegsArray[66][3] 2 700014E8
1216         {0x0F12, 0x03B7},   //senHal_pContSenModesRegsArray[67][0] 2 700014EA
1217         {0x0F12, 0x01E8},   //senHal_pContSenModesRegsArray[67][1] 2 700014EC
1218         {0x0F12, 0x01F5},   //senHal_pContSenModesRegsArray[67][2] 2 700014EE
1219         {0x0F12, 0x0107},   //senHal_pContSenModesRegsArray[67][3] 2 700014F0
1220         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[68][0] 2 700014F2
1221         {0x0F12, 0x0469},   //senHal_pContSenModesRegsArray[68][1] 2 700014F4
1222         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[68][2] 2 700014F6
1223         {0x0F12, 0x02A7},   //senHal_pContSenModesRegsArray[68][3] 2 700014F8
1224         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[69][0] 2 700014FA
1225         {0x0F12, 0x0476},   //senHal_pContSenModesRegsArray[69][1] 2 700014FC
1226         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[69][2] 2 700014FE
1227         {0x0F12, 0x02B4},   //senHal_pContSenModesRegsArray[69][3] 2 70001500
1228         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[70][0] 2 70001502
1229         {0x0F12, 0x0644},   //senHal_pContSenModesRegsArray[70][1] 2 70001504
1230         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[70][2] 2 70001506
1231         {0x0F12, 0x03A1},   //senHal_pContSenModesRegsArray[70][3] 2 70001508
1232         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[71][0] 2 7000150A
1233         {0x0F12, 0x0651},   //senHal_pContSenModesRegsArray[71][1] 2 7000150C
1234         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[71][2] 2 7000150E
1235         {0x0F12, 0x03AE},   //senHal_pContSenModesRegsArray[71][3] 2 70001510
1236         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[72][0] 2 70001512
1237         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[72][1] 2 70001514
1238         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[72][2] 2 70001516
1239         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[72][3] 2 70001518
1240         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[73][0] 2 7000151A
1241         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[73][1] 2 7000151C
1242         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[73][2] 2 7000151E
1243         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[73][3] 2 70001520
1244         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[74][0] 2 70001522
1245         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[74][1] 2 70001524
1246         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[74][2] 2 70001526
1247         {0x0F12, 0x0001},   //senHal_pContSenModesRegsArray[74][3] 2 70001528
1248         {0x0F12, 0x000F},   //senHal_pContSenModesRegsArray[75][0] 2 7000152A
1249         {0x0F12, 0x000F},   //senHal_pContSenModesRegsArray[75][1] 2 7000152C
1250         {0x0F12, 0x000F},   //senHal_pContSenModesRegsArray[75][2] 2 7000152E
1251         {0x0F12, 0x000F},   //senHal_pContSenModesRegsArray[75][3] 2 70001530
1252         {0x0F12, 0x05AD},   //senHal_pContSenModesRegsArray[76][0] 2 70001532
1253         {0x0F12, 0x03DE},   //senHal_pContSenModesRegsArray[76][1] 2 70001534
1254         {0x0F12, 0x030A},   //senHal_pContSenModesRegsArray[76][2] 2 70001536
1255         {0x0F12, 0x021C},   //senHal_pContSenModesRegsArray[76][3] 2 70001538
1256         {0x0F12, 0x062F},   //senHal_pContSenModesRegsArray[77][0] 2 7000153A
1257         {0x0F12, 0x0460},   //senHal_pContSenModesRegsArray[77][1] 2 7000153C
1258         {0x0F12, 0x038C},   //senHal_pContSenModesRegsArray[77][2] 2 7000153E
1259         {0x0F12, 0x029E},   //senHal_pContSenModesRegsArray[77][3] 2 70001540
1260         {0x0F12, 0x07FC},   //senHal_pContSenModesRegsArray[78][0] 2 70001542
1261         {0x0F12, 0x0847},   //senHal_pContSenModesRegsArray[78][1] 2 70001544
1262         {0x0F12, 0x0478},   //senHal_pContSenModesRegsArray[78][2] 2 70001546
1263         {0x0F12, 0x04C3},   //senHal_pContSenModesRegsArray[78][3] 2 70001548
1264         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[79][0] 2 7000154A
1265         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[79][1] 2 7000154C
1266         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[79][2] 2 7000154E
1267         {0x0F12, 0x0000},   //senHal_pContSenModesRegsArray[79][3] 2 70001550
1268
1269
1270         //============================================================ 
1271         // AF Interface setting
1272         //============================================================ 
1273     {0x0028, 0x7000},//DTS2012071201781: add by huyouhua 00136760 at 2012-7-20
1274         {0x002A, 0x01D4},
1275         {0x0F12, 0x0000}, //REG_TC_IPRM_AuxGpios : 0 - no Flash
1276         {0x002A, 0x01DE},
1277         {0x0F12, 0x0003}, //REG_TC_IPRM_CM_Init_AfModeType : 3 - AFD_VCM_I2C
1278         {0x0F12, 0x0000}, //REG_TC_IPRM_CM_Init_PwmConfig1 : 0 - no PWM
1279         {0x002A, 0x01E4},
1280         {0x0F12, 0x0041}, //REG_TC_IPRM_CM_Init_GpioConfig1 : 4 -  GPIO4 
1281         {0x002A, 0x01E8},
1282         {0x0F12, 0x2A0C}, //REG_TC_IPRM_CM_Init_Mi2cBits : MSCL - GPIO1 MSDA - GPIO2 Device ID {0C}
1283         {0x0F12, 0x0190}, //REG_TC_IPRM_CM_Init_Mi2cRateKhz : MI2C Speed - 400KHz
1284     //BEGIN: DTS2012071201781: add by huyouhua 00136760 at 2012-7-20
1285     {0x002A, 0x1196},  //afd_usFlags   0100=low,0000=high                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
1286     {0x0F12, 0x0000},                                    
1287     //END: DTS2012071201781: add by huyouhua 00136760 at 2012-7-20
1288         //============================================================ 
1289         // AF Parameter setting
1290         //============================================================ 
1291         // AF Window Settings
1292         {0x002A, 0x025A},
1293         {0x0F12, 0x0100}, //#REG_TC_AF_FstWinStartX
1294     {0x0F12, 0x00E3}, //#REG_TC_AF_FstWinStartY //DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
1295         {0x0F12, 0x0200}, //#REG_TC_AF_FstWinSizeX
1296         {0x0F12, 0x0238}, //#REG_TC_AF_FstWinSizeY
1297         {0x0F12, 0x018C}, //#REG_TC_AF_ScndWinStartX
1298     {0x0F12, 0x0166}, //#REG_TC_AF_ScndWinStartY //DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
1299         {0x0F12, 0x00E6}, //#REG_TC_AF_ScndWinSizeX
1300         {0x0F12, 0x0132}, //#REG_TC_AF_ScndWinSizeY
1301         {0x0F12, 0x0001}, //#REG_TC_AF_WinSizesUpdated
1302
1303         // AF Setot Settings 
1304         {0x002A, 0x0586},
1305         {0x0F12, 0x00FF}, //#skl_af_StatOvlpExpFactor
1306
1307         // AF Scene Settings 
1308         {0x002A, 0x115E},
1309         {0x0F12, 0x0003}, //#af_scene_usSaturatedScene
1310
1311         // AF Fine Search Settings 
1312         {0x002A, 0x10D4},
1313         {0x0F12, 0x1000}, //FineSearch Disable //#af_search_usSingleAfFlags
1314         {0x002A, 0x10DE},
1315         {0x0F12, 0x0004}, //#af_search_usFinePeakCount
1316         {0x002A, 0x106C},
1317         {0x0F12, 0x0202}, //#af_pos_usFineStepNumSize
1318
1319         // AF Peak Threshold Setting
1320         {0x002A, 0x10CA}, //#af_search_usPeakThr
1321         {0x0F12, 0x00C0}, 
1322
1323         // AF Default Position 
1324         {0x002A, 0x1060},
1325     {0x0F12, 0x003C}, //#af_pos_usHomePos //DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
1326     {0x0F12, 0x783C}, //#af_pos_usLowConfPos //DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
1327
1328         // AF LowConfThr Setting
1329         {0x002A, 0x10F4}, //LowEdgeBoth GRAD
1330         {0x0F12, 0x0280}, 
1331         {0x002A, 0x1100}, //LowLight HPF
1332         {0x0F12, 0x03A0},  
1333         {0x0F12, 0x0320}, 
1334
1335         {0x002A, 0x1134},
1336         {0x0F12, 0x0030},//af_stat_usMinStatVal
1337
1338         // AF low Br Th
1339         {0x002A, 0x1154}, // normBrThr
1340         {0x0F12, 0x0060},
1341
1342         // AF Policy
1343         {0x002A, 0x10E2},
1344         {0x0F12, 0x0000}, //#af_search_usCapturePolicy: Focus_Priority, 0002 : Shutter_Priority_Fixed, 0001 : Shutter_Priority_Last_BFP 0000: Shutter_Priority_Current
1345         {0x002A, 0x1072},
1346         {0x0F12, 0x003C}, //#af_pos_usCaptureFixedPo// 0x0008
1347
1348         // AF Lens Position Table Settings 
1349         {0x002A, 0x1074},
1350     //BEGIN: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
1351     {0x0F12, 0x0010}, //#af_pos_usTableLastInd// 16 Steps 091222                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
1352     {0x0F12, 0x003C}, //#af_pos_usTable_0_// af_pos_usTable                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
1353     {0x0F12, 0x003F}, //#af_pos_usTable_1_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
1354     {0x0F12, 0x0042}, //#af_pos_usTable_2_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
1355     {0x0F12, 0x0045}, //#af_pos_usTable_3_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
1356     {0x0F12, 0x0048}, //#af_pos_usTable_4_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
1357     {0x0F12, 0x004B}, //#af_pos_usTable_5_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
1358     {0x0F12, 0x004E}, //#af_pos_usTable_6_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
1359     {0x0F12, 0x0051}, //#af_pos_usTable_7_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
1360     {0x0F12, 0x0054}, //#af_pos_usTable_8_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
1361     {0x0F12, 0x0057}, //#af_pos_usTable_9_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
1362     {0x0F12, 0x005A}, //#af_pos_usTable_10_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
1363     {0x0F12, 0x005E}, //#af_pos_usTable_11_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
1364     {0x0F12, 0x0061}, //#af_pos_usTable_12_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
1365     {0x0F12, 0x0064}, //#af_pos_usTable_13_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
1366     {0x0F12, 0x0068}, //#af_pos_usTable_14_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
1367     {0x0F12, 0x006C}, //#af_pos_usTable_15_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
1368     {0x0F12, 0x0078}, //#af_pos_usTable_16_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
1369     //END: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
1370         {0x002A, 0x0252},
1371         {0x0F12, 0x0003}, //init 
1372     //BEGIN: DTS2012071201781: del by huyouhua 00136760 at 2012-7-20
1373         //{0x002A, 0x12B8},   //disable CINTR 0                                 
1374         //{0x0F12, 0x1000},        
1375     //END: DTS2012071201781: del by huyouhua 00136760 at 2012-7-20
1376         //============================================================
1377         // ISP-FE Setting
1378         //============================================================                    
1379         {0x002A, 0x158A},   
1380         {0x0F12, 0xEAF0},   
1381         {0x002A, 0x15C6},   
1382         {0x0F12, 0x0020},   
1383         {0x0F12, 0x0060},   
1384         {0x002A, 0x15BC},   
1385         {0x0F12, 0x0200},   
1386
1387         {0x002A, 0x1608},   
1388         {0x0F12, 0x0100},   
1389         {0x0F12, 0x0100},   
1390         {0x0F12, 0x0100},   
1391         {0x0F12, 0x0100},   
1392     //BEGIN: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
1393     {0x002A, 0x0530},                              
1394     {0x0F12, 0x5DC0}, //#lt_uMaxExp1 60ms          
1395     {0x0F12, 0x0000},                              
1396     {0x0F12, 0x6D60}, //#lt_uMaxExp2 70ms          
1397     {0x0F12, 0x0000},                              
1398     {0x002A, 0x167C},                              
1399     {0x0F12, 0x9C40}, //#evt1_lt_uMaxExp3 100ms    
1400     {0x0F12, 0x0000},                              
1401     {0x0F12, 0x3880},//BB80 //#evt1_lt_uMaxExp4 120ms    
1402     {0x0F12, 0x0001},//0000                              
1403     // Set capture exposure time           
1404     {0x002A, 0x0538},                              
1405     {0x0F12, 0x5DC0}, //#lt_uCapMaxExp160ms        
1406     {0x0F12, 0x0000},                              
1407     {0x0F12, 0x6D60}, //#lt_uCapMaxExp270ms        
1408     {0x0F12, 0x0000},                              
1409     {0x002A, 0x1684},                              
1410     {0x0F12, 0x9C40}, //#evt1_lt_uCapMaxExp3 100ms 
1411     {0x0F12, 0x0000},                              
1412     {0x0F12, 0xBB80}, //#evt1_lt_uCapMaxExp4 120ms 
1413     {0x0F12, 0x0000},                              
1414     // Set gain                         
1415     {0x002A, 0x0540},                           
1416     {0x0F12, 0x0150}, //#lt_uMaxAnGain1         
1417     {0x0F12, 0x0280}, //#lt_uMaxAnGain2         
1418     {0x002A, 0x168C},                           
1419     {0x0F12, 0x02A0}, //#evt1_lt_uMaxAnGain3    
1420     {0x0F12, 0x0800}, //#evt1_lt_uMaxAnGain4    
1421                                   
1422     {0x002A, 0x0544},                           
1423     {0x0F12, 0x0100}, //#lt_uMaxDigGain         
1424     {0x0F12, 0x0A00}, //#lt_uMaxTotGain         
1425
1426     {0x002A, 1694},                                 
1427     {0x0F12, 0001}, //#evt1_senHal_bExpandForbid    //expand forbidde zone
1428
1429     //002A 051A                      
1430     //0F12 0111 //#lt_uLimitHigh          
1431     //0F12 00F0 //#lt_uLimitLow     
1432
1433     //============================================================           
1434     //Tuning part                          
1435     //============================================================  
1436     //Calibrations go here
1437     //============================================================
1438     //Anti-Shading
1439     //============================================================
1440     //  param_start     TVAR_ash_GASAlpha
1441     {0x0028, 0x7000},
1442     {0x002A, 0x06CE},
1443     {0x0F12, 0x00FE},   //TVAR_ash_GASAlpha[0]
1444     {0x0F12, 0x00E0},   //TVAR_ash_GASAlpha[1]
1445     {0x0F12, 0x00F0},   //TVAR_ash_GASAlpha[2]
1446     {0x0F12, 0x00FE},   //TVAR_ash_GASAlpha[3]
1447     {0x0F12, 0x00F0},   //TVAR_ash_GASAlpha[4]
1448     {0x0F12, 0x00E0},   //TVAR_ash_GASAlpha[5]
1449     {0x0F12, 0x00C0},   //TVAR_ash_GASAlpha[6]
1450     {0x0F12, 0x00E0},   //TVAR_ash_GASAlpha[7]
1451     {0x0F12, 0x00EF},   //TVAR_ash_GASAlpha[8]
1452     {0x0F12, 0x00FF},   //TVAR_ash_GASAlpha[9]
1453     {0x0F12, 0x00F9},   //TVAR_ash_GASAlpha[10]
1454     {0x0F12, 0x00E0},   //TVAR_ash_GASAlpha[11]
1455     {0x0F12, 0x00CE},   //TVAR_ash_GASAlpha[12]
1456     {0x0F12, 0x00FF},   //TVAR_ash_GASAlpha[13]
1457     {0x0F12, 0x0100},   //TVAR_ash_GASAlpha[14]
1458     {0x0F12, 0x00E0},   //TVAR_ash_GASAlpha[15]
1459     {0x0F12, 0x00DF},   //TVAR_ash_GASAlpha[16]
1460     {0x0F12, 0x00F4},   //TVAR_ash_GASAlpha[17]
1461     {0x0F12, 0x00F3},   //TVAR_ash_GASAlpha[18]
1462     {0x0F12, 0x00F5},   //TVAR_ash_GASAlpha[19]
1463     {0x0F12, 0x00E0}, //TVAR_ash_GASAlpha[20]
1464     {0x0F12, 0x00E9},   //TVAR_ash_GASAlpha[21]
1465     {0x0F12, 0x00E6},   //TVAR_ash_GASAlpha[22]
1466     {0x0F12, 0x00F6},   //TVAR_ash_GASAlpha[23]
1467     {0x0F12, 0x00CE},   //TVAR_ash_GASAlpha[24]
1468     {0x0F12, 0x00E9},   //TVAR_ash_GASAlpha[25]
1469     {0x0F12, 0x00E6},   //TVAR_ash_GASAlpha[26]
1470     {0x0F12, 0x00F6},   //TVAR_ash_GASAlpha[27]
1471     //  param_end       TVAR_ash_GASAlpha
1472     //  param_start     TVAR_ash_GASOutdoorAlpha 
1473     {0x002A, 0x0706},
1474     {0x0F12, 0x00E4},   //TVAR_ash_GASOutdoorAlpha[0]
1475     {0x0F12, 0x00E9},   //TVAR_ash_GASOutdoorAlpha[1]
1476     {0x0F12, 0x00E6},   //TVAR_ash_GASOutdoorAlpha[2]
1477     {0x0F12, 0x00F6},   //TVAR_ash_GASOutdoorAlpha[3]
1478     //  param_end       TVAR_ash_GASOutdoorAlpha
1479     //  param_start     ash_GASBeta
1480     {0x002A, 0x070E},
1481     {0x0F12, 0x0060},   //ash_GASBeta[0]
1482     {0x0F12, 0x002B},   //ash_GASBeta[1]
1483     {0x0F12, 0x002F},   //ash_GASBeta[2]
1484     {0x0F12, 0x0000},   //ash_GASBeta[3]
1485     {0x0F12, 0x0052},   //ash_GASBeta[4]
1486     {0x0F12, 0x0026},   //ash_GASBeta[5]
1487     {0x0F12, 0x0029},   //ash_GASBeta[6]
1488     {0x0F12, 0x0000},   //ash_GASBeta[7]
1489     {0x0F12, 0x0010},   //ash_GASBeta[8]
1490     {0x0F12, 0x0026},   //ash_GASBeta[9]
1491     {0x0F12, 0x0028},   //ash_GASBeta[10]
1492     {0x0F12, 0x0000},   //ash_GASBeta[11]
1493     {0x0F12, 0x0010},   //ash_GASBeta[12]
1494     {0x0F12, 0x0026},   //ash_GASBeta[13]
1495     {0x0F12, 0x0027},   //ash_GASBeta[14]
1496     {0x0F12, 0x0000},   //ash_GASBeta[15]
1497     {0x0F12, 0x0023},   //ash_GASBeta[16]
1498     {0x0F12, 0x001F},   //ash_GASBeta[17]
1499     {0x0F12, 0x001F},   //ash_GASBeta[18]
1500     {0x0F12, 0x0000},   //ash_GASBeta[19]
1501     {0x0F12, 0x0025},   //ash_GASBeta[20]
1502     {0x0F12, 0x0017},   //ash_GASBeta[21]
1503     {0x0F12, 0x0016},   //ash_GASBeta[22]
1504     {0x0F12, 0x0000},   //ash_GASBeta[23]
1505     {0x0F12, 0x0025},   //ash_GASBeta[24]
1506     {0x0F12, 0x0017},   //ash_GASBeta[25]
1507     {0x0F12, 0x0016},   //ash_GASBeta[26]
1508     {0x0F12, 0x0000},   //ash_GASBeta[27]
1509     //  param_end       ash_GASBeta
1510     //  param_start     ash_GASOutdoorBeta 
1511     {0x002A, 0x0746},
1512     {0x0F12, 0x0025},   //ash_GASOutdoorBeta[0]
1513     {0x0F12, 0x0017},   //ash_GASOutdoorBeta[1]
1514     {0x0F12, 0x0016},   //ash_GASOutdoorBeta[2]
1515     {0x0F12, 0x0000},   //ash_GASOutdoorBeta[3]
1516     //  param_end       ash_GASOutdoorBeta
1517     {0x002A, 0x075A},
1518     {0x0F12, 0x0000},   //ash_bParabolicEstimation
1519     {0x0F12, 0x0400},   //ash_uParabolicCenterX
1520     {0x0F12, 0x0300},   //ash_uParabolicCenterY
1521     {0x0F12, 0x0010},   //ash_uParabolicScalingA
1522     {0x0F12, 0x0011},   //ash_uParabolicScalingB
1523     //  param_start     TVAR_ash_pGAS
1524     {0x002A,    0x347C},
1525     {0x0F12,    0x025B},        //TVAR_ash_pGAS[0]
1526     {0x0F12,    0x01B4},        //TVAR_ash_pGAS[1]
1527     {0x0F12,    0x0156},        //TVAR_ash_pGAS[2]
1528     {0x0F12,    0x0112},        //TVAR_ash_pGAS[3]
1529     {0x0F12,    0x00EE},        //TVAR_ash_pGAS[4]
1530     {0x0F12,    0x00D8},        //TVAR_ash_pGAS[5]
1531     {0x0F12,    0x00CE},        //TVAR_ash_pGAS[6]
1532     {0x0F12,    0x00D4},        //TVAR_ash_pGAS[7]
1533     {0x0F12,    0x00E6},        //TVAR_ash_pGAS[8]
1534     {0x0F12,    0x010B},        //TVAR_ash_pGAS[9]
1535     {0x0F12,    0x0141},        //TVAR_ash_pGAS[10]
1536     {0x0F12,    0x019F},        //TVAR_ash_pGAS[11]
1537     {0x0F12,    0x027A},        //TVAR_ash_pGAS[12]
1538     {0x0F12,    0x01CD},        //TVAR_ash_pGAS[13]
1539     {0x0F12,    0x0174},        //TVAR_ash_pGAS[14]
1540     {0x0F12,    0x0115},        //TVAR_ash_pGAS[15]
1541     {0x0F12,    0x00D8},        //TVAR_ash_pGAS[16]
1542     {0x0F12,    0x00B2},        //TVAR_ash_pGAS[17]
1543     {0x0F12,    0x009C},        //TVAR_ash_pGAS[18]
1544     {0x0F12,    0x0092},        //TVAR_ash_pGAS[19]
1545     {0x0F12,    0x009A},        //TVAR_ash_pGAS[20]
1546     {0x0F12,    0x00B0},        //TVAR_ash_pGAS[21]
1547     {0x0F12,    0x00D9},        //TVAR_ash_pGAS[22]
1548     {0x0F12,    0x0111},        //TVAR_ash_pGAS[23]
1549     {0x0F12,    0x015F},        //TVAR_ash_pGAS[24]
1550     {0x0F12,    0x01DD},        //TVAR_ash_pGAS[25]
1551     {0x0F12,    0x0176},        //TVAR_ash_pGAS[26]
1552     {0x0F12,    0x0128},        //TVAR_ash_pGAS[27]
1553     {0x0F12,    0x00D1},        //TVAR_ash_pGAS[28]
1554     {0x0F12,    0x0097},        //TVAR_ash_pGAS[29]
1555     {0x0F12,    0x006F},        //TVAR_ash_pGAS[30]
1556     {0x0F12,    0x0056},        //TVAR_ash_pGAS[31]
1557     {0x0F12,    0x004D},        //TVAR_ash_pGAS[32]
1558     {0x0F12,    0x0057},        //TVAR_ash_pGAS[33]
1559     {0x0F12,    0x0073},        //TVAR_ash_pGAS[34]
1560     {0x0F12,    0x009E},        //TVAR_ash_pGAS[35]
1561     {0x0F12,    0x00D9},        //TVAR_ash_pGAS[36]
1562     {0x0F12,    0x0122},        //TVAR_ash_pGAS[37]
1563     {0x0F12,    0x0173},        //TVAR_ash_pGAS[38]
1564     {0x0F12,    0x0144},        //TVAR_ash_pGAS[39]
1565     {0x0F12,    0x00FE},        //TVAR_ash_pGAS[40]
1566     {0x0F12,    0x00A9},        //TVAR_ash_pGAS[41]
1567     {0x0F12,    0x006F},        //TVAR_ash_pGAS[42]
1568     {0x0F12,    0x0043},        //TVAR_ash_pGAS[43]
1569     {0x0F12,    0x0028},        //TVAR_ash_pGAS[44]
1570     {0x0F12,    0x001F},        //TVAR_ash_pGAS[45]
1571     {0x0F12,    0x002A},        //TVAR_ash_pGAS[46]
1572     {0x0F12,    0x0049},        //TVAR_ash_pGAS[47]
1573     {0x0F12,    0x0079},        //TVAR_ash_pGAS[48]
1574     {0x0F12,    0x00B6},        //TVAR_ash_pGAS[49]
1575     {0x0F12,    0x0102},        //TVAR_ash_pGAS[50]
1576     {0x0F12,    0x014F},        //TVAR_ash_pGAS[51]
1577     {0x0F12,    0x012D},        //TVAR_ash_pGAS[52]
1578     {0x0F12,    0x00E7},        //TVAR_ash_pGAS[53]
1579     {0x0F12,    0x0094},        //TVAR_ash_pGAS[54]
1580     {0x0F12,    0x0056},        //TVAR_ash_pGAS[55]
1581     {0x0F12,    0x0028},        //TVAR_ash_pGAS[56]
1582     {0x0F12,    0x000E},        //TVAR_ash_pGAS[57]
1583     {0x0F12,    0x0007},        //TVAR_ash_pGAS[58]
1584     {0x0F12,    0x0011},        //TVAR_ash_pGAS[59]
1585     {0x0F12,    0x0030},        //TVAR_ash_pGAS[60]
1586     {0x0F12,    0x0063},        //TVAR_ash_pGAS[61]
1587     {0x0F12,    0x00A6},        //TVAR_ash_pGAS[62]
1588     {0x0F12,    0x00F2},        //TVAR_ash_pGAS[63]
1589     {0x0F12,    0x013D},        //TVAR_ash_pGAS[64]
1590     {0x0F12,    0x0126},        //TVAR_ash_pGAS[65]
1591     {0x0F12,    0x00E1},        //TVAR_ash_pGAS[66]
1592     {0x0F12,    0x008D},        //TVAR_ash_pGAS[67]
1593     {0x0F12,    0x004E},        //TVAR_ash_pGAS[68]
1594     {0x0F12,    0x0022},        //TVAR_ash_pGAS[69]
1595     {0x0F12,    0x0007},        //TVAR_ash_pGAS[70]
1596     {0x0F12,    0x0000},        //TVAR_ash_pGAS[71]
1597     {0x0F12,    0x000A},        //TVAR_ash_pGAS[72]
1598     {0x0F12,    0x0028},        //TVAR_ash_pGAS[73]
1599     {0x0F12,    0x005E},        //TVAR_ash_pGAS[74]
1600     {0x0F12,    0x00A3},        //TVAR_ash_pGAS[75]
1601     {0x0F12,    0x00F0},        //TVAR_ash_pGAS[76]
1602     {0x0F12,    0x013B},        //TVAR_ash_pGAS[77]
1603     {0x0F12,    0x0133},        //TVAR_ash_pGAS[78]
1604     {0x0F12,    0x00EE},        //TVAR_ash_pGAS[79]
1605     {0x0F12,    0x0099},        //TVAR_ash_pGAS[80]
1606     {0x0F12,    0x005A},        //TVAR_ash_pGAS[81]
1607     {0x0F12,    0x002D},        //TVAR_ash_pGAS[82]
1608     {0x0F12,    0x0013},        //TVAR_ash_pGAS[83]
1609     {0x0F12,    0x000B},        //TVAR_ash_pGAS[84]
1610     {0x0F12,    0x0016},        //TVAR_ash_pGAS[85]
1611     {0x0F12,    0x0035},        //TVAR_ash_pGAS[86]
1612     {0x0F12,    0x006C},        //TVAR_ash_pGAS[87]
1613     {0x0F12,    0x00B2},        //TVAR_ash_pGAS[88]
1614     {0x0F12,    0x0100},        //TVAR_ash_pGAS[89]
1615     {0x0F12,    0x0148},        //TVAR_ash_pGAS[90]
1616     {0x0F12,    0x0153},        //TVAR_ash_pGAS[91]
1617     {0x0F12,    0x0107},        //TVAR_ash_pGAS[92]
1618     {0x0F12,    0x00B4},        //TVAR_ash_pGAS[93]
1619     {0x0F12,    0x0078},        //TVAR_ash_pGAS[94]
1620     {0x0F12,    0x004B},        //TVAR_ash_pGAS[95]
1621     {0x0F12,    0x0030},        //TVAR_ash_pGAS[96]
1622     {0x0F12,    0x002A},        //TVAR_ash_pGAS[97]
1623     {0x0F12,    0x0036},        //TVAR_ash_pGAS[98]
1624     {0x0F12,    0x0057},        //TVAR_ash_pGAS[99]
1625     {0x0F12,    0x008B},        //TVAR_ash_pGAS[100]
1626     {0x0F12,    0x00D1},        //TVAR_ash_pGAS[101]
1627     {0x0F12,    0x0121},        //TVAR_ash_pGAS[102]
1628     {0x0F12,    0x016A},        //TVAR_ash_pGAS[103]
1629     {0x0F12,    0x0189},        //TVAR_ash_pGAS[104]
1630     {0x0F12,    0x0138},        //TVAR_ash_pGAS[105]
1631     {0x0F12,    0x00DF},        //TVAR_ash_pGAS[106]
1632     {0x0F12,    0x00A8},        //TVAR_ash_pGAS[107]
1633     {0x0F12,    0x007E},        //TVAR_ash_pGAS[108]
1634     {0x0F12,    0x0065},        //TVAR_ash_pGAS[109]
1635     {0x0F12,    0x005F},        //TVAR_ash_pGAS[110]
1636     {0x0F12,    0x006A},        //TVAR_ash_pGAS[111]
1637     {0x0F12,    0x008C},        //TVAR_ash_pGAS[112]
1638     {0x0F12,    0x00BF},        //TVAR_ash_pGAS[113]
1639     {0x0F12,    0x00FE},        //TVAR_ash_pGAS[114]
1640     {0x0F12,    0x0150},        //TVAR_ash_pGAS[115]
1641     {0x0F12,    0x019E},        //TVAR_ash_pGAS[116]
1642     {0x0F12,    0x01D5},        //TVAR_ash_pGAS[117]
1643     {0x0F12,    0x0181},        //TVAR_ash_pGAS[118]
1644     {0x0F12,    0x0125},        //TVAR_ash_pGAS[119]
1645     {0x0F12,    0x00EA},        //TVAR_ash_pGAS[120]
1646     {0x0F12,    0x00C7},        //TVAR_ash_pGAS[121]
1647     {0x0F12,    0x00B2},        //TVAR_ash_pGAS[122]
1648     {0x0F12,    0x00AC},        //TVAR_ash_pGAS[123]
1649     {0x0F12,    0x00BA},        //TVAR_ash_pGAS[124]
1650     {0x0F12,    0x00D5},        //TVAR_ash_pGAS[125]
1651     {0x0F12,    0x0100},        //TVAR_ash_pGAS[126]
1652     {0x0F12,    0x0140},        //TVAR_ash_pGAS[127]
1653     {0x0F12,    0x019B},        //TVAR_ash_pGAS[128]
1654     {0x0F12,    0x0217},        //TVAR_ash_pGAS[129]
1655     {0x0F12,    0x0280},        //TVAR_ash_pGAS[130]
1656     {0x0F12,    0x01CC},        //TVAR_ash_pGAS[131]
1657     {0x0F12,    0x0176},        //TVAR_ash_pGAS[132]
1658     {0x0F12,    0x0131},        //TVAR_ash_pGAS[133]
1659     {0x0F12,    0x010E},        //TVAR_ash_pGAS[134]
1660     {0x0F12,    0x00FF},        //TVAR_ash_pGAS[135]
1661     {0x0F12,    0x00FC},        //TVAR_ash_pGAS[136]
1662     {0x0F12,    0x0103},        //TVAR_ash_pGAS[137]
1663     {0x0F12,    0x011B},        //TVAR_ash_pGAS[138]
1664     {0x0F12,    0x0146},        //TVAR_ash_pGAS[139]
1665     {0x0F12,    0x018B},        //TVAR_ash_pGAS[140]
1666     {0x0F12,    0x01F8},        //TVAR_ash_pGAS[141]
1667     {0x0F12,    0x02DD},        //TVAR_ash_pGAS[142]
1668     {0x0F12,    0x0232},        //TVAR_ash_pGAS[143]
1669     {0x0F12,    0x018A},        //TVAR_ash_pGAS[144]
1670     {0x0F12,    0x0127},        //TVAR_ash_pGAS[145]
1671     {0x0F12,    0x00EF},        //TVAR_ash_pGAS[146]
1672     {0x0F12,    0x00CA},        //TVAR_ash_pGAS[147]
1673     {0x0F12,    0x00B4},        //TVAR_ash_pGAS[148]
1674     {0x0F12,    0x00AB},        //TVAR_ash_pGAS[149]
1675     {0x0F12,    0x00B1},        //TVAR_ash_pGAS[150]
1676     {0x0F12,    0x00C3},        //TVAR_ash_pGAS[151]
1677     {0x0F12,    0x00E5},        //TVAR_ash_pGAS[152]
1678     {0x0F12,    0x0118},        //TVAR_ash_pGAS[153]
1679     {0x0F12,    0x0168},        //TVAR_ash_pGAS[154]
1680     {0x0F12,    0x023A},        //TVAR_ash_pGAS[155]
1681     {0x0F12,    0x019A},        //TVAR_ash_pGAS[156]
1682     {0x0F12,    0x013E},        //TVAR_ash_pGAS[157]
1683     {0x0F12,    0x00E5},        //TVAR_ash_pGAS[158]
1684     {0x0F12,    0x00B1},        //TVAR_ash_pGAS[159]
1685     {0x0F12,    0x008E},        //TVAR_ash_pGAS[160]
1686     {0x0F12,    0x0079},        //TVAR_ash_pGAS[161]
1687     {0x0F12,    0x0072},        //TVAR_ash_pGAS[162]
1688     {0x0F12,    0x0078},        //TVAR_ash_pGAS[163]
1689     {0x0F12,    0x008E},        //TVAR_ash_pGAS[164]
1690     {0x0F12,    0x00B2},        //TVAR_ash_pGAS[165]
1691     {0x0F12,    0x00E1},        //TVAR_ash_pGAS[166]
1692     {0x0F12,    0x0121},        //TVAR_ash_pGAS[167]
1693     {0x0F12,    0x019A},        //TVAR_ash_pGAS[168]
1694     {0x0F12,    0x014D},        //TVAR_ash_pGAS[169]
1695     {0x0F12,    0x0100},        //TVAR_ash_pGAS[170]
1696     {0x0F12,    0x00AE},        //TVAR_ash_pGAS[171]
1697     {0x0F12,    0x007F},        //TVAR_ash_pGAS[172]
1698     {0x0F12,    0x005B},        //TVAR_ash_pGAS[173]
1699     {0x0F12,    0x0043},        //TVAR_ash_pGAS[174]
1700     {0x0F12,    0x003B},        //TVAR_ash_pGAS[175]
1701     {0x0F12,    0x0045},        //TVAR_ash_pGAS[176]
1702     {0x0F12,    0x005E},        //TVAR_ash_pGAS[177]
1703     {0x0F12,    0x0083},        //TVAR_ash_pGAS[178]
1704     {0x0F12,    0x00B4},        //TVAR_ash_pGAS[179]
1705     {0x0F12,    0x00EF},        //TVAR_ash_pGAS[180]
1706     {0x0F12,    0x0139},        //TVAR_ash_pGAS[181]
1707     {0x0F12,    0x0120},        //TVAR_ash_pGAS[182]
1708     {0x0F12,    0x00DB},        //TVAR_ash_pGAS[183]
1709     {0x0F12,    0x008D},        //TVAR_ash_pGAS[184]
1710     {0x0F12,    0x005D},        //TVAR_ash_pGAS[185]
1711     {0x0F12,    0x0037},        //TVAR_ash_pGAS[186]
1712     {0x0F12,    0x001F},        //TVAR_ash_pGAS[187]
1713     {0x0F12,    0x0017},        //TVAR_ash_pGAS[188]
1714     {0x0F12,    0x0022},        //TVAR_ash_pGAS[189]
1715     {0x0F12,    0x003D},        //TVAR_ash_pGAS[190]
1716     {0x0F12,    0x0066},        //TVAR_ash_pGAS[191]
1717     {0x0F12,    0x009A},        //TVAR_ash_pGAS[192]
1718     {0x0F12,    0x00D7},        //TVAR_ash_pGAS[193]
1719     {0x0F12,    0x011A},        //TVAR_ash_pGAS[194]
1720     {0x0F12,    0x0108},        //TVAR_ash_pGAS[195]
1721     {0x0F12,    0x00C7},        //TVAR_ash_pGAS[196]
1722     {0x0F12,    0x007B},        //TVAR_ash_pGAS[197]
1723     {0x0F12,    0x004A},        //TVAR_ash_pGAS[198]
1724     {0x0F12,    0x0023},        //TVAR_ash_pGAS[199]
1725     {0x0F12,    0x000B},        //TVAR_ash_pGAS[200]
1726     {0x0F12,    0x0005},        //TVAR_ash_pGAS[201]
1727     {0x0F12,    0x000E},        //TVAR_ash_pGAS[202]
1728     {0x0F12,    0x002A},        //TVAR_ash_pGAS[203]
1729     {0x0F12,    0x0055},        //TVAR_ash_pGAS[204]
1730     {0x0F12,    0x008D},        //TVAR_ash_pGAS[205]
1731     {0x0F12,    0x00C9},        //TVAR_ash_pGAS[206]
1732     {0x0F12,    0x0104},        //TVAR_ash_pGAS[207]
1733     {0x0F12,    0x0100},        //TVAR_ash_pGAS[208]
1734     {0x0F12,    0x00C0},        //TVAR_ash_pGAS[209]
1735     {0x0F12,    0x0076},        //TVAR_ash_pGAS[210]
1736     {0x0F12,    0x0044},        //TVAR_ash_pGAS[211]
1737     {0x0F12,    0x001E},        //TVAR_ash_pGAS[212]
1738     {0x0F12,    0x0006},        //TVAR_ash_pGAS[213]
1739     {0x0F12,    0x0000},        //TVAR_ash_pGAS[214]
1740     {0x0F12,    0x0009},        //TVAR_ash_pGAS[215]
1741     {0x0F12,    0x0024},        //TVAR_ash_pGAS[216]
1742     {0x0F12,    0x0052},        //TVAR_ash_pGAS[217]
1743     {0x0F12,    0x008B},        //TVAR_ash_pGAS[218]
1744     {0x0F12,    0x00C8},        //TVAR_ash_pGAS[219]
1745     {0x0F12,    0x0104},        //TVAR_ash_pGAS[220]
1746     {0x0F12,    0x0109},        //TVAR_ash_pGAS[221]
1747     {0x0F12,    0x00C9},        //TVAR_ash_pGAS[222]
1748     {0x0F12,    0x007F},        //TVAR_ash_pGAS[223]
1749     {0x0F12,    0x004D},        //TVAR_ash_pGAS[224]
1750     {0x0F12,    0x0027},        //TVAR_ash_pGAS[225]
1751     {0x0F12,    0x0010},        //TVAR_ash_pGAS[226]
1752     {0x0F12,    0x000A},        //TVAR_ash_pGAS[227]
1753     {0x0F12,    0x0014},        //TVAR_ash_pGAS[228]
1754     {0x0F12,    0x002F},        //TVAR_ash_pGAS[229]
1755     {0x0F12,    0x005D},        //TVAR_ash_pGAS[230]
1756     {0x0F12,    0x0098},        //TVAR_ash_pGAS[231]
1757     {0x0F12,    0x00D7},        //TVAR_ash_pGAS[232]
1758     {0x0F12,    0x010E},        //TVAR_ash_pGAS[233]
1759     {0x0F12,    0x0125},        //TVAR_ash_pGAS[234]
1760     {0x0F12,    0x00E0},        //TVAR_ash_pGAS[235]
1761     {0x0F12,    0x0094},        //TVAR_ash_pGAS[236]
1762     {0x0F12,    0x0066},        //TVAR_ash_pGAS[237]
1763     {0x0F12,    0x0040},        //TVAR_ash_pGAS[238]
1764     {0x0F12,    0x002A},        //TVAR_ash_pGAS[239]
1765     {0x0F12,    0x0024},        //TVAR_ash_pGAS[240]
1766     {0x0F12,    0x002F},        //TVAR_ash_pGAS[241]
1767     {0x0F12,    0x004C},        //TVAR_ash_pGAS[242]
1768     {0x0F12,    0x0078},        //TVAR_ash_pGAS[243]
1769     {0x0F12,    0x00B3},        //TVAR_ash_pGAS[244]
1770     {0x0F12,    0x00F4},        //TVAR_ash_pGAS[245]
1771     {0x0F12,    0x012F},        //TVAR_ash_pGAS[246]
1772     {0x0F12,    0x0153},        //TVAR_ash_pGAS[247]
1773     {0x0F12,    0x0108},        //TVAR_ash_pGAS[248]
1774     {0x0F12,    0x00B9},        //TVAR_ash_pGAS[249]
1775     {0x0F12,    0x008D},        //TVAR_ash_pGAS[250]
1776     {0x0F12,    0x006B},        //TVAR_ash_pGAS[251]
1777     {0x0F12,    0x0055},        //TVAR_ash_pGAS[252]
1778     {0x0F12,    0x0050},        //TVAR_ash_pGAS[253]
1779     {0x0F12,    0x005D},        //TVAR_ash_pGAS[254]
1780     {0x0F12,    0x007A},        //TVAR_ash_pGAS[255]
1781     {0x0F12,    0x00A4},        //TVAR_ash_pGAS[256]
1782     {0x0F12,    0x00D9},        //TVAR_ash_pGAS[257]
1783     {0x0F12,    0x011D},        //TVAR_ash_pGAS[258]
1784     {0x0F12,    0x015E},        //TVAR_ash_pGAS[259]
1785     {0x0F12,    0x019C},        //TVAR_ash_pGAS[260]
1786     {0x0F12,    0x0144},        //TVAR_ash_pGAS[261]
1787     {0x0F12,    0x00F3},        //TVAR_ash_pGAS[262]
1788     {0x0F12,    0x00C2},        //TVAR_ash_pGAS[263]
1789     {0x0F12,    0x00A4},        //TVAR_ash_pGAS[264]
1790     {0x0F12,    0x0093},        //TVAR_ash_pGAS[265]
1791     {0x0F12,    0x008F},        //TVAR_ash_pGAS[266]
1792     {0x0F12,    0x009C},        //TVAR_ash_pGAS[267]
1793     {0x0F12,    0x00B5},        //TVAR_ash_pGAS[268]
1794     {0x0F12,    0x00DA},        //TVAR_ash_pGAS[269]
1795     {0x0F12,    0x010E},        //TVAR_ash_pGAS[270]
1796     {0x0F12,    0x015E},        //TVAR_ash_pGAS[271]
1797     {0x0F12,    0x01C9},        //TVAR_ash_pGAS[272]
1798     {0x0F12,    0x0239},        //TVAR_ash_pGAS[273]
1799     {0x0F12,    0x0186},        //TVAR_ash_pGAS[274]
1800     {0x0F12,    0x0137},        //TVAR_ash_pGAS[275]
1801     {0x0F12,    0x00FF},        //TVAR_ash_pGAS[276]
1802     {0x0F12,    0x00DE},        //TVAR_ash_pGAS[277]
1803     {0x0F12,    0x00CF},        //TVAR_ash_pGAS[278]
1804     {0x0F12,    0x00CE},        //TVAR_ash_pGAS[279]
1805     {0x0F12,    0x00D5},        //TVAR_ash_pGAS[280]
1806     {0x0F12,    0x00ED},        //TVAR_ash_pGAS[281]
1807     {0x0F12,    0x0113},        //TVAR_ash_pGAS[282]
1808     {0x0F12,    0x014E},        //TVAR_ash_pGAS[283]
1809     {0x0F12,    0x01B0},        //TVAR_ash_pGAS[284]
1810     {0x0F12,    0x0285},        //TVAR_ash_pGAS[285]
1811     {0x0F12,    0x020F},        //TVAR_ash_pGAS[286]
1812     {0x0F12,    0x0173},        //TVAR_ash_pGAS[287]
1813     {0x0F12,    0x0112},        //TVAR_ash_pGAS[288]
1814     {0x0F12,    0x00DE},        //TVAR_ash_pGAS[289]
1815     {0x0F12,    0x00BF},        //TVAR_ash_pGAS[290]
1816     {0x0F12,    0x00AD},        //TVAR_ash_pGAS[291]
1817     {0x0F12,    0x00A8},        //TVAR_ash_pGAS[292]
1818     {0x0F12,    0x00B3},        //TVAR_ash_pGAS[293]
1819     {0x0F12,    0x00CC},        //TVAR_ash_pGAS[294]
1820     {0x0F12,    0x00F2},        //TVAR_ash_pGAS[295]
1821     {0x0F12,    0x0126},        //TVAR_ash_pGAS[296]
1822     {0x0F12,    0x0176},        //TVAR_ash_pGAS[297]
1823     {0x0F12,    0x024B},        //TVAR_ash_pGAS[298]
1824     {0x0F12,    0x0180},        //TVAR_ash_pGAS[299]
1825     {0x0F12,    0x012F},        //TVAR_ash_pGAS[300]
1826     {0x0F12,    0x00D5},        //TVAR_ash_pGAS[301]
1827     {0x0F12,    0x00A7},        //TVAR_ash_pGAS[302]
1828     {0x0F12,    0x0087},        //TVAR_ash_pGAS[303]
1829     {0x0F12,    0x0075},        //TVAR_ash_pGAS[304]
1830     {0x0F12,    0x0072},        //TVAR_ash_pGAS[305]
1831     {0x0F12,    0x007E},        //TVAR_ash_pGAS[306]
1832     {0x0F12,    0x0096},        //TVAR_ash_pGAS[307]
1833     {0x0F12,    0x00BE},        //TVAR_ash_pGAS[308]
1834     {0x0F12,    0x00EF},        //TVAR_ash_pGAS[309]
1835     {0x0F12,    0x012F},        //TVAR_ash_pGAS[310]
1836     {0x0F12,    0x01A7},        //TVAR_ash_pGAS[311]
1837     {0x0F12,    0x013C},        //TVAR_ash_pGAS[312]
1838     {0x0F12,    0x00F5},        //TVAR_ash_pGAS[313]
1839     {0x0F12,    0x00A5},        //TVAR_ash_pGAS[314]
1840     {0x0F12,    0x0078},        //TVAR_ash_pGAS[315]
1841     {0x0F12,    0x0057},        //TVAR_ash_pGAS[316]
1842     {0x0F12,    0x0042},        //TVAR_ash_pGAS[317]
1843     {0x0F12,    0x003D},        //TVAR_ash_pGAS[318]
1844     {0x0F12,    0x0049},        //TVAR_ash_pGAS[319]
1845     {0x0F12,    0x0066},        //TVAR_ash_pGAS[320]
1846     {0x0F12,    0x008F},        //TVAR_ash_pGAS[321]
1847     {0x0F12,    0x00C0},        //TVAR_ash_pGAS[322]
1848     {0x0F12,    0x00FD},        //TVAR_ash_pGAS[323]
1849     {0x0F12,    0x0144},        //TVAR_ash_pGAS[324]
1850     {0x0F12,    0x0115},        //TVAR_ash_pGAS[325]
1851     {0x0F12,    0x00D6},        //TVAR_ash_pGAS[326]
1852     {0x0F12,    0x0089},        //TVAR_ash_pGAS[327]
1853     {0x0F12,    0x005B},        //TVAR_ash_pGAS[328]
1854     {0x0F12,    0x0036},        //TVAR_ash_pGAS[329]
1855     {0x0F12,    0x001F},        //TVAR_ash_pGAS[330]
1856     {0x0F12,    0x0018},        //TVAR_ash_pGAS[331]
1857     {0x0F12,    0x0024},        //TVAR_ash_pGAS[332]
1858     {0x0F12,    0x0043},        //TVAR_ash_pGAS[333]
1859     {0x0F12,    0x006F},        //TVAR_ash_pGAS[334]
1860     {0x0F12,    0x00A5},        //TVAR_ash_pGAS[335]
1861     {0x0F12,    0x00E0},        //TVAR_ash_pGAS[336]
1862     {0x0F12,    0x0122},        //TVAR_ash_pGAS[337]
1863     {0x0F12,    0x0104},        //TVAR_ash_pGAS[338]
1864     {0x0F12,    0x00C7},        //TVAR_ash_pGAS[339]
1865     {0x0F12,    0x007B},        //TVAR_ash_pGAS[340]
1866     {0x0F12,    0x004A},        //TVAR_ash_pGAS[341]
1867     {0x0F12,    0x0023},        //TVAR_ash_pGAS[342]
1868     {0x0F12,    0x000B},        //TVAR_ash_pGAS[343]
1869     {0x0F12,    0x0005},        //TVAR_ash_pGAS[344]
1870     {0x0F12,    0x0010},        //TVAR_ash_pGAS[345]
1871     {0x0F12,    0x002E},        //TVAR_ash_pGAS[346]
1872     {0x0F12,    0x005B},        //TVAR_ash_pGAS[347]
1873     {0x0F12,    0x0094},        //TVAR_ash_pGAS[348]
1874     {0x0F12,    0x00D0},        //TVAR_ash_pGAS[349]
1875     {0x0F12,    0x010C},        //TVAR_ash_pGAS[350]
1876     {0x0F12,    0x0105},        //TVAR_ash_pGAS[351]
1877     {0x0F12,    0x00C5},        //TVAR_ash_pGAS[352]
1878     {0x0F12,    0x007A},        //TVAR_ash_pGAS[353]
1879     {0x0F12,    0x0047},        //TVAR_ash_pGAS[354]
1880     {0x0F12,    0x0021},        //TVAR_ash_pGAS[355]
1881     {0x0F12,    0x0008},        //TVAR_ash_pGAS[356]
1882     {0x0F12,    0x0000},        //TVAR_ash_pGAS[357]
1883     {0x0F12,    0x0009},        //TVAR_ash_pGAS[358]
1884     {0x0F12,    0x0026},        //TVAR_ash_pGAS[359]
1885     {0x0F12,    0x0054},        //TVAR_ash_pGAS[360]
1886     {0x0F12,    0x008E},        //TVAR_ash_pGAS[361]
1887     {0x0F12,    0x00CA},        //TVAR_ash_pGAS[362]
1888     {0x0F12,    0x0106},        //TVAR_ash_pGAS[363]
1889     {0x0F12,    0x0116},        //TVAR_ash_pGAS[364]
1890     {0x0F12,    0x00D3},        //TVAR_ash_pGAS[365]
1891     {0x0F12,    0x0088},        //TVAR_ash_pGAS[366]
1892     {0x0F12,    0x0054},        //TVAR_ash_pGAS[367]
1893     {0x0F12,    0x002C},        //TVAR_ash_pGAS[368]
1894     {0x0F12,    0x0012},        //TVAR_ash_pGAS[369]
1895     {0x0F12,    0x0009},        //TVAR_ash_pGAS[370]
1896     {0x0F12,    0x0013},        //TVAR_ash_pGAS[371]
1897     {0x0F12,    0x002E},        //TVAR_ash_pGAS[372]
1898     {0x0F12,    0x005C},        //TVAR_ash_pGAS[373]
1899     {0x0F12,    0x0095},        //TVAR_ash_pGAS[374]
1900     {0x0F12,    0x00D4},        //TVAR_ash_pGAS[375]
1901     {0x0F12,    0x010D},        //TVAR_ash_pGAS[376]
1902     {0x0F12,    0x013A},        //TVAR_ash_pGAS[377]
1903     {0x0F12,    0x00EE},        //TVAR_ash_pGAS[378]
1904     {0x0F12,    0x00A1},        //TVAR_ash_pGAS[379]
1905     {0x0F12,    0x006F},        //TVAR_ash_pGAS[380]
1906     {0x0F12,    0x0047},        //TVAR_ash_pGAS[381]
1907     {0x0F12,    0x002C},        //TVAR_ash_pGAS[382]
1908     {0x0F12,    0x0023},        //TVAR_ash_pGAS[383]
1909     {0x0F12,    0x002D},        //TVAR_ash_pGAS[384]
1910     {0x0F12,    0x0047},        //TVAR_ash_pGAS[385]
1911     {0x0F12,    0x0072},        //TVAR_ash_pGAS[386]
1912     {0x0F12,    0x00AB},        //TVAR_ash_pGAS[387]
1913     {0x0F12,    0x00EB},        //TVAR_ash_pGAS[388]
1914     {0x0F12,    0x0127},        //TVAR_ash_pGAS[389]
1915     {0x0F12,    0x016C},        //TVAR_ash_pGAS[390]
1916     {0x0F12,    0x011B},        //TVAR_ash_pGAS[391]
1917     {0x0F12,    0x00CA},        //TVAR_ash_pGAS[392]
1918     {0x0F12,    0x0099},        //TVAR_ash_pGAS[393]
1919     {0x0F12,    0x0074},        //TVAR_ash_pGAS[394]
1920     {0x0F12,    0x0059},        //TVAR_ash_pGAS[395]
1921     {0x0F12,    0x0050},        //TVAR_ash_pGAS[396]
1922     {0x0F12,    0x0057},        //TVAR_ash_pGAS[397]
1923     {0x0F12,    0x0072},        //TVAR_ash_pGAS[398]
1924     {0x0F12,    0x0099},        //TVAR_ash_pGAS[399]
1925     {0x0F12,    0x00CB},        //TVAR_ash_pGAS[400]
1926     {0x0F12,    0x0111},        //TVAR_ash_pGAS[401]
1927     {0x0F12,    0x0155},        //TVAR_ash_pGAS[402]
1928     {0x0F12,    0x01BA},        //TVAR_ash_pGAS[403]
1929     {0x0F12,    0x015D},        //TVAR_ash_pGAS[404]
1930     {0x0F12,    0x0107},        //TVAR_ash_pGAS[405]
1931     {0x0F12,    0x00D3},        //TVAR_ash_pGAS[406]
1932     {0x0F12,    0x00AE},        //TVAR_ash_pGAS[407]
1933     {0x0F12,    0x0099},        //TVAR_ash_pGAS[408]
1934     {0x0F12,    0x008F},        //TVAR_ash_pGAS[409]
1935     {0x0F12,    0x0096},        //TVAR_ash_pGAS[410]
1936     {0x0F12,    0x00AB},        //TVAR_ash_pGAS[411]
1937     {0x0F12,    0x00CD},        //TVAR_ash_pGAS[412]
1938     {0x0F12,    0x00FE},        //TVAR_ash_pGAS[413]
1939     {0x0F12,    0x014D},        //TVAR_ash_pGAS[414]
1940     {0x0F12,    0x01BC},        //TVAR_ash_pGAS[415]
1941     {0x0F12,    0x025D},        //TVAR_ash_pGAS[416]
1942     {0x0F12,    0x01A6},        //TVAR_ash_pGAS[417]
1943     {0x0F12,    0x0151},        //TVAR_ash_pGAS[418]
1944     {0x0F12,    0x0115},        //TVAR_ash_pGAS[419]
1945     {0x0F12,    0x00F0},        //TVAR_ash_pGAS[420]
1946     {0x0F12,    0x00DA},        //TVAR_ash_pGAS[421]
1947     {0x0F12,    0x00D0},        //TVAR_ash_pGAS[422]
1948     {0x0F12,    0x00D3},        //TVAR_ash_pGAS[423]
1949     {0x0F12,    0x00E5},        //TVAR_ash_pGAS[424]
1950     {0x0F12,    0x0108},        //TVAR_ash_pGAS[425]
1951     {0x0F12,    0x013F},        //TVAR_ash_pGAS[426]
1952     {0x0F12,    0x019E},        //TVAR_ash_pGAS[427]
1953     {0x0F12,    0x0271},        //TVAR_ash_pGAS[428]
1954     {0x0F12,    0x01B8},        //TVAR_ash_pGAS[429]
1955     {0x0F12,    0x013B},        //TVAR_ash_pGAS[430]
1956     {0x0F12,    0x00E6},        //TVAR_ash_pGAS[431]
1957     {0x0F12,    0x00BB},        //TVAR_ash_pGAS[432]
1958     {0x0F12,    0x00A5},        //TVAR_ash_pGAS[433]
1959     {0x0F12,    0x009A},        //TVAR_ash_pGAS[434]
1960     {0x0F12,    0x0096},        //TVAR_ash_pGAS[435]
1961     {0x0F12,    0x00A0},        //TVAR_ash_pGAS[436]
1962     {0x0F12,    0x00B1},        //TVAR_ash_pGAS[437]
1963     {0x0F12,    0x00D0},        //TVAR_ash_pGAS[438]
1964     {0x0F12,    0x00FE},        //TVAR_ash_pGAS[439]
1965     {0x0F12,    0x0148},        //TVAR_ash_pGAS[440]
1966     {0x0F12,    0x01EF},        //TVAR_ash_pGAS[441]
1967     {0x0F12,    0x0133},        //TVAR_ash_pGAS[442]
1968     {0x0F12,    0x00F9},        //TVAR_ash_pGAS[443]
1969     {0x0F12,    0x00B0},        //TVAR_ash_pGAS[444]
1970     {0x0F12,    0x008A},        //TVAR_ash_pGAS[445]
1971     {0x0F12,    0x0074},        //TVAR_ash_pGAS[446]
1972     {0x0F12,    0x0069},        //TVAR_ash_pGAS[447]
1973     {0x0F12,    0x0068},        //TVAR_ash_pGAS[448]
1974     {0x0F12,    0x0071},        //TVAR_ash_pGAS[449]
1975     {0x0F12,    0x0085},        //TVAR_ash_pGAS[450]
1976     {0x0F12,    0x00A4},        //TVAR_ash_pGAS[451]
1977     {0x0F12,    0x00CC},        //TVAR_ash_pGAS[452]
1978     {0x0F12,    0x0106},        //TVAR_ash_pGAS[453]
1979     {0x0F12,    0x0161},        //TVAR_ash_pGAS[454]
1980     {0x0F12,    0x00F6},        //TVAR_ash_pGAS[455]
1981     {0x0F12,    0x00C0},        //TVAR_ash_pGAS[456]
1982     {0x0F12,    0x0080},        //TVAR_ash_pGAS[457]
1983     {0x0F12,    0x005F},        //TVAR_ash_pGAS[458]
1984     {0x0F12,    0x0048},        //TVAR_ash_pGAS[459]
1985     {0x0F12,    0x003B},        //TVAR_ash_pGAS[460]
1986     {0x0F12,    0x0039},        //TVAR_ash_pGAS[461]
1987     {0x0F12,    0x0043},        //TVAR_ash_pGAS[462]
1988     {0x0F12,    0x0059},        //TVAR_ash_pGAS[463]
1989     {0x0F12,    0x0078},        //TVAR_ash_pGAS[464]
1990     {0x0F12,    0x00A0},        //TVAR_ash_pGAS[465]
1991     {0x0F12,    0x00D5},        //TVAR_ash_pGAS[466]
1992     {0x0F12,    0x0107},        //TVAR_ash_pGAS[467]
1993     {0x0F12,    0x00CE},        //TVAR_ash_pGAS[468]
1994     {0x0F12,    0x00A0},        //TVAR_ash_pGAS[469]
1995     {0x0F12,    0x0063},        //TVAR_ash_pGAS[470]
1996     {0x0F12,    0x0043},        //TVAR_ash_pGAS[471]
1997     {0x0F12,    0x0029},        //TVAR_ash_pGAS[472]
1998     {0x0F12,    0x001B},        //TVAR_ash_pGAS[473]
1999     {0x0F12,    0x0018},        //TVAR_ash_pGAS[474]
2000     {0x0F12,    0x0020},        //TVAR_ash_pGAS[475]
2001     {0x0F12,    0x0037},        //TVAR_ash_pGAS[476]
2002     {0x0F12,    0x0059},        //TVAR_ash_pGAS[477]
2003     {0x0F12,    0x0082},        //TVAR_ash_pGAS[478]
2004     {0x0F12,    0x00B6},        //TVAR_ash_pGAS[479]
2005     {0x0F12,    0x00E5},        //TVAR_ash_pGAS[480]
2006     {0x0F12,    0x00BC},        //TVAR_ash_pGAS[481]
2007     {0x0F12,    0x008F},        //TVAR_ash_pGAS[482]
2008     {0x0F12,    0x0054},        //TVAR_ash_pGAS[483]
2009     {0x0F12,    0x0031},        //TVAR_ash_pGAS[484]
2010     {0x0F12,    0x0017},        //TVAR_ash_pGAS[485]
2011     {0x0F12,    0x0008},        //TVAR_ash_pGAS[486]
2012     {0x0F12,    0x0006},        //TVAR_ash_pGAS[487]
2013     {0x0F12,    0x000D},        //TVAR_ash_pGAS[488]
2014     {0x0F12,    0x0022},        //TVAR_ash_pGAS[489]
2015     {0x0F12,    0x0044},        //TVAR_ash_pGAS[490]
2016     {0x0F12,    0x0070},        //TVAR_ash_pGAS[491]
2017     {0x0F12,    0x00A3},        //TVAR_ash_pGAS[492]
2018     {0x0F12,    0x00CF},        //TVAR_ash_pGAS[493]
2019     {0x0F12,    0x00B7},        //TVAR_ash_pGAS[494]
2020     {0x0F12,    0x008A},        //TVAR_ash_pGAS[495]
2021     {0x0F12,    0x0051},        //TVAR_ash_pGAS[496]
2022     {0x0F12,    0x002D},        //TVAR_ash_pGAS[497]
2023     {0x0F12,    0x0013},        //TVAR_ash_pGAS[498]
2024     {0x0F12,    0x0005},        //TVAR_ash_pGAS[499]
2025     {0x0F12,    0x0000},        //TVAR_ash_pGAS[500]
2026     {0x0F12,    0x0006},        //TVAR_ash_pGAS[501]
2027     {0x0F12,    0x001A},        //TVAR_ash_pGAS[502]
2028     {0x0F12,    0x003B},        //TVAR_ash_pGAS[503]
2029     {0x0F12,    0x0069},        //TVAR_ash_pGAS[504]
2030     {0x0F12,    0x009A},        //TVAR_ash_pGAS[505]
2031     {0x0F12,    0x00C8},        //TVAR_ash_pGAS[506]
2032     {0x0F12,    0x00C3},        //TVAR_ash_pGAS[507]
2033     {0x0F12,    0x0093},        //TVAR_ash_pGAS[508]
2034     {0x0F12,    0x005A},        //TVAR_ash_pGAS[509]
2035     {0x0F12,    0x0036},        //TVAR_ash_pGAS[510]
2036     {0x0F12,    0x001B},        //TVAR_ash_pGAS[511]
2037     {0x0F12,    0x000D},        //TVAR_ash_pGAS[512]
2038     {0x0F12,    0x0008},        //TVAR_ash_pGAS[513]
2039     {0x0F12,    0x000D},        //TVAR_ash_pGAS[514]
2040     {0x0F12,    0x0020},        //TVAR_ash_pGAS[515]
2041     {0x0F12,    0x0041},        //TVAR_ash_pGAS[516]
2042     {0x0F12,    0x006C},        //TVAR_ash_pGAS[517]
2043     {0x0F12,    0x00A0},        //TVAR_ash_pGAS[518]
2044     {0x0F12,    0x00CC},        //TVAR_ash_pGAS[519]
2045     {0x0F12,    0x00DE},        //TVAR_ash_pGAS[520]
2046     {0x0F12,    0x00AA},        //TVAR_ash_pGAS[521]
2047     {0x0F12,    0x0070},        //TVAR_ash_pGAS[522]
2048     {0x0F12,    0x004D},        //TVAR_ash_pGAS[523]
2049     {0x0F12,    0x0032},        //TVAR_ash_pGAS[524]
2050     {0x0F12,    0x0023},        //TVAR_ash_pGAS[525]
2051     {0x0F12,    0x001E},        //TVAR_ash_pGAS[526]
2052     {0x0F12,    0x0024},        //TVAR_ash_pGAS[527]
2053     {0x0F12,    0x0036},        //TVAR_ash_pGAS[528]
2054     {0x0F12,    0x0055},        //TVAR_ash_pGAS[529]
2055     {0x0F12,    0x007E},        //TVAR_ash_pGAS[530]
2056     {0x0F12,    0x00B3},        //TVAR_ash_pGAS[531]
2057     {0x0F12,    0x00E3},        //TVAR_ash_pGAS[532]
2058     {0x0F12,    0x010B},        //TVAR_ash_pGAS[533]
2059     {0x0F12,    0x00D0},        //TVAR_ash_pGAS[534]
2060     {0x0F12,    0x0091},        //TVAR_ash_pGAS[535]
2061     {0x0F12,    0x0070},        //TVAR_ash_pGAS[536]
2062     {0x0F12,    0x0058},        //TVAR_ash_pGAS[537]
2063     {0x0F12,    0x0048},        //TVAR_ash_pGAS[538]
2064     {0x0F12,    0x0044},        //TVAR_ash_pGAS[539]
2065     {0x0F12,    0x0048},        //TVAR_ash_pGAS[540]
2066     {0x0F12,    0x005A},        //TVAR_ash_pGAS[541]
2067     {0x0F12,    0x0075},        //TVAR_ash_pGAS[542]
2068     {0x0F12,    0x009A},        //TVAR_ash_pGAS[543]
2069     {0x0F12,    0x00D2},        //TVAR_ash_pGAS[544]
2070     {0x0F12,    0x010B},        //TVAR_ash_pGAS[545]
2071     {0x0F12,    0x014F},        //TVAR_ash_pGAS[546]
2072     {0x0F12,    0x010B},        //TVAR_ash_pGAS[547]
2073     {0x0F12,    0x00C5},        //TVAR_ash_pGAS[548]
2074     {0x0F12,    0x00A0},        //TVAR_ash_pGAS[549]
2075     {0x0F12,    0x008A},        //TVAR_ash_pGAS[550]
2076     {0x0F12,    0x007F},        //TVAR_ash_pGAS[551]
2077     {0x0F12,    0x0079},        //TVAR_ash_pGAS[552]
2078     {0x0F12,    0x007D},        //TVAR_ash_pGAS[553]
2079     {0x0F12,    0x008A},        //TVAR_ash_pGAS[554]
2080     {0x0F12,    0x00A1},        //TVAR_ash_pGAS[555]
2081     {0x0F12,    0x00C6},        //TVAR_ash_pGAS[556]
2082     {0x0F12,    0x0107},        //TVAR_ash_pGAS[557]
2083     {0x0F12,    0x0164},        //TVAR_ash_pGAS[558]
2084     {0x0F12,    0x01E0},        //TVAR_ash_pGAS[559]
2085     {0x0F12,    0x014B},        //TVAR_ash_pGAS[560]
2086     {0x0F12,    0x0107},        //TVAR_ash_pGAS[561]
2087     {0x0F12,    0x00D7},        //TVAR_ash_pGAS[562]
2088     {0x0F12,    0x00BF},        //TVAR_ash_pGAS[563]
2089     {0x0F12,    0x00B2},        //TVAR_ash_pGAS[564]
2090     {0x0F12,    0x00AE},        //TVAR_ash_pGAS[565]
2091     {0x0F12,    0x00AF},        //TVAR_ash_pGAS[566]
2092     {0x0F12,    0x00B8},        //TVAR_ash_pGAS[567]
2093     {0x0F12,    0x00D1},        //TVAR_ash_pGAS[568]
2094     {0x0F12,    0x00FE},        //TVAR_ash_pGAS[569]
2095     {0x0F12,    0x014D},        //TVAR_ash_pGAS[570]
2096     {0x0F12,    0x01FD},        //TVAR_ash_pGAS[571]
2097     //  param_end       TVAR_ash_pGAS
2098     {0x002A,    0x074E},
2099     {0x0F12,    0x0001},        //ash_bLumaMode 
2100     {0x002A,    0x0D30},
2101     {0x0F12,    0x025F},        //awbb_GLocusR
2102     {0x002A,    0x0D32},
2103     {0x0F12,    0x0376},        //awbb_GLocusB
2104     //  param_start     TVAR_ash_AwbAshCord
2105     {0x002A,    0x06B8},
2106     {0x0F12,    0x00C0},        //TVAR_ash_AwbAshCord[0]
2107     {0x0F12,    0x00E0},        //TVAR_ash_AwbAshCord[1]
2108     {0x0F12,    0x00FA},        //TVAR_ash_AwbAshCord[2]
2109     {0x0F12,    0x011D},        //TVAR_ash_AwbAshCord[3]
2110     {0x0F12,    0x0144},        //TVAR_ash_AwbAshCord[4]
2111     {0x0F12,    0x0173},        //TVAR_ash_AwbAshCord[5]
2112     {0x0F12,    0x0180},        //TVAR_ash_AwbAshCord[6]
2113     //  param_end       TVAR_ash_AwbAshCord
2114     {0x002A,    0x0664},
2115     {0x0F12,    0x013E},        //seti_uContrastCenter
2116
2117     //ash_CGrasAlphas
2118     {0x002A,    0x06C6},
2119     {0x0F12,    0x010B},        //ash_CGrasAlphas[0]
2120     {0x0F12,    0x0103},        //ash_CGrasAlphas[1]
2121     {0x0F12,    0x00FC},        //ash_CGrasAlphas[2]
2122     {0x0F12,    0x010C},        //ash_CGrasAlphas[3]
2123     //============================================================
2124     //End GAS 
2125     //============================================================
2126     //White Balance
2127     //============================================================
2128     //  param_start     awbb_IndoorGrZones_m_BGrid
2129     {0x002A,    0x0C48},
2130     {0x0F12,    0x03C9},        //awbb_IndoorGrZones_m_BGrid[0]
2131     {0x0F12,    0x040A},        //awbb_IndoorGrZones_m_BGrid[1]
2132     {0x0F12,    0x038B},        //awbb_IndoorGrZones_m_BGrid[2]
2133     {0x0F12,    0x0405},        //awbb_IndoorGrZones_m_BGrid[3]
2134     {0x0F12,    0x0356},        //awbb_IndoorGrZones_m_BGrid[4]
2135     {0x0F12,    0x0400},        //awbb_IndoorGrZones_m_BGrid[5]
2136     {0x0F12,    0x0322},        //awbb_IndoorGrZones_m_BGrid[6]
2137     {0x0F12,    0x03DF},        //awbb_IndoorGrZones_m_BGrid[7]
2138     {0x0F12,    0x02E9},        //awbb_IndoorGrZones_m_BGrid[8]
2139     {0x0F12,    0x03B0},        //awbb_IndoorGrZones_m_BGrid[9]
2140     {0x0F12,    0x02B6},        //awbb_IndoorGrZones_m_BGrid[10]
2141     {0x0F12,    0x0380},        //awbb_IndoorGrZones_m_BGrid[11]
2142     {0x0F12,    0x0296},        //awbb_IndoorGrZones_m_BGrid[12]
2143     {0x0F12,    0x034F},        //awbb_IndoorGrZones_m_BGrid[13]
2144     {0x0F12,    0x027F},        //awbb_IndoorGrZones_m_BGrid[14]
2145     {0x0F12,    0x031A},        //awbb_IndoorGrZones_m_BGrid[15]
2146     {0x0F12,    0x026C},        //awbb_IndoorGrZones_m_BGrid[16]
2147     {0x0F12,    0x02F5},        //awbb_IndoorGrZones_m_BGrid[17]
2148     {0x0F12,    0x0256},        //awbb_IndoorGrZones_m_BGrid[18]
2149     {0x0F12,    0x02DA},        //awbb_IndoorGrZones_m_BGrid[19]
2150     {0x0F12,    0x0241},        //awbb_IndoorGrZones_m_BGrid[20]
2151     {0x0F12,    0x02C4},        //awbb_IndoorGrZones_m_BGrid[21]
2152     {0x0F12,    0x0228},        //awbb_IndoorGrZones_m_BGrid[22]
2153     {0x0F12,    0x02AB},        //awbb_IndoorGrZones_m_BGrid[23]
2154     {0x0F12,    0x0213},        //awbb_IndoorGrZones_m_BGrid[24]
2155     {0x0F12,    0x0292},        //awbb_IndoorGrZones_m_BGrid[25]
2156     {0x0F12,    0x01FF},        //awbb_IndoorGrZones_m_BGrid[26]
2157     {0x0F12,    0x0278},        //awbb_IndoorGrZones_m_BGrid[27]
2158     {0x0F12,    0x01F4},        //awbb_IndoorGrZones_m_BGrid[28]
2159     {0x0F12,    0x025F},        //awbb_IndoorGrZones_m_BGrid[29]
2160     {0x0F12,    0x0202},        //awbb_IndoorGrZones_m_BGrid[30]
2161     {0x0F12,    0x0234},        //awbb_IndoorGrZones_m_BGrid[31]
2162     {0x0F12,    0x0000},        //awbb_IndoorGrZones_m_BGrid[32]
2163     {0x0F12,    0x0000},        //awbb_IndoorGrZones_m_BGrid[33]
2164     {0x0F12,    0x0000},        //awbb_IndoorGrZones_m_BGrid[34]
2165     {0x0F12,    0x0000},        //awbb_IndoorGrZones_m_BGrid[35]
2166     {0x0F12,    0x0000},        //awbb_IndoorGrZones_m_BGrid[36]
2167     {0x0F12,    0x0000},        //awbb_IndoorGrZones_m_BGrid[37]
2168     {0x0F12,    0x0000},        //awbb_IndoorGrZones_m_BGrid[38]
2169     {0x0F12,    0x0000},        //awbb_IndoorGrZones_m_BGrid[39]
2170     //  param_end       awbb_IndoorGrZones_m_BGrid
2171     {0x002A,    0x0C98},
2172     {0x0F12,    0x0005},
2173     {0x0F12,    0x0000},        //awbb_IndoorGrZones_m_GridStep
2174     {0x002A,    0x0CA0},
2175     {0x0F12,    0x00E8},
2176     {0x0F12,    0x0000},        //awbb_IndoorGrZones_m_Boffs
2177     //  param_start     awbb_LowBrGrZones_m_BGrid
2178     {0x002A,    0x0CE0},
2179         {0x0F12,    0x03D4},    //awbb_LowBrGrZones_m_BGrid[0] //                                                                          
2180         {0x0F12,    0x043E},    //awbb_LowBrGrZones_m_BGrid[1] //                                                                          
2181         {0x0F12,    0x035C},    //awbb_LowBrGrZones_m_BGrid[2] //                                                                          
2182         {0x0F12,    0x0438},    //awbb_LowBrGrZones_m_BGrid[3] //                                                                          
2183         {0x0F12,    0x02F0},    //awbb_LowBrGrZones_m_BGrid[4] //                                                                          
2184         {0x0F12,    0x042D},    //awbb_LowBrGrZones_m_BGrid[5] //                                                                          
2185         {0x0F12,    0x029A},    //awbb_LowBrGrZones_m_BGrid[6] //                                                                          
2186         {0x0F12,    0x03EF},    //awbb_LowBrGrZones_m_BGrid[7] //                                                                          
2187         {0x0F12,    0x025E},    //awbb_LowBrGrZones_m_BGrid[8] //                                                                          
2188         {0x0F12,    0x0395},    //awbb_LowBrGrZones_m_BGrid[9] //                                                                          
2189         {0x0F12,    0x022E},    //awbb_LowBrGrZones_m_BGrid[10] //                                                                         
2190         {0x0F12,    0x0346},    //awbb_LowBrGrZones_m_BGrid[11] //                                                                         
2191         {0x0F12,    0x0200},    //awbb_LowBrGrZones_m_BGrid[12] //                                                                         
2192         {0x0F12,    0x02F6},    //awbb_LowBrGrZones_m_BGrid[13] //                                                                         
2193         {0x0F12,    0x01CE},    //awbb_LowBrGrZones_m_BGrid[14] //                                                                         
2194         {0x0F12,    0x02C8},    //awbb_LowBrGrZones_m_BGrid[15] //                                                                         
2195         {0x0F12,    0x01BB},    //awbb_LowBrGrZones_m_BGrid[16] //                                                                         
2196         {0x0F12,    0x0287},    //awbb_LowBrGrZones_m_BGrid[17] //                                                                         
2197         {0x0F12,    0x01E2},    //awbb_LowBrGrZones_m_BGrid[18] //                                                                         
2198         {0x0F12,    0x0239},    //awbb_LowBrGrZones_m_BGrid[19] //                                                                         
2199         {0x0F12,    0x0000},    //awbb_LowBrGrZones_m_BGrid[20] //                                                                         
2200         {0x0F12,    0x0000},    //awbb_LowBrGrZones_m_BGrid[21] //                                                                         
2201         {0x0F12,    0x0000},    //awbb_LowBrGrZones_m_BGrid[22] //                                                                         
2202         {0x0F12,    0x0000},    //awbb_LowBrGrZones_m_BGrid[23] //                                                                         
2203     //  param_end       awbb_LowBrGrZones_m_BGrid  
2204     {0x002A,    0x0D10},
2205     {0x0F12,    0x0006},
2206     {0x0F12,    0x0000},        //awbb_LowBrGrZones_m_GridStep
2207     {0x002A,    0x0D18},
2208     {0x0F12,    0x00AE},
2209     {0x0F12,    0x0000},        //awbb_LowBrGrZones_m_Boffs
2210     //  param_start     awbb_OutdoorGrZones_m_BGrid
2211     {0x002A,    0x0CA4},
2212     {0x0F12,    0x031A},//02A8  //awbb_OutdoorGrZones_m_BGrid[0]
2213     {0x0F12,    0x0382},//02C2  //awbb_OutdoorGrZones_m_BGrid[1]
2214     {0x0F12,    0x02E3},//0270  //awbb_OutdoorGrZones_m_BGrid[2]
2215     {0x0F12,    0x038B},//02B4  //awbb_OutdoorGrZones_m_BGrid[3]
2216     {0x0F12,    0x02B7},//025C  //awbb_OutdoorGrZones_m_BGrid[4]
2217     {0x0F12,    0x035D},//02A0  //awbb_OutdoorGrZones_m_BGrid[5]
2218     {0x0F12,    0x0297},//0240  //awbb_OutdoorGrZones_m_BGrid[6]
2219     {0x0F12,    0x032A},//0288  //awbb_OutdoorGrZones_m_BGrid[7]
2220     {0x0F12,    0x0285},//0230  //awbb_OutdoorGrZones_m_BGrid[8]
2221     {0x0F12,    0x0302},//026E  //awbb_OutdoorGrZones_m_BGrid[9]
2222     {0x0F12,    0x0271},//0222  //awbb_OutdoorGrZones_m_BGrid[10]
2223     {0x0F12,    0x02DF},//025A  //awbb_OutdoorGrZones_m_BGrid[11]
2224     {0x0F12,    0x025D},//0220  //awbb_OutdoorGrZones_m_BGrid[12]
2225     {0x0F12,    0x02C7},//023A  //awbb_OutdoorGrZones_m_BGrid[13]
2226     {0x0F12,    0x0241},//0000  //awbb_OutdoorGrZones_m_BGrid[14]
2227     {0x0F12,    0x02B5},//0000  //awbb_OutdoorGrZones_m_BGrid[15]
2228     {0x0F12,    0x0229},//0000  //awbb_OutdoorGrZones_m_BGrid[16]
2229     {0x0F12,    0x029B},//0000  //awbb_OutdoorGrZones_m_BGrid[17]
2230     {0x0F12,    0x0212},//0000  //awbb_OutdoorGrZones_m_BGrid[18]
2231     {0x0F12,    0x0280},//0000  //awbb_OutdoorGrZones_m_BGrid[19]
2232     {0x0F12,    0x0205},//0000  //awbb_OutdoorGrZones_m_BGrid[20]
2233     {0x0F12,    0x026A},//0000  //awbb_OutdoorGrZones_m_BGrid[21]
2234     {0x0F12,    0x020A},//0000  //awbb_OutdoorGrZones_m_BGrid[22]
2235     {0x0F12,    0x023F},//0000  //awbb_OutdoorGrZones_m_BGrid[23]
2236     //  param_end       awbb_OutdoorGrZones_m_BGrid 
2237     {0x002A,    0x0CD4},
2238     {0x0F12,    0x0005},
2239     {0x0F12,    0x0000},        //awbb_OutdoorGrZones_m_GridStep
2240     {0x002A,    0x0CDC},
2241     {0x0F12,    0x0157},  //01FE
2242     {0x0F12,    0x0000},        //awbb_OutdoorGrZones_m_Boffs
2243     //Low illumiantion
2244     {0x002A,    0x0D1C},
2245     {0x0F12,    0x037C},
2246     {0x0F12,    0x0000},        //awbb_CrclLowT_R_c
2247     {0x002A,    0x0D20},
2248     {0x0F12,    0x0157},
2249     {0x0F12,    0x0000},        //awbb_CrclLowT_B_c
2250     {0x002A,    0x0D24},
2251     {0x0F12,    0x3EB8},
2252     {0x0F12,    0x0000},        //awbb_CrclLowT_Rad_c
2253     //White locus 
2254     {0x002A,    0x0D2C},
2255     {0x0F12,    0x013D},        //awbb_IntcR
2256     {0x0F12,    0x011E},        //awbb_IntcB
2257     {0x002A,    0x0D46},
2258     {0x0F12,    0x0396},        //04A2  //awbb_MvEq_RBthresh
2259     {0x002A,    0x0D5C},
2260     {0x0F12,    0x0584},        //awbb_LowTempRB
2261
2262     //Grid Correction
2263     //  param_start     awbb_GridCorr_R
2264     {0x002A,    0x0DD4},
2265     {0x0F12,    0x003C},        //awbb_GridCorr_R[0]
2266     {0x0F12,    0x0050},        //awbb_GridCorr_R[1]
2267     {0x0F12,    0x0064},        //awbb_GridCorr_R[2]
2268     {0x0F12,    0x0000},        //awbb_GridCorr_R[3]
2269     {0x0F12,    0x0014},        //awbb_GridCorr_R[4]
2270     {0x0F12,    0x0014},        //awbb_GridCorr_R[5]
2271     {0x0F12,    0x003C},        //awbb_GridCorr_R[6]
2272     {0x0F12,    0x0050},        //awbb_GridCorr_R[7]
2273     {0x0F12,    0x0064},        //awbb_GridCorr_R[8]
2274     {0x0F12,    0x0000},        //awbb_GridCorr_R[9]
2275     {0x0F12,    0x0014},        //awbb_GridCorr_R[10]
2276     {0x0F12,    0x0014},        //awbb_GridCorr_R[11]
2277     {0x0F12,    0x003C},        //awbb_GridCorr_R[12]
2278     {0x0F12,    0x0050},        //awbb_GridCorr_R[13]
2279     {0x0F12,    0x0064},        //awbb_GridCorr_R[14]
2280     {0x0F12,    0x0000},        //awbb_GridCorr_R[15]
2281     {0x0F12,    0x0014},        //awbb_GridCorr_R[16]
2282     {0x0F12,    0x0014},        //awbb_GridCorr_R[17]
2283     //  param_end       awbb_GridCorr_R
2284     //  param_start     awbb_GridCorr_B
2285     {0x002A,    0x0DF8},
2286     {0x0F12,    0xFFEC},        //awbb_GridCorr_B[0]
2287     {0x0F12,    0xFFEC},        //awbb_GridCorr_B[1]
2288     {0x0F12,    0x0078},        //awbb_GridCorr_B[2]
2289     {0x0F12,    0xFFE2},        //awbb_GridCorr_B[3]
2290     {0x0F12,    0xFFE2},        //awbb_GridCorr_B[4]
2291     {0x0F12,    0xFFB0},        //awbb_GridCorr_B[5]
2292     {0x0F12,    0xFFEC},        //awbb_GridCorr_B[6]
2293     {0x0F12,    0xFFEC},        //awbb_GridCorr_B[7]
2294     {0x0F12,    0x0078},        //awbb_GridCorr_B[8]
2295     {0x0F12,    0xFFE2},        //awbb_GridCorr_B[9]
2296     {0x0F12,    0xFFE2},        //awbb_GridCorr_B[10]
2297     {0x0F12,    0xFFB0},        //awbb_GridCorr_B[11]
2298     {0x0F12,    0xFFEC},        //awbb_GridCorr_B[12]
2299     {0x0F12,    0xFFEC},        //awbb_GridCorr_B[13]
2300     {0x0F12,    0x0078},        //awbb_GridCorr_B[14]
2301     {0x0F12,    0xFFE2},        //awbb_GridCorr_B[15]
2302     {0x0F12,    0xFFE2},        //awbb_GridCorr_B[16]
2303     {0x0F12,    0xFFB0},        //awbb_GridCorr_B[17]
2304     //  param_end       awbb_GridCorr_B
2305     //  param_start     awbb_GridConst_1 
2306     {0x002A,    0x0E1C},
2307     {0x0F12,    0x02D9},        //awbb_GridConst_1[0]
2308     {0x0F12,    0x0357},        //awbb_GridConst_1[1]
2309     {0x0F12,    0x03D1},        //awbb_GridConst_1[2]
2310     //  param_end       awbb_GridConst_1
2311     //  param_start     awbb_GridConst_2
2312     {0x002A,    0x0E22},
2313     {0x0F12,    0x0DE9},        //awbb_GridConst_2[0]
2314     {0x0F12,    0x0EDD},        //awbb_GridConst_2[1]
2315     {0x0F12,    0x0F42},        //awbb_GridConst_2[2]
2316     {0x0F12,    0x0F54},        //awbb_GridConst_2[3]
2317     {0x0F12,    0x0FAE},        //awbb_GridConst_2[4]
2318     {0x0F12,    0x1011},        //awbb_GridConst_2[5]
2319     //  param_end       awbb_GridConst_2 
2320     {0x002A,    0x0E2E},
2321     {0x0F12,    0x00BA},        //awbb_GridCoeff_R_1
2322     {0x0F12,    0x00AF},        //awbb_GridCoeff_B_1
2323     {0x0F12,    0x0049},        //awbb_GridCoeff_R_2
2324     {0x0F12,    0x00F5},        //awbb_GridCoeff_B_2
2325
2326     {0x002A,    0x0E4A},
2327     {0x0F12,    0x0002},        //awbb_GridEnable
2328     //============================================================
2329     //End AWB
2330     //============================================================
2331     //AE 
2332     //============================================================
2333     //AE variation
2334     {0x002A,    0x051A},
2335     {0x0F12,    0x010E},        //lt_uLimitHigh
2336     {0x0F12,    0x00F5},        //lt_uLimitLow
2337     //disable contrast, enable illumination
2338     {0x002A,    0x0F76},
2339     {0x0F12,    0x0001},  //
2340
2341     {0x002A,    0x1034}, 
2342     {0x0F12,    0x00C0},        //SARR_IllumType[0]
2343     {0x0F12,    0x00E0},  //SARR_IllumType[1]
2344     {0x0F12,    0x00F0},  //SARR_IllumType[2]
2345     {0x0F12,    0x0129},  //SARR_IllumType[3]
2346     {0x0F12,    0x0156},  //SARR_IllumType[4]
2347     {0x0F12,    0x017F},  //SARR_IllumType[5]
2348     {0x0F12,    0x018F},  //SARR_IllumType[6]
2349
2350     {0x002A,    0x1042},
2351     {0x0F12,    0x0120},    //SARR_IllumTypeF[0]
2352     {0x0F12,    0x0120},    //SARR_IllumTypeF[1]
2353     {0x0F12,    0x0120},    //SARR_IllumTypeF[2]
2354     {0x0F12,    0x0100},    //SARR_IllumTypeF[3]
2355     {0x0F12,    0x0100},    //SARR_IllumTypeF[4]
2356     {0x0F12,    0x0100},    //SARR_IllumTypeF[5]
2357     {0x0F12,    0x0100},    //SARR_IllumTypeF[6]
2358
2359     //AE target  
2360     {0x002A,    0x0F70},
2361     {0x0F12,    0x0046},  //TVAR_ae_BrAve
2362     //AE Weight               
2363     {0x0028,    0x7000},                
2364     {0x002A,    0x0f7e},    //AE weight/
2365     {0x0F12,    0x0101},//0000                
2366     {0x0F12,    0x0101},//0000                
2367     {0x0F12,    0x0101},//0000                
2368     {0x0F12,    0x0101},//0000                
2369     {0x0F12,    0x0101},//0101                
2370     {0x0F12,    0x0101},//0101                
2371     {0x0F12,    0x0101},//0101                
2372     {0x0F12,    0x0101},//0101                
2373     {0x0F12,    0x0101},//0101                
2374     {0x0F12,    0x0303},//0101                
2375     {0x0F12,    0x0303},//0101                
2376     {0x0F12,    0x0101},//0101                
2377     {0x0F12,    0x0101},//0101                
2378     {0x0F12,    0x0303},//0401                
2379     {0x0F12,    0x0303},//0104                
2380     {0x0F12,    0x0101},//0101                
2381     {0x0F12,    0x0101},//0101                
2382     {0x0F12,    0x0303},//0401                
2383     {0x0F12,    0x0303},//0104                
2384     {0x0F12,    0x0101},//0101                
2385     {0x0F12,    0x0101},//0101                
2386     {0x0F12,    0x0303},//0201                
2387     {0x0F12,    0x0303},//0102                
2388     {0x0F12,    0x0101},//0101                
2389     {0x0F12,    0x0101},//0101                
2390     {0x0F12,    0x0101},//0201                
2391     {0x0F12,    0x0101},//0102                
2392     {0x0F12,    0x0101},//0101                
2393     {0x0F12,    0x0101},//0101                
2394     {0x0F12,    0x0101},//0101                
2395     {0x0F12,    0x0101},//0101                
2396     {0x0F12,    0x0101},//0101                
2397     //============================================================   
2398     //Gamma
2399     //============================================================     
2400     {0x002A,  0x3288},
2401     {0x0F12,  0x0000}, //#SARR_usDualGammaLutRGBIndoor[0][0]            0000            
2402     {0x0F12,  0x0008}, //#SARR_usDualGammaLutRGBIndoor[0][1]            0008            
2403     {0x0F12,  0x0013}, //#SARR_usDualGammaLutRGBIndoor[0][2]            0013            
2404     {0x0F12,  0x002C}, //#SARR_usDualGammaLutRGBIndoor[0][3]            002C            
2405     {0x0F12,  0x0061}, //#SARR_usDualGammaLutRGBIndoor[0][4]            0061            
2406     {0x0F12,  0x00C8}, //#SARR_usDualGammaLutRGBIndoor[0][5]            00C8            
2407     {0x0F12,  0x0113}, //#SARR_usDualGammaLutRGBIndoor[0][6]            0113            
2408     {0x0F12,  0x0132}, //#SARR_usDualGammaLutRGBIndoor[0][7]            0132            
2409     {0x0F12,  0x014C}, //#SARR_usDualGammaLutRGBIndoor[0][8]            014C            
2410     {0x0F12,  0x0179}, //#SARR_usDualGammaLutRGBIndoor[0][9]            0179            
2411     {0x0F12,  0x01A4}, //#SARR_usDualGammaLutRGBIndoor[0][10]     01A4                  
2412     {0x0F12,  0x01CD}, //#SARR_usDualGammaLutRGBIndoor[0][11]     01CD                  
2413     {0x0F12,  0x01F4}, //#SARR_usDualGammaLutRGBIndoor[0][12]     01F4                  
2414     {0x0F12,  0x0239}, //#SARR_usDualGammaLutRGBIndoor[0][13]     0239                  
2415     {0x0F12,  0x0278}, //#SARR_usDualGammaLutRGBIndoor[0][14]     0278                  
2416     {0x0F12,  0x02E0}, //#SARR_usDualGammaLutRGBIndoor[0][15]     02E0                  
2417     {0x0F12,  0x0333}, //#SARR_usDualGammaLutRGBIndoor[0][16]     0333                  
2418     {0x0F12,  0x037B}, //#SARR_usDualGammaLutRGBIndoor[0][17]     037B                  
2419     {0x0F12,  0x03BF}, //#SARR_usDualGammaLutRGBIndoor[0][18]     03BF                  
2420     {0x0F12,  0x03FF}, //#SARR_usDualGammaLutRGBIndoor[0][19]     03FF                  
2421     {0x0F12,  0x0000}, //#SARR_usDualGammaLutRGBIndoor[1][0]            0000            
2422     {0x0F12,  0x0008}, //#SARR_usDualGammaLutRGBIndoor[1][1]            0008            
2423     {0x0F12,  0x0013}, //#SARR_usDualGammaLutRGBIndoor[1][2]            0013            
2424     {0x0F12,  0x002C}, //#SARR_usDualGammaLutRGBIndoor[1][3]            002C            
2425     {0x0F12,  0x0061}, //#SARR_usDualGammaLutRGBIndoor[1][4]            0061            
2426     {0x0F12,  0x00C8}, //#SARR_usDualGammaLutRGBIndoor[1][5]            00C8            
2427     {0x0F12,  0x0113}, //#SARR_usDualGammaLutRGBIndoor[1][6]            0113            
2428     {0x0F12,  0x0132}, //#SARR_usDualGammaLutRGBIndoor[1][7]            0132            
2429     {0x0F12,  0x014C}, //#SARR_usDualGammaLutRGBIndoor[1][8]            014C            
2430     {0x0F12,  0x0179}, //#SARR_usDualGammaLutRGBIndoor[1][9]            0179            
2431     {0x0F12,  0x01A4}, //#SARR_usDualGammaLutRGBIndoor[1][10]     01A4                  
2432     {0x0F12,  0x01CD}, //#SARR_usDualGammaLutRGBIndoor[1][11]     01CD                  
2433     {0x0F12,  0x01F4}, //#SARR_usDualGammaLutRGBIndoor[1][12]     01F4                  
2434     {0x0F12,  0x0239}, //#SARR_usDualGammaLutRGBIndoor[1][13]     0239                  
2435     {0x0F12,  0x0278}, //#SARR_usDualGammaLutRGBIndoor[1][14]     0278                  
2436     {0x0F12,  0x02E0}, //#SARR_usDualGammaLutRGBIndoor[1][15]     02E0                  
2437     {0x0F12,  0x0333}, //#SARR_usDualGammaLutRGBIndoor[1][16]     0333                  
2438     {0x0F12,  0x037B}, //#SARR_usDualGammaLutRGBIndoor[1][17]     037B                  
2439     {0x0F12,  0x03BF}, //#SARR_usDualGammaLutRGBIndoor[1][18]     03BF                  
2440     {0x0F12,  0x03FF}, //#SARR_usDualGammaLutRGBIndoor[1][19]     03FF                  
2441     {0x0F12,  0x0000}, //#SARR_usDualGammaLutRGBIndoor[2][0]            0000            
2442     {0x0F12,  0x0008}, //#SARR_usDualGammaLutRGBIndoor[2][1]            0008            
2443     {0x0F12,  0x0013}, //#SARR_usDualGammaLutRGBIndoor[2][2]            0013            
2444     {0x0F12,  0x002C}, //#SARR_usDualGammaLutRGBIndoor[2][3]            002C            
2445     {0x0F12,  0x0061}, //#SARR_usDualGammaLutRGBIndoor[2][4]            0061            
2446     {0x0F12,  0x00C8}, //#SARR_usDualGammaLutRGBIndoor[2][5]            00C8            
2447     {0x0F12,  0x0113}, //#SARR_usDualGammaLutRGBIndoor[2][6]            0113            
2448     {0x0F12,  0x0132}, //#SARR_usDualGammaLutRGBIndoor[2][7]            0132            
2449     {0x0F12,  0x014C}, //#SARR_usDualGammaLutRGBIndoor[2][8]            014C            
2450     {0x0F12,  0x0179}, //#SARR_usDualGammaLutRGBIndoor[2][9]            0179            
2451     {0x0F12,  0x01A4}, //#SARR_usDualGammaLutRGBIndoor[2][10]     01A4                  
2452     {0x0F12,  0x01CD}, //#SARR_usDualGammaLutRGBIndoor[2][11]     01CD                  
2453     {0x0F12,  0x01F4}, //#SARR_usDualGammaLutRGBIndoor[2][12]     01F4                  
2454     {0x0F12,  0x0239}, //#SARR_usDualGammaLutRGBIndoor[2][13]     0239                  
2455     {0x0F12,  0x0278}, //#SARR_usDualGammaLutRGBIndoor[2][14]     0278                  
2456     {0x0F12,  0x02E0}, //#SARR_usDualGammaLutRGBIndoor[2][15]     02E0                  
2457     {0x0F12,  0x0333}, //#SARR_usDualGammaLutRGBIndoor[2][16]     0333                  
2458     {0x0F12,  0x037B}, //#SARR_usDualGammaLutRGBIndoor[2][17]     037B                  
2459     {0x0F12,  0x03BF}, //#SARR_usDualGammaLutRGBIndoor[2][18]     03BF                  
2460     {0x0F12,  0x03FF}, //#SARR_usDualGammaLutRGBIndoor[2][19]     03FF                  
2461
2462     {0x002A,  0x3300},
2463     {0x0F12,  0x0000},   //#SARR_usDualGammaLutRGBOutdoor[0][0] 0000                    
2464     {0x0F12,  0x0008},   //#SARR_usDualGammaLutRGBOutdoor[0][1] 0008                    
2465     {0x0F12,  0x0013},   //#SARR_usDualGammaLutRGBOutdoor[0][2] 0013                    
2466     {0x0F12,  0x002C},   //#SARR_usDualGammaLutRGBOutdoor[0][3] 002C                    
2467     {0x0F12,  0x0061},   //#SARR_usDualGammaLutRGBOutdoor[0][4] 0061                    
2468     {0x0F12,  0x00C8},   //#SARR_usDualGammaLutRGBOutdoor[0][5] 00C8                    
2469     {0x0F12,  0x0113},   //#SARR_usDualGammaLutRGBOutdoor[0][6] 0113                    
2470     {0x0F12,  0x0132},   //#SARR_usDualGammaLutRGBOutdoor[0][7] 0132                    
2471     {0x0F12,  0x014C},   //#SARR_usDualGammaLutRGBOutdoor[0][8] 014C                    
2472     {0x0F12,  0x0179},   //#SARR_usDualGammaLutRGBOutdoor[0][9] 0179                    
2473     {0x0F12,  0x01A4},   //#SARR_usDualGammaLutRGBOutdoor[0][10]        01A4            
2474     {0x0F12,  0x01CD},   //#SARR_usDualGammaLutRGBOutdoor[0][11]        01CD            
2475     {0x0F12,  0x01F4},   //#SARR_usDualGammaLutRGBOutdoor[0][12]        01F4            
2476     {0x0F12,  0x0239},   //#SARR_usDualGammaLutRGBOutdoor[0][13]        0239            
2477     {0x0F12,  0x0278},   //#SARR_usDualGammaLutRGBOutdoor[0][14]        0278            
2478     {0x0F12,  0x02E0},   //#SARR_usDualGammaLutRGBOutdoor[0][15]        02E0            
2479     {0x0F12,  0x0333},   //#SARR_usDualGammaLutRGBOutdoor[0][16]        0333            
2480     {0x0F12,  0x037B},   //#SARR_usDualGammaLutRGBOutdoor[0][17]        037B            
2481     {0x0F12,  0x03BF},   //#SARR_usDualGammaLutRGBOutdoor[0][18]        03BF            
2482     {0x0F12,  0x03FF},   //#SARR_usDualGammaLutRGBOutdoor[0][19]        03FF            
2483     {0x0F12,  0x0000},   //#SARR_usDualGammaLutRGBOutdoor[1][0] 0000                    
2484     {0x0F12,  0x0008},   //#SARR_usDualGammaLutRGBOutdoor[1][1] 0008                    
2485     {0x0F12,  0x0013},   //#SARR_usDualGammaLutRGBOutdoor[1][2] 0013                    
2486     {0x0F12,  0x002C},   //#SARR_usDualGammaLutRGBOutdoor[1][3] 002C                    
2487     {0x0F12,  0x0061},   //#SARR_usDualGammaLutRGBOutdoor[1][4] 0061                    
2488     {0x0F12,  0x00C8},   //#SARR_usDualGammaLutRGBOutdoor[1][5] 00C8                    
2489     {0x0F12,  0x0113},   //#SARR_usDualGammaLutRGBOutdoor[1][6] 0113                    
2490     {0x0F12,  0x0132},   //#SARR_usDualGammaLutRGBOutdoor[1][7] 0132                    
2491     {0x0F12,  0x014C},   //#SARR_usDualGammaLutRGBOutdoor[1][8] 014C                    
2492     {0x0F12,  0x0179},   //#SARR_usDualGammaLutRGBOutdoor[1][9] 0179                    
2493     {0x0F12,  0x01A4},   //#SARR_usDualGammaLutRGBOutdoor[1][10]        01A4            
2494     {0x0F12,  0x01CD},   //#SARR_usDualGammaLutRGBOutdoor[1][11]        01CD            
2495     {0x0F12,  0x01F4},   //#SARR_usDualGammaLutRGBOutdoor[1][12]        01F4            
2496     {0x0F12,  0x0239},   //#SARR_usDualGammaLutRGBOutdoor[1][13]        0239            
2497     {0x0F12,  0x0278},   //#SARR_usDualGammaLutRGBOutdoor[1][14]        0278            
2498     {0x0F12,  0x02E0},   //#SARR_usDualGammaLutRGBOutdoor[1][15]        02E0            
2499     {0x0F12,  0x0333},   //#SARR_usDualGammaLutRGBOutdoor[1][16]        0333            
2500     {0x0F12,  0x037B},   //#SARR_usDualGammaLutRGBOutdoor[1][17]        037B            
2501     {0x0F12,  0x03BF},   //#SARR_usDualGammaLutRGBOutdoor[1][18]        03BF            
2502     {0x0F12,  0x03FF},   //#SARR_usDualGammaLutRGBOutdoor[1][19]        03FF            
2503     {0x0F12,  0x0000},   //#SARR_usDualGammaLutRGBOutdoor[2][0] 0000                    
2504     {0x0F12,  0x0008},   //#SARR_usDualGammaLutRGBOutdoor[2][1] 0008                    
2505     {0x0F12,  0x0013},   //#SARR_usDualGammaLutRGBOutdoor[2][2] 0013                    
2506     {0x0F12,  0x002C},   //#SARR_usDualGammaLutRGBOutdoor[2][3] 002C                    
2507     {0x0F12,  0x0061},   //#SARR_usDualGammaLutRGBOutdoor[2][4] 0061                    
2508     {0x0F12,  0x00C8},   //#SARR_usDualGammaLutRGBOutdoor[2][5] 00C8                    
2509     {0x0F12,  0x0113},   //#SARR_usDualGammaLutRGBOutdoor[2][6] 0113                    
2510     {0x0F12,  0x0132},   //#SARR_usDualGammaLutRGBOutdoor[2][7] 0132                    
2511     {0x0F12,  0x014C},   //#SARR_usDualGammaLutRGBOutdoor[2][8] 014C                    
2512     {0x0F12,  0x0179},   //#SARR_usDualGammaLutRGBOutdoor[2][9] 0179                    
2513     {0x0F12,  0x01A4},   //#SARR_usDualGammaLutRGBOutdoor[2][10]        01A4            
2514     {0x0F12,  0x01CD},   //#SARR_usDualGammaLutRGBOutdoor[2][11]        01CD            
2515     {0x0F12,  0x01F4},   //#SARR_usDualGammaLutRGBOutdoor[2][12]        01F4            
2516     {0x0F12,  0x0239},   //#SARR_usDualGammaLutRGBOutdoor[2][13]        0239            
2517     {0x0F12,  0x0278},   //#SARR_usDualGammaLutRGBOutdoor[2][14]        0278            
2518     {0x0F12,  0x02E0},   //#SARR_usDualGammaLutRGBOutdoor[2][15]        02E0            
2519     {0x0F12,  0x0333},   //#SARR_usDualGammaLutRGBOutdoor[2][16]        0333            
2520     {0x0F12,  0x037B},   //#SARR_usDualGammaLutRGBOutdoor[2][17]        037B            
2521     {0x0F12,  0x03BF},   //#SARR_usDualGammaLutRGBOutdoor[2][18]        03BF            
2522     {0x0F12,  0x03FF},   //#SARR_usDualGammaLutRGBOutdoor[2][19]        03FF            
2523
2524     //============================================================
2525     //CCM
2526     //============================================================ 
2527     {0x002A,  0x06A6},
2528     {0x0F12,  0x00C0},          //SARR_AwbCcmCord[0]                               
2529     {0x0F12,  0x00F8},          //SARR_AwbCcmCord[1]                               
2530     {0x0F12,  0x0112},          //SARR_AwbCcmCord[2]                               
2531     {0x0F12,  0x014A},          //SARR_AwbCcmCord[3]                               
2532     {0x0F12,  0x0156},          //SARR_AwbCcmCord[4]                               
2533     {0x0F12,  0x017F},          //SARR_AwbCcmCord[5]    
2534
2535     //  param_start     TVAR_wbt_pBaseCcms 
2536     // Horizon
2537     {0x002A,    0x33A4},
2538     {0x0F12,    0x01C3},//02D5  //TVAR_wbt_pBaseCcms[0]
2539     {0x0F12,    0xFF89},//FF53  //TVAR_wbt_pBaseCcms[1]
2540     {0x0F12,    0xFFE5},//FF83  //TVAR_wbt_pBaseCcms[2]
2541     {0x0F12,    0xFF26},//FEE9  //TVAR_wbt_pBaseCcms[3]
2542     {0x0F12,    0x028E},//01A2  //TVAR_wbt_pBaseCcms[4]
2543     {0x0F12,    0xFF80},//FDFE  //TVAR_wbt_pBaseCcms[5]
2544     {0x0F12,    0x0002},//FFFC  //TVAR_wbt_pBaseCcms[6]
2545     {0x0F12,    0xFFA8},//FF5F  //TVAR_wbt_pBaseCcms[7]
2546     {0x0F12,    0x01F0},//02AD  //TVAR_wbt_pBaseCcms[8]
2547     {0x0F12,    0x0125},//0125  //TVAR_wbt_pBaseCcms[9]
2548     {0x0F12,    0x0119},//0119  //TVAR_wbt_pBaseCcms[10]
2549     {0x0F12,    0xFE5A},//FE5A  //TVAR_wbt_pBaseCcms[11]
2550     {0x0F12,    0x0179},//00D9  //TVAR_wbt_pBaseCcms[12]
2551     {0x0F12,    0xFF8A},//FF26  //TVAR_wbt_pBaseCcms[13]
2552     {0x0F12,    0x0180},//013C  //TVAR_wbt_pBaseCcms[14]
2553     {0x0F12,    0xFEC2},//FEC0  //TVAR_wbt_pBaseCcms[15]
2554     {0x0F12,    0x0176},//01F3  //TVAR_wbt_pBaseCcms[16]
2555     {0x0F12,    0x0094},//0109  //TVAR_wbt_pBaseCcms[17] 
2556     //inca                                       
2557     {0x0F12,    0x01C3},//022B  //TVAR_wbt_pBaseCcms[18]
2558     {0x0F12,    0xFF89},//FF73  //TVAR_wbt_pBaseCcms[19]
2559     {0x0F12,    0xFFE5},//FFC3  //TVAR_wbt_pBaseCcms[20]
2560     {0x0F12,    0xFF26},//FEED  //TVAR_wbt_pBaseCcms[21]
2561     {0x0F12,    0x028E},//01B9  //TVAR_wbt_pBaseCcms[22]
2562     {0x0F12,    0xFF80},//FF0D  //TVAR_wbt_pBaseCcms[23]
2563     {0x0F12,    0x0002},//FFE7  //TVAR_wbt_pBaseCcms[24]
2564     {0x0F12,    0xFFA8},//FFD3  //TVAR_wbt_pBaseCcms[25]
2565     {0x0F12,    0x01F0},//022F  //TVAR_wbt_pBaseCcms[26]
2566     {0x0F12,    0x0125},//0118  //TVAR_wbt_pBaseCcms[27]
2567     {0x0F12,    0x0119},//012C  //TVAR_wbt_pBaseCcms[28]
2568     {0x0F12,    0xFE5A},//FED0  //TVAR_wbt_pBaseCcms[29]
2569     {0x0F12,    0x0179},//0212  //TVAR_wbt_pBaseCcms[30]
2570     {0x0F12,    0xFF8A},//FF46  //TVAR_wbt_pBaseCcms[31]
2571     {0x0F12,    0x0180},//01F2  //TVAR_wbt_pBaseCcms[32]
2572     {0x0F12,    0xFEC2},//FED4  //TVAR_wbt_pBaseCcms[33]
2573     {0x0F12,    0x0176},//018C  //TVAR_wbt_pBaseCcms[34]
2574     {0x0F12,    0x0094},//013C  //TVAR_wbt_pBaseCcms[35]
2575     //WW
2576     {0x0F12,    0x01CA},//0121  //TVAR_wbt_pBaseCcms[36]
2577     {0x0F12,    0xFF89},//FF8D  //TVAR_wbt_pBaseCcms[37]
2578     {0x0F12,    0xFFE0},//FFA7  //TVAR_wbt_pBaseCcms[38]
2579     {0x0F12,    0xFF26},//FF3D  //TVAR_wbt_pBaseCcms[39]
2580     {0x0F12,    0x028E},//02D0  //TVAR_wbt_pBaseCcms[40]
2581     {0x0F12,    0xFF80},//FE31  //TVAR_wbt_pBaseCcms[41]
2582     {0x0F12,    0x0020},//0016  //TVAR_wbt_pBaseCcms[42]
2583     {0x0F12,    0xFFF8},//003B  //TVAR_wbt_pBaseCcms[43]
2584     {0x0F12,    0x01E0},//02E1  //TVAR_wbt_pBaseCcms[44]
2585     {0x0F12,    0x0120},//0175  //TVAR_wbt_pBaseCcms[45]
2586     {0x0F12,    0x00FA},//009C  //TVAR_wbt_pBaseCcms[46]
2587     {0x0F12,    0xFF12},//FE3A  //TVAR_wbt_pBaseCcms[47]
2588     {0x0F12,    0x0179},//0189  //TVAR_wbt_pBaseCcms[48]
2589     {0x0F12,    0xFF8A},//FF6A  //TVAR_wbt_pBaseCcms[49]
2590     {0x0F12,    0x0180},//0298  //TVAR_wbt_pBaseCcms[50]
2591     {0x0F12,    0xFEC2},//FF14  //TVAR_wbt_pBaseCcms[51]
2592     {0x0F12,    0x0176},//01BD  //TVAR_wbt_pBaseCcms[52]
2593     {0x0F12,    0x0094},//00FB  //TVAR_wbt_pBaseCcms[53]
2594     //CWF                                       
2595     {0x0F12,    0x01CA},//018A//0262    //TVAR_wbt_pBaseCcms[54]
2596     {0x0F12,    0xFF89},//FFC9//FFAB    //TVAR_wbt_pBaseCcms[55]
2597     {0x0F12,    0xFFE0},//0005//FFFB    //TVAR_wbt_pBaseCcms[56]
2598     {0x0F12,    0xFF26},//FFC1  //TVAR_wbt_pBaseCcms[57]
2599     {0x0F12,    0x028E},//0292  //TVAR_wbt_pBaseCcms[58]
2600     {0x0F12,    0xFF80},//FF81  //TVAR_wbt_pBaseCcms[59]
2601     {0x0F12,    0x0020},//0069  //TVAR_wbt_pBaseCcms[60]
2602     {0x0F12,    0xFFF8},//0057  //TVAR_wbt_pBaseCcms[61]
2603     {0x0F12,    0x01E0},//0296  //TVAR_wbt_pBaseCcms[62]
2604     {0x0F12,    0x0120},//00FF//015F    //TVAR_wbt_pBaseCcms[63]
2605     {0x0F12,    0x00FA},//00E2//0112    //TVAR_wbt_pBaseCcms[64]
2606     {0x0F12,    0xFF12},//FF4D//FF17    //TVAR_wbt_pBaseCcms[65]
2607     {0x0F12,    0x0179},//024E  //TVAR_wbt_pBaseCcms[66]
2608     {0x0F12,    0xFF8A},//0001  //TVAR_wbt_pBaseCcms[67]
2609     {0x0F12,    0x0180},//0276  //TVAR_wbt_pBaseCcms[68]
2610     {0x0F12,    0xFEC2},//FEE2  //TVAR_wbt_pBaseCcms[69]
2611     {0x0F12,    0x0176},//0236  //TVAR_wbt_pBaseCcms[70]
2612     {0x0F12,    0x0094},//014A  //TVAR_wbt_pBaseCcms[71] 
2613     //D50
2614     //BEGIN: DTS2012071201781 modify by huyouhua at 2012-7-24 for D65 Sat too small
2615     //{0x0F12,  0x018A},//01C5  //TVAR_wbt_pBaseCcms[72]
2616     //{0x0F12,  0xFFC9},//FFA8  //TVAR_wbt_pBaseCcms[73]
2617     //{0x0F12,  0x0005},//FFBA  //TVAR_wbt_pBaseCcms[74]
2618     {0x0F12,    0x01A9},//01C5  //TVAR_wbt_pBaseCcms[72]
2619     {0x0F12,    0xFFB6},//FFA8  //TVAR_wbt_pBaseCcms[73]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2620     {0x0F12,    0xFFF9},//FFBA  //TVAR_wbt_pBaseCcms[74]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2621     //END: DTS2012071201781 modify by huyouhua at 2012-7-24 for D65 Sat too small
2622     {0x0F12,    0xFF56},//FF06  //TVAR_wbt_pBaseCcms[75]
2623     {0x0F12,    0x0230},//0258  //TVAR_wbt_pBaseCcms[76]
2624     {0x0F12,    0xFFA0},//FF52  //TVAR_wbt_pBaseCcms[77]
2625     //BEGIN: DTS2012071201781 modify by huyouhua at 2012-7-24 for D65 Sat too small
2626     //{0x0F12,  0x0020},//0036  //TVAR_wbt_pBaseCcms[78]
2627     //{0x0F12,  0xFFF8},//FFFA  //TVAR_wbt_pBaseCcms[79]
2628     //{0x0F12,  0x01E0},//01D7  //TVAR_wbt_pBaseCcms[80]
2629     //{0x0F12,  0x00FF},//00DE  //TVAR_wbt_pBaseCcms[81]
2630     //{0x0F12,  0x00E2},//013B  //TVAR_wbt_pBaseCcms[82]
2631     //{0x0F12,  0xFF4D},//FF30  //TVAR_wbt_pBaseCcms[83]
2632     {0x0F12,    0x000E},//0036  //TVAR_wbt_pBaseCcms[78]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2633     {0x0F12,    0xFFE0},//FFFA  //TVAR_wbt_pBaseCcms[79]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2634     {0x0F12,    0x020A},//01D7  //TVAR_wbt_pBaseCcms[80]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2635     {0x0F12,    0x010C},//00DE  //TVAR_wbt_pBaseCcms[81]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2636     {0x0F12,    0x00EC},//013B  //TVAR_wbt_pBaseCcms[82]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2637     {0x0F12,    0xFF36},//FF30  //TVAR_wbt_pBaseCcms[83]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2638     //END: DTS2012071201781 modify by huyouhua at 2012-7-24 for D65 Sat too small
2639     {0x0F12,    0x0179},//0168  //TVAR_wbt_pBaseCcms[84]
2640     {0x0F12,    0xFF8A},//FF6F  //TVAR_wbt_pBaseCcms[85]
2641     {0x0F12,    0x0180},//0164  //TVAR_wbt_pBaseCcms[86]
2642     {0x0F12,    0xFEC2},//FEDB  //TVAR_wbt_pBaseCcms[87]
2643     {0x0F12,    0x0176},//0195  //TVAR_wbt_pBaseCcms[88]
2644     {0x0F12,    0x0094},//00E7  //TVAR_wbt_pBaseCcms[89]
2645     //D65
2646     //BEGIN: DTS2012071201781 modify by huyouhua at 2012-7-24 for D65 Sat too small
2647     //{0x0F12,  0x018A},//019E  //TVAR_wbt_pBaseCcms[90]
2648     //{0x0F12,  0xFFC9},//FF8A  //TVAR_wbt_pBaseCcms[91]
2649     //{0x0F12,  0x0005},//FFCE  //TVAR_wbt_pBaseCcms[92]
2650     {0x0F12,    0x01A9},//019E  //TVAR_wbt_pBaseCcms[90]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2651     {0x0F12,    0xFFB6},//FF8A  //TVAR_wbt_pBaseCcms[91]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2652     {0x0F12,    0xFFF9},//FFCE  //TVAR_wbt_pBaseCcms[92]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2653     //END: DTS2012071201781 modify by huyouhua at 2012-7-24 for D65 Sat too small
2654     {0x0F12,    0xFF56},//FF06  //TVAR_wbt_pBaseCcms[93]
2655     {0x0F12,    0x0230},//0258  //TVAR_wbt_pBaseCcms[94]
2656     {0x0F12,    0xFFA0},//FF52  //TVAR_wbt_pBaseCcms[95]
2657     //BEGIN: DTS2012071201781 modify by huyouhua at 2012-7-24 for D65 Sat too small
2658     //{0x0F12,  0x0020},//0036  //TVAR_wbt_pBaseCcms[96]
2659     //{0x0F12,  0xFFF8},//FFFA  //TVAR_wbt_pBaseCcms[97]
2660     //{0x0F12,  0x01E0},//01D7  //TVAR_wbt_pBaseCcms[98]
2661     //{0x0F12,  0x00FF},//00DE  //TVAR_wbt_pBaseCcms[99]
2662     //{0x0F12,  0x00E2},//013B  //TVAR_wbt_pBaseCcms[100]
2663     //{0x0F12,  0xFF4D},//FF30  //TVAR_wbt_pBaseCcms[101]
2664     {0x0F12,    0x000E},//0036  //TVAR_wbt_pBaseCcms[96]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2665     {0x0F12,    0xFFE0},//FFFA  //TVAR_wbt_pBaseCcms[97]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2666     {0x0F12,    0x020A},//01D7  //TVAR_wbt_pBaseCcms[98]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2667     {0x0F12,    0x010C},//00DE  //TVAR_wbt_pBaseCcms[99]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
2668     {0x0F12,    0x00EC},//013B  //TVAR_wbt_pBaseCcms[100]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
2669     {0x0F12,    0xFF36},//FF30  //TVAR_wbt_pBaseCcms[101]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
2670     //END: DTS2012071201781 modify by huyouhua at 2012-7-24 for D65 Sat too small
2671     {0x0F12,    0x0179},//0168  //TVAR_wbt_pBaseCcms[102]
2672     {0x0F12,    0xFF8A},//FF6F  //TVAR_wbt_pBaseCcms[103]
2673     {0x0F12,    0x0180},//0164  //TVAR_wbt_pBaseCcms[104]
2674     {0x0F12,    0xFEC2},//FEDB  //TVAR_wbt_pBaseCcms[105]
2675     {0x0F12,    0x0176},//0195  //TVAR_wbt_pBaseCcms[106]
2676     {0x0F12,    0x0094},//00E7  //TVAR_wbt_pBaseCcms[107]
2677     //  param_end       TVAR_wbt_pBaseCcms
2678     //  param_start     TVAR_wbt_pOutdoorCcm  
2679     {0x002A,    0x3380},
2680     {0x0F12,    0x018A},//01C7  //TVAR_wbt_pOutdoorCcm[0]
2681     {0x0F12,    0xFFC9},//FFA0  //TVAR_wbt_pOutdoorCcm[1]
2682     {0x0F12,    0x0005},//FFE8  //TVAR_wbt_pOutdoorCcm[2]
2683     {0x0F12,    0xFF26},//FF11  //TVAR_wbt_pOutdoorCcm[3]
2684     {0x0F12,    0x028E},//01F4  //TVAR_wbt_pOutdoorCcm[4]
2685     {0x0F12,    0xFF80},//FF38  //TVAR_wbt_pOutdoorCcm[5]
2686     {0x0F12,    0x0020},//FFDF  //TVAR_wbt_pOutdoorCcm[6]
2687     {0x0F12,    0xFFF8},//FFD3  //TVAR_wbt_pOutdoorCcm[7]
2688     {0x0F12,    0x01E0},//01CC  //TVAR_wbt_pOutdoorCcm[8]
2689     {0x0F12,    0x00FF},//011D  //TVAR_wbt_pOutdoorCcm[9]
2690     {0x0F12,    0x00E2},//0157  //TVAR_wbt_pOutdoorCcm[10]
2691     {0x0F12,    0xFF4D},//FF16  //TVAR_wbt_pOutdoorCcm[11]
2692     {0x0F12,    0x0179},//01DA  //TVAR_wbt_pOutdoorCcm[12]
2693     {0x0F12,    0xFF8A},//FF3A  //TVAR_wbt_pOutdoorCcm[13]
2694     {0x0F12,    0x0180},//01B6  //TVAR_wbt_pOutdoorCcm[14]
2695     {0x0F12,    0xFEC2},//FF2A  //TVAR_wbt_pOutdoorCcm[15]
2696     {0x0F12,    0x0176},//0176  //TVAR_wbt_pOutdoorCcm[16]
2697     {0x0F12,    0x0094},//0114  //TVAR_wbt_pOutdoorCcm[17]
2698     //  param_end       TVAR_wbt_pOutdoorCcm
2699     //============================================================
2700     //AFIT
2701     //============================================================
2702     //  param_start     afit_uNoiseIndInDoor
2703     //============================================================  
2704     {0x002A,    0x0764},
2705     {0x0F12,    0x0041},        //afit_uNoiseIndInDoor[0]
2706     {0x0F12,    0x00A5},        //afit_uNoiseIndInDoor[1]
2707     {0x0F12,    0x016B},        //afit_uNoiseIndInDoor[2]
2708     {0x0F12,    0x0226},        //afit_uNoiseIndInDoor[3]
2709     {0x0F12,    0x02EA},        //afit_uNoiseIndInDoor[4]
2710     //  param_end       afit_uNoiseIndInDoor
2711     //  param_start     TVAR_afit_pBaseVals
2712     {0x002A,    0x07C4},
2713     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[0]
2714     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[1]
2715     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[2]
2716     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[3]
2717     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[4]
2718     {0x0F12,    0x001E},        //TVAR_afit_pBaseVals[5]
2719     {0x0F12,    0x03FF},        //TVAR_afit_pBaseVals[6]
2720     {0x0F12,    0x009C},        //TVAR_afit_pBaseVals[7]
2721     {0x0F12,    0x017C},        //TVAR_afit_pBaseVals[8]
2722     {0x0F12,    0x03FF},        //TVAR_afit_pBaseVals[9]
2723     {0x0F12,    0x000C},        //TVAR_afit_pBaseVals[10]
2724     {0x0F12,    0x0010},        //TVAR_afit_pBaseVals[11]
2725     {0x0F12,    0x0104},        //TVAR_afit_pBaseVals[12]
2726     {0x0F12,    0x03E8},        //TVAR_afit_pBaseVals[13]
2727     {0x0F12,    0x0023},        //TVAR_afit_pBaseVals[14]
2728     {0x0F12,    0x012C},        //TVAR_afit_pBaseVals[15]
2729     {0x0F12,    0x0070},        //TVAR_afit_pBaseVals[16]
2730     {0x0F12,    0x0004},        //TVAR_afit_pBaseVals[17]
2731     {0x0F12,    0x0004},        //TVAR_afit_pBaseVals[18]
2732     {0x0F12,    0x01AA},        //TVAR_afit_pBaseVals[19]
2733     {0x0F12,    0x0064},        //TVAR_afit_pBaseVals[20]
2734     {0x0F12,    0x0064},        //TVAR_afit_pBaseVals[21]
2735     {0x0F12,    0x000A},        //TVAR_afit_pBaseVals[22]
2736     {0x0F12,    0x000A},        //TVAR_afit_pBaseVals[23]
2737     {0x0F12,    0x002A},        //TVAR_afit_pBaseVals[24]
2738     {0x0F12,    0x0024},        //TVAR_afit_pBaseVals[25]
2739     {0x0F12,    0x002A},        //TVAR_afit_pBaseVals[26]
2740     {0x0F12,    0x0024},        //TVAR_afit_pBaseVals[27]
2741     {0x0F12,    0x002A},        //TVAR_afit_pBaseVals[28]
2742     {0x0F12,    0x0024},        //TVAR_afit_pBaseVals[29]
2743     {0x0F12,    0x0A0F},        //TVAR_afit_pBaseVals[30]
2744     {0x0F12,    0x1701},        //TVAR_afit_pBaseVals[31]
2745     {0x0F12,    0x0229},        //TVAR_afit_pBaseVals[32]
2746     {0x0F12,    0x1403},        //TVAR_afit_pBaseVals[33]
2747     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[34]
2748     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[35]
2749     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[36]
2750     {0x0F12,    0x00FF},        //TVAR_afit_pBaseVals[37]
2751     {0x0F12,    0x053B},        //TVAR_afit_pBaseVals[38]
2752     {0x0F12,    0x0505},        //TVAR_afit_pBaseVals[39]
2753     {0x0F12,    0x0301},        //TVAR_afit_pBaseVals[40]
2754     {0x0F12,    0x8007},        //TVAR_afit_pBaseVals[41]
2755     {0x0F12,    0x051E},        //TVAR_afit_pBaseVals[42]
2756     {0x0F12,    0x0A1E},        //TVAR_afit_pBaseVals[43]
2757     {0x0F12,    0x0F0F},        //TVAR_afit_pBaseVals[44]
2758     {0x0F12,    0x0A05},        //TVAR_afit_pBaseVals[45]
2759     {0x0F12,    0x103C},        //TVAR_afit_pBaseVals[46]
2760     {0x0F12,    0x0A28},        //TVAR_afit_pBaseVals[47]
2761     {0x0F12,    0x0002},        //TVAR_afit_pBaseVals[48]
2762     {0x0F12,    0x00FF},        //TVAR_afit_pBaseVals[49]
2763     {0x0F12,    0x1002},        //TVAR_afit_pBaseVals[50]
2764     {0x0F12,    0x001D},        //TVAR_afit_pBaseVals[51]
2765     {0x0F12,    0x0900},        //TVAR_afit_pBaseVals[52]
2766     {0x0F12,    0x0600},        //TVAR_afit_pBaseVals[53]
2767     {0x0F12,    0x0504},        //TVAR_afit_pBaseVals[54]
2768     {0x0F12,    0x0305},        //TVAR_afit_pBaseVals[55]
2769     {0x0F12,    0x5A03},        //TVAR_afit_pBaseVals[56]
2770     {0x0F12,    0x006E},        //TVAR_afit_pBaseVals[57]
2771     {0x0F12,    0x0A78},        //TVAR_afit_pBaseVals[58]
2772     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[59]
2773     {0x0F12,    0x3232},        //TVAR_afit_pBaseVals[60]
2774     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[61]
2775     {0x0F12,    0x5001},        //TVAR_afit_pBaseVals[62]
2776     {0x0F12,    0x7850},        //TVAR_afit_pBaseVals[63]
2777     {0x0F12,    0x2878},        //TVAR_afit_pBaseVals[64]
2778     {0x0F12,    0x0A00},        //TVAR_afit_pBaseVals[65]
2779     {0x0F12,    0x1403},        //TVAR_afit_pBaseVals[66]
2780     {0x0F12,    0x1E07},        //TVAR_afit_pBaseVals[67]
2781     {0x0F12,    0x070A},        //TVAR_afit_pBaseVals[68]
2782     {0x0F12,    0x32FF},        //TVAR_afit_pBaseVals[69]
2783     {0x0F12,    0x5004},        //TVAR_afit_pBaseVals[70]
2784     {0x0F12,    0x0F40},        //TVAR_afit_pBaseVals[71]
2785     {0x0F12,    0x400F},        //TVAR_afit_pBaseVals[72]
2786     {0x0F12,    0x0204},        //TVAR_afit_pBaseVals[73]
2787     {0x0F12,    0x3203},        //TVAR_afit_pBaseVals[74]
2788     {0x0F12,    0x0132},        //TVAR_afit_pBaseVals[75]
2789     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[76]
2790     {0x0F12,    0x5050},        //TVAR_afit_pBaseVals[77]
2791     {0x0F12,    0x7878},        //TVAR_afit_pBaseVals[78]
2792     {0x0F12,    0x0028},        //TVAR_afit_pBaseVals[79]
2793     {0x0F12,    0x030A},        //TVAR_afit_pBaseVals[80]
2794     {0x0F12,    0x0714},        //TVAR_afit_pBaseVals[81]
2795     {0x0F12,    0x0A1E},        //TVAR_afit_pBaseVals[82]
2796     {0x0F12,    0xFF07},        //TVAR_afit_pBaseVals[83]
2797     {0x0F12,    0x0432},        //TVAR_afit_pBaseVals[84]
2798     {0x0F12,    0x4050},        //TVAR_afit_pBaseVals[85]
2799     {0x0F12,    0x0F0F},        //TVAR_afit_pBaseVals[86]
2800     {0x0F12,    0x0440},        //TVAR_afit_pBaseVals[87]
2801     {0x0F12,    0x0302},        //TVAR_afit_pBaseVals[88]
2802     {0x0F12,    0x3232},        //TVAR_afit_pBaseVals[89]
2803     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[90]
2804     {0x0F12,    0x5001},        //TVAR_afit_pBaseVals[91]
2805     {0x0F12,    0x7850},        //TVAR_afit_pBaseVals[92]
2806     {0x0F12,    0x2878},        //TVAR_afit_pBaseVals[93]
2807     {0x0F12,    0x0A00},        //TVAR_afit_pBaseVals[94]
2808     {0x0F12,    0x1403},        //TVAR_afit_pBaseVals[95]
2809     {0x0F12,    0x1E07},        //TVAR_afit_pBaseVals[96]
2810     {0x0F12,    0x070A},        //TVAR_afit_pBaseVals[97]
2811     {0x0F12,    0x32FF},        //TVAR_afit_pBaseVals[98]
2812     {0x0F12,    0x5004},        //TVAR_afit_pBaseVals[99]
2813     {0x0F12,    0x0F40},        //TVAR_afit_pBaseVals[100]
2814     {0x0F12,    0x400F},        //TVAR_afit_pBaseVals[101]
2815     {0x0F12,    0x0204},        //TVAR_afit_pBaseVals[102]
2816     {0x0F12,    0x0003},        //TVAR_afit_pBaseVals[103]
2817     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[104]
2818     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[105]
2819     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[106]
2820     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[107]
2821     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[108]
2822     {0x0F12,    0x001E},        //TVAR_afit_pBaseVals[109]
2823     {0x0F12,    0x03FF},        //TVAR_afit_pBaseVals[110]
2824     {0x0F12,    0x009C},        //TVAR_afit_pBaseVals[111]
2825     {0x0F12,    0x017C},        //TVAR_afit_pBaseVals[112]
2826     {0x0F12,    0x03FF},        //TVAR_afit_pBaseVals[113]
2827     {0x0F12,    0x000C},        //TVAR_afit_pBaseVals[114]
2828     {0x0F12,    0x0010},        //TVAR_afit_pBaseVals[115]
2829     {0x0F12,    0x0104},        //TVAR_afit_pBaseVals[116]
2830     {0x0F12,    0x03E8},        //TVAR_afit_pBaseVals[117]
2831     {0x0F12,    0x0023},        //TVAR_afit_pBaseVals[118]
2832     {0x0F12,    0x012C},        //TVAR_afit_pBaseVals[119]
2833     {0x0F12,    0x0070},        //TVAR_afit_pBaseVals[120]
2834     {0x0F12,    0x0004},        //TVAR_afit_pBaseVals[121]
2835     {0x0F12,    0x0004},        //TVAR_afit_pBaseVals[122]
2836     {0x0F12,    0x01AA},        //TVAR_afit_pBaseVals[123]
2837     {0x0F12,    0x001E},        //TVAR_afit_pBaseVals[124]
2838     {0x0F12,    0x001E},        //TVAR_afit_pBaseVals[125]
2839     {0x0F12,    0x0005},        //TVAR_afit_pBaseVals[126]
2840     {0x0F12,    0x0005},        //TVAR_afit_pBaseVals[127]
2841     {0x0F12,    0x002A},        //TVAR_afit_pBaseVals[128]
2842     {0x0F12,    0x0024},        //TVAR_afit_pBaseVals[129]
2843     {0x0F12,    0x002A},        //TVAR_afit_pBaseVals[130]
2844     {0x0F12,    0x0024},        //TVAR_afit_pBaseVals[131]
2845     {0x0F12,    0x002A},        //TVAR_afit_pBaseVals[132]
2846     {0x0F12,    0x0024},        //TVAR_afit_pBaseVals[133]
2847     {0x0F12,    0x0A0F},        //TVAR_afit_pBaseVals[134]
2848     {0x0F12,    0x1701},        //TVAR_afit_pBaseVals[135]
2849     {0x0F12,    0x0229},        //TVAR_afit_pBaseVals[136]
2850     {0x0F12,    0x1403},        //TVAR_afit_pBaseVals[137]
2851     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[138]
2852     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[139]
2853     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[140]
2854     {0x0F12,    0x00FF},        //TVAR_afit_pBaseVals[141]
2855     {0x0F12,    0x053B},        //TVAR_afit_pBaseVals[142]
2856     {0x0F12,    0x0505},        //TVAR_afit_pBaseVals[143]
2857     {0x0F12,    0x0301},        //TVAR_afit_pBaseVals[144]
2858     {0x0F12,    0x8007},        //TVAR_afit_pBaseVals[145]
2859     {0x0F12,    0x051E},        //TVAR_afit_pBaseVals[146]
2860     {0x0F12,    0x0A1E},        //TVAR_afit_pBaseVals[147]
2861     {0x0F12,    0x0F0F},        //TVAR_afit_pBaseVals[148]
2862     {0x0F12,    0x0A04},        //TVAR_afit_pBaseVals[149]
2863     {0x0F12,    0x103C},        //TVAR_afit_pBaseVals[150]
2864     {0x0F12,    0x0A28},        //TVAR_afit_pBaseVals[151]
2865     {0x0F12,    0x0002},        //TVAR_afit_pBaseVals[152]
2866     {0x0F12,    0x00FF},        //TVAR_afit_pBaseVals[153]
2867     {0x0F12,    0x1002},        //TVAR_afit_pBaseVals[154]
2868     {0x0F12,    0x001D},        //TVAR_afit_pBaseVals[155]
2869     {0x0F12,    0x0900},        //TVAR_afit_pBaseVals[156]
2870     {0x0F12,    0x0600},        //TVAR_afit_pBaseVals[157]
2871     {0x0F12,    0x0504},        //TVAR_afit_pBaseVals[158]
2872     {0x0F12,    0x0305},        //TVAR_afit_pBaseVals[159]
2873     {0x0F12,    0x5F03},        //TVAR_afit_pBaseVals[160]
2874     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[161]
2875     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[162]
2876     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[163]
2877     {0x0F12,    0x3232},        //TVAR_afit_pBaseVals[164]
2878     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[165]
2879     {0x0F12,    0x2A01},        //TVAR_afit_pBaseVals[166]
2880     {0x0F12,    0x3232},        //TVAR_afit_pBaseVals[167]
2881     {0x0F12,    0x2830},        //TVAR_afit_pBaseVals[168]
2882     {0x0F12,    0x0A00},        //TVAR_afit_pBaseVals[169]
2883     {0x0F12,    0x1403},        //TVAR_afit_pBaseVals[170]
2884     {0x0F12,    0x1E07},        //TVAR_afit_pBaseVals[171]
2885     {0x0F12,    0x070A},        //TVAR_afit_pBaseVals[172]
2886     {0x0F12,    0x32FF},        //TVAR_afit_pBaseVals[173]
2887     {0x0F12,    0x5004},        //TVAR_afit_pBaseVals[174]
2888     {0x0F12,    0x0F40},        //TVAR_afit_pBaseVals[175]
2889     {0x0F12,    0x400F},        //TVAR_afit_pBaseVals[176]
2890     {0x0F12,    0x0204},        //TVAR_afit_pBaseVals[177]
2891     {0x0F12,    0x3203},        //TVAR_afit_pBaseVals[178]
2892     {0x0F12,    0x0132},        //TVAR_afit_pBaseVals[179]
2893     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[180]
2894     {0x0F12,    0x262A},        //TVAR_afit_pBaseVals[181]
2895     {0x0F12,    0x3032},        //TVAR_afit_pBaseVals[182]
2896     {0x0F12,    0x0028},        //TVAR_afit_pBaseVals[183]
2897     {0x0F12,    0x030A},        //TVAR_afit_pBaseVals[184]
2898     {0x0F12,    0x0714},        //TVAR_afit_pBaseVals[185]
2899     {0x0F12,    0x0A1E},        //TVAR_afit_pBaseVals[186]
2900     {0x0F12,    0xFF07},        //TVAR_afit_pBaseVals[187]
2901     {0x0F12,    0x0432},        //TVAR_afit_pBaseVals[188]
2902     {0x0F12,    0x4050},        //TVAR_afit_pBaseVals[189]
2903     {0x0F12,    0x0F0F},        //TVAR_afit_pBaseVals[190]
2904     {0x0F12,    0x0440},        //TVAR_afit_pBaseVals[191]
2905     {0x0F12,    0x0302},        //TVAR_afit_pBaseVals[192]
2906     {0x0F12,    0x3232},        //TVAR_afit_pBaseVals[193]
2907     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[194]
2908     {0x0F12,    0x2A01},        //TVAR_afit_pBaseVals[195]
2909     {0x0F12,    0x3226},        //TVAR_afit_pBaseVals[196]
2910     {0x0F12,    0x2830},        //TVAR_afit_pBaseVals[197]
2911     {0x0F12,    0x0A00},        //TVAR_afit_pBaseVals[198]
2912     {0x0F12,    0x1403},        //TVAR_afit_pBaseVals[199]
2913     {0x0F12,    0x1E07},        //TVAR_afit_pBaseVals[200]
2914     {0x0F12,    0x070A},        //TVAR_afit_pBaseVals[201]
2915     {0x0F12,    0x32FF},        //TVAR_afit_pBaseVals[202]
2916     {0x0F12,    0x5004},        //TVAR_afit_pBaseVals[203]
2917     {0x0F12,    0x0F40},        //TVAR_afit_pBaseVals[204]
2918     {0x0F12,    0x400F},        //TVAR_afit_pBaseVals[205]
2919     {0x0F12,    0x0204},        //TVAR_afit_pBaseVals[206]
2920     {0x0F12,    0x0003},        //TVAR_afit_pBaseVals[207]
2921     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[208]
2922     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[209]
2923     {0x0F12,    0x000f},        //TVAR_afit_pBaseVals[210]//DTS2012071201781:modify by huyouhua at 2012-7-23
2924     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[211]
2925     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[212]
2926     {0x0F12,    0x001E},        //TVAR_afit_pBaseVals[213]
2927     {0x0F12,    0x03FF},        //TVAR_afit_pBaseVals[214]
2928     {0x0F12,    0x009C},        //TVAR_afit_pBaseVals[215]
2929     {0x0F12,    0x017C},        //TVAR_afit_pBaseVals[216]
2930     {0x0F12,    0x03FF},        //TVAR_afit_pBaseVals[217]
2931     {0x0F12,    0x000C},        //TVAR_afit_pBaseVals[218]
2932     {0x0F12,    0x0010},        //TVAR_afit_pBaseVals[219]
2933     {0x0F12,    0x012C},        //TVAR_afit_pBaseVals[220]
2934     {0x0F12,    0x03E8},        //TVAR_afit_pBaseVals[221]
2935     {0x0F12,    0x0041},        //TVAR_afit_pBaseVals[222]
2936     {0x0F12,    0x005A},        //TVAR_afit_pBaseVals[223]
2937     {0x0F12,    0x0070},        //TVAR_afit_pBaseVals[224]
2938     {0x0F12,    0x0004},        //TVAR_afit_pBaseVals[225]
2939     {0x0F12,    0x0004},        //TVAR_afit_pBaseVals[226]
2940     {0x0F12,    0x01AA},        //TVAR_afit_pBaseVals[227]
2941     {0x0F12,    0x001E},        //TVAR_afit_pBaseVals[228]
2942     {0x0F12,    0x001E},        //TVAR_afit_pBaseVals[229]
2943     {0x0F12,    0x000A},        //TVAR_afit_pBaseVals[230]
2944     {0x0F12,    0x000A},        //TVAR_afit_pBaseVals[231]
2945     {0x0F12,    0x0032},        //TVAR_afit_pBaseVals[232]
2946     {0x0F12,    0x0028},        //TVAR_afit_pBaseVals[233]
2947     {0x0F12,    0x0032},        //TVAR_afit_pBaseVals[234]
2948     {0x0F12,    0x0028},        //TVAR_afit_pBaseVals[235]
2949     {0x0F12,    0x0032},        //TVAR_afit_pBaseVals[236]
2950     {0x0F12,    0x0028},        //TVAR_afit_pBaseVals[237]
2951     {0x0F12,    0x0A0F},        //TVAR_afit_pBaseVals[238]
2952     {0x0F12,    0x1701},        //TVAR_afit_pBaseVals[239]
2953     {0x0F12,    0x0229},        //TVAR_afit_pBaseVals[240]
2954     {0x0F12,    0x1403},        //TVAR_afit_pBaseVals[241]
2955     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[242]
2956     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[243]
2957     {0x0F12,    0x0404},        //TVAR_afit_pBaseVals[244]
2958     {0x0F12,    0x00FF},        //TVAR_afit_pBaseVals[245]
2959     {0x0F12,    0x043B},        //TVAR_afit_pBaseVals[246]
2960     {0x0F12,    0x0505},        //TVAR_afit_pBaseVals[247]
2961     {0x0F12,    0x0301},        //TVAR_afit_pBaseVals[248]
2962     {0x0F12,    0x8007},        //TVAR_afit_pBaseVals[249]
2963     {0x0F12,    0x051E},        //TVAR_afit_pBaseVals[250]
2964     {0x0F12,    0x0A1E},        //TVAR_afit_pBaseVals[251]
2965     {0x0F12,    0x0F0F},        //TVAR_afit_pBaseVals[252]
2966     {0x0F12,    0x0A03},        //TVAR_afit_pBaseVals[253]
2967     {0x0F12,    0x0A3C},        //TVAR_afit_pBaseVals[254]
2968     {0x0F12,    0x0528},        //TVAR_afit_pBaseVals[255]
2969     {0x0F12,    0x0002},        //TVAR_afit_pBaseVals[256]
2970     {0x0F12,    0x00FF},        //TVAR_afit_pBaseVals[257]
2971     {0x0F12,    0x1002},        //TVAR_afit_pBaseVals[258]
2972     {0x0F12,    0x001D},        //TVAR_afit_pBaseVals[259]
2973     {0x0F12,    0x0900},        //TVAR_afit_pBaseVals[260]
2974     {0x0F12,    0x0600},        //TVAR_afit_pBaseVals[261]
2975     {0x0F12,    0x0504},        //TVAR_afit_pBaseVals[262]
2976     {0x0F12,    0x0305},        //TVAR_afit_pBaseVals[263]
2977     {0x0F12,    0x6902},        //TVAR_afit_pBaseVals[264]
2978     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[265]
2979     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[266]
2980     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[267]
2981     {0x0F12,    0x2D2D},        //TVAR_afit_pBaseVals[268]
2982     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[269]
2983     {0x0F12,    0x2001},        //TVAR_afit_pBaseVals[270]
2984     {0x0F12,    0x2026},        //TVAR_afit_pBaseVals[271]
2985     {0x0F12,    0x281E},        //TVAR_afit_pBaseVals[272]
2986     {0x0F12,    0x0A00},        //TVAR_afit_pBaseVals[273]
2987     {0x0F12,    0x0A03},        //TVAR_afit_pBaseVals[274]
2988     {0x0F12,    0x1E0A},        //TVAR_afit_pBaseVals[275]
2989     {0x0F12,    0x070A},        //TVAR_afit_pBaseVals[276]
2990     {0x0F12,    0x32FF},        //TVAR_afit_pBaseVals[277]
2991     {0x0F12,    0x5004},        //TVAR_afit_pBaseVals[278]
2992     {0x0F12,    0x0F40},        //TVAR_afit_pBaseVals[279]
2993     {0x0F12,    0x400F},        //TVAR_afit_pBaseVals[280]
2994     {0x0F12,    0x0204},        //TVAR_afit_pBaseVals[281]
2995     {0x0F12,    0x3203},        //TVAR_afit_pBaseVals[282]
2996     {0x0F12,    0x0132},        //TVAR_afit_pBaseVals[283]
2997     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[284]
2998     {0x0F12,    0x1C20},        //TVAR_afit_pBaseVals[285]
2999     {0x0F12,    0x1C1E},        //TVAR_afit_pBaseVals[286]
3000     {0x0F12,    0x0028},        //TVAR_afit_pBaseVals[287]
3001     {0x0F12,    0x030A},        //TVAR_afit_pBaseVals[288]
3002     {0x0F12,    0x0A0A},        //TVAR_afit_pBaseVals[289]
3003     {0x0F12,    0x0A1E},        //TVAR_afit_pBaseVals[290]
3004     {0x0F12,    0xFF07},        //TVAR_afit_pBaseVals[291]
3005     {0x0F12,    0x0432},        //TVAR_afit_pBaseVals[292]
3006     {0x0F12,    0x4050},        //TVAR_afit_pBaseVals[293]
3007     {0x0F12,    0x0F0F},        //TVAR_afit_pBaseVals[294]
3008     {0x0F12,    0x0440},        //TVAR_afit_pBaseVals[295]
3009     {0x0F12,    0x0302},        //TVAR_afit_pBaseVals[296]
3010     {0x0F12,    0x3232},        //TVAR_afit_pBaseVals[297]
3011     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[298]
3012     {0x0F12,    0x2001},        //TVAR_afit_pBaseVals[299]
3013     {0x0F12,    0x1E1C},        //TVAR_afit_pBaseVals[300]
3014     {0x0F12,    0x281C},        //TVAR_afit_pBaseVals[301]
3015     {0x0F12,    0x0A00},        //TVAR_afit_pBaseVals[302]
3016     {0x0F12,    0x0A03},        //TVAR_afit_pBaseVals[303]
3017     {0x0F12,    0x1E0A},        //TVAR_afit_pBaseVals[304]
3018     {0x0F12,    0x070A},        //TVAR_afit_pBaseVals[305]
3019     {0x0F12,    0x32FF},        //TVAR_afit_pBaseVals[306]
3020     {0x0F12,    0x5004},        //TVAR_afit_pBaseVals[307]
3021     {0x0F12,    0x0F40},        //TVAR_afit_pBaseVals[308]
3022     {0x0F12,    0x400F},        //TVAR_afit_pBaseVals[309]
3023     {0x0F12,    0x0204},        //TVAR_afit_pBaseVals[310]
3024     {0x0F12,    0x0003},        //TVAR_afit_pBaseVals[311]
3025     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[312]
3026     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[313]
3027     {0x0F12,    0x000f},        //TVAR_afit_pBaseVals[314]//DTS2012071201781:modify by huyouhua at 2012-7-23                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
3028     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[315]
3029     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[316]
3030     {0x0F12,    0x001E},        //TVAR_afit_pBaseVals[317]
3031     {0x0F12,    0x03FF},        //TVAR_afit_pBaseVals[318]
3032     {0x0F12,    0x009C},        //TVAR_afit_pBaseVals[319]
3033     {0x0F12,    0x017C},        //TVAR_afit_pBaseVals[320]
3034     {0x0F12,    0x03FF},        //TVAR_afit_pBaseVals[321]
3035     {0x0F12,    0x000C},        //TVAR_afit_pBaseVals[322]
3036     {0x0F12,    0x0010},        //TVAR_afit_pBaseVals[323]
3037     {0x0F12,    0x012C},        //TVAR_afit_pBaseVals[324]
3038     {0x0F12,    0x03E8},        //TVAR_afit_pBaseVals[325]
3039     {0x0F12,    0x0050},        //TVAR_afit_pBaseVals[326]
3040     {0x0F12,    0x00C8},        //TVAR_afit_pBaseVals[327]
3041     {0x0F12,    0x0070},        //TVAR_afit_pBaseVals[328]
3042     {0x0F12,    0x0004},        //TVAR_afit_pBaseVals[329]
3043     {0x0F12,    0x0004},        //TVAR_afit_pBaseVals[330]
3044     {0x0F12,    0x01AA},        //TVAR_afit_pBaseVals[331]
3045     {0x0F12,    0x0014},        //TVAR_afit_pBaseVals[332]
3046     {0x0F12,    0x0014},        //TVAR_afit_pBaseVals[333]
3047     {0x0F12,    0x000A},        //TVAR_afit_pBaseVals[334]
3048     {0x0F12,    0x000A},        //TVAR_afit_pBaseVals[335]
3049     {0x0F12,    0x0032},        //TVAR_afit_pBaseVals[336]
3050     {0x0F12,    0x0023},        //TVAR_afit_pBaseVals[337]
3051     {0x0F12,    0x0032},        //TVAR_afit_pBaseVals[338]
3052     {0x0F12,    0x0028},        //TVAR_afit_pBaseVals[339]
3053     {0x0F12,    0x0032},        //TVAR_afit_pBaseVals[340]
3054     {0x0F12,    0x0028},        //TVAR_afit_pBaseVals[341]
3055     {0x0F12,    0x0A0F},        //TVAR_afit_pBaseVals[342]
3056     {0x0F12,    0x1701},        //TVAR_afit_pBaseVals[343]
3057     {0x0F12,    0x0229},        //TVAR_afit_pBaseVals[344]
3058     {0x0F12,    0x1403},        //TVAR_afit_pBaseVals[345]
3059     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[346]
3060     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[347]
3061     {0x0F12,    0x0404},        //TVAR_afit_pBaseVals[348]
3062     {0x0F12,    0x00FF},        //TVAR_afit_pBaseVals[349]
3063     {0x0F12,    0x033B},        //TVAR_afit_pBaseVals[350]
3064     {0x0F12,    0x0505},        //TVAR_afit_pBaseVals[351]
3065     {0x0F12,    0x0301},        //TVAR_afit_pBaseVals[352]
3066     {0x0F12,    0x8007},        //TVAR_afit_pBaseVals[353]
3067     {0x0F12,    0x051E},        //TVAR_afit_pBaseVals[354]
3068     {0x0F12,    0x0A1E},        //TVAR_afit_pBaseVals[355]
3069     {0x0F12,    0x0F0F},        //TVAR_afit_pBaseVals[356]
3070     {0x0F12,    0x0A03},        //TVAR_afit_pBaseVals[357]
3071     {0x0F12,    0x0A3C},        //TVAR_afit_pBaseVals[358]
3072     {0x0F12,    0x0828},        //TVAR_afit_pBaseVals[359]
3073     {0x0F12,    0x0002},        //TVAR_afit_pBaseVals[360]
3074     {0x0F12,    0x00FF},        //TVAR_afit_pBaseVals[361]
3075     {0x0F12,    0x1002},        //TVAR_afit_pBaseVals[362]
3076     {0x0F12,    0x001D},        //TVAR_afit_pBaseVals[363]
3077     {0x0F12,    0x0900},        //TVAR_afit_pBaseVals[364]
3078     {0x0F12,    0x0600},        //TVAR_afit_pBaseVals[365]
3079     {0x0F12,    0x0504},        //TVAR_afit_pBaseVals[366]
3080     {0x0F12,    0x0305},        //TVAR_afit_pBaseVals[367]
3081     {0x0F12,    0x6F02},        //TVAR_afit_pBaseVals[368]
3082     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[369]
3083     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[370]
3084     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[371]
3085     {0x0F12,    0x323C},        //TVAR_afit_pBaseVals[372]
3086     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[373]
3087     {0x0F12,    0x1A01},        //TVAR_afit_pBaseVals[374]
3088     {0x0F12,    0x1A1E},        //TVAR_afit_pBaseVals[375]
3089     {0x0F12,    0x2818},        //TVAR_afit_pBaseVals[376]
3090     {0x0F12,    0x0A00},        //TVAR_afit_pBaseVals[377]
3091     {0x0F12,    0x1403},        //TVAR_afit_pBaseVals[378]
3092     {0x0F12,    0x1905},        //TVAR_afit_pBaseVals[379]
3093     {0x0F12,    0x060E},        //TVAR_afit_pBaseVals[380]
3094     {0x0F12,    0x32FF},        //TVAR_afit_pBaseVals[381]
3095     {0x0F12,    0x5004},        //TVAR_afit_pBaseVals[382]
3096     {0x0F12,    0x1440},        //TVAR_afit_pBaseVals[383]
3097     {0x0F12,    0x4015},        //TVAR_afit_pBaseVals[384]
3098     {0x0F12,    0x0204},        //TVAR_afit_pBaseVals[385]
3099     {0x0F12,    0x3C03},        //TVAR_afit_pBaseVals[386]
3100     {0x0F12,    0x013C},        //TVAR_afit_pBaseVals[387]
3101     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[388]
3102     {0x0F12,    0x141A},        //TVAR_afit_pBaseVals[389]
3103     {0x0F12,    0x181A},        //TVAR_afit_pBaseVals[390]
3104     {0x0F12,    0x0028},        //TVAR_afit_pBaseVals[391]
3105     {0x0F12,    0x030A},        //TVAR_afit_pBaseVals[392]
3106     {0x0F12,    0x0614},        //TVAR_afit_pBaseVals[393]
3107     {0x0F12,    0x0A19},        //TVAR_afit_pBaseVals[394]
3108     {0x0F12,    0xFF06},        //TVAR_afit_pBaseVals[395]
3109     {0x0F12,    0x0432},        //TVAR_afit_pBaseVals[396]
3110     {0x0F12,    0x4050},        //TVAR_afit_pBaseVals[397]
3111     {0x0F12,    0x1514},        //TVAR_afit_pBaseVals[398]
3112     {0x0F12,    0x0440},        //TVAR_afit_pBaseVals[399]
3113     {0x0F12,    0x0302},        //TVAR_afit_pBaseVals[400]
3114     {0x0F12,    0x3C3C},        //TVAR_afit_pBaseVals[401]
3115     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[402]
3116     {0x0F12,    0x1A01},        //TVAR_afit_pBaseVals[403]
3117     {0x0F12,    0x1A14},        //TVAR_afit_pBaseVals[404]
3118     {0x0F12,    0x2818},        //TVAR_afit_pBaseVals[405]
3119     {0x0F12,    0x0A00},        //TVAR_afit_pBaseVals[406]
3120     {0x0F12,    0x1403},        //TVAR_afit_pBaseVals[407]
3121     {0x0F12,    0x1906},        //TVAR_afit_pBaseVals[408]
3122     {0x0F12,    0x060A},        //TVAR_afit_pBaseVals[409]
3123     {0x0F12,    0x32FF},        //TVAR_afit_pBaseVals[410]
3124     {0x0F12,    0x5004},        //TVAR_afit_pBaseVals[411]
3125     {0x0F12,    0x1440},        //TVAR_afit_pBaseVals[412]
3126     {0x0F12,    0x4015},        //TVAR_afit_pBaseVals[413]
3127     {0x0F12,    0x0204},        //TVAR_afit_pBaseVals[414]
3128     {0x0F12,    0x0003},        //TVAR_afit_pBaseVals[415]
3129     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[416]
3130     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[417]
3131     {0x0F12,    0x000f},        //TVAR_afit_pBaseVals[418]//DTS2012071201781:modify by huyouhua at 2012-7-23                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
3132     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[419]
3133     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[420]
3134     {0x0F12,    0x001E},        //TVAR_afit_pBaseVals[421]
3135     {0x0F12,    0x03FF},        //TVAR_afit_pBaseVals[422]
3136     {0x0F12,    0x009C},        //TVAR_afit_pBaseVals[423]
3137     {0x0F12,    0x017C},        //TVAR_afit_pBaseVals[424]
3138     {0x0F12,    0x03FF},        //TVAR_afit_pBaseVals[425]
3139     {0x0F12,    0x000C},        //TVAR_afit_pBaseVals[426]
3140     {0x0F12,    0x0010},        //TVAR_afit_pBaseVals[427]
3141     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[428]
3142     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[429]
3143     {0x0F12,    0x0046},        //TVAR_afit_pBaseVals[430]
3144     {0x0F12,    0x0050},        //TVAR_afit_pBaseVals[431]
3145     {0x0F12,    0x0070},        //TVAR_afit_pBaseVals[432]
3146     {0x0F12,    0x0004},        //TVAR_afit_pBaseVals[433]
3147     {0x0F12,    0x0004},        //TVAR_afit_pBaseVals[434]
3148     {0x0F12,    0x01AA},        //TVAR_afit_pBaseVals[435]
3149     {0x0F12,    0x0014},        //TVAR_afit_pBaseVals[436]
3150     {0x0F12,    0x0014},        //TVAR_afit_pBaseVals[437]
3151     {0x0F12,    0x000A},        //TVAR_afit_pBaseVals[438]
3152     {0x0F12,    0x000A},        //TVAR_afit_pBaseVals[439]
3153     {0x0F12,    0x002D},        //TVAR_afit_pBaseVals[440]
3154     {0x0F12,    0x0019},        //TVAR_afit_pBaseVals[441]
3155     {0x0F12,    0x0023},        //TVAR_afit_pBaseVals[442]
3156     {0x0F12,    0x0023},        //TVAR_afit_pBaseVals[443]
3157     {0x0F12,    0x0023},        //TVAR_afit_pBaseVals[444]
3158     {0x0F12,    0x0023},        //TVAR_afit_pBaseVals[445]
3159     {0x0F12,    0x0A0F},        //TVAR_afit_pBaseVals[446]
3160     {0x0F12,    0x1701},        //TVAR_afit_pBaseVals[447]
3161     {0x0F12,    0x0229},        //TVAR_afit_pBaseVals[448]
3162     {0x0F12,    0x1403},        //TVAR_afit_pBaseVals[449]
3163     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[450]
3164     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[451]
3165     {0x0F12,    0x0606},        //TVAR_afit_pBaseVals[452]
3166     {0x0F12,    0x00FF},        //TVAR_afit_pBaseVals[453]
3167     {0x0F12,    0x033B},        //TVAR_afit_pBaseVals[454]
3168     {0x0F12,    0x0505},        //TVAR_afit_pBaseVals[455]
3169     {0x0F12,    0x0301},        //TVAR_afit_pBaseVals[456]
3170     {0x0F12,    0x8007},        //TVAR_afit_pBaseVals[457]
3171     {0x0F12,    0x051E},        //TVAR_afit_pBaseVals[458]
3172     {0x0F12,    0x0A1E},        //TVAR_afit_pBaseVals[459]
3173     {0x0F12,    0x0000},        //TVAR_afit_pBaseVals[460]
3174     {0x0F12,    0x0A03},        //TVAR_afit_pBaseVals[461]
3175     {0x0F12,    0x1E3C},        //TVAR_afit_pBaseVals[462]
3176     {0x0F12,    0x1028},        //TVAR_afit_pBaseVals[463]
3177     {0x0F12,    0x0002},        //TVAR_afit_pBaseVals[464]
3178     {0x0F12,    0x00FF},        //TVAR_afit_pBaseVals[465]
3179     {0x0F12,    0x1002},        //TVAR_afit_pBaseVals[466]
3180     {0x0F12,    0x001E},        //TVAR_afit_pBaseVals[467]
3181     {0x0F12,    0x0900},        //TVAR_afit_pBaseVals[468]
3182     {0x0F12,    0x0600},        //TVAR_afit_pBaseVals[469]
3183     {0x0F12,    0x0504},        //TVAR_afit_pBaseVals[470]
3184     {0x0F12,    0x0305},        //TVAR_afit_pBaseVals[471]
3185     {0x0F12,    0x8002},        //TVAR_afit_pBaseVals[472]
3186     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[473]
3187     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[474]
3188     {0x0F12,    0x0080},        //TVAR_afit_pBaseVals[475]
3189     {0x0F12,    0x4646},        //TVAR_afit_pBaseVals[476]
3190     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[477]
3191     {0x0F12,    0x1801},        //TVAR_afit_pBaseVals[478]
3192     {0x0F12,    0x141C},        //TVAR_afit_pBaseVals[479]
3193     {0x0F12,    0x2812},        //TVAR_afit_pBaseVals[480]
3194     {0x0F12,    0x0A00},        //TVAR_afit_pBaseVals[481]
3195     {0x0F12,    0x1003},        //TVAR_afit_pBaseVals[482]
3196     {0x0F12,    0x1405},        //TVAR_afit_pBaseVals[483]
3197     {0x0F12,    0x050C},        //TVAR_afit_pBaseVals[484]
3198     {0x0F12,    0x32FF},        //TVAR_afit_pBaseVals[485]
3199     {0x0F12,    0x5204},        //TVAR_afit_pBaseVals[486]
3200     {0x0F12,    0x1440},        //TVAR_afit_pBaseVals[487]
3201     {0x0F12,    0x4015},        //TVAR_afit_pBaseVals[488]
3202     {0x0F12,    0x0204},        //TVAR_afit_pBaseVals[489]
3203     {0x0F12,    0x5003},        //TVAR_afit_pBaseVals[490]
3204     {0x0F12,    0x0150},        //TVAR_afit_pBaseVals[491]
3205     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[492]
3206     {0x0F12,    0x1418},        //TVAR_afit_pBaseVals[493]
3207     {0x0F12,    0x1214},        //TVAR_afit_pBaseVals[494]
3208     {0x0F12,    0x0028},        //TVAR_afit_pBaseVals[495]
3209     {0x0F12,    0x030A},        //TVAR_afit_pBaseVals[496]
3210     {0x0F12,    0x0A10},        //TVAR_afit_pBaseVals[497]
3211     {0x0F12,    0x0819},        //TVAR_afit_pBaseVals[498]
3212     {0x0F12,    0xFF05},        //TVAR_afit_pBaseVals[499]
3213     {0x0F12,    0x0432},        //TVAR_afit_pBaseVals[500]
3214     {0x0F12,    0x4052},        //TVAR_afit_pBaseVals[501]
3215     {0x0F12,    0x1514},        //TVAR_afit_pBaseVals[502]
3216     {0x0F12,    0x0440},        //TVAR_afit_pBaseVals[503]
3217     {0x0F12,    0x0302},        //TVAR_afit_pBaseVals[504]
3218     {0x0F12,    0x5050},        //TVAR_afit_pBaseVals[505]
3219     {0x0F12,    0x0101},        //TVAR_afit_pBaseVals[506]
3220     {0x0F12,    0x1801},        //TVAR_afit_pBaseVals[507]
3221     {0x0F12,    0x1414},        //TVAR_afit_pBaseVals[508]
3222     {0x0F12,    0x2812},        //TVAR_afit_pBaseVals[509]
3223     {0x0F12,    0x0A00},        //TVAR_afit_pBaseVals[510]
3224     {0x0F12,    0x1003},        //TVAR_afit_pBaseVals[511]
3225     {0x0F12,    0x190A},        //TVAR_afit_pBaseVals[512]
3226     {0x0F12,    0x0508},        //TVAR_afit_pBaseVals[513]
3227     {0x0F12,    0x32FF},        //TVAR_afit_pBaseVals[514]
3228     {0x0F12,    0x5204},        //TVAR_afit_pBaseVals[515]
3229     {0x0F12,    0x1440},        //TVAR_afit_pBaseVals[516]
3230     {0x0F12,    0x4015},        //TVAR_afit_pBaseVals[517]
3231     {0x0F12,    0x0204},        //TVAR_afit_pBaseVals[518]
3232     {0x0F12,    0x0003},        //TVAR_afit_pBaseVals[519]
3233     //  param_end       TVAR_afit_pBaseVals
3234     //  param_start     afit_pConstBaseVals 
3235     {0x002A,    0x0BD4},
3236     {0x0F12,    0x7F7A},        //afit_pConstBaseVals[0]
3237     {0x0F12,    0x779D},        //afit_pConstBaseVals[1]
3238     {0x0F12,    0xBE7E},        //afit_pConstBaseVals[2]
3239     {0x0F12,    0xF7BC},        //afit_pConstBaseVals[3]
3240     {0x0F12,    0x7E06},        //afit_pConstBaseVals[4]
3241     {0x0F12,    0x0053},        //afit_pConstBaseVals[5]
3242     //  param_end       afit_pConstBaseVals
3243
3244     // Fill RAM with alternative op-codes
3245     {0x0028,    0x7000},        // start add MSW
3246     {0x002A,    0x2CE8},        // start add LSW
3247     {0x0F12,    0x0007},        // Modify LSB to control AWBB_YThreshLow
3248     {0x0F12,    0x00e2},        //
3249     {0x0F12,    0x0005},        // Modify LSB to control AWBB_YThreshLowBrLow
3250     {0x0F12,    0x00E2},        //
3251     //////////////////////////////////////////////////////////////////////////
3252     //============================================================         
3253     //END Tuning part                                                          
3254         //END: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3255     
3256         //================================================================================================
3257         //SET PLL      
3258         //================================================================================================
3259         //How to set   
3260         //1. MCLK      
3261         //hex(CLK you want) * 1000)
3262         //2. System CLK
3263         //hex((CLK you want) * 1000 / 4)
3264         //3. PCLK      
3265         //hex((CLK you want) * 1000 / 4)
3266         //================================================================================================
3267         //Set input CLK //24MHz
3268         {0x002A, 0x01CC},
3269         {0x0F12, 0x5DC0},  //5FB4 //5DC0=24MCLK    #REG_TC_IPRM_InClockLSBs
3270         {0x0F12, 0x0000}, //#REG_TC_IPRM_InClockMSBs
3271         {0x002A, 0x01EE},
3272         {0x0F12, 0x0002}, //#REG_TC_IPRM_UseNPviClocks //Number of PLL setting
3273         //Set system CLK //40MHz
3274         {0x002A, 0x01F6},
3275         {0x0F12, 0x38a4 },          //2904           //2BF2 //#REG_TC_IPRM_OpClk4KHz_0
3276         {0x0F12, 0x37A4}, //3A88 //#REG_TC_IPRM_MinOutRate4KHz_0
3277         {0x0F12, 0x39A4}, //3AA8 //#REG_TC_IPRM_MaxOutRate4KHz_0
3278         {0x0F12, 0x38A4},          //2904           //2BF2 //#REG_TC_IPRM_OpClk4KHz_1
3279         //Set pixel CLK //60MHz (0x3A98)
3280         {0x0F12, 0x2EA0}, //#REG_TC_IPRM_MinOutRate4KHz_1
3281         {0x0F12, 0x2EE0}, //#REG_TC_IPRM_MaxOutRate4KHz_1
3282         //Update PLL   
3283         {0x002A, 0x0208},
3284         {0x0F12, 0x0001}, //#REG_TC_IPRM_InitParamsUpdated
3285         
3286         {SEQUENCE_WAIT_MS,100},//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3287         //================================================================================================
3288         //SET PREVIEW CONFIGURATION_0
3289         //# Foramt : YUV422
3290         //# Size: 640x480
3291         //# FPS : 25fps
3292         //================================================================================================
3293         {0x002A, 0x026C},
3294         {0x0F12, 0x0280}, //0400 //#REG_0TC_PCFG_usWidth//1024
3295         {0x0F12, 0x01E0}, //0300 //#REG_0TC_PCFG_usHeight //768    026E
3296         {0x0F12, 0x0005}, //#REG_0TC_PCFG_Format            0270
3297         {0x0F12, 0x39a4}, //3AA8 //#REG_0TC_PCFG_usMaxOut4KHzRate  0272
3298         {0x0F12, 0x37a4}, //3A88 //#REG_0TC_PCFG_usMinOut4KHzRate  0274
3299         {0x0F12, 0x0100}, //#REG_0TC_PCFG_OutClkPerPix88    0276
3300         {0x0F12, 0x0800}, //#REG_0TC_PCFG_uMaxBpp88         027
3301         {0x0F12, 0x0052}, //#REG_0TC_PCFG_PVIMask //s0050 = FALSE in MSM6290 : s0052 = TRUE in MSM6800 //reg 027A
3302         {0x0F12, 0x4000}, //#REG_0TC_PCFG_OIFMask
3303         {0x0F12, 0x0400}, //0x01E0},//#REG_0TC_PCFG_usJpegPacketSize //DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3304         {0x0F12, 0x0000}, //#REG_0TC_PCFG_usJpegTotalPackets
3305         {0x0F12, 0x0000}, //#REG_0TC_PCFG_uClockInd
3306         {0x0F12, 0x0000}, //#REG_0TC_PCFG_usFrTimeType
3307         {0x0F12, 0x0001}, //#REG_0TC_PCFG_FrRateQualityType
3308         {0x0F12, 0x0190}, //03E8 #REG_0TC_PCFG_usMaxFrTimeMsecMult10  min 25fps
3309         {0x0F12, 0x0190}, //029a #REG_0TC_PCFG_usMinFrTimeMsecMult10  max 25fps
3310         {0x0F12, 0x0000}, //#REG_0TC_PCFG_bSmearOutput
3311         {0x0F12, 0x0000}, //#REG_0TC_PCFG_sSaturation
3312         {0x0F12, 0x0000}, //#REG_0TC_PCFG_sSharpBlur
3313         {0x0F12, 0x0000}, //#REG_0TC_PCFG_sColorTemp
3314         {0x0F12, 0x0000}, //#REG_0TC_PCFG_uDeviceGammaIndex
3315         {0x0F12, 0x0003}, //#REG_0TC_PCFG_uPrevMirror
3316         {0x0F12, 0x0003}, //#REG_0TC_PCFG_uCaptureMirror
3317         {0x0F12, 0x0000}, //#REG_0TC_PCFG_uRotation
3318         //================================================================================================
3319         //SET PREVIEW CONFIGURATION_1
3320         //# Foramt : YUV422
3321         //# Size: 1280x720
3322         //# FPS : 15~15fps
3323         //================================================================================================
3324         {0x002A, 0x029C},
3325         {0x0F12, 0x0500}, //0400 //#REG_0TC_PCFG_usWidth//1024
3326         {0x0F12, 0x02D0}, //0300 //#REG_0TC_PCFG_usHeight //768    026E
3327         {0x0F12, 0x0005}, //#REG_0TC_PCFG_Format            0270
3328         {0x0F12, 0x2ee0}, //3AA8 //#REG_0TC_PCFG_usMaxOut4KHzRate  0272
3329         {0x0F12, 0x2ea0}, //3A88 //#REG_0TC_PCFG_usMinOut4KHzRate  0274
3330         {0x0F12, 0x0100}, //#REG_0TC_PCFG_OutClkPerPix88    0276
3331         {0x0F12, 0x0800}, //#REG_0TC_PCFG_uMaxBpp88         027
3332         {0x0F12, 0x0052}, //#REG_0TC_PCFG_PVIMask //s0050 = FALSE in MSM6290 : s0052 = TRUE in MSM6800 //reg 027A
3333         {0x0F12, 0x4000}, //#REG_0TC_PCFG_OIFMask
3334         {0x0F12, 0x0400}, //0x01E0}, //#REG_0TC_PCFG_usJpegPacketSize//DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3335         {0x0F12, 0x0000}, //#REG_0TC_PCFG_usJpegTotalPackets
3336         {0x0F12, 0x0001}, //#REG_0TC_PCFG_uClockInd
3337         {0x0F12, 0x0000}, //#REG_0TC_PCFG_usFrTimeType
3338         {0x0F12, 0x0002}, //1 //#REG_0TC_PCFG_FrRateQualityType
3339         {0x0F12, 0x029a}, //03E8 #REG_0TC_PCFG_usMaxFrTimeMsecMult10 //15fps
3340         {0x0F12, 0x029a}, //029a #REG_0TC_PCFG_usMinFrTimeMsecMult10 //15fps
3341         {0x0F12, 0x0000}, //#REG_0TC_PCFG_bSmearOutput
3342         {0x0F12, 0x0000}, //#REG_0TC_PCFG_sSaturation
3343         {0x0F12, 0x0000}, //#REG_0TC_PCFG_sSharpBlur
3344         {0x0F12, 0x0000}, //#REG_0TC_PCFG_sColorTemp
3345         {0x0F12, 0x0000}, //#REG_0TC_PCFG_uDeviceGammaIndex
3346         {0x0F12, 0x0003}, //#REG_0TC_PCFG_uPrevMirror
3347         {0x0F12, 0x0003}, //#REG_0TC_PCFG_uCaptureMirror
3348         {0x0F12, 0x0000}, //#REG_0TC_PCFG_uRotation
3349         //================================================================================================
3350         //APPLY PREVIEW CONFIGURATION & RUN PREVIEW
3351         //================================================================================================
3352         {0x002A, 0x023C},
3353         {0x0F12, 0x0000}, //#REG_TC_GP_ActivePrevConfig //Select preview configuration_0
3354         {0x002A, 0x0240},
3355         {0x0F12, 0x0001}, //#REG_TC_GP_PrevOpenAfterChange
3356         {0x002A, 0x0230},
3357         {0x0F12, 0x0001}, //#REG_TC_GP_NewConfigSync //Update preview configuration
3358         {0x002A, 0x023E},
3359         {0x0F12, 0x0001}, //#REG_TC_GP_PrevConfigChanged
3360         {0x002A, 0x0220},
3361         {0x0F12, 0x0001}, //#REG_TC_GP_EnablePreview //Start preview
3362         {0x0F12, 0x0001}, //#REG_TC_GP_EnablePreviewChanged
3363         //================================================================================================
3364         //SET CAPTURE CONFIGURATION_0
3365         //# Foramt :YUV
3366         //# Size: QXGA 
3367         //# FPS : 5 ~ 7.5fps
3368         //================================================================================================
3369         {0x002A, 0x035C},
3370         {0x0F12, 0x0000}, //#REG_0TC_CCFG_uCaptureModeJpEG
3371         {0x0F12, 0x0800}, //#REG_0TC_CCFG_usWidth
3372         {0x0F12, 0x0600}, //#REG_0TC_CCFG_usHeight
3373         {0x0F12, 0x0005}, //#REG_0TC_CCFG_Format//5:YUV9:JPEG
3374         //{0x0F12, 0x39ae}, //3AA8 //#REG_0TC_CCFG_usMaxOut4KHzRate
3375     {0x0F12, 0x39a4}, //#REG_0TC_CCFG_usMaxOut4KHzRate//DTS2012071201781:modify by huyouhua at 2012-7-23
3376         {0x0F12, 0x37a4}, //3A88 //#REG_0TC_CCFG_usMinOut4KHzRate
3377         {0x0F12, 0x0100}, //#REG_0TC_CCFG_OutClkPerPix88
3378         {0x0F12, 0x0800}, //#REG_0TC_CCFG_uMaxBpp88
3379         {0x0F12, 0x0052}, //#REG_0TC_CCFG_PVIMask
3380         {0x0F12, 0x0050}, //#REG_0TC_CCFG_OIFMask   edison
3381         //BEGIN: DTS2012071201781 modify by huyouhua at 2012-7-23
3382     //{0x0F12, 0x01E0}, //#REG_0TC_CCFG_usJpegPacketSize
3383         //{0x0F12, 0x08fc}, //#REG_0TC_CCFG_usJpegTotalPackets
3384     {0x0F12, 0x03C0}, //#REG_0TC_CCFG_usJpegPacketSize
3385     //END: DTS2012071201781 modify by huyouhua at 2012-7-23
3386         {0x0F12, 0x0000}, //#REG_0TC_CCFG_uClockInd
3387         {0x0F12, 0x0000}, //#REG_0TC_CCFG_usFrTimeType
3388         {0x0F12, 0x0000}, //#REG_0TC_CCFG_FrRateQualityType
3389     {0x0F12, 0x0002}, //#REG_0TC_CCFG_FrRateQualityType//DTS2012071201781:add by huyouhua at 2012-7-23
3390         {0x0F12, 0x07D0}, //#REG_0TC_CCFG_usMaxFrTimeMsecMult10 //5fps
3391         {0x0F12, 0x0535}, //#REG_0TC_CCFG_usMinFrTimeMsecMult10 //7.5fps
3392         {0x0F12, 0x0000}, //#REG_0TC_CCFG_bSmearOutput
3393         {0x0F12, 0x0000}, //#REG_0TC_CCFG_sSaturation
3394         {0x0F12, 0x0000}, //#REG_0TC_CCFG_sSharpBlur
3395         {0x0F12, 0x0000}, //#REG_0TC_CCFG_sColorTemp
3396         {0x0F12, 0x0000}, //#REG_0TC_CCFG_uDeviceGammaIndex
3397         //================================================================================================
3398         //SET CAPTURE CONFIGURATION_1
3399         //# Foramt :   
3400         //# Size:      
3401         //# FPS :      
3402         //================================================================================================
3403         //Not used     
3404         {0x0028, 0xD000},
3405         {0x002A, 0x1000},
3406         {0x0F12, 0x0001},
3407         
3408         {SEQUENCE_WAIT_MS,50},
3409         {SEQUENCE_END, 0x00}
3410 };
3411
3412 static struct reginfo sensor_720p[]=
3413 {
3414         {0x0028,  0x7000},
3415         {0x002A,  0x01D6},
3416         {0x0F12,  0x0800},
3417         {0x0F12,  0x0600},
3418         {0x0F12,  0x0000},
3419         {0x0F12,  0x00C0},
3420         {0x002A,  0x0208},
3421         {0x0F12,  0x0001},
3422
3423         {0x002A,  0x023C},
3424         {0x0F12,  0x0001},
3425         {0x002A,  0x0240},
3426         {0x0F12,  0x0001},
3427         {0x002A,  0x0230},
3428         {0x0F12,  0x0001},
3429         {0x002A,  0x023E},
3430         {0x0F12,  0x0001},
3431         {0x002A,  0x0220},
3432         {0x0F12,  0x0001},
3433         {0x0F12,  0x0001},
3434
3435         {SEQUENCE_END, 0x00}
3436 };
3437 #if 0
3438 static struct reginfo sensor_1080p[]=
3439 {
3440         {SEQUENCE_END, 0x00}
3441 };
3442 #endif
3443 /* 2592X1944 QSXGA */
3444 static struct reginfo sensor_qsxga[] =
3445 {
3446         {SEQUENCE_END, 0x00}
3447 };
3448 /* 2048*1536 QXGA */
3449 static struct reginfo sensor_qxga[] =
3450 {
3451         {0x0028 ,0x7000},
3452     {0x002a ,0x0244},//#REG_TC_GP_ActiveCapConfig  num                                   
3453         {0x0f12 ,0x0000},                                   
3454         {0x0f12 ,0x0001},//#REG_TC_GP_CapConfigChanged                                    
3455         {0x002a ,0x0230},                                   
3456         {0x0f12 ,0x0001},//#REG_TC_GP_NewConfigSync                                   
3457         {0x002a ,0x0224},                                   
3458         {0x0f12 ,0x0001},//#REG_TC_GP_EnableCapture                                    
3459         {0x0f12 ,0x0001},//#REG_TC_GP_EnableCaptureChanged
3460         {SEQUENCE_END, 0x00}
3461 };
3462
3463 /* 1600X1200 UXGA */
3464 static struct reginfo sensor_uxga[] =
3465 {
3466         {SEQUENCE_END, 0x00}
3467 };
3468
3469 /* 1280X1024 SXGA */
3470 static struct reginfo sensor_sxga[] =
3471 {
3472         {SEQUENCE_END, 0x00}
3473 };
3474 /*  1024X768 XGA */
3475 static struct reginfo sensor_xga[] =
3476 {
3477         {SEQUENCE_END, 0x00}
3478 };
3479 /* 800X600 SVGA*/
3480 static struct reginfo sensor_svga[] =
3481 {
3482     {SEQUENCE_END, 0x0},
3483 };
3484
3485 /* 640X480 VGA */
3486 static struct reginfo sensor_vga[] =
3487 {
3488         {0x0028,  0x7000},
3489         {0x002A,  0x01D6},
3490         {0x0F12,  0x0140},
3491         {0x0F12,  0x00F0},
3492         {0x0F12,  0x0000},
3493         {0x0F12,  0x0000},
3494         {0x002A,  0x0208},
3495         {0x0F12,  0x0001},
3496
3497         {0x002A,  0x023C},
3498         {0x0F12,  0x0000},
3499         {0x002A,  0x0240},
3500         {0x0F12,  0x0001},
3501         {0x002A,  0x0230},
3502         {0x0F12,  0x0001},
3503         {0x002A,  0x023E},
3504         {0x0F12,  0x0001},
3505         {0x002A,  0x0220},
3506         {0x0F12,  0x0001},
3507         {0x0F12,  0x0001},
3508
3509     {SEQUENCE_END, 0x0},
3510 };
3511 /* 352X288 CIF */
3512 static struct reginfo sensor_cif[] =
3513 {
3514     {SEQUENCE_END, 0x0},
3515 };
3516
3517 /* 320*240 QVGA */
3518 static  struct reginfo sensor_qvga[] =
3519 {
3520     {SEQUENCE_END, 0x0},
3521 };
3522
3523 /* 176X144 QCIF*/
3524 static struct reginfo sensor_qcif[] =
3525 {
3526     {SEQUENCE_END, 0x0},
3527 };
3528
3529 static  struct reginfo sensor_ClrFmt_YUYV[]=
3530 {
3531     {SEQUENCE_END, 0x00}
3532 };
3533
3534 static  struct reginfo sensor_ClrFmt_UYVY[]=
3535 {
3536     {SEQUENCE_END, 0x00}
3537 };
3538
3539 #if CONFIG_SENSOR_WhiteBalance
3540 static  struct reginfo sensor_WhiteB_Auto[]=
3541 {
3542         {0x0028, 0x7000},
3543         {0x002A, 0X04D2},
3544     //BEGIN: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3545         //{0x0F12, 0x065F},
3546         {0x0F12, 0x067F},
3547     //END: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3548     {SEQUENCE_END, 0x00}
3549 };
3550
3551 //incandescent
3552 static  struct reginfo sensor_WhiteB_TungstenLamp1[]=
3553 {
3554         {0x0028, 0x7000},
3555         {0x002A, 0x04D2},
3556     //BEGIN: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3557     //{0x0F12, 0x0657},
3558     {0x0F12, 0x0677},
3559     //END: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3560         {0x002A, 0x04A0},
3561         {0x0F12, 0x0380},
3562         {0x0F12, 0x0001},
3563         {0x0F12, 0x0400},
3564         {0x0F12, 0x0001},
3565         {0x0F12, 0x09C0},
3566         {0x0F12, 0x0001},
3567
3568         {SEQUENCE_END, 0x00}
3569 };
3570
3571 //fluorescent荧光2
3572 static  struct reginfo sensor_WhiteB_TungstenLamp2[]=
3573 {
3574         {0x0028, 0x7000},
3575         {0x002A, 0x04D2},
3576         {0x0F12, 0x0657},
3577         {0x002A, 0x04A0},
3578         {0x0F12, 0x0400},
3579         {0x0F12, 0x0001},
3580         {0x0F12, 0x0400},
3581         {0x0F12, 0x0001},
3582         {0x0F12, 0x083C},
3583         {0x0F12, 0x0001},
3584
3585         {SEQUENCE_END, 0x00}
3586 };
3587
3588 //daylight日光3
3589 static  struct reginfo sensor_WhiteB_ClearDay[]=
3590 {
3591         {0x0028, 0x7000},
3592         {0x002A, 0x04D2},
3593     //BEGIN: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3594         //{0x0F12, 0x0657},
3595         {0x0F12, 0x0677},
3596     //END: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3597         {0x002A, 0x04A0},
3598         {0x0F12, 0x05A0},
3599         {0x0F12, 0x0001},
3600         {0x0F12, 0x0400},
3601         {0x0F12, 0x0001},
3602         {0x0F12, 0x05F0},
3603         {0x0F12, 0x0001},
3604
3605         {SEQUENCE_END, 0x00}
3606 };
3607
3608 //阴天4
3609 static  struct reginfo sensor_WhiteB_Cloudy[]=
3610 {
3611         {0x0028, 0x7000},
3612         {0x002A, 0x04D2},
3613     //BEGIN: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3614         //{0x0F12, 0x0657},
3615         {0x0F12, 0x0677},
3616     //END: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3617         {0x002A, 0x04A0},
3618         {0x0F12, 0x0540},
3619         {0x0F12, 0x0001},
3620         {0x0F12, 0x0400},
3621         {0x0F12, 0x0001},
3622         {0x0F12, 0x0500},
3623         {0x0F12, 0x0001},
3624
3625     {SEQUENCE_END, 0x00}
3626 };
3627
3628 static struct reginfo *sensor_WhiteBalanceSeqe[] = {sensor_WhiteB_Auto, sensor_WhiteB_TungstenLamp1,sensor_WhiteB_TungstenLamp2,
3629     sensor_WhiteB_ClearDay, sensor_WhiteB_Cloudy, NULL,};
3630 #endif
3631
3632 #if CONFIG_SENSOR_Brightness
3633 static  struct reginfo sensor_Brightness0[]=
3634 {
3635     {SEQUENCE_END, 0x00}
3636 };
3637
3638 static  struct reginfo sensor_Brightness1[]=
3639 {
3640     {SEQUENCE_END, 0x00}
3641 };
3642
3643 static  struct reginfo sensor_Brightness2[]=
3644 {
3645     {SEQUENCE_END, 0x00}
3646 };
3647
3648 static  struct reginfo sensor_Brightness3[]=
3649 {
3650     {SEQUENCE_END, 0x00}
3651 };
3652
3653 static  struct reginfo sensor_Brightness4[]=
3654 {
3655     {SEQUENCE_END, 0x00}
3656 };
3657
3658 static  struct reginfo sensor_Brightness5[]=
3659 {
3660     {SEQUENCE_END, 0x00}
3661 };
3662 static struct reginfo *sensor_BrightnessSeqe[] = {sensor_Brightness0, sensor_Brightness1, sensor_Brightness2, sensor_Brightness3,
3663     sensor_Brightness4, sensor_Brightness5,NULL,
3664 };
3665
3666 #endif
3667
3668 #if CONFIG_SENSOR_Effect
3669 static  struct reginfo sensor_Effect_Normal[] =
3670 {
3671     {0x0028, 0x7000},
3672     {0x002A, 0x021E},
3673     {0x0F12, 0x0000},
3674     {SEQUENCE_END, 0x00}
3675 };
3676
3677 static  struct reginfo sensor_Effect_WandB[] =
3678 {
3679     {0x0028, 0x7000},
3680     {0x002A, 0x021E},
3681     {0x0F12, 0x0001},
3682     {SEQUENCE_END, 0x00}
3683 };
3684
3685 static  struct reginfo sensor_Effect_Sepia[] =
3686 {
3687     {0x0028, 0x7000},
3688     {0x002A, 0x021E},
3689     {0x0F12, 0x0004},
3690     {SEQUENCE_END, 0x00}
3691 };
3692
3693 static  struct reginfo sensor_Effect_Negative[] =
3694 {
3695     {0x0028, 0x7000},
3696     {0x002A, 0x021E},
3697     //BEGIN: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3698     //{0x0F12, 0x0002},
3699     {0x0F12, 0x0003},
3700     //END: DTS2012071201781: modify by huyouhua 00136760 at 2012-7-20
3701     {SEQUENCE_END, 0x00}
3702 };
3703
3704 static  struct reginfo sensor_Effect_Bluish[] =
3705 {
3706     {0x0028, 0x7000},
3707     {0x002A, 0x021E},
3708     {0x0F12, 0x0003},
3709     {SEQUENCE_END, 0x00}
3710 };
3711
3712 static  struct reginfo sensor_Effect_Green[] =
3713 {
3714     {0x0028, 0x7000},
3715     {0x002A, 0x021E},
3716     {0x0F12, 0x0005},
3717     {SEQUENCE_END, 0x00}
3718 };
3719
3720 static struct reginfo *sensor_EffectSeqe[] = {sensor_Effect_Normal, sensor_Effect_WandB, sensor_Effect_Negative,sensor_Effect_Sepia,
3721     sensor_Effect_Bluish, sensor_Effect_Green,NULL,
3722 };
3723 #endif
3724
3725 #if CONFIG_SENSOR_Exposure
3726 static  struct reginfo sensor_Exposure0[]=
3727 {
3728     {SEQUENCE_END, 0x00}
3729 };
3730
3731 static  struct reginfo sensor_Exposure1[]=
3732 {
3733     {SEQUENCE_END, 0x00}
3734 };
3735
3736 static  struct reginfo sensor_Exposure2[]=
3737 {
3738     {SEQUENCE_END, 0x00}
3739 };
3740
3741 static  struct reginfo sensor_Exposure3[]=
3742 {
3743     {SEQUENCE_END, 0x00}
3744 };
3745
3746 static  struct reginfo sensor_Exposure4[]=
3747 {
3748     {SEQUENCE_END, 0x00}
3749 };
3750
3751 static  struct reginfo sensor_Exposure5[]=
3752 {
3753     {SEQUENCE_END, 0x00}
3754 };
3755
3756 static  struct reginfo sensor_Exposure6[]=
3757 {
3758     {SEQUENCE_END, 0x00}
3759 };
3760
3761 static struct reginfo *sensor_ExposureSeqe[] = {sensor_Exposure0, sensor_Exposure1, sensor_Exposure2, sensor_Exposure3,
3762     sensor_Exposure4, sensor_Exposure5,sensor_Exposure6,NULL,
3763 };
3764 #endif
3765 #if CONFIG_SENSOR_Saturation
3766 static  struct reginfo sensor_Saturation0[]=
3767 {
3768     {SEQUENCE_END, 0x00}
3769 };
3770
3771 static  struct reginfo sensor_Saturation1[]=
3772 {
3773     {SEQUENCE_END, 0x00}
3774 };
3775
3776 static  struct reginfo sensor_Saturation2[]=
3777 {
3778     {SEQUENCE_END, 0x00}
3779 };
3780 static struct reginfo *sensor_SaturationSeqe[] = {sensor_Saturation0, sensor_Saturation1, sensor_Saturation2, NULL,};
3781
3782 #endif
3783 #if CONFIG_SENSOR_Contrast
3784 static  struct reginfo sensor_Contrast0[]=
3785 {
3786     {SEQUENCE_END, 0x00}
3787 };
3788
3789 static  struct reginfo sensor_Contrast1[]=
3790 {
3791     {SEQUENCE_END, 0x00}
3792 };
3793
3794 static  struct reginfo sensor_Contrast2[]=
3795 {
3796     {SEQUENCE_END, 0x00}
3797 };
3798
3799 static  struct reginfo sensor_Contrast3[]=
3800 {
3801     {SEQUENCE_END, 0x00}
3802 };
3803
3804 static  struct reginfo sensor_Contrast4[]=
3805 {
3806     {SEQUENCE_END, 0x00}
3807 };
3808
3809
3810 static  struct reginfo sensor_Contrast5[]=
3811 {
3812     {SEQUENCE_END, 0x00}
3813 };
3814
3815 static  struct reginfo sensor_Contrast6[]=
3816 {
3817     {SEQUENCE_END, 0x00}
3818 };
3819 static struct reginfo *sensor_ContrastSeqe[] = {sensor_Contrast0, sensor_Contrast1, sensor_Contrast2, sensor_Contrast3,
3820     sensor_Contrast4, sensor_Contrast5, sensor_Contrast6, NULL,
3821 };
3822
3823 #endif
3824 #if CONFIG_SENSOR_Mirror
3825 static  struct reginfo sensor_MirrorOn[]=
3826 {
3827     {SEQUENCE_END, 0x00}
3828 };
3829
3830 static  struct reginfo sensor_MirrorOff[]=
3831 {
3832     {SEQUENCE_END, 0x00}
3833 };
3834 static struct reginfo *sensor_MirrorSeqe[] = {sensor_MirrorOff, sensor_MirrorOn,NULL,};
3835 #endif
3836 #if CONFIG_SENSOR_Flip
3837 static  struct reginfo sensor_FlipOn[]=
3838 {
3839     {SEQUENCE_END, 0x00}
3840 };
3841
3842 static  struct reginfo sensor_FlipOff[]=
3843 {
3844     {SEQUENCE_END, 0x00}
3845 };
3846 static struct reginfo *sensor_FlipSeqe[] = {sensor_FlipOff, sensor_FlipOn,NULL,};
3847
3848 #endif
3849
3850 #if CONFIG_SENSOR_Scene
3851 static  struct reginfo sensor_SceneNormal[] =
3852
3853         {0x0028,0x7000},
3854         {0x002A,0x0288},
3855         {0x0F12,0X0190},
3856         {0x0F12,0X014D},
3857         {0x002A,0x023E},
3858         {0x0F12,0x0001},
3859
3860         {SEQUENCE_WAIT_MS,50},  
3861
3862         {0x002A,0x023C},
3863         {0x0F12,0x0000},
3864         {0x002A,0x0240},
3865         {0x0F12,0x0001},
3866         {0x002A,0x0230},
3867         {0x0F12,0x0001},
3868         {0x002A,0x023E},
3869         {0x0F12,0x0001},
3870         {0x002A,0x0220},
3871         {0x0F12,0x0001},
3872         {0x0F12,0x0001},
3873
3874     {SEQUENCE_END, 0x00}
3875 };
3876
3877 static  struct reginfo sensor_SceneNight[] =
3878 {
3879         {0x0028,0x7000},
3880         {0x002A,0x0288},
3881         {0x0F12,0X07D0},
3882         {0x0F12,0X029A},
3883         {0x002A,0x023E},
3884         {0x0F12,0x0001},
3885
3886         {SEQUENCE_WAIT_MS,50},  
3887
3888         {0x002A,0x023C},
3889         {0x0F12,0x0000},
3890         {0x002A,0x0240},
3891         {0x0F12,0x0001},
3892         {0x002A,0x0230},
3893         {0x0F12,0x0001},
3894         {0x002A,0x023E},
3895         {0x0F12,0x0001},
3896         {0x002A,0x0220},
3897         {0x0F12,0x0001},
3898         {0x0F12,0x0001},
3899
3900         {SEQUENCE_END, 0x00}
3901 };
3902 static struct reginfo *sensor_SceneSeqe[] = {sensor_SceneNormal, sensor_SceneNight, NULL,};
3903 #endif
3904
3905 #if CONFIG_SENSOR_AntiBanding
3906 static  struct reginfo sensor_AntiBanding_50HZ[] =
3907 {
3908         {0x0028, 0x7000},
3909         {0x002a, 0x04d2},
3910         {0x0f12, 0x065f},
3911         {0x002a, 0x04ba},
3912         {0x0f12, 0x0001},
3913         {0x002a, 0x04bc},
3914         {0x0f12, 0x0001},
3915     {SEQUENCE_END, 0x00}
3916 };
3917
3918 static  struct reginfo sensor_AntiBanding_60HZ[] =
3919 {
3920         {0x0028, 0x7000},
3921         {0x002a, 0x04d2},
3922         {0x0f12, 0x065f},
3923         {0x002a, 0x04ba},
3924         {0x0f12, 0x0002},
3925     {0x002a, 0x04bc},
3926         {0x0f12, 0x0001},
3927     {SEQUENCE_END, 0x00}
3928 };
3929 static struct reginfo *sensor_AntiBandingSeqe[] = {sensor_AntiBanding_50HZ, sensor_AntiBanding_60HZ, NULL,};
3930 #endif
3931
3932 #if CONFIG_SENSOR_DigitalZoom
3933 static struct reginfo sensor_Zoom0[] =
3934 {
3935     {SEQUENCE_END, 0x0},
3936 };
3937
3938 static struct reginfo sensor_Zoom1[] =
3939 {
3940      {SEQUENCE_END, 0x0},
3941 };
3942
3943 static struct reginfo sensor_Zoom2[] =
3944 {
3945     {SEQUENCE_END, 0x0},
3946 };
3947
3948
3949 static struct reginfo sensor_Zoom3[] =
3950 {
3951     {SEQUENCE_END, 0x0},
3952 };
3953 static struct reginfo *sensor_ZoomSeqe[] = {sensor_Zoom0, sensor_Zoom1, sensor_Zoom2, sensor_Zoom3, NULL,};
3954 #endif
3955 static  struct v4l2_querymenu sensor_menus[] =
3956 {
3957         #if CONFIG_SENSOR_WhiteBalance
3958     { .id = V4L2_CID_DO_WHITE_BALANCE,  .index = 0,  .name = "auto",  .reserved = 0, }, 
3959         { .id = V4L2_CID_DO_WHITE_BALANCE,  .index = 1,  .name = "incandescent",  .reserved = 0,},
3960     { .id = V4L2_CID_DO_WHITE_BALANCE,  .index = 2,  .name = "fluorescent", .reserved = 0,}, 
3961         { .id = V4L2_CID_DO_WHITE_BALANCE,  .index = 3,  .name = "daylight", .reserved = 0,},
3962     { .id = V4L2_CID_DO_WHITE_BALANCE,  .index = 4,  .name = "cloudy-daylight", .reserved = 0,},
3963     #endif
3964
3965     #if CONFIG_SENSOR_Effect
3966     { .id = V4L2_CID_EFFECT,  .index = 0,  .name = "none",      .reserved = 0,}, 
3967     {  .id = V4L2_CID_EFFECT, .index = 1,  .name = "mono",      .reserved = 0,},
3968     { .id = V4L2_CID_EFFECT,  .index = 2,  .name = "negative",  .reserved = 0,}, 
3969     {  .id = V4L2_CID_EFFECT, .index = 3,  .name = "sepia",     .reserved = 0,},
3970     { .id = V4L2_CID_EFFECT,  .index = 4,  .name = "posterize", .reserved = 0,} ,
3971     //{ .id = V4L2_CID_EFFECT,  .index = 5,  .name = "aqua",      .reserved = 0,},
3972     #endif
3973
3974         #if CONFIG_SENSOR_Scene
3975     { .id = V4L2_CID_SCENE,  .index = 0, .name = "auto",     .reserved = 0,},
3976     { .id = V4L2_CID_SCENE,  .index = 1, .name = "night",   .reserved = 0,},
3977     #endif
3978
3979         #if CONFIG_SENSOR_AntiBanding
3980     { .id = V4L2_CID_ANTIBANDING,  .index = 0, .name = "50hz",     .reserved = 0,},
3981         { .id = V4L2_CID_ANTIBANDING,  .index = 1, .name = "60hz",     .reserved = 0,},
3982     #endif
3983
3984         #if CONFIG_SENSOR_Flash
3985     { .id = V4L2_CID_FLASH,  .index = 0,  .name = "off",  .reserved = 0, }, {  .id = V4L2_CID_FLASH,  .index = 1, .name = "auto",  .reserved = 0,},
3986     { .id = V4L2_CID_FLASH,  .index = 2,  .name = "on", .reserved = 0,}, {  .id = V4L2_CID_FLASH, .index = 3,  .name = "torch", .reserved = 0,},
3987     #endif
3988 };
3989
3990 static const struct v4l2_queryctrl sensor_controls[] =
3991 {
3992         #if CONFIG_SENSOR_WhiteBalance
3993     {
3994         .id             = V4L2_CID_DO_WHITE_BALANCE,
3995         .type           = V4L2_CTRL_TYPE_MENU,
3996         .name           = "White Balance Control",
3997         .minimum        = 0,
3998         .maximum        = 4,
3999         .step           = 1,
4000         .default_value = 0,
4001     },
4002     #endif
4003
4004         #if CONFIG_SENSOR_Brightness
4005         {
4006         .id             = V4L2_CID_BRIGHTNESS,
4007         .type           = V4L2_CTRL_TYPE_INTEGER,
4008         .name           = "Brightness Control",
4009         .minimum        = -3,
4010         .maximum        = 2,
4011         .step           = 1,
4012         .default_value = 0,
4013     },
4014     #endif
4015
4016         #if CONFIG_SENSOR_Effect
4017         {
4018         .id             = V4L2_CID_EFFECT,
4019         .type           = V4L2_CTRL_TYPE_MENU,
4020         .name           = "Effect Control",
4021         .minimum        = 0,
4022         .maximum        = 4,
4023         .step           = 1,
4024         .default_value = 0,
4025     },
4026         #endif
4027
4028         #if CONFIG_SENSOR_Exposure
4029         {
4030         .id             = V4L2_CID_EXPOSURE,
4031         .type           = V4L2_CTRL_TYPE_INTEGER,
4032         .name           = "Exposure Control",
4033         .minimum        = 0,
4034         .maximum        = 6,
4035         .step           = 1,
4036         .default_value = 0,
4037     },
4038         #endif
4039
4040         #if CONFIG_SENSOR_Saturation
4041         {
4042         .id             = V4L2_CID_SATURATION,
4043         .type           = V4L2_CTRL_TYPE_INTEGER,
4044         .name           = "Saturation Control",
4045         .minimum        = 0,
4046         .maximum        = 2,
4047         .step           = 1,
4048         .default_value = 0,
4049     },
4050     #endif
4051
4052         #if CONFIG_SENSOR_Contrast
4053         {
4054         .id             = V4L2_CID_CONTRAST,
4055         .type           = V4L2_CTRL_TYPE_INTEGER,
4056         .name           = "Contrast Control",
4057         .minimum        = -3,
4058         .maximum        = 3,
4059         .step           = 1,
4060         .default_value = 0,
4061     },
4062         #endif
4063
4064         #if CONFIG_SENSOR_Mirror
4065         {
4066         .id             = V4L2_CID_HFLIP,
4067         .type           = V4L2_CTRL_TYPE_BOOLEAN,
4068         .name           = "Mirror Control",
4069         .minimum        = 0,
4070         .maximum        = 1,
4071         .step           = 1,
4072         .default_value = 1,
4073     },
4074     #endif
4075
4076         #if CONFIG_SENSOR_Flip
4077         {
4078         .id             = V4L2_CID_VFLIP,
4079         .type           = V4L2_CTRL_TYPE_BOOLEAN,
4080         .name           = "Flip Control",
4081         .minimum        = 0,
4082         .maximum        = 1,
4083         .step           = 1,
4084         .default_value = 1,
4085     },
4086     #endif
4087
4088         #if CONFIG_SENSOR_Scene
4089     {
4090         .id             = V4L2_CID_SCENE,
4091         .type           = V4L2_CTRL_TYPE_MENU,
4092         .name           = "Scene Control",
4093         .minimum        = 0,
4094         .maximum        = 1,
4095         .step           = 1,
4096         .default_value = 0,
4097     },
4098     #endif
4099
4100         #if CONFIG_SENSOR_AntiBanding
4101     {
4102         .id             = V4L2_CID_ANTIBANDING,
4103         .type           = V4L2_CTRL_TYPE_MENU,
4104         .name           = "AntiBanding Control",
4105         .minimum        = 0,
4106         .maximum        = 1,
4107         .step           = 1,
4108         .default_value = 0,
4109     },
4110     #endif
4111
4112         #if CONFIG_SENSOR_DigitalZoom
4113     {
4114         .id             = V4L2_CID_ZOOM_RELATIVE,
4115         .type           = V4L2_CTRL_TYPE_INTEGER,
4116         .name           = "DigitalZoom Control",
4117         .minimum        = -1,
4118         .maximum        = 1,
4119         .step           = 1,
4120         .default_value = 0,
4121     }, {
4122         .id             = V4L2_CID_ZOOM_ABSOLUTE,
4123         .type           = V4L2_CTRL_TYPE_INTEGER,
4124         .name           = "DigitalZoom Control",
4125         .minimum        = 0,
4126         .maximum        = 3,
4127         .step           = 1,
4128         .default_value = 0,
4129     },
4130     #endif
4131
4132         #if CONFIG_SENSOR_Focus
4133         {
4134         .id             = V4L2_CID_FOCUS_RELATIVE,
4135         .type           = V4L2_CTRL_TYPE_INTEGER,
4136         .name           = "Focus Control",
4137         .minimum        = -1,
4138         .maximum        = 1,
4139         .step           = 1,
4140         .default_value = 0,
4141     }, {
4142         .id             = V4L2_CID_FOCUS_ABSOLUTE,
4143         .type           = V4L2_CTRL_TYPE_INTEGER,
4144         .name           = "Focus Control",
4145         .minimum        = 0,
4146         .maximum        = 255,
4147         .step           = 1,
4148         .default_value = 125,
4149     },
4150     #endif
4151
4152         #if CONFIG_SENSOR_Flash
4153         {
4154         .id             = V4L2_CID_FLASH,
4155         .type           = V4L2_CTRL_TYPE_MENU,
4156         .name           = "Flash Control",
4157         .minimum        = 0,
4158         .maximum        = 3,
4159         .step           = 1,
4160         .default_value = 0,
4161     },
4162         #endif
4163 };
4164
4165 static int sensor_probe(struct i2c_client *client, const struct i2c_device_id *did);
4166 static int sensor_video_probe(struct soc_camera_device *icd, struct i2c_client *client);
4167 static int sensor_g_control(struct v4l2_subdev *sd, struct v4l2_control *ctrl);
4168 static int sensor_s_control(struct v4l2_subdev *sd, struct v4l2_control *ctrl);
4169 static int sensor_g_ext_controls(struct v4l2_subdev *sd,  struct v4l2_ext_controls *ext_ctrl);
4170 static int sensor_s_ext_controls(struct v4l2_subdev *sd,  struct v4l2_ext_controls *ext_ctrl);
4171 static int sensor_suspend(struct soc_camera_device *icd, pm_message_t pm_msg);
4172 static int sensor_resume(struct soc_camera_device *icd);
4173 static int sensor_set_bus_param(struct soc_camera_device *icd,unsigned long flags);
4174 static unsigned long sensor_query_bus_param(struct soc_camera_device *icd);
4175 static int sensor_set_effect(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value);
4176 static int sensor_set_whiteBalance(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value);
4177 static int sensor_deactivate(struct i2c_client *client);
4178
4179 static struct soc_camera_ops sensor_ops =
4180 {
4181     .suspend                     = sensor_suspend,
4182     .resume                       = sensor_resume,
4183     .set_bus_param              = sensor_set_bus_param,
4184     .query_bus_param    = sensor_query_bus_param,
4185     .controls           = sensor_controls,
4186     .menus                         = sensor_menus,
4187     .num_controls               = ARRAY_SIZE(sensor_controls),
4188     .num_menus          = ARRAY_SIZE(sensor_menus),
4189 };
4190
4191
4192 /* only one fixed colorspace per pixelcode */
4193 struct sensor_datafmt {
4194         enum v4l2_mbus_pixelcode code;
4195         enum v4l2_colorspace colorspace;
4196 };
4197
4198 /* Find a data format by a pixel code in an array */
4199 static const struct sensor_datafmt *sensor_find_datafmt(
4200         enum v4l2_mbus_pixelcode code, const struct sensor_datafmt *fmt,
4201         int n)
4202 {
4203         int i;
4204         for (i = 0; i < n; i++)
4205                 if (fmt[i].code == code)
4206                         return fmt + i;
4207
4208         return NULL;
4209 }
4210
4211 static const struct sensor_datafmt sensor_colour_fmts[] = {
4212     {V4L2_MBUS_FMT_UYVY8_2X8, V4L2_COLORSPACE_JPEG}
4213 };
4214 enum sensor_work_state
4215 {
4216         sensor_work_ready = 0,
4217         sensor_working,
4218 };
4219 struct sensor_work
4220 {
4221         struct i2c_client *client;
4222         struct delayed_work dwork;
4223         enum sensor_work_state state;
4224 };
4225
4226 typedef struct sensor_info_priv_s
4227 {
4228     int whiteBalance;
4229     int brightness;
4230     int contrast;
4231     int saturation;
4232     int effect;
4233     int scene;
4234     int antibanding;
4235     int digitalzoom;
4236     int focus;
4237         int auto_focus;
4238         int affm_reinit;
4239     int flash;
4240     int exposure;
4241     unsigned char mirror;                                        /* HFLIP */
4242     unsigned char flip;                                          /* VFLIP */
4243         bool snap2preview;
4244         bool video2preview;
4245         int capture_w;
4246         int capture_h;
4247         int preview_w;
4248         int preview_h;
4249     struct reginfo *winseqe_cur_addr;
4250         struct sensor_datafmt fmt;
4251         unsigned int enable;
4252         unsigned int funmodule_state;
4253 } sensor_info_priv_t;
4254
4255
4256
4257 struct sensor_parameter
4258 {
4259         unsigned short int preview_maxlines;
4260         unsigned short int preview_exposure;
4261         unsigned short int preview_line_width;
4262         unsigned short int preview_gain;
4263
4264         unsigned short int capture_framerate;
4265         unsigned short int preview_framerate;
4266 };
4267
4268 struct sensor
4269 {
4270     struct v4l2_subdev subdev;
4271     struct i2c_client *client;
4272     sensor_info_priv_t info_priv;
4273         struct sensor_parameter parameter;
4274         struct workqueue_struct *sensor_wq;
4275         struct sensor_work sensor_wk;
4276         struct mutex wq_lock;
4277     int model;  /* V4L2_IDENT_OV* codes from v4l2-chip-ident.h */
4278 #if CONFIG_SENSOR_I2C_NOSCHED
4279         atomic_t tasklock_cnt;
4280 #endif
4281         struct rk29camera_platform_data *sensor_io_request;
4282     struct rk29camera_gpio_res *sensor_gpio_res;
4283 };
4284
4285 static struct sensor* to_sensor(const struct i2c_client *client)
4286 {
4287     return container_of(i2c_get_clientdata(client), struct sensor, subdev);
4288 }
4289
4290 static int sensor_task_lock(struct i2c_client *client, int lock)
4291 {
4292 #if CONFIG_SENSOR_I2C_NOSCHED
4293         int cnt = 3;
4294     struct sensor *sensor = to_sensor(client);
4295
4296         if (lock) {
4297                 if (atomic_read(&sensor->tasklock_cnt) == 0) {
4298                         while ((atomic_read(&client->adapter->bus_lock.count) < 1) && (cnt>0)) {
4299                                 SENSOR_TR("\n %s will obtain i2c in atomic, but i2c bus is locked! Wait...\n",SENSOR_NAME_STRING());
4300                                 msleep(35);
4301                                 cnt--;
4302                         }
4303                         if ((atomic_read(&client->adapter->bus_lock.count) < 1) && (cnt<=0)) {
4304                                 SENSOR_TR("\n %s obtain i2c fail in atomic!!\n",SENSOR_NAME_STRING());
4305                                 goto sensor_task_lock_err;
4306                         }
4307                         preempt_disable();
4308                 }
4309
4310                 atomic_add(1, &sensor->tasklock_cnt);
4311         } else {
4312                 if (atomic_read(&sensor->tasklock_cnt) > 0) {
4313                         atomic_sub(1, &sensor->tasklock_cnt);
4314
4315                         if (atomic_read(&sensor->tasklock_cnt) == 0)
4316                                 preempt_enable();
4317                 }
4318         }
4319         return 0;
4320 sensor_task_lock_err:
4321         return -1;
4322 #else
4323     return 0;
4324 #endif
4325
4326 }
4327
4328 /* sensor register write */
4329 static int sensor_write(struct i2c_client *client, u16 reg, u16 val)
4330 {
4331     int err=0,cnt;
4332     u8 buf[4];
4333     struct i2c_msg msg[1];
4334
4335         switch (reg)
4336         {
4337                 case SEQUENCE_WAIT_MS:
4338                 {
4339                         //msleep(val);
4340                         mdelay(val);
4341                         break;
4342                 }
4343
4344                 case SEQUENCE_WAIT_US:
4345                 {
4346                         udelay(val);
4347                         break;
4348                 }
4349
4350                 case SEQUENCE_PROPERTY:
4351                 {
4352                         break;
4353                 }
4354                 default:
4355                 {
4356                     buf[0] = reg >> 8;
4357                     buf[1] = reg & 0xFF;
4358                     buf[2] = val >> 8;
4359                         buf[3] = val & 0xFF;
4360
4361                     msg->addr = client->addr;
4362                     msg->flags = client->flags;
4363                     msg->buf = buf;
4364                     msg->len = sizeof(buf);
4365                     msg->scl_rate = CONFIG_SENSOR_I2C_SPEED;         /* ddl@rock-chips.com : 100kHz */
4366                     msg->read_type = 0;               /* fpga i2c:0==I2C_NORMAL : direct use number not enum for don't want include spi_fpga.h */
4367
4368                     cnt = 3;
4369                     err = -EAGAIN;
4370
4371                     while ((cnt-- > 0) && (err < 0)) {                       /* ddl@rock-chips.com :  Transfer again if transent is failed   */
4372                         err = i2c_transfer(client->adapter, msg, 1);
4373
4374                         if (err >= 0) {
4375                             return 0;
4376                         } else {
4377                             SENSOR_TR("\n %s write reg(0x%x, val:0x%x) failed, try to write again!\n",SENSOR_NAME_STRING(),reg, val);
4378                             udelay(10);
4379                         }
4380                     }
4381                 }
4382         }
4383     return err;
4384 }
4385 #if 0
4386 /* sensor register read */
4387 static int sensor_read(struct i2c_client *client, u16 reg, u16 *val)
4388 {
4389         u8 buf[2];
4390         struct i2c_msg msg[2];
4391         int err = 0;
4392
4393         buf[0] = (u8)reg >> 8;
4394         buf[1] = (u8)reg & 0xFF;
4395
4396         msg[0].addr = client->addr;
4397         msg[0].flags = client->flags;
4398         msg[0].buf = buf;
4399         msg[0].len = sizeof(buf);
4400         msg[0].scl_rate = CONFIG_SENSOR_I2C_SPEED;       /* ddl@rock-chips.com : 100kHz */
4401         msg[0].read_type = 2;   /* fpga i2c:0==I2C_NO_STOP : direct use number not enum for don't want include spi_fpga.h */
4402
4403         msg[1].addr = client->addr;
4404         msg[1].flags = client->flags|I2C_M_RD;
4405         msg[1].buf = buf;
4406         msg[1].len = sizeof(buf);
4407         msg[1].scl_rate = CONFIG_SENSOR_I2C_SPEED;                       /* ddl@rock-chips.com : 100kHz */
4408         msg[1].read_type = 2;                             /* fpga i2c:0==I2C_NO_STOP : direct use number not enum for don't want include spi_fpga.h */
4409
4410         err = i2c_transfer(client->adapter, msg, 2);
4411
4412         if(err >= 0) {
4413                 *val = (buf[0] << 8)|(buf[1] & 0xFF);
4414                 SENSOR_DG("%s read reg(0x%x val:0x%x) success\n",SENSOR_NAME_STRING(),reg,*val);
4415                 return 0;
4416         } else {
4417                 SENSOR_TR("%s read reg(0x%x) failed!",SENSOR_NAME_STRING(),reg);
4418         }
4419
4420         return err;
4421 }
4422 #endif
4423 /* write a array of registers  */
4424 static int sensor_write_array(struct i2c_client *client, struct reginfo *regarray)
4425 {
4426     int err = 0, cnt;
4427     int i = 0;
4428 #if CONFIG_SENSOR_I2C_RDWRCHK
4429         char valchk;
4430 #endif
4431
4432         cnt = 0;
4433         if (sensor_task_lock(client, 1) < 0)
4434                 goto sensor_write_array_end;
4435     while (regarray[i].reg != SEQUENCE_END)
4436     {
4437
4438         err = sensor_write(client, regarray[i].reg, regarray[i].val);
4439         if (err < 0)
4440         {
4441             if (cnt-- > 0) {
4442                             SENSOR_TR("%s..write failed current reg:0x%x, Write array again !\n", SENSOR_NAME_STRING(),regarray[i].reg);
4443                                 i = 0;
4444                                 continue;
4445             } else {
4446                 SENSOR_TR("%s..write array failed!!!\n", SENSOR_NAME_STRING());
4447                 err = -EPERM;
4448                                 goto sensor_write_array_end;
4449             }
4450         } else {
4451         #if CONFIG_SENSOR_I2C_RDWRCHK
4452                         sensor_read(client, regarray[i].reg, &valchk);
4453                         if (valchk != regarray[i].val)
4454                                 SENSOR_TR("%s Reg:0x%x write(0x%x, 0x%x) fail\n",SENSOR_NAME_STRING(), regarray[i].reg, regarray[i].val, valchk);
4455                 #endif
4456         }
4457
4458         i++;
4459     }
4460
4461 sensor_write_array_end:
4462         sensor_task_lock(client,0);
4463     return err;
4464 }
4465
4466 #if CONFIG_SENSOR_I2C_RDWRCHK
4467 static int sensor_readchk_array(struct i2c_client *client, struct reginfo *regarray)
4468 {
4469     int cnt;
4470     int i = 0;
4471         char valchk;
4472
4473         cnt = 0;
4474         valchk = 0;
4475     while (regarray[i].reg != SEQUENCE_END)
4476     {
4477                 sensor_read(client, regarray[i].reg, &valchk);
4478                 if (valchk != regarray[i].val)
4479                         SENSOR_TR("%s Reg:0x%x read(0x%x, 0x%x) error\n",SENSOR_NAME_STRING(), regarray[i].reg, regarray[i].val, valchk);
4480
4481         i++;
4482     }
4483     return 0;
4484 }
4485 #endif
4486 #if CONFIG_SENSOR_Focus
4487
4488 static int sensor_af_single(struct i2c_client *client)
4489 {
4490         int ret = 0;
4491
4492
4493 sensor_af_single_end:
4494         return ret;
4495 }
4496
4497 static int sensor_af_const(struct i2c_client *client)
4498 {
4499         int ret = 0;
4500
4501 sensor_af_const_end:
4502         return ret;
4503 }
4504
4505 static int sensor_af_zoneupdate(struct i2c_client *client)
4506 {
4507         int ret = 0;
4508
4509 sensor_af_zoneupdate_end:
4510         return ret;
4511 }
4512
4513 static int sensor_af_init(struct i2c_client *client)
4514 {
4515         int ret = 0;
4516
4517         return ret;
4518 }
4519 #endif
4520
4521 static int sensor_ioctrl(struct soc_camera_device *icd,enum rk29sensor_power_cmd cmd, int on)
4522 {
4523         struct soc_camera_link *icl = to_soc_camera_link(icd);
4524         struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
4525     struct sensor *sensor = to_sensor(client);
4526         int ret = 0;
4527
4528         switch (cmd)
4529         {
4530                 case Sensor_Reset:
4531                 {
4532                         if (sensor->sensor_io_request && sensor->sensor_io_request->sensor_ioctrl) {
4533                                 sensor->sensor_io_request->sensor_ioctrl(icd->pdev,Cam_Reset, on);
4534                         }
4535                         break;
4536                 }
4537                 case Sensor_PowerDown:
4538                 {
4539                         if (icl->powerdown) {
4540                                 ret = icl->powerdown(icd->pdev, on);
4541                                 if (ret == RK29_CAM_IO_SUCCESS) {
4542                                         if (on == 0) {
4543                                                 mdelay(2);
4544                                                 if (icl->reset)
4545                                                         icl->reset(icd->pdev);
4546                                         }
4547                                 } else if (ret == RK29_CAM_EIO_REQUESTFAIL) {
4548                                         ret = -ENODEV;
4549                                         goto sensor_power_end;
4550                                 }
4551                         }
4552                         break;
4553                 }
4554                 case Sensor_Flash:
4555                 {
4556                         if (sensor->sensor_io_request && sensor->sensor_io_request->sensor_ioctrl) {
4557                                 sensor->sensor_io_request->sensor_ioctrl(icd->pdev,Cam_Flash, on);
4558                         }
4559                         break;
4560                 }
4561                 default:
4562                 {
4563                         SENSOR_TR("%s cmd(0x%x) is unknown!",SENSOR_NAME_STRING(),cmd);
4564                         break;
4565                 }
4566         }
4567
4568 sensor_power_end:
4569         return ret;
4570 }
4571
4572 static int sensor_init(struct v4l2_subdev *sd, u32 val)
4573 {
4574     struct i2c_client *client = v4l2_get_subdevdata(sd);
4575     struct soc_camera_device *icd = client->dev.platform_data;
4576     struct sensor *sensor = to_sensor(client);
4577         const struct v4l2_queryctrl *qctrl;
4578     const struct sensor_datafmt *fmt;
4579     int ret;
4580     u16 pid = 0;
4581
4582     SENSOR_DG("\n%s..%s.. \n",SENSOR_NAME_STRING(),__FUNCTION__);
4583
4584         sensor_ioctrl(icd,Sensor_Reset, 1);
4585         if (sensor_ioctrl(icd, Sensor_PowerDown, 0) < 0) {
4586                 ret = -ENODEV;
4587                 goto sensor_INIT_ERR;
4588         }
4589
4590         udelay(50);
4591         sensor_ioctrl(icd,Sensor_Reset, 0);
4592         mdelay(1);
4593     /* soft reset */
4594         if (sensor_task_lock(client,1)<0)
4595                 goto sensor_INIT_ERR;
4596
4597 #if (SENSOR_RESET_REG != SEQUENCE_END)
4598     ret = sensor_write(client, SENSOR_RESET_REG, SENSOR_RESET_VAL);
4599     if (ret != 0) {
4600         SENSOR_TR("%s soft reset sensor failed\n",SENSOR_NAME_STRING());
4601         ret = -ENODEV;
4602                 goto sensor_INIT_ERR;
4603     }
4604
4605     mdelay(5);  //delay 5 microseconds
4606 #endif
4607
4608         /* check if it is an sensor sensor */
4609 #if (SENSOR_ID_REG != SEQUENCE_END)
4610     ret = sensor_read(client, SENSOR_ID_REG, &pid);
4611     if (ret != 0) {
4612         SENSOR_TR("read chip id failed\n");
4613         ret = -ENODEV;
4614         goto sensor_INIT_ERR;
4615     }
4616
4617     SENSOR_DG("\n %s  pid = 0x%x \n", SENSOR_NAME_STRING(), pid);
4618 #else
4619         pid = SENSOR_ID;
4620 #endif
4621     if (pid == SENSOR_ID) {
4622         sensor->model = SENSOR_V4L2_IDENT;
4623     } else {
4624         SENSOR_TR("error: %s mismatched   pid = 0x%x\n", SENSOR_NAME_STRING(), pid);
4625         ret = -ENODEV;
4626         goto sensor_INIT_ERR;
4627     }
4628     ret = sensor_write_array(client, sensor_init_data);
4629     if (ret != 0)
4630     {
4631         SENSOR_TR("error: %s initial failed\n",SENSOR_NAME_STRING());
4632         goto sensor_INIT_ERR;
4633     }
4634         sensor_task_lock(client,0);
4635     sensor->info_priv.winseqe_cur_addr  = SENSOR_INIT_WINSEQADR;
4636         fmt = sensor_find_datafmt(SENSOR_INIT_PIXFMT,sensor_colour_fmts, ARRAY_SIZE(sensor_colour_fmts));
4637     if (!fmt) {
4638         SENSOR_TR("error: %s initial array colour fmts is not support!!",SENSOR_NAME_STRING());
4639         ret = -EINVAL;
4640         goto sensor_INIT_ERR;
4641     }
4642         sensor->info_priv.fmt = *fmt;
4643
4644     /* sensor sensor information for initialization  */
4645         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_DO_WHITE_BALANCE);
4646         if (qctrl)
4647         sensor->info_priv.whiteBalance = qctrl->default_value;
4648         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_BRIGHTNESS);
4649         if (qctrl)
4650         sensor->info_priv.brightness = qctrl->default_value;
4651         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_EFFECT);
4652         if (qctrl)
4653         sensor->info_priv.effect = qctrl->default_value;
4654         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_EXPOSURE);
4655         if (qctrl)
4656         sensor->info_priv.exposure = qctrl->default_value;
4657
4658         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_SATURATION);
4659         if (qctrl)
4660         sensor->info_priv.saturation = qctrl->default_value;
4661         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_CONTRAST);
4662         if (qctrl)
4663         sensor->info_priv.contrast = qctrl->default_value;
4664         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_HFLIP);
4665         if (qctrl)
4666         sensor->info_priv.mirror = qctrl->default_value;
4667         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_VFLIP);
4668         if (qctrl)
4669         sensor->info_priv.flip = qctrl->default_value;
4670         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_SCENE);
4671         if (qctrl)
4672         sensor->info_priv.scene = qctrl->default_value;
4673     #if CONFIG_SENSOR_AntiBanding
4674         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_ANTIBANDING);
4675         if (qctrl)
4676         sensor->info_priv.antibanding = qctrl->default_value;
4677     #endif
4678         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_ZOOM_ABSOLUTE);
4679         if (qctrl)
4680         sensor->info_priv.digitalzoom = qctrl->default_value;
4681
4682     /* ddl@rock-chips.com : if sensor support auto focus and flash, programer must run focus and flash code  */
4683         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_FOCUS_ABSOLUTE);
4684         if (qctrl)
4685         sensor->info_priv.focus = qctrl->default_value;
4686
4687         #if CONFIG_SENSOR_Flash
4688         qctrl = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_FLASH);
4689         if (qctrl)
4690         sensor->info_priv.flash = qctrl->default_value;
4691     #endif
4692     SENSOR_DG("\n%s..%s.. icd->width = %d.. icd->height %d\n",SENSOR_NAME_STRING(),((val == 0)?__FUNCTION__:"sensor_reinit"),icd->user_width,icd->user_height);
4693 //sensor_init_end:    
4694     sensor->info_priv.funmodule_state |= SENSOR_INIT_IS_OK;
4695     return 0;
4696 sensor_INIT_ERR:
4697     sensor->info_priv.funmodule_state |= SENSOR_INIT_IS_OK;
4698         sensor_task_lock(client,0);
4699         sensor_deactivate(client);
4700     return ret;
4701 }
4702
4703 static int sensor_deactivate(struct i2c_client *client)
4704 {
4705         struct soc_camera_device *icd = client->dev.platform_data;
4706     struct sensor *sensor = to_sensor(client);
4707
4708         SENSOR_DG("\n%s..%s.. Enter\n",SENSOR_NAME_STRING(),__FUNCTION__);
4709
4710         /* ddl@rock-chips.com : all sensor output pin must change to input for other sensor */
4711         //sensor_task_lock(client, 1);
4712         sensor_ioctrl(icd, Sensor_PowerDown, 1);
4713     msleep(100); 
4714
4715         /* ddl@rock-chips.com : sensor config init width , because next open sensor quickly(soc_camera_open -> Try to configure with default parameters) */
4716         icd->user_width = SENSOR_INIT_WIDTH;
4717     icd->user_height = SENSOR_INIT_HEIGHT;
4718     sensor->info_priv.funmodule_state &= ~SENSOR_INIT_IS_OK;
4719
4720         return 0;
4721 }
4722
4723 static  struct reginfo sensor_suspend_sequence[]=
4724 {
4725     {SEQUENCE_END,0x00}
4726 };
4727
4728 static struct reginfo sensor_resume_sequence[]=
4729 {
4730     {SEQUENCE_END,0x00}
4731 };
4732 static int sensor_suspend(struct soc_camera_device *icd, pm_message_t pm_msg)
4733 {
4734     int ret;
4735     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
4736
4737     if (pm_msg.event == PM_EVENT_SUSPEND) {
4738         SENSOR_DG("\n %s Enter Suspend.. \n", SENSOR_NAME_STRING());
4739         ret = sensor_write_array(client, sensor_suspend_sequence) ;
4740         if (ret != 0) {
4741             SENSOR_TR("\n %s..%s WriteReg Fail.. \n", SENSOR_NAME_STRING(),__FUNCTION__);
4742             return ret;
4743         } else {
4744                 mdelay(100);
4745             ret = sensor_ioctrl(icd, Sensor_PowerDown, 1);
4746             if (ret < 0) {
4747                             SENSOR_TR("\n %s suspend fail for turn on power!\n", SENSOR_NAME_STRING());
4748                 return -EINVAL;
4749             }
4750         }
4751     } else {
4752         SENSOR_TR("\n %s cann't suppout Suspend..\n",SENSOR_NAME_STRING());
4753         return -EINVAL;
4754     }
4755
4756     return 0;
4757 }
4758
4759 static int sensor_resume(struct soc_camera_device *icd)
4760 {
4761         int ret;
4762         struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
4763
4764     ret = sensor_ioctrl(icd, Sensor_PowerDown, 0);
4765     if (ret < 0) {
4766                 SENSOR_TR("\n %s resume fail for turn on power!\n", SENSOR_NAME_STRING());
4767         return -EINVAL;
4768     } else {
4769         udelay(5);
4770                 ret = sensor_write_array(client, sensor_resume_sequence) ;
4771             if (ret != 0) {
4772                 SENSOR_TR("\n %s..%s WriteReg Fail.. \n", SENSOR_NAME_STRING(),__FUNCTION__);
4773                         return -EINVAL;
4774             }
4775     }
4776
4777         SENSOR_DG("\n %s Enter Resume.. \n", SENSOR_NAME_STRING());
4778
4779         return 0;
4780 }
4781
4782 static int sensor_set_bus_param(struct soc_camera_device *icd,
4783                                 unsigned long flags)
4784 {
4785     return 0;
4786 }
4787
4788 static unsigned long sensor_query_bus_param(struct soc_camera_device *icd)
4789 {
4790     struct soc_camera_link *icl = to_soc_camera_link(icd);
4791     unsigned long flags = SENSOR_BUS_PARAM;
4792
4793     return soc_camera_apply_sensor_flags(icl, flags);
4794 }
4795
4796 static int sensor_g_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf)
4797 {
4798     struct i2c_client *client = v4l2_get_subdevdata(sd);
4799     struct soc_camera_device *icd = client->dev.platform_data;
4800     struct sensor *sensor = to_sensor(client);
4801
4802     mf->width   = icd->user_width;
4803         mf->height      = icd->user_height;
4804         mf->code        = sensor->info_priv.fmt.code;
4805         mf->colorspace  = sensor->info_priv.fmt.colorspace;
4806         mf->field       = V4L2_FIELD_NONE;
4807
4808     return 0;
4809 }
4810 #if 0
4811 static bool sensor_fmt_capturechk(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf)
4812 {
4813     bool ret = false;
4814
4815         if ((mf->width == 1024) && (mf->height == 768)) {
4816                 ret = true;
4817         } else if ((mf->width == 1280) && (mf->height == 1024)) {
4818                 ret = true;
4819         } else if ((mf->width == 1600) && (mf->height == 1200)) {
4820                 ret = true;
4821         } else if ((mf->width == 2048) && (mf->height == 1536)) {
4822                 ret = true;
4823         } else if ((mf->width == 2592) && (mf->height == 1944)) {
4824                 ret = true;
4825         }
4826
4827         if (ret == true)
4828                 SENSOR_DG("%s %dx%d is capture format\n", __FUNCTION__, mf->width, mf->height);
4829         return ret;
4830 }
4831
4832 static bool sensor_fmt_videochk(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf)
4833 {
4834     bool ret = false;
4835
4836         if ((mf->width == 1280) && (mf->height == 720)) {
4837                 ret = true;
4838         } else if ((mf->width == 1920) && (mf->height == 1080)) {
4839                 ret = true;
4840         }
4841
4842         if (ret == true)
4843                 SENSOR_DG("%s %dx%d is video format\n", __FUNCTION__, mf->width, mf->height);
4844         return ret;
4845 }
4846 #endif
4847 static struct reginfo* sensor_fmt_catch(int set_w, int set_h, int *ret_w, int *ret_h)
4848 {
4849         struct reginfo *winseqe_set_addr = NULL;
4850
4851         if (((set_w <= 176) && (set_h <= 144)) && (sensor_qcif[0].reg!=SEQUENCE_END)) {
4852                 winseqe_set_addr = sensor_qcif;
4853         *ret_w = 176;
4854         *ret_h = 144;
4855         } else if (((set_w <= 320) && (set_h <= 240)) && (sensor_qvga[0].reg!=SEQUENCE_END)) {
4856         winseqe_set_addr = sensor_qvga;
4857         *ret_w = 320;
4858         *ret_h = 240;
4859         } else if (((set_w <= 352) && (set_h<= 288)) && (sensor_cif[0].reg!=SEQUENCE_END)) {
4860         winseqe_set_addr = sensor_cif;
4861         *ret_w = 352;
4862         *ret_h = 288;
4863     } else if (((set_w <= 640) && (set_h <= 480)) && (sensor_vga[0].reg!=SEQUENCE_END)) {
4864         winseqe_set_addr = sensor_vga;
4865         *ret_w = 640;
4866         *ret_h = 480;
4867     }  
4868 #if CONFIG_SENSOR_FOR_CTS
4869    /**lzg@rockchip.com: forbid to preview with resolution 1280*1024*/
4870     else if (((set_w <= 800) && (set_h <= 600)) && (sensor_vga[0].reg!=SEQUENCE_END)) {
4871             winseqe_set_addr = sensor_vga;
4872             *ret_w = 640;
4873             *ret_h = 480;
4874         } 
4875 #else
4876     else if (((set_w <= 800) && (set_h <= 600)) && (sensor_svga[0].reg!=SEQUENCE_END)) {
4877         winseqe_set_addr = sensor_svga;
4878         *ret_w = 800;
4879         *ret_h = 600;       
4880     } 
4881 #endif
4882     else if (((set_w <= 1024) && (set_h <= 768)) && (sensor_xga[0].reg!=SEQUENCE_END)) {
4883         winseqe_set_addr = sensor_xga;
4884         *ret_w = 1024;
4885         *ret_h = 768;
4886         } else if (((set_w <= 1280) && (set_h <= 720)) && (sensor_720p[0].reg!=SEQUENCE_END)) {
4887         winseqe_set_addr = sensor_720p;
4888         *ret_w = 1280;
4889         *ret_h = 720;
4890     } else if (((set_w <= 1280) && (set_h <= 1024)) && (sensor_sxga[0].reg!=SEQUENCE_END)) {
4891         winseqe_set_addr = sensor_sxga;
4892         *ret_w = 1280;
4893         *ret_h = 1024;
4894     } else if (((set_w <= 1600) && (set_h <= 1200)) && (sensor_uxga[0].reg!=SEQUENCE_END)) {
4895         winseqe_set_addr = sensor_uxga;
4896         *ret_w = 1600;
4897         *ret_h = 1200;
4898         } 
4899 #if CONFIG_SENSOR_FOR_CTS
4900    /**lzg@rockchip.com: forbid to preview with resolution 1280*1024*/
4901     else if (((set_w <= 1920) && (set_h <= 1080)) && (sensor_vga[0].reg!=SEQUENCE_END)) {
4902         winseqe_set_addr = sensor_vga;
4903         *ret_w = 640;
4904         *ret_h = 480;
4905     }     
4906 #else
4907     else if (((set_w <= 1920) && (set_h <= 1080)) && (sensor_1080p[0].reg!=SEQUENCE_END)) {
4908         winseqe_set_addr = sensor_1080p;
4909         *ret_w = 1920;
4910         *ret_h = 1080;
4911     } 
4912 #endif
4913     else if (((set_w <= 2048) && (set_h <= 1536)) && (sensor_qxga[0].reg!=SEQUENCE_END)) {
4914         winseqe_set_addr = sensor_qxga;
4915         *ret_w = 2048;
4916         *ret_h = 1536;
4917     } else if (((set_w <= 2592) && (set_h <= 1944)) && (sensor_qsxga[0].reg!=SEQUENCE_END)) {
4918         winseqe_set_addr = sensor_qsxga;
4919         *ret_w = 2592;
4920         *ret_h = 1944;
4921     }
4922
4923         return winseqe_set_addr;
4924 }
4925
4926 static int sensor_s_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf)
4927 {
4928     struct i2c_client *client = v4l2_get_subdevdata(sd);
4929     const struct sensor_datafmt *fmt;
4930     struct sensor *sensor = to_sensor(client);    
4931     struct reginfo *winseqe_set_addr=NULL;
4932     int ret=0, set_w,set_h;
4933
4934         fmt = sensor_find_datafmt(mf->code, sensor_colour_fmts,
4935                                    ARRAY_SIZE(sensor_colour_fmts));
4936         if (!fmt) {
4937         ret = -EINVAL;
4938         goto sensor_s_fmt_end;
4939     }
4940
4941         if (sensor->info_priv.fmt.code != mf->code) {
4942                 switch (mf->code)
4943                 {
4944                         case V4L2_MBUS_FMT_YUYV8_2X8:
4945                         {
4946                                 winseqe_set_addr = sensor_ClrFmt_YUYV;
4947                                 break;
4948                         }
4949                         case V4L2_MBUS_FMT_UYVY8_2X8:
4950                         {
4951                                 winseqe_set_addr = sensor_ClrFmt_UYVY;
4952                                 break;
4953                         }
4954                         default:
4955                                 break;
4956                 }
4957                 if (winseqe_set_addr != NULL) {
4958             sensor_write_array(client, winseqe_set_addr);
4959                         sensor->info_priv.fmt.code = mf->code;
4960             sensor->info_priv.fmt.colorspace= mf->colorspace;            
4961                         SENSOR_DG("%s v4l2_mbus_code:%d set success!\n", SENSOR_NAME_STRING(),mf->code);
4962                 } else {
4963                         SENSOR_TR("%s v4l2_mbus_code:%d is invalidate!\n", SENSOR_NAME_STRING(),mf->code);
4964                 }
4965         }
4966
4967     set_w = mf->width;
4968     set_h = mf->height;
4969
4970         winseqe_set_addr = sensor_fmt_catch(set_w, set_h, &set_w, &set_h);
4971
4972     if ((winseqe_set_addr  != sensor->info_priv.winseqe_cur_addr) && winseqe_set_addr) {
4973         #if CONFIG_SENSOR_Flash
4974         if (sensor_fmt_capturechk(sd,mf) == true) {      /* ddl@rock-chips.com : Capture */
4975             if ((sensor->info_priv.flash == 1) || (sensor->info_priv.flash == 2)) {
4976                 sensor_ioctrl(icd, Sensor_Flash, Flash_On);
4977                 SENSOR_DG("%s flash on in capture!\n", SENSOR_NAME_STRING());
4978             }           
4979         } else {                                        /* ddl@rock-chips.com : Video */
4980             if ((sensor->info_priv.flash == 1) || (sensor->info_priv.flash == 2)) {
4981                 sensor_ioctrl(icd, Sensor_Flash, Flash_Off);
4982                 SENSOR_DG("%s flash off in preivew!\n", SENSOR_NAME_STRING());
4983             }
4984         }
4985         #endif
4986         ret |= sensor_write_array(client, winseqe_set_addr);
4987         if (ret != 0) {
4988             SENSOR_TR("%s set format capability failed\n", SENSOR_NAME_STRING());
4989             #if CONFIG_SENSOR_Flash
4990             if (sensor_fmt_capturechk(sd,mf) == true) {
4991                 if ((sensor->info_priv.flash == 1) || (sensor->info_priv.flash == 2)) {
4992                     sensor_ioctrl(icd, Sensor_Flash, Flash_Off);
4993                     SENSOR_TR("%s Capture format set fail, flash off !\n", SENSOR_NAME_STRING());
4994                 }
4995             }
4996             #endif
4997             goto sensor_s_fmt_end;
4998         }
4999
5000         sensor->info_priv.winseqe_cur_addr  = (struct reginfo *)winseqe_set_addr;
5001
5002         SENSOR_DG("\n%s..%s.. icd->width = %d.. icd->height %d\n",SENSOR_NAME_STRING(),__FUNCTION__,set_w,set_h);
5003     } else {
5004         SENSOR_TR("\n %s .. Current Format is validate. icd->width = %d.. icd->height %d\n",SENSOR_NAME_STRING(),set_w,set_h);
5005     }
5006
5007         mf->width = set_w;
5008     mf->height = set_h;
5009
5010 sensor_s_fmt_end:
5011     return ret;
5012 }
5013
5014 static int sensor_try_fmt(struct v4l2_subdev *sd, struct v4l2_mbus_framefmt *mf)
5015 {
5016     struct i2c_client *client = v4l2_get_subdevdata(sd);
5017     struct sensor *sensor = to_sensor(client);
5018     const struct sensor_datafmt *fmt;
5019     int ret = 0, set_w,set_h;;
5020    
5021         fmt = sensor_find_datafmt(mf->code, sensor_colour_fmts,
5022                                    ARRAY_SIZE(sensor_colour_fmts));
5023         if (fmt == NULL) {
5024                 fmt = &sensor->info_priv.fmt;
5025         mf->code = fmt->code;
5026         } 
5027
5028     if (mf->height > SENSOR_MAX_HEIGHT)
5029         mf->height = SENSOR_MAX_HEIGHT;
5030     else if (mf->height < SENSOR_MIN_HEIGHT)
5031         mf->height = SENSOR_MIN_HEIGHT;
5032
5033     if (mf->width > SENSOR_MAX_WIDTH)
5034         mf->width = SENSOR_MAX_WIDTH;
5035     else if (mf->width < SENSOR_MIN_WIDTH)
5036         mf->width = SENSOR_MIN_WIDTH;
5037
5038     set_w = mf->width;
5039     set_h = mf->height;
5040
5041         if (((set_w <= 176) && (set_h <= 144)) && sensor_qcif[0].reg)
5042         {
5043         set_w = 176;
5044         set_h = 144;
5045         }
5046         else if (((set_w <= 320) && (set_h <= 240)) && sensor_qvga[0].reg)
5047     {
5048         set_w = 320;
5049         set_h = 240;
5050     }
5051     else if (((set_w <= 352) && (set_h<= 288)) && sensor_cif[0].reg)
5052     {
5053         set_w = 352;
5054         set_h = 288;
5055     }
5056     else if (((set_w <= 640) && (set_h <= 480)) && sensor_vga[0].reg)
5057     {
5058         set_w = 640;
5059         set_h = 480;
5060     }
5061     else if (((set_w <= 800) && (set_h <= 600)) && sensor_svga[0].reg)
5062     {
5063         set_w = 800;
5064         set_h = 600;
5065     }
5066     else if (((set_w <= 1280) && (set_h <= 720)) && sensor_720p[0].reg)
5067     {
5068         set_w = 1280;
5069         set_h = 720;
5070     }
5071         else if (((set_w <= 1024) && (set_h <= 768)) && sensor_xga[0].reg)
5072     {
5073         set_w = 1024;
5074         set_h = 768;
5075     }
5076     else if (((set_w <= 1280) && (set_h <= 1024)) && sensor_sxga[0].reg)
5077     {
5078         set_w = 1280;
5079         set_h = 1024;
5080     }
5081     else if (((set_w <= 1600) && (set_h <= 1200)) && sensor_uxga[0].reg)
5082     {
5083         set_w = 1600;
5084         set_h = 1200;
5085     }
5086     else if (((set_w <= 2048) && (set_h <= 1536)) && sensor_qxga[0].reg)
5087     {
5088         set_w = 2048;
5089         set_h = 1536;
5090     }
5091     else
5092     {              /* ddl@rock-chips.com : Sensor output smallest size if  isn't support app  */
5093         set_w = SENSOR_INIT_WIDTH;
5094         set_h = SENSOR_INIT_HEIGHT;             
5095     }
5096     mf->width = set_w;
5097     mf->height = set_h;
5098     mf->colorspace = fmt->colorspace;
5099     
5100     return ret;
5101 }
5102
5103  static int sensor_g_chip_ident(struct v4l2_subdev *sd, struct v4l2_dbg_chip_ident *id)
5104 {
5105     struct i2c_client *client = v4l2_get_subdevdata(sd);
5106
5107     if (id->match.type != V4L2_CHIP_MATCH_I2C_ADDR)
5108         return -EINVAL;
5109
5110     if (id->match.addr != client->addr)
5111         return -ENODEV;
5112
5113     id->ident = SENSOR_V4L2_IDENT;      /* ddl@rock-chips.com :  Return s5k6aa  identifier */
5114     id->revision = 0;
5115
5116     return 0;
5117 }
5118 #if CONFIG_SENSOR_Brightness
5119 static int sensor_set_brightness(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value)
5120 {
5121     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5122
5123     if ((value >= qctrl->minimum) && (value <= qctrl->maximum))
5124     {
5125         if (sensor_BrightnessSeqe[value - qctrl->minimum] != NULL)
5126         {
5127             if (sensor_write_array(client, sensor_BrightnessSeqe[value - qctrl->minimum]) != 0)
5128             {
5129                 SENSOR_TR("%s..%s WriteReg Fail.. \n",SENSOR_NAME_STRING(), __FUNCTION__);
5130                 return -EINVAL;
5131             }
5132             SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, value);
5133             return 0;
5134         }
5135     }
5136         SENSOR_TR("\n %s..%s valure = %d is invalidate..    \n",SENSOR_NAME_STRING(),__FUNCTION__,value);
5137     return -EINVAL;
5138 }
5139 #endif
5140 #if CONFIG_SENSOR_Effect
5141 static int sensor_set_effect(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value)
5142 {
5143     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5144
5145     if ((value >= qctrl->minimum) && (value <= qctrl->maximum))
5146     {
5147         if (sensor_EffectSeqe[value - qctrl->minimum] != NULL)
5148         {
5149             if (sensor_write_array(client, sensor_EffectSeqe[value - qctrl->minimum]) != 0)
5150             {
5151                 SENSOR_TR("%s..%s WriteReg Fail.. \n",SENSOR_NAME_STRING(), __FUNCTION__);
5152                 return -EINVAL;
5153             }
5154             SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, value);
5155             return 0;
5156         }
5157     }
5158         SENSOR_TR("\n %s..%s valure = %d is invalidate..    \n",SENSOR_NAME_STRING(),__FUNCTION__,value);
5159     return -EINVAL;
5160 }
5161 #endif
5162 #if CONFIG_SENSOR_Exposure
5163 static int sensor_set_exposure(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value)
5164 {
5165     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5166
5167     if ((value >= qctrl->minimum) && (value <= qctrl->maximum))
5168     {
5169         if (sensor_ExposureSeqe[value - qctrl->minimum] != NULL)
5170         {
5171             if (sensor_write_array(client, sensor_ExposureSeqe[value - qctrl->minimum]) != 0)
5172             {
5173                 SENSOR_TR("%s..%s WriteReg Fail.. \n",SENSOR_NAME_STRING(), __FUNCTION__);
5174                 return -EINVAL;
5175             }
5176             SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, value);
5177             return 0;
5178         }
5179     }
5180         SENSOR_TR("\n %s..%s valure = %d is invalidate..    \n",SENSOR_NAME_STRING(),__FUNCTION__,value);
5181     return -EINVAL;
5182 }
5183 #endif
5184 #if CONFIG_SENSOR_Saturation
5185 static int sensor_set_saturation(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value)
5186 {
5187     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5188
5189     if ((value >= qctrl->minimum) && (value <= qctrl->maximum))
5190     {
5191         if (sensor_SaturationSeqe[value - qctrl->minimum] != NULL)
5192         {
5193             if (sensor_write_array(client, sensor_SaturationSeqe[value - qctrl->minimum]) != 0)
5194             {
5195                 SENSOR_TR("%s..%s WriteReg Fail.. \n",SENSOR_NAME_STRING(), __FUNCTION__);
5196                 return -EINVAL;
5197             }
5198             SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, value);
5199             return 0;
5200         }
5201     }
5202     SENSOR_TR("\n %s..%s valure = %d is invalidate..    \n",SENSOR_NAME_STRING(),__FUNCTION__,value);
5203     return -EINVAL;
5204 }
5205 #endif
5206 #if CONFIG_SENSOR_Contrast
5207 static int sensor_set_contrast(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value)
5208 {
5209     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5210
5211     if ((value >= qctrl->minimum) && (value <= qctrl->maximum))
5212     {
5213         if (sensor_ContrastSeqe[value - qctrl->minimum] != NULL)
5214         {
5215             if (sensor_write_array(client, sensor_ContrastSeqe[value - qctrl->minimum]) != 0)
5216             {
5217                 SENSOR_TR("%s..%s WriteReg Fail.. \n",SENSOR_NAME_STRING(), __FUNCTION__);
5218                 return -EINVAL;
5219             }
5220             SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, value);
5221             return 0;
5222         }
5223     }
5224     SENSOR_TR("\n %s..%s valure = %d is invalidate..    \n",SENSOR_NAME_STRING(),__FUNCTION__,value);
5225     return -EINVAL;
5226 }
5227 #endif
5228 #if CONFIG_SENSOR_Mirror
5229 static int sensor_set_mirror(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value)
5230 {
5231     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5232
5233     if ((value >= qctrl->minimum) && (value <= qctrl->maximum))
5234     {
5235         if (sensor_MirrorSeqe[value - qctrl->minimum] != NULL)
5236         {
5237             if (sensor_write_array(client, sensor_MirrorSeqe[value - qctrl->minimum]) != 0)
5238             {
5239                 SENSOR_TR("%s..%s WriteReg Fail.. \n",SENSOR_NAME_STRING(), __FUNCTION__);
5240                 return -EINVAL;
5241             }
5242             SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, value);
5243             return 0;
5244         }
5245     }
5246     SENSOR_TR("\n %s..%s valure = %d is invalidate..    \n",SENSOR_NAME_STRING(),__FUNCTION__,value);
5247     return -EINVAL;
5248 }
5249 #endif
5250 #if CONFIG_SENSOR_Flip
5251 static int sensor_set_flip(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value)
5252 {
5253     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5254
5255     if ((value >= qctrl->minimum) && (value <= qctrl->maximum))
5256     {
5257         if (sensor_FlipSeqe[value - qctrl->minimum] != NULL)
5258         {
5259             if (sensor_write_array(client, sensor_FlipSeqe[value - qctrl->minimum]) != 0)
5260             {
5261                 SENSOR_TR("%s..%s WriteReg Fail.. \n",SENSOR_NAME_STRING(), __FUNCTION__);
5262                 return -EINVAL;
5263             }
5264             SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, value);
5265             return 0;
5266         }
5267     }
5268     SENSOR_TR("\n %s..%s valure = %d is invalidate..    \n",SENSOR_NAME_STRING(),__FUNCTION__,value);
5269     return -EINVAL;
5270 }
5271 #endif
5272 #if CONFIG_SENSOR_Scene
5273 static int sensor_set_scene(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value)
5274 {
5275     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5276
5277     if ((value >= qctrl->minimum) && (value <= qctrl->maximum))
5278     {
5279         if (sensor_SceneSeqe[value - qctrl->minimum] != NULL)
5280         {
5281             if (sensor_write_array(client, sensor_SceneSeqe[value - qctrl->minimum]) != 0)
5282             {
5283                 SENSOR_TR("%s..%s WriteReg Fail.. \n",SENSOR_NAME_STRING(), __FUNCTION__);
5284                 return -EINVAL;
5285             }
5286             SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, value);
5287             return 0;
5288         }
5289     }
5290     SENSOR_TR("\n %s..%s valure = %d is invalidate..    \n",SENSOR_NAME_STRING(),__FUNCTION__,value);
5291     return -EINVAL;
5292 }
5293 #endif
5294 #if CONFIG_SENSOR_AntiBanding
5295 static int sensor_set_antibanding(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value)
5296 {
5297     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5298
5299     if ((value >= qctrl->minimum) && (value <= qctrl->maximum))
5300     {
5301         if (sensor_AntiBandingSeqe[value - qctrl->minimum] != NULL)
5302         {
5303             if (sensor_write_array(client, sensor_AntiBandingSeqe[value - qctrl->minimum]) != 0)
5304             {
5305                 SENSOR_TR("%s..%s WriteReg Fail.. \n",SENSOR_NAME_STRING(), __FUNCTION__);
5306                 return -EINVAL;
5307             }
5308             SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, value);
5309             return 0;
5310         }
5311     }
5312     SENSOR_TR("\n %s..%s valure = %d is invalidate..    \n",SENSOR_NAME_STRING(),__FUNCTION__,value);
5313     return -EINVAL;
5314 }
5315 #endif
5316 #if CONFIG_SENSOR_WhiteBalance
5317 static int sensor_set_whiteBalance(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value)
5318 {
5319     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5320
5321     if ((value >= qctrl->minimum) && (value <= qctrl->maximum))
5322     {
5323         if (sensor_WhiteBalanceSeqe[value - qctrl->minimum] != NULL)
5324         {
5325             if (sensor_write_array(client, sensor_WhiteBalanceSeqe[value - qctrl->minimum]) != 0)
5326             {
5327                 SENSOR_TR("%s..%s WriteReg Fail.. \n",SENSOR_NAME_STRING(), __FUNCTION__);
5328                 return -EINVAL;
5329             }
5330             SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, value);
5331             return 0;
5332         }
5333     }
5334         SENSOR_TR("\n %s..%s valure = %d is invalidate..    \n",SENSOR_NAME_STRING(),__FUNCTION__,value);
5335     return -EINVAL;
5336 }
5337 #endif
5338 #if CONFIG_SENSOR_DigitalZoom
5339 static int sensor_set_digitalzoom(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int *value)
5340 {
5341     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5342     struct sensor *sensor = to_sensor(client);
5343         const struct v4l2_queryctrl *qctrl_info;
5344     int digitalzoom_cur, digitalzoom_total;
5345
5346         qctrl_info = soc_camera_find_qctrl(&sensor_ops, V4L2_CID_ZOOM_ABSOLUTE);
5347         if (qctrl_info)
5348                 return -EINVAL;
5349
5350     digitalzoom_cur = sensor->info_priv.digitalzoom;
5351     digitalzoom_total = qctrl_info->maximum;
5352
5353     if ((*value > 0) && (digitalzoom_cur >= digitalzoom_total))
5354     {
5355         SENSOR_TR("%s digitalzoom is maximum - %x\n", SENSOR_NAME_STRING(), digitalzoom_cur);
5356         return -EINVAL;
5357     }
5358
5359     if  ((*value < 0) && (digitalzoom_cur <= qctrl_info->minimum))
5360     {
5361         SENSOR_TR("%s digitalzoom is minimum - %x\n", SENSOR_NAME_STRING(), digitalzoom_cur);
5362         return -EINVAL;
5363     }
5364
5365     if ((*value > 0) && ((digitalzoom_cur + *value) > digitalzoom_total))
5366     {
5367         *value = digitalzoom_total - digitalzoom_cur;
5368     }
5369
5370     if ((*value < 0) && ((digitalzoom_cur + *value) < 0))
5371     {
5372         *value = 0 - digitalzoom_cur;
5373     }
5374
5375     digitalzoom_cur += *value;
5376
5377     if (sensor_ZoomSeqe[digitalzoom_cur] != NULL)
5378     {
5379         if (sensor_write_array(client, sensor_ZoomSeqe[digitalzoom_cur]) != 0)
5380         {
5381             SENSOR_TR("%s..%s WriteReg Fail.. \n",SENSOR_NAME_STRING(), __FUNCTION__);
5382             return -EINVAL;
5383         }
5384         SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, *value);
5385         return 0;
5386     }
5387
5388     return -EINVAL;
5389 }
5390 #endif
5391 #if CONFIG_SENSOR_Flash
5392 static int sensor_set_flash(struct soc_camera_device *icd, const struct v4l2_queryctrl *qctrl, int value)
5393 {
5394     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5395     struct sensor *sensor = to_sensor(client);
5396         const struct v4l2_queryctrl *qctrl_info;
5397     
5398     if ((value >= qctrl->minimum) && (value <= qctrl->maximum)) {
5399         if (value == 3) {       /* ddl@rock-chips.com: torch */
5400             sensor_ioctrl(icd, Sensor_Flash, Flash_Torch);   /* Flash On */
5401         } else {
5402             sensor_ioctrl(icd, Sensor_Flash, Flash_Off);
5403         }
5404         SENSOR_DG("%s..%s : %x\n",SENSOR_NAME_STRING(),__FUNCTION__, value);
5405         return 0;
5406     }
5407     
5408         SENSOR_TR("\n %s..%s valure = %d is invalidate..    \n",SENSOR_NAME_STRING(),__FUNCTION__,value);
5409     return -EINVAL;
5410 }
5411 #endif
5412 static int sensor_g_control(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
5413 {
5414     struct i2c_client *client = v4l2_get_subdevdata(sd);
5415     struct sensor *sensor = to_sensor(client);
5416     const struct v4l2_queryctrl *qctrl;
5417
5418     qctrl = soc_camera_find_qctrl(&sensor_ops, ctrl->id);
5419
5420     if (!qctrl)
5421     {
5422         SENSOR_TR("\n %s ioctrl id = %d  is invalidate \n", SENSOR_NAME_STRING(), ctrl->id);
5423         return -EINVAL;
5424     }
5425
5426     switch (ctrl->id)
5427     {
5428         case V4L2_CID_BRIGHTNESS:
5429             {
5430                 ctrl->value = sensor->info_priv.brightness;
5431                 break;
5432             }
5433         case V4L2_CID_SATURATION:
5434             {
5435                 ctrl->value = sensor->info_priv.saturation;
5436                 break;
5437             }
5438         case V4L2_CID_CONTRAST:
5439             {
5440                 ctrl->value = sensor->info_priv.contrast;
5441                 break;
5442             }
5443         case V4L2_CID_DO_WHITE_BALANCE:
5444             {
5445                 ctrl->value = sensor->info_priv.whiteBalance;
5446                 break;
5447             }
5448         case V4L2_CID_EXPOSURE:
5449             {
5450                 ctrl->value = sensor->info_priv.exposure;
5451                 break;
5452             }
5453         case V4L2_CID_HFLIP:
5454             {
5455                 ctrl->value = sensor->info_priv.mirror;
5456                 break;
5457             }
5458         case V4L2_CID_VFLIP:
5459             {
5460                 ctrl->value = sensor->info_priv.flip;
5461                 break;
5462             }
5463         default :
5464                 break;
5465     }
5466     return 0;
5467 }
5468
5469
5470
5471 static int sensor_s_control(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
5472 {
5473     struct i2c_client *client = v4l2_get_subdevdata(sd);
5474     struct sensor *sensor = to_sensor(client);
5475     struct soc_camera_device *icd = client->dev.platform_data;
5476     const struct v4l2_queryctrl *qctrl;
5477
5478
5479     qctrl = soc_camera_find_qctrl(&sensor_ops, ctrl->id);
5480
5481     if (!qctrl)
5482     {
5483         SENSOR_TR("\n %s ioctrl id = %d  is invalidate \n", SENSOR_NAME_STRING(), ctrl->id);
5484         return -EINVAL;
5485     }
5486
5487     switch (ctrl->id)
5488     {
5489 #if CONFIG_SENSOR_Brightness
5490         case V4L2_CID_BRIGHTNESS:
5491             {
5492                 if (ctrl->value != sensor->info_priv.brightness)
5493                 {
5494                     if (sensor_set_brightness(icd, qctrl,ctrl->value) != 0)
5495                     {
5496                         return -EINVAL;
5497                     }
5498                     sensor->info_priv.brightness = ctrl->value;
5499                 }
5500                 break;
5501             }
5502 #endif
5503 #if CONFIG_SENSOR_Exposure
5504         case V4L2_CID_EXPOSURE:
5505             {
5506                 if (ctrl->value != sensor->info_priv.exposure)
5507                 {
5508                     if (sensor_set_exposure(icd, qctrl,ctrl->value) != 0)
5509                     {
5510                         return -EINVAL;
5511                     }
5512                     sensor->info_priv.exposure = ctrl->value;
5513                 }
5514                 break;
5515             }
5516 #endif
5517 #if CONFIG_SENSOR_Saturation
5518         case V4L2_CID_SATURATION:
5519             {
5520                 if (ctrl->value != sensor->info_priv.saturation)
5521                 {
5522                     if (sensor_set_saturation(icd, qctrl,ctrl->value) != 0)
5523                     {
5524                         return -EINVAL;
5525                     }
5526                     sensor->info_priv.saturation = ctrl->value;
5527                 }
5528                 break;
5529             }
5530 #endif
5531 #if CONFIG_SENSOR_Contrast
5532         case V4L2_CID_CONTRAST:
5533             {
5534                 if (ctrl->value != sensor->info_priv.contrast)
5535                 {
5536                     if (sensor_set_contrast(icd, qctrl,ctrl->value) != 0)
5537                     {
5538                         return -EINVAL;
5539                     }
5540                     sensor->info_priv.contrast = ctrl->value;
5541                 }
5542                 break;
5543             }
5544 #endif
5545 #if CONFIG_SENSOR_WhiteBalance
5546         case V4L2_CID_DO_WHITE_BALANCE:
5547             {
5548                 if (ctrl->value != sensor->info_priv.whiteBalance)
5549                 {
5550                     if (sensor_set_whiteBalance(icd, qctrl,ctrl->value) != 0)
5551                     {
5552                         return -EINVAL;
5553                     }
5554                     sensor->info_priv.whiteBalance = ctrl->value;
5555                 }
5556                 break;
5557             }
5558 #endif
5559 #if CONFIG_SENSOR_Mirror
5560         case V4L2_CID_HFLIP:
5561             {
5562                 if (ctrl->value != sensor->info_priv.mirror)
5563                 {
5564                     if (sensor_set_mirror(icd, qctrl,ctrl->value) != 0)
5565                         return -EINVAL;
5566                     sensor->info_priv.mirror = ctrl->value;
5567                 }
5568                 break;
5569             }
5570 #endif
5571 #if CONFIG_SENSOR_Flip
5572         case V4L2_CID_VFLIP:
5573             {
5574                 if (ctrl->value != sensor->info_priv.flip)
5575                 {
5576                     if (sensor_set_flip(icd, qctrl,ctrl->value) != 0)
5577                         return -EINVAL;
5578                     sensor->info_priv.flip = ctrl->value;
5579                 }
5580                 break;
5581             }
5582 #endif
5583         default:
5584             break;
5585     }
5586
5587     return 0;
5588 }
5589 static int sensor_g_ext_control(struct soc_camera_device *icd , struct v4l2_ext_control *ext_ctrl)
5590 {
5591     const struct v4l2_queryctrl *qctrl;
5592     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5593     struct sensor *sensor = to_sensor(client);
5594
5595     qctrl = soc_camera_find_qctrl(&sensor_ops, ext_ctrl->id);
5596
5597     if (!qctrl)
5598     {
5599         SENSOR_TR("\n %s ioctrl id = %d  is invalidate \n", SENSOR_NAME_STRING(), ext_ctrl->id);
5600         return -EINVAL;
5601     }
5602
5603     switch (ext_ctrl->id)
5604     {
5605         case V4L2_CID_SCENE:
5606             {
5607                 ext_ctrl->value = sensor->info_priv.scene;
5608                 break;
5609             }
5610         #if CONFIG_SENSOR_AntiBanding
5611         case V4L2_CID_ANTIBANDING:
5612             {
5613                 ext_ctrl->value = sensor->info_priv.antibanding;
5614                 break;
5615             }
5616         #endif
5617         case V4L2_CID_EFFECT:
5618             {
5619                 ext_ctrl->value = sensor->info_priv.effect;
5620                 break;
5621             }
5622         case V4L2_CID_ZOOM_ABSOLUTE:
5623             {
5624                 ext_ctrl->value = sensor->info_priv.digitalzoom;
5625                 break;
5626             }
5627         case V4L2_CID_ZOOM_RELATIVE:
5628             {
5629                 return -EINVAL;
5630             }
5631         case V4L2_CID_FOCUS_ABSOLUTE:
5632             {
5633                 ext_ctrl->value = sensor->info_priv.focus;
5634                 break;
5635             }
5636         case V4L2_CID_FOCUS_RELATIVE:
5637             {
5638                 return -EINVAL;
5639             }
5640         case V4L2_CID_FLASH:
5641             {
5642                 ext_ctrl->value = sensor->info_priv.flash;
5643                 break;
5644             }
5645         default :
5646             break;
5647     }
5648     return 0;
5649 }
5650 static int sensor_s_ext_control(struct soc_camera_device *icd, struct v4l2_ext_control *ext_ctrl)
5651 {
5652     const struct v4l2_queryctrl *qctrl;
5653     struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd));
5654     struct sensor *sensor = to_sensor(client);
5655     int val_offset;
5656
5657     qctrl = soc_camera_find_qctrl(&sensor_ops, ext_ctrl->id);
5658
5659     if (!qctrl)
5660     {
5661         SENSOR_TR("\n %s ioctrl id = %d  is invalidate \n", SENSOR_NAME_STRING(), ext_ctrl->id);
5662         return -EINVAL;
5663     }
5664
5665         val_offset = 0;
5666     switch (ext_ctrl->id)
5667     {
5668 #if CONFIG_SENSOR_Scene
5669         case V4L2_CID_SCENE:
5670             {
5671                 if (ext_ctrl->value != sensor->info_priv.scene)
5672                 {
5673                     if (sensor_set_scene(icd, qctrl,ext_ctrl->value) != 0)
5674                         return -EINVAL;
5675                     sensor->info_priv.scene = ext_ctrl->value;
5676                 }
5677                 break;
5678             }
5679 #endif
5680 #if CONFIG_SENSOR_AntiBanding
5681         case V4L2_CID_ANTIBANDING:
5682             {
5683                 if (ext_ctrl->value != sensor->info_priv.antibanding)
5684                 {
5685                     if (sensor_set_antibanding(icd, qctrl,ext_ctrl->value) != 0)
5686                         return -EINVAL;
5687                     sensor->info_priv.antibanding = ext_ctrl->value;
5688                 }
5689                 break;
5690             }
5691 #endif
5692 #if CONFIG_SENSOR_Effect
5693         case V4L2_CID_EFFECT:
5694             {
5695                 if (ext_ctrl->value != sensor->info_priv.effect)
5696                 {
5697                     if (sensor_set_effect(icd, qctrl,ext_ctrl->value) != 0)
5698                         return -EINVAL;
5699                     sensor->info_priv.effect= ext_ctrl->value;
5700                 }
5701                 break;
5702             }
5703 #endif
5704 #if CONFIG_SENSOR_DigitalZoom
5705         case V4L2_CID_ZOOM_ABSOLUTE:
5706             {
5707                 if ((ext_ctrl->value < qctrl->minimum) || (ext_ctrl->value > qctrl->maximum))
5708                     return -EINVAL;
5709
5710                 if (ext_ctrl->value != sensor->info_priv.digitalzoom)
5711                 {
5712                     val_offset = ext_ctrl->value -sensor->info_priv.digitalzoom;
5713
5714                     if (sensor_set_digitalzoom(icd, qctrl,&val_offset) != 0)
5715                         return -EINVAL;
5716                     sensor->info_priv.digitalzoom += val_offset;
5717
5718                     SENSOR_DG("%s digitalzoom is %x\n",SENSOR_NAME_STRING(),  sensor->info_priv.digitalzoom);
5719                 }
5720
5721                 break;
5722             }
5723         case V4L2_CID_ZOOM_RELATIVE:
5724             {
5725                 if (ext_ctrl->value)
5726                 {
5727                     if (sensor_set_digitalzoom(icd, qctrl,&ext_ctrl->value) != 0)
5728                         return -EINVAL;
5729                     sensor->info_priv.digitalzoom += ext_ctrl->value;
5730
5731                     SENSOR_DG("%s digitalzoom is %x\n", SENSOR_NAME_STRING(), sensor->info_priv.digitalzoom);
5732                 }
5733                 break;
5734             }
5735 #endif
5736 #if CONFIG_SENSOR_Focus
5737         case V4L2_CID_FOCUS_ABSOLUTE:
5738             {
5739                 if ((ext_ctrl->value < qctrl->minimum) || (ext_ctrl->value > qctrl->maximum))
5740                     return -EINVAL;
5741
5742                 if (ext_ctrl->value != sensor->info_priv.focus)
5743                 {
5744                     val_offset = ext_ctrl->value -sensor->info_priv.focus;
5745
5746                     sensor->info_priv.focus += val_offset;
5747                 }
5748
5749                 break;
5750             }
5751         case V4L2_CID_FOCUS_RELATIVE:
5752             {
5753                 if (ext_ctrl->value)
5754                 {
5755                     sensor->info_priv.focus += ext_ctrl->value;
5756
5757                     SENSOR_DG("%s focus is %x\n", SENSOR_NAME_STRING(), sensor->info_priv.focus);
5758                 }
5759                 break;
5760             }
5761 #endif
5762 #if CONFIG_SENSOR_Flash
5763         case V4L2_CID_FLASH:
5764             {
5765                 if (sensor_set_flash(icd, qctrl,ext_ctrl->value) != 0)
5766                     return -EINVAL;
5767                 sensor->info_priv.flash = ext_ctrl->value;
5768
5769                 SENSOR_DG("%s flash is %x\n",SENSOR_NAME_STRING(), sensor->info_priv.flash);
5770                 break;
5771             }
5772 #endif
5773         default:
5774             break;
5775     }
5776
5777     return 0;
5778 }
5779
5780 static int sensor_g_ext_controls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ext_ctrl)
5781 {
5782     struct i2c_client *client = v4l2_get_subdevdata(sd);
5783     struct soc_camera_device *icd = client->dev.platform_data;
5784     int i, error_cnt=0, error_idx=-1;
5785
5786
5787     for (i=0; i<ext_ctrl->count; i++) {
5788         if (sensor_g_ext_control(icd, &ext_ctrl->controls[i]) != 0) {
5789             error_cnt++;
5790             error_idx = i;
5791         }
5792     }
5793
5794     if (error_cnt > 1)
5795         error_idx = ext_ctrl->count;
5796
5797     if (error_idx != -1) {
5798         ext_ctrl->error_idx = error_idx;
5799         return -EINVAL;
5800     } else {
5801         return 0;
5802     }
5803 }
5804
5805 static int sensor_s_ext_controls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ext_ctrl)
5806 {
5807     struct i2c_client *client = v4l2_get_subdevdata(sd);
5808     struct soc_camera_device *icd = client->dev.platform_data;
5809     int i, error_cnt=0, error_idx=-1;
5810
5811
5812     for (i=0; i<ext_ctrl->count; i++) {
5813         if (sensor_s_ext_control(icd, &ext_ctrl->controls[i]) != 0) {
5814             error_cnt++;
5815             error_idx = i;
5816         }
5817     }
5818
5819     if (error_cnt > 1)
5820         error_idx = ext_ctrl->count;
5821
5822     if (error_idx != -1) {
5823         ext_ctrl->error_idx = error_idx;
5824         return -EINVAL;
5825     } else {
5826         return 0;
5827     }
5828 }
5829 static int sensor_s_stream(struct v4l2_subdev *sd, int enable)
5830 {
5831         struct i2c_client *client = v4l2_get_subdevdata(sd);
5832     struct sensor *sensor = to_sensor(client);
5833
5834         if (enable == 1) {
5835                 sensor->info_priv.enable = 1;
5836         } else if (enable == 0) {
5837                 sensor->info_priv.enable = 0;
5838         }
5839
5840         return 0;
5841 }
5842 /* Interface active, can use i2c. If it fails, it can indeed mean, that
5843  * this wasn't our capture interface, so, we wait for the right one */
5844 static int sensor_video_probe(struct soc_camera_device *icd,
5845                                struct i2c_client *client)
5846 {
5847     int ret,pid = 0;
5848     struct sensor *sensor = to_sensor(client);
5849
5850     /* We must have a parent by now. And it cannot be a wrong one.
5851      * So this entire test is completely redundant. */
5852     if (!icd->dev.parent ||
5853             to_soc_camera_host(icd->dev.parent)->nr != icd->iface)
5854                 return -ENODEV;
5855
5856         if (sensor_ioctrl(icd, Sensor_PowerDown, 0) < 0) {
5857                 ret = -ENODEV;
5858                 goto sensor_video_probe_err;
5859         }
5860
5861         //if senor online
5862     ret = sensor_write(client, 0x002c, 0x0000);
5863     if (ret != 0) {
5864         SENSOR_TR("%s soft reset sensor failed\n",SENSOR_NAME_STRING());
5865         ret = -ENODEV;
5866                 goto sensor_video_probe_err;
5867     }
5868
5869     /* soft reset */
5870 #if (SENSOR_RESET_REG != SEQUENCE_END)
5871     ret = sensor_write(client, SENSOR_RESET_REG, SENSOR_RESET_VAL);
5872     if (ret != 0) {
5873         SENSOR_TR("%s soft reset sensor failed\n",SENSOR_NAME_STRING());
5874         ret = -ENODEV;
5875                 goto sensor_video_probe_err;
5876     }
5877
5878     mdelay(5);  //delay 5 microseconds
5879 #endif
5880
5881         /* check if it is an sensor sensor */
5882 #if (SENSOR_ID_REG != SEQUENCE_END)
5883     ret = sensor_read(client, SENSOR_ID_REG, &pid);
5884     if (ret != 0) {
5885         SENSOR_TR("read chip id failed\n");
5886         ret = -ENODEV;
5887         goto sensor_video_probe_err;
5888     }
5889
5890     SENSOR_DG("\n %s  pid = 0x%x \n", SENSOR_NAME_STRING(), pid);
5891 #else
5892         pid = SENSOR_ID;
5893 #endif
5894
5895     if (pid == SENSOR_ID) {
5896         sensor->model = SENSOR_V4L2_IDENT;
5897     } else {
5898         SENSOR_TR("error: %s mismatched   pid = 0x%x\n", SENSOR_NAME_STRING(), pid);
5899         ret = -ENODEV;
5900         goto sensor_video_probe_err;
5901     }
5902
5903     return 0;
5904
5905 sensor_video_probe_err:
5906
5907     return ret;
5908 }
5909 static long sensor_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
5910 {
5911         struct i2c_client *client = v4l2_get_subdevdata(sd);
5912     struct soc_camera_device *icd = client->dev.platform_data;
5913     struct sensor *sensor = to_sensor(client);
5914     int ret = 0;
5915 #if CONFIG_SENSOR_Flash 
5916     int i;
5917 #endif
5918
5919         SENSOR_DG("\n%s..%s..cmd:%x \n",SENSOR_NAME_STRING(),__FUNCTION__,cmd);
5920         switch (cmd)
5921         {
5922                 case RK29_CAM_SUBDEV_DEACTIVATE:
5923                 {
5924                         sensor_deactivate(client);
5925                         break;
5926                 }
5927                 case RK29_CAM_SUBDEV_IOREQUEST:
5928                 {
5929                         sensor->sensor_io_request = (struct rk29camera_platform_data*)arg;           
5930             if (sensor->sensor_io_request != NULL) { 
5931                 if (sensor->sensor_io_request->gpio_res[0].dev_name && 
5932                     (strcmp(sensor->sensor_io_request->gpio_res[0].dev_name, dev_name(icd->pdev)) == 0)) {
5933                     sensor->sensor_gpio_res = (struct rk29camera_gpio_res*)&sensor->sensor_io_request->gpio_res[0];
5934                 } else if (sensor->sensor_io_request->gpio_res[1].dev_name && 
5935                     (strcmp(sensor->sensor_io_request->gpio_res[1].dev_name, dev_name(icd->pdev)) == 0)) {
5936                     sensor->sensor_gpio_res = (struct rk29camera_gpio_res*)&sensor->sensor_io_request->gpio_res[1];
5937                 }
5938             } else {
5939                 SENSOR_TR("%s %s RK29_CAM_SUBDEV_IOREQUEST fail\n",SENSOR_NAME_STRING(),__FUNCTION__);
5940                 ret = -EINVAL;
5941                 goto sensor_ioctl_end;
5942             }
5943             /* ddl@rock-chips.com : if gpio_flash havn't been set in board-xxx.c, sensor driver must notify is not support flash control 
5944                for this project */
5945             #if CONFIG_SENSOR_Flash     
5946                 if (sensor->sensor_gpio_res) {
5947                 if (sensor->sensor_gpio_res->gpio_flash == INVALID_GPIO) {
5948                     for (i = 0; i < icd->ops->num_controls; i++) {
5949                                 if (V4L2_CID_FLASH == icd->ops->controls[i].id) {
5950                                         memset(&icd->ops->controls[i],0x00,sizeof(struct v4l2_queryctrl));                                      
5951                                 }
5952                     }
5953                     sensor->info_priv.flash = 0xff;
5954                     SENSOR_DG("%s flash gpio is invalidate!\n",SENSOR_NAME_STRING());
5955                 }
5956                 }
5957             #endif
5958                         break;
5959                 }
5960                 default:
5961                 {
5962                         SENSOR_TR("%s %s cmd(0x%x) is unknown !\n",SENSOR_NAME_STRING(),__FUNCTION__,cmd);
5963                         break;
5964                 }
5965         }
5966 sensor_ioctl_end:
5967         return ret;
5968
5969 }
5970 static int sensor_enum_fmt(struct v4l2_subdev *sd, unsigned int index,
5971                             enum v4l2_mbus_pixelcode *code)
5972 {
5973         if (index >= ARRAY_SIZE(sensor_colour_fmts))
5974                 return -EINVAL;
5975
5976         *code = sensor_colour_fmts[index].code;
5977         return 0;
5978 }
5979 static struct v4l2_subdev_core_ops sensor_subdev_core_ops = {
5980         .init           = sensor_init,
5981         .g_ctrl         = sensor_g_control,
5982         .s_ctrl         = sensor_s_control,
5983         .g_ext_ctrls          = sensor_g_ext_controls,
5984         .s_ext_ctrls          = sensor_s_ext_controls,
5985         .g_chip_ident   = sensor_g_chip_ident,
5986         .ioctl = sensor_ioctl,
5987 };
5988
5989 static struct v4l2_subdev_video_ops sensor_subdev_video_ops = {
5990         .s_mbus_fmt     = sensor_s_fmt,
5991         .g_mbus_fmt     = sensor_g_fmt,
5992         .try_mbus_fmt   = sensor_try_fmt,
5993         .enum_mbus_fmt  = sensor_enum_fmt,
5994     .s_stream   = sensor_s_stream,      
5995 };
5996 static struct v4l2_subdev_ops sensor_subdev_ops = {
5997         .core   = &sensor_subdev_core_ops,
5998         .video = &sensor_subdev_video_ops,
5999 };
6000
6001 static int sensor_probe(struct i2c_client *client,
6002                          const struct i2c_device_id *did)
6003 {
6004     struct sensor *sensor;
6005     struct soc_camera_device *icd = client->dev.platform_data;
6006     struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
6007     struct soc_camera_link *icl;
6008     //struct v4l2_subdev *sd = soc_camera_to_subdev(icd);
6009     int ret;
6010
6011     SENSOR_DG("\n%s..%s..%d..\n",__FUNCTION__,__FILE__,__LINE__);
6012     if (!icd) {
6013         dev_err(&client->dev, "%s: missing soc-camera data!\n",SENSOR_NAME_STRING());
6014         return -EINVAL;
6015     }
6016
6017     icl = to_soc_camera_link(icd);
6018     if (!icl) {
6019         dev_err(&client->dev, "%s driver needs platform data\n", SENSOR_NAME_STRING());
6020         return -EINVAL;
6021     }
6022
6023     if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) {
6024         dev_warn(&adapter->dev,
6025                  "I2C-Adapter doesn't support I2C_FUNC_I2C\n");
6026         return -EIO;
6027     }
6028
6029     sensor = kzalloc(sizeof(struct sensor), GFP_KERNEL);
6030     if (!sensor)
6031         return -ENOMEM;
6032
6033     v4l2_i2c_subdev_init(&sensor->subdev, client, &sensor_subdev_ops);
6034
6035     /* Second stage probe - when a capture adapter is there */
6036     icd->ops            = &sensor_ops;
6037     sensor->info_priv.fmt = sensor_colour_fmts[0];
6038
6039     ret = sensor_video_probe(icd, client);
6040     if (ret) {
6041         icd->ops = NULL;
6042         i2c_set_clientdata(client, NULL);
6043         kfree(sensor);
6044     }
6045     
6046     SENSOR_DG("\n%s..%s..%d  ret = %x \n",__FUNCTION__,__FILE__,__LINE__,ret);
6047     return ret;
6048 }
6049
6050 static int sensor_remove(struct i2c_client *client)
6051 {
6052     struct sensor *sensor = to_sensor(client);
6053     struct soc_camera_device *icd = client->dev.platform_data;
6054
6055     icd->ops = NULL;
6056     i2c_set_clientdata(client, NULL);
6057     client->driver = NULL;
6058     kfree(sensor);
6059
6060     return 0;
6061 }
6062
6063 static const struct i2c_device_id sensor_id[] = {
6064         {SENSOR_NAME_STRING(), 0 },
6065         { }
6066 };
6067 MODULE_DEVICE_TABLE(i2c, sensor_id);
6068
6069 static struct i2c_driver sensor_i2c_driver = {
6070         .driver = {
6071                 .name = SENSOR_NAME_STRING(),
6072         },
6073         .probe          = sensor_probe,
6074         .remove         = sensor_remove,
6075         .id_table       = sensor_id,
6076 };
6077
6078 static int __init sensor_mod_init(void)
6079 {
6080     //SENSOR_DG("\n%s..%s.. \n",__FUNCTION__,SENSOR_NAME_STRING());
6081     printk(">>>>>>>>>>\n%s..%s.. \n",__FUNCTION__,SENSOR_NAME_STRING());
6082     return i2c_add_driver(&sensor_i2c_driver);
6083 }
6084
6085 static void __exit sensor_mod_exit(void)
6086 {
6087     i2c_del_driver(&sensor_i2c_driver);
6088 }
6089
6090 device_initcall_sync(sensor_mod_init);
6091 module_exit(sensor_mod_exit);
6092
6093 MODULE_DESCRIPTION(SENSOR_NAME_STRING(Camera sensor driver));
6094 MODULE_AUTHOR("ddl <kernel@rock-chips>");
6095 MODULE_LICENSE("GPL");
6096
6097