V4L/DVB (11468): gspca - m5602-mt9m111: Remove redundant init sequences
[safe/jmp/linux-2.6] / drivers / media / video / gspca / m5602 / m5602_mt9m111.h
1 /*
2  * Driver for the mt9m111 sensor
3  *
4  * Copyright (C) 2008 Erik AndrĂ©n
5  * Copyright (C) 2007 Ilyes Gouta. Based on the m5603x Linux Driver Project.
6  * Copyright (C) 2005 m5603x Linux Driver Project <m5602@x3ng.com.br>
7  *
8  * Portions of code to USB interface and ALi driver software,
9  * Copyright (c) 2006 Willem Duinker
10  * v4l2 interface modeled after the V4L2 driver
11  * for SN9C10x PC Camera Controllers
12  *
13  * Some defines taken from the mt9m111 sensor driver
14  * Copyright (C) 2008, Robert Jarzmik <robert.jarzmik@free.fr>
15  *
16  * This program is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU General Public License as
18  * published by the Free Software Foundation, version 2.
19  *
20  */
21
22 #ifndef M5602_MT9M111_H_
23 #define M5602_MT9M111_H_
24
25 #include "m5602_sensor.h"
26
27 /*****************************************************************************/
28
29 #define MT9M111_SC_CHIPVER                      0x00
30 #define MT9M111_SC_ROWSTART                     0x01
31 #define MT9M111_SC_COLSTART                     0x02
32 #define MT9M111_SC_WINDOW_HEIGHT                0x03
33 #define MT9M111_SC_WINDOW_WIDTH                 0x04
34 #define MT9M111_SC_HBLANK_CONTEXT_B             0x05
35 #define MT9M111_SC_VBLANK_CONTEXT_B             0x06
36 #define MT9M111_SC_HBLANK_CONTEXT_A             0x07
37 #define MT9M111_SC_VBLANK_CONTEXT_A             0x08
38 #define MT9M111_SC_SHUTTER_WIDTH                0x09
39 #define MT9M111_SC_ROW_SPEED                    0x0a
40
41 #define MT9M111_SC_EXTRA_DELAY                  0x0b
42 #define MT9M111_SC_SHUTTER_DELAY                0x0c
43 #define MT9M111_SC_RESET                        0x0d
44 #define MT9M111_SC_R_MODE_CONTEXT_B             0x20
45 #define MT9M111_SC_R_MODE_CONTEXT_A             0x21
46 #define MT9M111_SC_FLASH_CONTROL                0x23
47 #define MT9M111_SC_GREEN_1_GAIN                 0x2b
48 #define MT9M111_SC_BLUE_GAIN                    0x2c
49 #define MT9M111_SC_RED_GAIN                     0x2d
50 #define MT9M111_SC_GREEN_2_GAIN                 0x2e
51 #define MT9M111_SC_GLOBAL_GAIN                  0x2f
52
53 #define MT9M111_RMB_MIRROR_ROWS                 (1 << 0)
54 #define MT9M111_RMB_MIRROR_COLS                 (1 << 1)
55
56 #define MT9M111_CONTEXT_CONTROL                 0xc8
57 #define MT9M111_PAGE_MAP                        0xf0
58 #define MT9M111_BYTEWISE_ADDRESS                0xf1
59
60 #define MT9M111_CP_OPERATING_MODE_CTL           0x06
61 #define MT9M111_CP_LUMA_OFFSET                  0x34
62 #define MT9M111_CP_LUMA_CLIP                    0x35
63 #define MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_A 0x3a
64 #define MT9M111_CP_LENS_CORRECTION_1            0x3b
65 #define MT9M111_CP_DEFECT_CORR_CONTEXT_A        0x4c
66 #define MT9M111_CP_DEFECT_CORR_CONTEXT_B        0x4d
67 #define MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_B 0x9b
68 #define MT9M111_CP_GLOBAL_CLK_CONTROL           0xb3
69
70 #define MT9M111_CC_AUTO_EXPOSURE_PARAMETER_18   0x65
71 #define MT9M111_CC_AWB_PARAMETER_7              0x28
72
73 #define MT9M111_SENSOR_CORE                     0x00
74 #define MT9M111_COLORPIPE                       0x01
75 #define MT9M111_CAMERA_CONTROL                  0x02
76
77 #define INITIAL_MAX_GAIN                        64
78 #define DEFAULT_GAIN                            283
79
80 /*****************************************************************************/
81
82 /* Kernel module parameters */
83 extern int force_sensor;
84 extern int dump_sensor;
85
86 int mt9m111_probe(struct sd *sd);
87 int mt9m111_init(struct sd *sd);
88 void mt9m111_disconnect(struct sd *sd);
89
90 const static struct m5602_sensor mt9m111 = {
91         .name = "MT9M111",
92
93         .i2c_slave_id = 0xba,
94         .i2c_regW = 2,
95
96         .probe = mt9m111_probe,
97         .init = mt9m111_init,
98         .disconnect = mt9m111_disconnect,
99 };
100
101 static const unsigned char preinit_mt9m111[][4] =
102 {
103         {BRIDGE, M5602_XB_MCU_CLK_DIV, 0x02, 0x00},
104         {BRIDGE, M5602_XB_MCU_CLK_CTRL, 0xb0, 0x00},
105         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
106         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
107         {BRIDGE, M5602_XB_SENSOR_TYPE, 0x0d, 0x00},
108         {BRIDGE, M5602_XB_SENSOR_CTRL, 0x00, 0x00},
109         {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00},
110         {BRIDGE, M5602_XB_SENSOR_TYPE, 0x09, 0x00},
111
112         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
113         {SENSOR, MT9M111_SC_RESET, 0xff, 0xf7},
114
115         {BRIDGE, M5602_XB_GPIO_DIR, 0x05, 0x00},
116         {BRIDGE, M5602_XB_GPIO_DAT, 0x04, 0x00},
117         {BRIDGE, M5602_XB_GPIO_EN_H, 0x3e, 0x00},
118         {BRIDGE, M5602_XB_GPIO_DIR_H, 0x3e, 0x00},
119         {BRIDGE, M5602_XB_GPIO_DAT_H, 0x02, 0x00},
120         {BRIDGE, M5602_XB_GPIO_EN_L, 0xff, 0x00},
121         {BRIDGE, M5602_XB_GPIO_DIR_L, 0xff, 0x00},
122         {BRIDGE, M5602_XB_GPIO_DAT_L, 0x00, 0x00},
123
124         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
125         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
126         {BRIDGE, M5602_XB_GPIO_DIR, 0x07, 0x00},
127         {BRIDGE, M5602_XB_GPIO_DAT, 0x0b, 0x00},
128         {BRIDGE, M5602_XB_GPIO_EN_H, 0x06, 0x00},
129         {BRIDGE, M5602_XB_GPIO_EN_L, 0x00, 0x00},
130
131         {BRIDGE, M5602_XB_I2C_CLK_DIV, 0x0a, 0x00}
132 };
133
134 static const unsigned char init_mt9m111[][4] =
135 {
136         {BRIDGE, M5602_XB_MCU_CLK_DIV, 0x02, 0x00},
137         {BRIDGE, M5602_XB_MCU_CLK_CTRL, 0xb0, 0x00},
138         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
139         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
140         {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00},
141         {BRIDGE, M5602_XB_SENSOR_TYPE, 0x0d, 0x00},
142         {BRIDGE, M5602_XB_SENSOR_CTRL, 0x00, 0x00},
143         {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00},
144         {BRIDGE, M5602_XB_SENSOR_TYPE, 0x09, 0x00},
145         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
146         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
147
148         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
149         {SENSOR, MT9M111_SC_RESET, 0xff, 0xff},
150         {SENSOR, MT9M111_SC_RESET, 0xff, 0xff},
151         {SENSOR, MT9M111_SC_RESET, 0xff, 0xde},
152         {SENSOR, MT9M111_SC_RESET, 0xff, 0xff},
153         {SENSOR, MT9M111_SC_RESET, 0xff, 0xf7},
154         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x01},
155
156         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xb3, 0x00},
157
158         {SENSOR, MT9M111_CP_GLOBAL_CLK_CONTROL, 0xff, 0xff},
159
160         {BRIDGE, M5602_XB_GPIO_DIR, 0x05, 0x00},
161         {BRIDGE, M5602_XB_GPIO_DAT, 0x04, 0x00},
162         {BRIDGE, M5602_XB_GPIO_EN_H, 0x3e, 0x00},
163         {BRIDGE, M5602_XB_GPIO_DIR_H, 0x3e, 0x00},
164         {BRIDGE, M5602_XB_GPIO_DAT_H, 0x02, 0x00},
165         {BRIDGE, M5602_XB_GPIO_EN_L, 0xff, 0x00},
166         {BRIDGE, M5602_XB_GPIO_DIR_L, 0xff, 0x00},
167         {BRIDGE, M5602_XB_GPIO_DAT_L, 0x00, 0x00},
168         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x04, 0x00},
169         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
170         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
171         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
172         {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00},
173         {BRIDGE, M5602_XB_SENSOR_TYPE, 0x09, 0x00},
174         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
175         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
176         {BRIDGE, M5602_XB_GPIO_DIR, 0x07, 0x00},
177         {BRIDGE, M5602_XB_GPIO_DAT, 0x0b, 0x00},
178         {BRIDGE, M5602_XB_GPIO_EN_H, 0x06, 0x00},
179         {BRIDGE, M5602_XB_GPIO_EN_L, 0x00, 0x00},
180         {BRIDGE, M5602_XB_I2C_CLK_DIV, 0x0a, 0x00},
181
182         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
183         {SENSOR, MT9M111_SC_RESET, 0x00, 0x05},
184         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
185         {SENSOR, MT9M111_SC_RESET, 0x00, 0x29},
186         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
187         {SENSOR, MT9M111_SC_RESET, 0x00, 0x08},
188         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x01},
189         {SENSOR, MT9M111_CP_OPERATING_MODE_CTL, 0x00, 0x10},
190         {SENSOR, MT9M111_CP_LENS_CORRECTION_1, 0x04, 0x2a},
191         {SENSOR, MT9M111_CP_DEFECT_CORR_CONTEXT_A, 0x00, 0x01},
192         {SENSOR, MT9M111_CP_DEFECT_CORR_CONTEXT_B, 0x00, 0x01},
193         {SENSOR, MT9M111_CP_LUMA_OFFSET, 0x00, 0x00},
194         {SENSOR, MT9M111_CP_LUMA_CLIP, 0xff, 0x00},
195         {SENSOR, MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_A, 0x14, 0x00},
196         {SENSOR, MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_B, 0x14, 0x00},
197         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xcd, 0x00},
198
199         {SENSOR, 0xcd, 0x00, 0x0e},
200         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xd0, 0x00},
201         {SENSOR, 0xd0, 0x00, 0x40},
202         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x02},
203         {SENSOR, MT9M111_CC_AUTO_EXPOSURE_PARAMETER_18, 0x00, 0x00},
204         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x28, 0x00},
205         {SENSOR, MT9M111_CC_AWB_PARAMETER_7, 0xef, 0x07},
206         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x28, 0x00},
207         {SENSOR, MT9M111_CC_AWB_PARAMETER_7, 0xef, 0x03},
208         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
209         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x33, 0x00},
210         {SENSOR, 0x33, 0x03, 0x49},
211         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x33, 0x00},
212
213         {SENSOR, 0x33, 0x03, 0x49},
214         {SENSOR, 0x34, 0xc0, 0x19},
215         {SENSOR, 0x3f, 0x20, 0x20},
216         {SENSOR, 0x40, 0x20, 0x20},
217         {SENSOR, 0x5a, 0xc0, 0x0a},
218         {SENSOR, 0x70, 0x7b, 0x0a},
219         {SENSOR, 0x71, 0xff, 0x00},
220         {SENSOR, 0x72, 0x19, 0x0e},
221         {SENSOR, 0x73, 0x18, 0x0f},
222         {SENSOR, 0x74, 0x57, 0x32},
223         {SENSOR, 0x75, 0x56, 0x34},
224         {SENSOR, 0x76, 0x73, 0x35},
225         {SENSOR, 0x77, 0x30, 0x12},
226         {SENSOR, 0x78, 0x79, 0x02},
227         {SENSOR, 0x79, 0x75, 0x06},
228         {SENSOR, 0x7a, 0x77, 0x0a},
229         {SENSOR, 0x7b, 0x78, 0x09},
230         {SENSOR, 0x7c, 0x7d, 0x06},
231         {SENSOR, 0x7d, 0x31, 0x10},
232         {SENSOR, 0x7e, 0x00, 0x7e},
233         {SENSOR, 0x80, 0x59, 0x04},
234         {SENSOR, 0x81, 0x59, 0x04},
235         {SENSOR, 0x82, 0x57, 0x0a},
236         {SENSOR, 0x83, 0x58, 0x0b},
237         {SENSOR, 0x84, 0x47, 0x0c},
238         {SENSOR, 0x85, 0x48, 0x0e},
239         {SENSOR, 0x86, 0x5b, 0x02},
240         {SENSOR, 0x87, 0x00, 0x5c},
241         {SENSOR, MT9M111_CONTEXT_CONTROL, 0x00, 0x08},
242         {SENSOR, 0x60, 0x00, 0x80},
243         {SENSOR, 0x61, 0x00, 0x00},
244         {SENSOR, 0x62, 0x00, 0x00},
245         {SENSOR, 0x63, 0x00, 0x00},
246         {SENSOR, 0x64, 0x00, 0x00},
247
248         {SENSOR, MT9M111_SC_ROWSTART, 0x00, 0x0d},
249         {SENSOR, MT9M111_SC_COLSTART, 0x00, 0x18},
250         {SENSOR, MT9M111_SC_WINDOW_HEIGHT, 0x04, 0x04},
251         {SENSOR, MT9M111_SC_WINDOW_WIDTH, 0x05, 0x08},
252         {SENSOR, MT9M111_SC_HBLANK_CONTEXT_B, 0x01, 0x38},
253         {SENSOR, MT9M111_SC_VBLANK_CONTEXT_B, 0x00, 0x11},
254         {SENSOR, MT9M111_SC_HBLANK_CONTEXT_A, 0x01, 0x38},
255         {SENSOR, MT9M111_SC_VBLANK_CONTEXT_A, 0x00, 0x11},
256         {SENSOR, MT9M111_SC_R_MODE_CONTEXT_B, 0x01, 0x03},
257         {SENSOR, MT9M111_SC_R_MODE_CONTEXT_A, 0x01, 0x03},
258         {SENSOR, 0x30, 0x04, 0x00},
259
260         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
261         {SENSOR, MT9M111_SC_SHUTTER_WIDTH, 0x01, 0xf4},
262
263         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
264         {SENSOR, MT9M111_SC_RESET, 0x00, 0x09},
265         {SENSOR, MT9M111_SC_RESET, 0x00, 0x29},
266         {SENSOR, MT9M111_SC_RESET, 0x00, 0x08},
267         {SENSOR, MT9M111_SC_RESET, 0x00, 0x0c},
268         {SENSOR, MT9M111_SC_RESET, 0x00, 0x04},
269         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x01},
270         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xb3, 0x00},
271         {SENSOR, MT9M111_CP_GLOBAL_CLK_CONTROL, 0x00, 0x03},
272         {BRIDGE, M5602_XB_GPIO_DIR, 0x05, 0x00},
273         {BRIDGE, M5602_XB_GPIO_DAT, 0x04, 0x00},
274         {BRIDGE, M5602_XB_GPIO_EN_H, 0x3e, 0x00},
275         {BRIDGE, M5602_XB_GPIO_DIR_H, 0x3e, 0x00},
276         {BRIDGE, M5602_XB_GPIO_DAT_H, 0x02, 0x00},
277         {BRIDGE, M5602_XB_GPIO_EN_L, 0xff, 0x00},
278         {BRIDGE, M5602_XB_GPIO_DIR_L, 0xff, 0x00},
279         {BRIDGE, M5602_XB_GPIO_DAT_L, 0x00, 0x00},
280         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x04, 0x00},
281         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
282         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
283         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
284         {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00},
285         {BRIDGE, M5602_XB_SENSOR_TYPE, 0x09, 0x00},
286         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
287         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
288         {BRIDGE, M5602_XB_GPIO_DIR, 0x07, 0x00},
289         {BRIDGE, M5602_XB_GPIO_DAT, 0x0b, 0x00},
290         {BRIDGE, M5602_XB_GPIO_EN_H, 0x06, 0x00},
291         {BRIDGE, M5602_XB_GPIO_EN_L, 0x00, 0x00},
292         {BRIDGE, M5602_XB_I2C_CLK_DIV, 0x0a, 0x00},
293
294         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
295         {SENSOR, MT9M111_SC_RESET, 0x00, 0x05},
296         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
297         {SENSOR, MT9M111_SC_RESET, 0x00, 0x29},
298         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
299         {SENSOR, MT9M111_SC_RESET, 0x00, 0x08},
300         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x01},
301         {SENSOR, MT9M111_CP_OPERATING_MODE_CTL, 0x00, 0x10},
302         {SENSOR, MT9M111_CP_LENS_CORRECTION_1, 0x04, 0x2a},
303         {SENSOR, MT9M111_CP_DEFECT_CORR_CONTEXT_A, 0x00, 0x01},
304         {SENSOR, MT9M111_CP_DEFECT_CORR_CONTEXT_B, 0x00, 0x01},
305         {SENSOR, MT9M111_CP_LUMA_OFFSET, 0x00, 0x00},
306         {SENSOR, MT9M111_CP_LUMA_CLIP, 0xff, 0x00},
307         {SENSOR, MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_A, 0x14, 0x00},
308         {SENSOR, MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_B, 0x14, 0x00},
309
310         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xcd, 0x00},
311         {SENSOR, 0xcd, 0x00, 0x0e},
312         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xd0, 0x00},
313         {SENSOR, 0xd0, 0x00, 0x40},
314         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x02},
315         {SENSOR, MT9M111_CC_AUTO_EXPOSURE_PARAMETER_18, 0x00, 0x00},
316         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x28, 0x00},
317         {SENSOR, MT9M111_CC_AWB_PARAMETER_7, 0xef, 0x07},
318         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x28, 0x00},
319         {SENSOR, MT9M111_CC_AWB_PARAMETER_7, 0xef, 0x03},
320         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
321         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x33, 0x00},
322         {SENSOR, 0x33, 0x03, 0x49},
323         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x33, 0x00},
324
325         {SENSOR, 0x33, 0x03, 0x49},
326         {SENSOR, 0x34, 0xc0, 0x19},
327         {SENSOR, 0x3f, 0x20, 0x20},
328         {SENSOR, 0x40, 0x20, 0x20},
329         {SENSOR, 0x5a, 0xc0, 0x0a},
330         {SENSOR, 0x70, 0x7b, 0x0a},
331         {SENSOR, 0x71, 0xff, 0x00},
332         {SENSOR, 0x72, 0x19, 0x0e},
333         {SENSOR, 0x73, 0x18, 0x0f},
334         {SENSOR, 0x74, 0x57, 0x32},
335         {SENSOR, 0x75, 0x56, 0x34},
336         {SENSOR, 0x76, 0x73, 0x35},
337         {SENSOR, 0x77, 0x30, 0x12},
338         {SENSOR, 0x78, 0x79, 0x02},
339         {SENSOR, 0x79, 0x75, 0x06},
340         {SENSOR, 0x7a, 0x77, 0x0a},
341         {SENSOR, 0x7b, 0x78, 0x09},
342         {SENSOR, 0x7c, 0x7d, 0x06},
343         {SENSOR, 0x7d, 0x31, 0x10},
344         {SENSOR, 0x7e, 0x00, 0x7e},
345         {SENSOR, 0x80, 0x59, 0x04},
346         {SENSOR, 0x81, 0x59, 0x04},
347         {SENSOR, 0x82, 0x57, 0x0a},
348         {SENSOR, 0x83, 0x58, 0x0b},
349         {SENSOR, 0x84, 0x47, 0x0c},
350         {SENSOR, 0x85, 0x48, 0x0e},
351         {SENSOR, 0x86, 0x5b, 0x02},
352         {SENSOR, 0x87, 0x00, 0x5c},
353         {SENSOR, MT9M111_CONTEXT_CONTROL, 0x00, 0x08},
354         {SENSOR, 0x60, 0x00, 0x80},
355         {SENSOR, 0x61, 0x00, 0x00},
356         {SENSOR, 0x62, 0x00, 0x00},
357         {SENSOR, 0x63, 0x00, 0x00},
358         {SENSOR, 0x64, 0x00, 0x00},
359
360         {SENSOR, MT9M111_SC_ROWSTART, 0x00, 0x0d},
361         {SENSOR, MT9M111_SC_COLSTART, 0x00, 0x18},
362         {SENSOR, MT9M111_SC_WINDOW_HEIGHT, 0x04, 0x04},
363         {SENSOR, MT9M111_SC_WINDOW_WIDTH, 0x05, 0x08},
364         {SENSOR, MT9M111_SC_HBLANK_CONTEXT_B, 0x01, 0x38},
365         {SENSOR, MT9M111_SC_VBLANK_CONTEXT_B, 0x00, 0x11},
366         {SENSOR, MT9M111_SC_HBLANK_CONTEXT_A, 0x01, 0x38},
367         {SENSOR, MT9M111_SC_VBLANK_CONTEXT_A, 0x00, 0x11},
368         {SENSOR, MT9M111_SC_R_MODE_CONTEXT_B, 0x01, 0x03},
369         {SENSOR, MT9M111_SC_R_MODE_CONTEXT_A, 0x01, 0x03},
370         {SENSOR, 0x30, 0x04, 0x00},
371
372         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
373         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
374
375         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
376         {SENSOR, MT9M111_SC_RESET, 0x00, 0x09},
377         {SENSOR, MT9M111_SC_RESET, 0x00, 0x29},
378         {SENSOR, MT9M111_SC_RESET, 0x00, 0x08},
379         {SENSOR, MT9M111_SC_RESET, 0x00, 0x0c},
380         {SENSOR, MT9M111_SC_RESET, 0x00, 0x04},
381         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x01},
382
383         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xb3, 0x00},
384         {SENSOR, MT9M111_CP_GLOBAL_CLK_CONTROL, 0x00, 0x03},
385         {BRIDGE, M5602_XB_GPIO_DIR, 0x05, 0x00},
386         {BRIDGE, M5602_XB_GPIO_DAT, 0x04, 0x00},
387         {BRIDGE, M5602_XB_GPIO_EN_H, 0x3e, 0x00},
388         {BRIDGE, M5602_XB_GPIO_DIR_H, 0x3e, 0x00},
389         {BRIDGE, M5602_XB_GPIO_DAT_H, 0x02, 0x00},
390         {BRIDGE, M5602_XB_GPIO_EN_L, 0xff, 0x00},
391         {BRIDGE, M5602_XB_GPIO_DIR_L, 0xff, 0x00},
392         {BRIDGE, M5602_XB_GPIO_DAT_L, 0x00, 0x00},
393         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x04, 0x00},
394         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
395         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
396         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
397         {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00},
398         {BRIDGE, M5602_XB_SENSOR_TYPE, 0x09, 0x00},
399         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
400         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
401         {BRIDGE, M5602_XB_GPIO_DIR, 0x07, 0x00},
402         {BRIDGE, M5602_XB_GPIO_DAT, 0x0b, 0x00},
403         {BRIDGE, M5602_XB_GPIO_EN_H, 0x06, 0x00},
404         {BRIDGE, M5602_XB_GPIO_EN_L, 0x00, 0x00},
405         {BRIDGE, M5602_XB_I2C_CLK_DIV, 0x0a, 0x00},
406
407         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
408         {SENSOR, MT9M111_SC_RESET, 0x00, 0x05},
409         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
410         {SENSOR, MT9M111_SC_RESET, 0x00, 0x29},
411         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
412         {SENSOR, MT9M111_SC_RESET, 0x00, 0x08},
413         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x01},
414         {SENSOR, MT9M111_CP_OPERATING_MODE_CTL, 0x00, 0x10},
415         {SENSOR, MT9M111_CP_LENS_CORRECTION_1, 0x04, 0x2a},
416         {SENSOR, MT9M111_CP_DEFECT_CORR_CONTEXT_A, 0x00, 0x01},
417         {SENSOR, MT9M111_CP_DEFECT_CORR_CONTEXT_B, 0x00, 0x01},
418         {SENSOR, MT9M111_CP_LUMA_OFFSET, 0x00, 0x00},
419         {SENSOR, MT9M111_CP_LUMA_CLIP, 0xff, 0x00},
420         {SENSOR, MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_A, 0x14, 0x00},
421         {SENSOR, MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_B, 0x14, 0x00},
422
423         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xcd, 0x00},
424         {SENSOR, 0xcd, 0x00, 0x0e},
425         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xd0, 0x00},
426         {SENSOR, 0xd0, 0x00, 0x40},
427         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x02},
428         {SENSOR, MT9M111_CC_AUTO_EXPOSURE_PARAMETER_18, 0x00, 0x00},
429         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x28, 0x00},
430         {SENSOR, MT9M111_CC_AWB_PARAMETER_7, 0xef, 0x07},
431         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x28, 0x00},
432         {SENSOR, MT9M111_CC_AWB_PARAMETER_7, 0xef, 0x03},
433         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
434         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x33, 0x00},
435         {SENSOR, 0x33, 0x03, 0x49},
436         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x33, 0x00},
437
438         {SENSOR, 0x33, 0x03, 0x49},
439         {SENSOR, 0x34, 0xc0, 0x19},
440         {SENSOR, 0x3f, 0x20, 0x20},
441         {SENSOR, 0x40, 0x20, 0x20},
442         {SENSOR, 0x5a, 0xc0, 0x0a},
443         {SENSOR, 0x70, 0x7b, 0x0a},
444         {SENSOR, 0x71, 0xff, 0x00},
445         {SENSOR, 0x72, 0x19, 0x0e},
446         {SENSOR, 0x73, 0x18, 0x0f},
447         {SENSOR, 0x74, 0x57, 0x32},
448         {SENSOR, 0x75, 0x56, 0x34},
449         {SENSOR, 0x76, 0x73, 0x35},
450         {SENSOR, 0x77, 0x30, 0x12},
451         {SENSOR, 0x78, 0x79, 0x02},
452         {SENSOR, 0x79, 0x75, 0x06},
453         {SENSOR, 0x7a, 0x77, 0x0a},
454         {SENSOR, 0x7b, 0x78, 0x09},
455         {SENSOR, 0x7c, 0x7d, 0x06},
456         {SENSOR, 0x7d, 0x31, 0x10},
457         {SENSOR, 0x7e, 0x00, 0x7e},
458         {SENSOR, 0x80, 0x59, 0x04},
459         {SENSOR, 0x81, 0x59, 0x04},
460         {SENSOR, 0x82, 0x57, 0x0a},
461         {SENSOR, 0x83, 0x58, 0x0b},
462         {SENSOR, 0x84, 0x47, 0x0c},
463         {SENSOR, 0x85, 0x48, 0x0e},
464         {SENSOR, 0x86, 0x5b, 0x02},
465         {SENSOR, 0x87, 0x00, 0x5c},
466         {SENSOR, MT9M111_CONTEXT_CONTROL, 0x00, 0x08},
467         {SENSOR, 0x60, 0x00, 0x80},
468         {SENSOR, 0x61, 0x00, 0x00},
469         {SENSOR, 0x62, 0x00, 0x00},
470         {SENSOR, 0x63, 0x00, 0x00},
471         {SENSOR, 0x64, 0x00, 0x00},
472
473         {SENSOR, MT9M111_SC_ROWSTART, 0x00, 0x0d},
474         {SENSOR, MT9M111_SC_COLSTART, 0x00, 0x18},
475         {SENSOR, MT9M111_SC_WINDOW_HEIGHT, 0x04, 0x04},
476         {SENSOR, MT9M111_SC_WINDOW_WIDTH, 0x05, 0x08},
477         {SENSOR, MT9M111_SC_HBLANK_CONTEXT_B, 0x01, 0x38},
478         {SENSOR, MT9M111_SC_VBLANK_CONTEXT_B, 0x00, 0x11},
479         {SENSOR, MT9M111_SC_HBLANK_CONTEXT_A, 0x01, 0x38},
480         {SENSOR, MT9M111_SC_VBLANK_CONTEXT_A, 0x00, 0x11},
481         {SENSOR, MT9M111_SC_R_MODE_CONTEXT_B, 0x01, 0x03},
482         {SENSOR, MT9M111_SC_R_MODE_CONTEXT_A, 0x01, 0x03},
483         {SENSOR, 0x30, 0x04, 0x00},
484
485         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
486         {SENSOR, MT9M111_SC_SHUTTER_WIDTH, 0x01, 0xf4},
487         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
488         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
489         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
490         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
491         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
492         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
493         {SENSOR, MT9M111_SC_RESET, 0x00, 0x09},
494         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
495         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
496         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
497         {SENSOR, MT9M111_SC_RESET, 0x00, 0x29},
498         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
499         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
500         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
501         {SENSOR, MT9M111_SC_RESET, 0x00, 0x08},
502         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
503         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
504         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
505         {SENSOR, MT9M111_SC_RESET, 0x00, 0x0c},
506         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
507         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
508         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
509         {SENSOR, MT9M111_SC_RESET, 0x00, 0x04},
510         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x01},
511         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
512         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xb3, 0x00},
513         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
514         {SENSOR, MT9M111_CP_GLOBAL_CLK_CONTROL, 0x00, 0x03},
515         {BRIDGE, M5602_XB_GPIO_DIR, 0x05, 0x00},
516         {BRIDGE, M5602_XB_GPIO_DAT, 0x04, 0x00},
517         {BRIDGE, M5602_XB_GPIO_EN_H, 0x3e, 0x00},
518         {BRIDGE, M5602_XB_GPIO_DIR_H, 0x3e, 0x00},
519         {BRIDGE, M5602_XB_GPIO_DAT_H, 0x02, 0x00},
520         {BRIDGE, M5602_XB_GPIO_EN_L, 0xff, 0x00},
521         {BRIDGE, M5602_XB_GPIO_DIR_L, 0xff, 0x00},
522         {BRIDGE, M5602_XB_GPIO_DAT_L, 0x00, 0x00},
523         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x04, 0x00},
524         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
525         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
526         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
527         {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00},
528         {BRIDGE, M5602_XB_SENSOR_TYPE, 0x09, 0x00},
529         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
530         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
531         {BRIDGE, M5602_XB_GPIO_DIR, 0x07, 0x00},
532         {BRIDGE, M5602_XB_GPIO_DAT, 0x0b, 0x00},
533         {BRIDGE, M5602_XB_GPIO_EN_H, 0x06, 0x00},
534         {BRIDGE, M5602_XB_GPIO_EN_L, 0x00, 0x00},
535         {BRIDGE, M5602_XB_I2C_CLK_DIV, 0x0a, 0x00},
536         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
537         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
538         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
539         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
540         {SENSOR, MT9M111_SC_RESET, 0x00, 0x05},
541         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
542         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
543         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
544         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
545         {SENSOR, MT9M111_SC_RESET, 0x00, 0x29},
546         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
547         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
548         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
549         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
550
551         {SENSOR, MT9M111_SC_RESET, 0x00, 0x08},
552         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x01},
553         {SENSOR, MT9M111_CP_OPERATING_MODE_CTL, 0x00, 0x10},
554         {SENSOR, MT9M111_CP_LENS_CORRECTION_1, 0x04, 0x2a},
555         {SENSOR, MT9M111_CP_DEFECT_CORR_CONTEXT_A, 0x00, 0x01},
556         {SENSOR, MT9M111_CP_DEFECT_CORR_CONTEXT_B, 0x00, 0x01},
557         {SENSOR, MT9M111_CP_LUMA_OFFSET, 0x00, 0x00},
558         {SENSOR, MT9M111_CP_LUMA_CLIP, 0xff, 0x00},
559         {SENSOR, MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_A, 0x14, 0x00},
560         {SENSOR, MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_B, 0x14, 0x00},
561
562         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
563         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xcd, 0x00},
564         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
565         {SENSOR, 0xcd, 0x00, 0x0e},
566         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
567         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xd0, 0x00},
568         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
569         {SENSOR, 0xd0, 0x00, 0x40},
570         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x02},
571         {SENSOR, MT9M111_CC_AUTO_EXPOSURE_PARAMETER_18, 0x00, 0x00},
572         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
573         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x28, 0x00},
574         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
575         {SENSOR, MT9M111_CC_AWB_PARAMETER_7, 0xef, 0x07},
576         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
577         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x28, 0x00},
578         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
579         {SENSOR, MT9M111_CC_AWB_PARAMETER_7, 0xef, 0x03},
580         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
581         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
582         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x33, 0x00},
583         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
584         {SENSOR, 0x33, 0x03, 0x49},
585         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
586         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x33, 0x00},
587         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
588
589         {SENSOR, 0x33, 0x03, 0x49},
590         {SENSOR, 0x34, 0xc0, 0x19},
591         {SENSOR, 0x3f, 0x20, 0x20},
592         {SENSOR, 0x40, 0x20, 0x20},
593         {SENSOR, 0x5a, 0xc0, 0x0a},
594         {SENSOR, 0x70, 0x7b, 0x0a},
595         {SENSOR, 0x71, 0xff, 0x00},
596         {SENSOR, 0x72, 0x19, 0x0e},
597         {SENSOR, 0x73, 0x18, 0x0f},
598         {SENSOR, 0x74, 0x57, 0x32},
599         {SENSOR, 0x75, 0x56, 0x34},
600         {SENSOR, 0x76, 0x73, 0x35},
601         {SENSOR, 0x77, 0x30, 0x12},
602         {SENSOR, 0x78, 0x79, 0x02},
603         {SENSOR, 0x79, 0x75, 0x06},
604         {SENSOR, 0x7a, 0x77, 0x0a},
605         {SENSOR, 0x7b, 0x78, 0x09},
606         {SENSOR, 0x7c, 0x7d, 0x06},
607         {SENSOR, 0x7d, 0x31, 0x10},
608         {SENSOR, 0x7e, 0x00, 0x7e},
609         {SENSOR, 0x80, 0x59, 0x04},
610         {SENSOR, 0x81, 0x59, 0x04},
611         {SENSOR, 0x82, 0x57, 0x0a},
612         {SENSOR, 0x83, 0x58, 0x0b},
613         {SENSOR, 0x84, 0x47, 0x0c},
614         {SENSOR, 0x85, 0x48, 0x0e},
615         {SENSOR, 0x86, 0x5b, 0x02},
616         {SENSOR, 0x87, 0x00, 0x5c},
617         {SENSOR, MT9M111_CONTEXT_CONTROL, 0x00, 0x08},
618         {SENSOR, 0x60, 0x00, 0x80},
619         {SENSOR, 0x61, 0x00, 0x00},
620         {SENSOR, 0x62, 0x00, 0x00},
621         {SENSOR, 0x63, 0x00, 0x00},
622         {SENSOR, 0x64, 0x00, 0x00},
623         {SENSOR, MT9M111_SC_ROWSTART, 0x00, 0x0d},
624         {SENSOR, MT9M111_SC_COLSTART, 0x00, 0x12},
625         {SENSOR, MT9M111_SC_WINDOW_HEIGHT, 0x04, 0x00},
626         {SENSOR, MT9M111_SC_WINDOW_WIDTH, 0x05, 0x10},
627         {SENSOR, MT9M111_SC_HBLANK_CONTEXT_B, 0x01, 0x60},
628         {SENSOR, MT9M111_SC_VBLANK_CONTEXT_B, 0x00, 0x11},
629         {SENSOR, MT9M111_SC_HBLANK_CONTEXT_A, 0x01, 0x60},
630         {SENSOR, MT9M111_SC_VBLANK_CONTEXT_A, 0x00, 0x11},
631         {SENSOR, MT9M111_SC_R_MODE_CONTEXT_B, 0x01, 0x0f},
632         {SENSOR, MT9M111_SC_R_MODE_CONTEXT_A, 0x01, 0x0f},
633         {SENSOR, 0x30, 0x04, 0x00},
634
635         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
636         {SENSOR, MT9M111_SC_SHUTTER_WIDTH, 0x01, 0x90},
637         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
638         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
639         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
640         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
641         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
642         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
643         {SENSOR, MT9M111_SC_RESET, 0x00, 0x09},
644         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
645         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
646         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
647         {SENSOR, MT9M111_SC_RESET, 0x00, 0x29},
648         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
649         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
650         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
651         {SENSOR, MT9M111_SC_RESET, 0x00, 0x08},
652         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
653         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
654         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
655         {SENSOR, MT9M111_SC_RESET, 0x00, 0x0c},
656         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
657         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
658         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
659         {SENSOR, MT9M111_SC_RESET, 0x00, 0x04},
660         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x01},
661         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
662         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xb3, 0x00},
663         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
664         {SENSOR, MT9M111_CP_GLOBAL_CLK_CONTROL, 0x00, 0x03},
665
666         {BRIDGE, M5602_XB_GPIO_DIR, 0x05, 0x00},
667         {BRIDGE, M5602_XB_GPIO_DAT, 0x04, 0x00},
668         {BRIDGE, M5602_XB_GPIO_EN_H, 0x3e, 0x00},
669         {BRIDGE, M5602_XB_GPIO_DIR_H, 0x3e, 0x00},
670         {BRIDGE, M5602_XB_GPIO_DAT_H, 0x02, 0x00},
671         {BRIDGE, M5602_XB_GPIO_EN_L, 0xff, 0x00},
672         {BRIDGE, M5602_XB_GPIO_DIR_L, 0xff, 0x00},
673         {BRIDGE, M5602_XB_GPIO_DAT_L, 0x00, 0x00},
674         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x04, 0x00},
675         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
676         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
677         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
678         {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00},
679         {BRIDGE, M5602_XB_SENSOR_TYPE, 0x09, 0x00},
680         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
681         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
682         {BRIDGE, M5602_XB_GPIO_DIR, 0x07, 0x00},
683         {BRIDGE, M5602_XB_GPIO_DAT, 0x0b, 0x00},
684         {BRIDGE, M5602_XB_GPIO_EN_H, 0x06, 0x00},
685         {BRIDGE, M5602_XB_GPIO_EN_L, 0x00, 0x00},
686         {BRIDGE, M5602_XB_I2C_CLK_DIV, 0x0a, 0x00},
687         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
688         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
689         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
690         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
691         {SENSOR, MT9M111_SC_RESET, 0x00, 0x05},
692         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
693         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
694         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
695         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
696         {SENSOR, MT9M111_SC_RESET, 0x00, 0x29},
697         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
698         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
699         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x0d, 0x00},
700         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
701         {SENSOR, MT9M111_SC_RESET, 0x00, 0x08},
702         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x01},
703         {SENSOR, MT9M111_CP_OPERATING_MODE_CTL, 0x00, 0x10},
704         {SENSOR, MT9M111_CP_LENS_CORRECTION_1, 0x04, 0x2a},
705         {SENSOR, MT9M111_CP_DEFECT_CORR_CONTEXT_A, 0x00, 0x01},
706         {SENSOR, MT9M111_CP_DEFECT_CORR_CONTEXT_B, 0x00, 0x01},
707         {SENSOR, MT9M111_CP_LUMA_OFFSET, 0x00, 0x00},
708         {SENSOR, MT9M111_CP_LUMA_CLIP, 0xff, 0x00},
709         {SENSOR, MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_A, 0x14, 0x00},
710         {SENSOR, MT9M111_CP_OUTPUT_FORMAT_CTL2_CONTEXT_B, 0x14, 0x00},
711
712         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
713         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xcd, 0x00},
714         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
715         {SENSOR, 0xcd, 0x00, 0x0e},
716         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
717         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0xd0, 0x00},
718         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
719         {SENSOR, 0xd0, 0x00, 0x40},
720         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x02},
721         {SENSOR, MT9M111_CC_AUTO_EXPOSURE_PARAMETER_18, 0x00, 0x00},
722         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
723         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x28, 0x00},
724         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
725         {SENSOR, MT9M111_CC_AWB_PARAMETER_7, 0xef, 0x07},
726         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
727         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x28, 0x00},
728         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
729         {SENSOR, MT9M111_CC_AWB_PARAMETER_7, 0xef, 0x03},
730         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
731
732         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
733         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x33, 0x00},
734         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
735         {SENSOR, 0x33, 0x03, 0x49},
736         {BRIDGE, M5602_XB_I2C_DEV_ADDR, 0xba, 0x00},
737         {BRIDGE, M5602_XB_I2C_REG_ADDR, 0x33, 0x00},
738         {BRIDGE, M5602_XB_I2C_CTRL, 0x1a, 0x00},
739
740         {SENSOR, 0x33, 0x03, 0x49},
741         {SENSOR, 0x34, 0xc0, 0x19},
742         {SENSOR, 0x3f, 0x20, 0x20},
743         {SENSOR, 0x40, 0x20, 0x20},
744         {SENSOR, 0x5a, 0xc0, 0x0a},
745         {SENSOR, 0x70, 0x7b, 0x0a},
746         {SENSOR, 0x71, 0xff, 0x00},
747         {SENSOR, 0x72, 0x19, 0x0e},
748         {SENSOR, 0x73, 0x18, 0x0f},
749         {SENSOR, 0x74, 0x57, 0x32},
750         {SENSOR, 0x75, 0x56, 0x34},
751         {SENSOR, 0x76, 0x73, 0x35},
752         {SENSOR, 0x77, 0x30, 0x12},
753         {SENSOR, 0x78, 0x79, 0x02},
754         {SENSOR, 0x79, 0x75, 0x06},
755         {SENSOR, 0x7a, 0x77, 0x0a},
756         {SENSOR, 0x7b, 0x78, 0x09},
757         {SENSOR, 0x7c, 0x7d, 0x06},
758         {SENSOR, 0x7d, 0x31, 0x10},
759         {SENSOR, 0x7e, 0x00, 0x7e},
760         {SENSOR, 0x80, 0x59, 0x04},
761         {SENSOR, 0x81, 0x59, 0x04},
762         {SENSOR, 0x82, 0x57, 0x0a},
763         {SENSOR, 0x83, 0x58, 0x0b},
764         {SENSOR, 0x84, 0x47, 0x0c},
765         {SENSOR, 0x85, 0x48, 0x0e},
766         {SENSOR, 0x86, 0x5b, 0x02},
767         {SENSOR, 0x87, 0x00, 0x5c},
768         {SENSOR, MT9M111_CONTEXT_CONTROL, 0x00, 0x08},
769         {SENSOR, 0x60, 0x00, 0x80},
770         {SENSOR, 0x61, 0x00, 0x00},
771         {SENSOR, 0x62, 0x00, 0x00},
772         {SENSOR, 0x63, 0x00, 0x00},
773         {SENSOR, 0x64, 0x00, 0x00},
774
775         {SENSOR, MT9M111_SC_ROWSTART, 0x00, 0x0d},
776         {SENSOR, MT9M111_SC_COLSTART, 0x00, 0x12},
777         {SENSOR, MT9M111_SC_WINDOW_HEIGHT, 0x04, 0x00},
778         {SENSOR, MT9M111_SC_WINDOW_WIDTH, 0x05, 0x10},
779         {SENSOR, MT9M111_SC_HBLANK_CONTEXT_B, 0x01, 0x60},
780         {SENSOR, MT9M111_SC_VBLANK_CONTEXT_B, 0x00, 0x11},
781         {SENSOR, MT9M111_SC_HBLANK_CONTEXT_A, 0x01, 0x60},
782         {SENSOR, MT9M111_SC_VBLANK_CONTEXT_A, 0x00, 0x11},
783         {SENSOR, MT9M111_SC_R_MODE_CONTEXT_B, 0x01, 0x0f},
784         {SENSOR, MT9M111_SC_R_MODE_CONTEXT_A, 0x01, 0x0f},
785         {SENSOR, 0x30, 0x04, 0x00},
786
787         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x06, 0x00},
788         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
789         {BRIDGE, M5602_XB_ADC_CTRL, 0xc0, 0x00},
790         {BRIDGE, M5602_XB_SENSOR_TYPE, 0x09, 0x00},
791         {BRIDGE, M5602_XB_LINE_OF_FRAME_H, 0x81, 0x00},
792         {BRIDGE, M5602_XB_PIX_OF_LINE_H, 0x82, 0x00},
793         {BRIDGE, M5602_XB_SIG_INI, 0x01, 0x00},
794         {BRIDGE, M5602_XB_VSYNC_PARA, 0x00, 0x00},
795         {BRIDGE, M5602_XB_VSYNC_PARA, 0x00, 0x00},
796         {BRIDGE, M5602_XB_VSYNC_PARA, 0x00, 0x00},
797         {BRIDGE, M5602_XB_VSYNC_PARA, 0x00, 0x00},
798         {BRIDGE, M5602_XB_VSYNC_PARA, 0x01, 0x00},
799         {BRIDGE, M5602_XB_VSYNC_PARA, 0xe0, 0x00},
800         {BRIDGE, M5602_XB_VSYNC_PARA, 0x00, 0x00},
801         {BRIDGE, M5602_XB_VSYNC_PARA, 0x00, 0x00},
802         {BRIDGE, M5602_XB_SIG_INI, 0x00, 0x00},
803         {BRIDGE, M5602_XB_SIG_INI, 0x02, 0x00},
804         {BRIDGE, M5602_XB_HSYNC_PARA, 0x00, 0x00},
805         {BRIDGE, M5602_XB_HSYNC_PARA, 0x00, 0x00},
806         {BRIDGE, M5602_XB_HSYNC_PARA, 0x02, 0x00}, /* 639*/
807         {BRIDGE, M5602_XB_HSYNC_PARA, 0x7f, 0x00},
808         {BRIDGE, M5602_XB_SIG_INI, 0x00, 0x00},
809         {BRIDGE, M5602_XB_SEN_CLK_DIV, 0x00, 0x00},
810         {BRIDGE, M5602_XB_SEN_CLK_CTRL, 0xb0, 0x00},
811
812         {SENSOR, MT9M111_PAGE_MAP, 0x00, 0x00},
813         /* Set number of blank rows chosen to 400 */
814         {SENSOR, MT9M111_SC_SHUTTER_WIDTH, 0x01, 0x90},
815 };
816
817 #endif