]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - drivers/media/i2c/et8ek8/et8ek8_mode.c
Merge branches 'for-4.11/upstream-fixes', 'for-4.12/accutouch', 'for-4.12/cp2112...
[mirror_ubuntu-artful-kernel.git] / drivers / media / i2c / et8ek8 / et8ek8_mode.c
1 /*
2 * et8ek8_mode.c
3 *
4 * Copyright (C) 2008 Nokia Corporation
5 *
6 * Contact: Sakari Ailus <sakari.ailus@iki.fi>
7 * Tuukka Toivonen <tuukkat76@gmail.com>
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * version 2 as published by the Free Software Foundation.
12 *
13 * This program is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 */
18
19 #include "et8ek8_reg.h"
20
21 /*
22 * Stingray sensor mode settings for Scooby
23 */
24
25 /* Mode1_poweron_Mode2_16VGA_2592x1968_12.07fps */
26 static struct et8ek8_reglist mode1_poweron_mode2_16vga_2592x1968_12_07fps = {
27 /* (without the +1)
28 * SPCK = 80 MHz
29 * CCP2 = 640 MHz
30 * VCO = 640 MHz
31 * VCOUNT = 84 (2016)
32 * HCOUNT = 137 (3288)
33 * CKREF_DIV = 2
34 * CKVAR_DIV = 200
35 * VCO_DIV = 0
36 * SPCK_DIV = 7
37 * MRCK_DIV = 7
38 * LVDSCK_DIV = 0
39 */
40 .type = ET8EK8_REGLIST_POWERON,
41 .mode = {
42 .sensor_width = 2592,
43 .sensor_height = 1968,
44 .sensor_window_origin_x = 0,
45 .sensor_window_origin_y = 0,
46 .sensor_window_width = 2592,
47 .sensor_window_height = 1968,
48 .width = 3288,
49 .height = 2016,
50 .window_origin_x = 0,
51 .window_origin_y = 0,
52 .window_width = 2592,
53 .window_height = 1968,
54 .pixel_clock = 80000000,
55 .ext_clock = 9600000,
56 .timeperframe = {
57 .numerator = 100,
58 .denominator = 1207
59 },
60 .max_exp = 2012,
61 /* .max_gain = 0, */
62 .bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
63 .sensitivity = 65536
64 },
65 .regs = {
66 /* Need to set firstly */
67 { ET8EK8_REG_8BIT, 0x126C, 0xCC },
68 /* Strobe and Data of CCP2 delay are minimized. */
69 { ET8EK8_REG_8BIT, 0x1269, 0x00 },
70 /* Refined value of Min H_COUNT */
71 { ET8EK8_REG_8BIT, 0x1220, 0x89 },
72 /* Frequency of SPCK setting (SPCK=MRCK) */
73 { ET8EK8_REG_8BIT, 0x123A, 0x07 },
74 { ET8EK8_REG_8BIT, 0x1241, 0x94 },
75 { ET8EK8_REG_8BIT, 0x1242, 0x02 },
76 { ET8EK8_REG_8BIT, 0x124B, 0x00 },
77 { ET8EK8_REG_8BIT, 0x1255, 0xFF },
78 { ET8EK8_REG_8BIT, 0x1256, 0x9F },
79 { ET8EK8_REG_8BIT, 0x1258, 0x00 },
80 /* From parallel out to serial out */
81 { ET8EK8_REG_8BIT, 0x125D, 0x88 },
82 /* From w/ embeded data to w/o embeded data */
83 { ET8EK8_REG_8BIT, 0x125E, 0xC0 },
84 /* CCP2 out is from STOP to ACTIVE */
85 { ET8EK8_REG_8BIT, 0x1263, 0x98 },
86 { ET8EK8_REG_8BIT, 0x1268, 0xC6 },
87 { ET8EK8_REG_8BIT, 0x1434, 0x00 },
88 { ET8EK8_REG_8BIT, 0x1163, 0x44 },
89 { ET8EK8_REG_8BIT, 0x1166, 0x29 },
90 { ET8EK8_REG_8BIT, 0x1140, 0x02 },
91 { ET8EK8_REG_8BIT, 0x1011, 0x24 },
92 { ET8EK8_REG_8BIT, 0x1151, 0x80 },
93 { ET8EK8_REG_8BIT, 0x1152, 0x23 },
94 /* Initial setting for improvement2 of lower frequency noise */
95 { ET8EK8_REG_8BIT, 0x1014, 0x05 },
96 { ET8EK8_REG_8BIT, 0x1033, 0x06 },
97 { ET8EK8_REG_8BIT, 0x1034, 0x79 },
98 { ET8EK8_REG_8BIT, 0x1423, 0x3F },
99 { ET8EK8_REG_8BIT, 0x1424, 0x3F },
100 { ET8EK8_REG_8BIT, 0x1426, 0x00 },
101 /* Switch of Preset-White-balance (0d:disable / 1d:enable) */
102 { ET8EK8_REG_8BIT, 0x1439, 0x00 },
103 /* Switch of blemish correction (0d:disable / 1d:enable) */
104 { ET8EK8_REG_8BIT, 0x161F, 0x60 },
105 /* Switch of auto noise correction (0d:disable / 1d:enable) */
106 { ET8EK8_REG_8BIT, 0x1634, 0x00 },
107 { ET8EK8_REG_8BIT, 0x1646, 0x00 },
108 { ET8EK8_REG_8BIT, 0x1648, 0x00 },
109 { ET8EK8_REG_8BIT, 0x113E, 0x01 },
110 { ET8EK8_REG_8BIT, 0x113F, 0x22 },
111 { ET8EK8_REG_8BIT, 0x1239, 0x64 },
112 { ET8EK8_REG_8BIT, 0x1238, 0x02 },
113 { ET8EK8_REG_8BIT, 0x123B, 0x70 },
114 { ET8EK8_REG_8BIT, 0x123A, 0x07 },
115 { ET8EK8_REG_8BIT, 0x121B, 0x64 },
116 { ET8EK8_REG_8BIT, 0x121D, 0x64 },
117 { ET8EK8_REG_8BIT, 0x1221, 0x00 },
118 { ET8EK8_REG_8BIT, 0x1220, 0x89 },
119 { ET8EK8_REG_8BIT, 0x1223, 0x00 },
120 { ET8EK8_REG_8BIT, 0x1222, 0x54 },
121 { ET8EK8_REG_8BIT, 0x125D, 0x88 }, /* CCP_LVDS_MODE/ */
122 { ET8EK8_REG_TERM, 0, 0}
123 }
124 };
125
126 /* Mode1_16VGA_2592x1968_13.12fps_DPCM10-8 */
127 static struct et8ek8_reglist mode1_16vga_2592x1968_13_12fps_dpcm10_8 = {
128 /* (without the +1)
129 * SPCK = 80 MHz
130 * CCP2 = 560 MHz
131 * VCO = 560 MHz
132 * VCOUNT = 84 (2016)
133 * HCOUNT = 128 (3072)
134 * CKREF_DIV = 2
135 * CKVAR_DIV = 175
136 * VCO_DIV = 0
137 * SPCK_DIV = 6
138 * MRCK_DIV = 7
139 * LVDSCK_DIV = 0
140 */
141 .type = ET8EK8_REGLIST_MODE,
142 .mode = {
143 .sensor_width = 2592,
144 .sensor_height = 1968,
145 .sensor_window_origin_x = 0,
146 .sensor_window_origin_y = 0,
147 .sensor_window_width = 2592,
148 .sensor_window_height = 1968,
149 .width = 3072,
150 .height = 2016,
151 .window_origin_x = 0,
152 .window_origin_y = 0,
153 .window_width = 2592,
154 .window_height = 1968,
155 .pixel_clock = 80000000,
156 .ext_clock = 9600000,
157 .timeperframe = {
158 .numerator = 100,
159 .denominator = 1292
160 },
161 .max_exp = 2012,
162 /* .max_gain = 0, */
163 .bus_format = MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8,
164 .sensitivity = 65536
165 },
166 .regs = {
167 { ET8EK8_REG_8BIT, 0x1239, 0x57 },
168 { ET8EK8_REG_8BIT, 0x1238, 0x82 },
169 { ET8EK8_REG_8BIT, 0x123B, 0x70 },
170 { ET8EK8_REG_8BIT, 0x123A, 0x06 },
171 { ET8EK8_REG_8BIT, 0x121B, 0x64 },
172 { ET8EK8_REG_8BIT, 0x121D, 0x64 },
173 { ET8EK8_REG_8BIT, 0x1221, 0x00 },
174 { ET8EK8_REG_8BIT, 0x1220, 0x80 }, /* <-changed to v14 7E->80 */
175 { ET8EK8_REG_8BIT, 0x1223, 0x00 },
176 { ET8EK8_REG_8BIT, 0x1222, 0x54 },
177 { ET8EK8_REG_8BIT, 0x125D, 0x83 }, /* CCP_LVDS_MODE/ */
178 { ET8EK8_REG_TERM, 0, 0}
179 }
180 };
181
182 /* Mode3_4VGA_1296x984_29.99fps_DPCM10-8 */
183 static struct et8ek8_reglist mode3_4vga_1296x984_29_99fps_dpcm10_8 = {
184 /* (without the +1)
185 * SPCK = 96.5333333333333 MHz
186 * CCP2 = 579.2 MHz
187 * VCO = 579.2 MHz
188 * VCOUNT = 84 (2016)
189 * HCOUNT = 133 (3192)
190 * CKREF_DIV = 2
191 * CKVAR_DIV = 181
192 * VCO_DIV = 0
193 * SPCK_DIV = 5
194 * MRCK_DIV = 7
195 * LVDSCK_DIV = 0
196 */
197 .type = ET8EK8_REGLIST_MODE,
198 .mode = {
199 .sensor_width = 2592,
200 .sensor_height = 1968,
201 .sensor_window_origin_x = 0,
202 .sensor_window_origin_y = 0,
203 .sensor_window_width = 2592,
204 .sensor_window_height = 1968,
205 .width = 3192,
206 .height = 1008,
207 .window_origin_x = 0,
208 .window_origin_y = 0,
209 .window_width = 1296,
210 .window_height = 984,
211 .pixel_clock = 96533333,
212 .ext_clock = 9600000,
213 .timeperframe = {
214 .numerator = 100,
215 .denominator = 3000
216 },
217 .max_exp = 1004,
218 /* .max_gain = 0, */
219 .bus_format = MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8,
220 .sensitivity = 65536
221 },
222 .regs = {
223 { ET8EK8_REG_8BIT, 0x1239, 0x5A },
224 { ET8EK8_REG_8BIT, 0x1238, 0x82 },
225 { ET8EK8_REG_8BIT, 0x123B, 0x70 },
226 { ET8EK8_REG_8BIT, 0x123A, 0x05 },
227 { ET8EK8_REG_8BIT, 0x121B, 0x63 },
228 { ET8EK8_REG_8BIT, 0x1220, 0x85 },
229 { ET8EK8_REG_8BIT, 0x1221, 0x00 },
230 { ET8EK8_REG_8BIT, 0x1222, 0x54 },
231 { ET8EK8_REG_8BIT, 0x1223, 0x00 },
232 { ET8EK8_REG_8BIT, 0x121D, 0x63 },
233 { ET8EK8_REG_8BIT, 0x125D, 0x83 }, /* CCP_LVDS_MODE/ */
234 { ET8EK8_REG_TERM, 0, 0}
235 }
236 };
237
238 /* Mode4_SVGA_864x656_29.88fps */
239 static struct et8ek8_reglist mode4_svga_864x656_29_88fps = {
240 /* (without the +1)
241 * SPCK = 80 MHz
242 * CCP2 = 320 MHz
243 * VCO = 640 MHz
244 * VCOUNT = 84 (2016)
245 * HCOUNT = 166 (3984)
246 * CKREF_DIV = 2
247 * CKVAR_DIV = 200
248 * VCO_DIV = 0
249 * SPCK_DIV = 7
250 * MRCK_DIV = 7
251 * LVDSCK_DIV = 1
252 */
253 .type = ET8EK8_REGLIST_MODE,
254 .mode = {
255 .sensor_width = 2592,
256 .sensor_height = 1968,
257 .sensor_window_origin_x = 0,
258 .sensor_window_origin_y = 0,
259 .sensor_window_width = 2592,
260 .sensor_window_height = 1968,
261 .width = 3984,
262 .height = 672,
263 .window_origin_x = 0,
264 .window_origin_y = 0,
265 .window_width = 864,
266 .window_height = 656,
267 .pixel_clock = 80000000,
268 .ext_clock = 9600000,
269 .timeperframe = {
270 .numerator = 100,
271 .denominator = 2988
272 },
273 .max_exp = 668,
274 /* .max_gain = 0, */
275 .bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
276 .sensitivity = 65536
277 },
278 .regs = {
279 { ET8EK8_REG_8BIT, 0x1239, 0x64 },
280 { ET8EK8_REG_8BIT, 0x1238, 0x02 },
281 { ET8EK8_REG_8BIT, 0x123B, 0x71 },
282 { ET8EK8_REG_8BIT, 0x123A, 0x07 },
283 { ET8EK8_REG_8BIT, 0x121B, 0x62 },
284 { ET8EK8_REG_8BIT, 0x121D, 0x62 },
285 { ET8EK8_REG_8BIT, 0x1221, 0x00 },
286 { ET8EK8_REG_8BIT, 0x1220, 0xA6 },
287 { ET8EK8_REG_8BIT, 0x1223, 0x00 },
288 { ET8EK8_REG_8BIT, 0x1222, 0x54 },
289 { ET8EK8_REG_8BIT, 0x125D, 0x88 }, /* CCP_LVDS_MODE/ */
290 { ET8EK8_REG_TERM, 0, 0}
291 }
292 };
293
294 /* Mode5_VGA_648x492_29.93fps */
295 static struct et8ek8_reglist mode5_vga_648x492_29_93fps = {
296 /* (without the +1)
297 * SPCK = 80 MHz
298 * CCP2 = 320 MHz
299 * VCO = 640 MHz
300 * VCOUNT = 84 (2016)
301 * HCOUNT = 221 (5304)
302 * CKREF_DIV = 2
303 * CKVAR_DIV = 200
304 * VCO_DIV = 0
305 * SPCK_DIV = 7
306 * MRCK_DIV = 7
307 * LVDSCK_DIV = 1
308 */
309 .type = ET8EK8_REGLIST_MODE,
310 .mode = {
311 .sensor_width = 2592,
312 .sensor_height = 1968,
313 .sensor_window_origin_x = 0,
314 .sensor_window_origin_y = 0,
315 .sensor_window_width = 2592,
316 .sensor_window_height = 1968,
317 .width = 5304,
318 .height = 504,
319 .window_origin_x = 0,
320 .window_origin_y = 0,
321 .window_width = 648,
322 .window_height = 492,
323 .pixel_clock = 80000000,
324 .ext_clock = 9600000,
325 .timeperframe = {
326 .numerator = 100,
327 .denominator = 2993
328 },
329 .max_exp = 500,
330 /* .max_gain = 0, */
331 .bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
332 .sensitivity = 65536
333 },
334 .regs = {
335 { ET8EK8_REG_8BIT, 0x1239, 0x64 },
336 { ET8EK8_REG_8BIT, 0x1238, 0x02 },
337 { ET8EK8_REG_8BIT, 0x123B, 0x71 },
338 { ET8EK8_REG_8BIT, 0x123A, 0x07 },
339 { ET8EK8_REG_8BIT, 0x121B, 0x61 },
340 { ET8EK8_REG_8BIT, 0x121D, 0x61 },
341 { ET8EK8_REG_8BIT, 0x1221, 0x00 },
342 { ET8EK8_REG_8BIT, 0x1220, 0xDD },
343 { ET8EK8_REG_8BIT, 0x1223, 0x00 },
344 { ET8EK8_REG_8BIT, 0x1222, 0x54 },
345 { ET8EK8_REG_8BIT, 0x125D, 0x88 }, /* CCP_LVDS_MODE/ */
346 { ET8EK8_REG_TERM, 0, 0}
347 }
348 };
349
350 /* Mode2_16VGA_2592x1968_3.99fps */
351 static struct et8ek8_reglist mode2_16vga_2592x1968_3_99fps = {
352 /* (without the +1)
353 * SPCK = 80 MHz
354 * CCP2 = 640 MHz
355 * VCO = 640 MHz
356 * VCOUNT = 254 (6096)
357 * HCOUNT = 137 (3288)
358 * CKREF_DIV = 2
359 * CKVAR_DIV = 200
360 * VCO_DIV = 0
361 * SPCK_DIV = 7
362 * MRCK_DIV = 7
363 * LVDSCK_DIV = 0
364 */
365 .type = ET8EK8_REGLIST_MODE,
366 .mode = {
367 .sensor_width = 2592,
368 .sensor_height = 1968,
369 .sensor_window_origin_x = 0,
370 .sensor_window_origin_y = 0,
371 .sensor_window_width = 2592,
372 .sensor_window_height = 1968,
373 .width = 3288,
374 .height = 6096,
375 .window_origin_x = 0,
376 .window_origin_y = 0,
377 .window_width = 2592,
378 .window_height = 1968,
379 .pixel_clock = 80000000,
380 .ext_clock = 9600000,
381 .timeperframe = {
382 .numerator = 100,
383 .denominator = 399
384 },
385 .max_exp = 6092,
386 /* .max_gain = 0, */
387 .bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
388 .sensitivity = 65536
389 },
390 .regs = {
391 { ET8EK8_REG_8BIT, 0x1239, 0x64 },
392 { ET8EK8_REG_8BIT, 0x1238, 0x02 },
393 { ET8EK8_REG_8BIT, 0x123B, 0x70 },
394 { ET8EK8_REG_8BIT, 0x123A, 0x07 },
395 { ET8EK8_REG_8BIT, 0x121B, 0x64 },
396 { ET8EK8_REG_8BIT, 0x121D, 0x64 },
397 { ET8EK8_REG_8BIT, 0x1221, 0x00 },
398 { ET8EK8_REG_8BIT, 0x1220, 0x89 },
399 { ET8EK8_REG_8BIT, 0x1223, 0x00 },
400 { ET8EK8_REG_8BIT, 0x1222, 0xFE },
401 { ET8EK8_REG_TERM, 0, 0}
402 }
403 };
404
405 /* Mode_648x492_5fps */
406 static struct et8ek8_reglist mode_648x492_5fps = {
407 /* (without the +1)
408 * SPCK = 13.3333333333333 MHz
409 * CCP2 = 53.3333333333333 MHz
410 * VCO = 640 MHz
411 * VCOUNT = 84 (2016)
412 * HCOUNT = 221 (5304)
413 * CKREF_DIV = 2
414 * CKVAR_DIV = 200
415 * VCO_DIV = 5
416 * SPCK_DIV = 7
417 * MRCK_DIV = 7
418 * LVDSCK_DIV = 1
419 */
420 .type = ET8EK8_REGLIST_MODE,
421 .mode = {
422 .sensor_width = 2592,
423 .sensor_height = 1968,
424 .sensor_window_origin_x = 0,
425 .sensor_window_origin_y = 0,
426 .sensor_window_width = 2592,
427 .sensor_window_height = 1968,
428 .width = 5304,
429 .height = 504,
430 .window_origin_x = 0,
431 .window_origin_y = 0,
432 .window_width = 648,
433 .window_height = 492,
434 .pixel_clock = 13333333,
435 .ext_clock = 9600000,
436 .timeperframe = {
437 .numerator = 100,
438 .denominator = 499
439 },
440 .max_exp = 500,
441 /* .max_gain = 0, */
442 .bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
443 .sensitivity = 65536
444 },
445 .regs = {
446 { ET8EK8_REG_8BIT, 0x1239, 0x64 },
447 { ET8EK8_REG_8BIT, 0x1238, 0x02 },
448 { ET8EK8_REG_8BIT, 0x123B, 0x71 },
449 { ET8EK8_REG_8BIT, 0x123A, 0x57 },
450 { ET8EK8_REG_8BIT, 0x121B, 0x61 },
451 { ET8EK8_REG_8BIT, 0x121D, 0x61 },
452 { ET8EK8_REG_8BIT, 0x1221, 0x00 },
453 { ET8EK8_REG_8BIT, 0x1220, 0xDD },
454 { ET8EK8_REG_8BIT, 0x1223, 0x00 },
455 { ET8EK8_REG_8BIT, 0x1222, 0x54 },
456 { ET8EK8_REG_8BIT, 0x125D, 0x88 }, /* CCP_LVDS_MODE/ */
457 { ET8EK8_REG_TERM, 0, 0}
458 }
459 };
460
461 /* Mode3_4VGA_1296x984_5fps */
462 static struct et8ek8_reglist mode3_4vga_1296x984_5fps = {
463 /* (without the +1)
464 * SPCK = 49.4 MHz
465 * CCP2 = 395.2 MHz
466 * VCO = 790.4 MHz
467 * VCOUNT = 250 (6000)
468 * HCOUNT = 137 (3288)
469 * CKREF_DIV = 2
470 * CKVAR_DIV = 247
471 * VCO_DIV = 1
472 * SPCK_DIV = 7
473 * MRCK_DIV = 7
474 * LVDSCK_DIV = 0
475 */
476 .type = ET8EK8_REGLIST_MODE,
477 .mode = {
478 .sensor_width = 2592,
479 .sensor_height = 1968,
480 .sensor_window_origin_x = 0,
481 .sensor_window_origin_y = 0,
482 .sensor_window_width = 2592,
483 .sensor_window_height = 1968,
484 .width = 3288,
485 .height = 3000,
486 .window_origin_x = 0,
487 .window_origin_y = 0,
488 .window_width = 1296,
489 .window_height = 984,
490 .pixel_clock = 49400000,
491 .ext_clock = 9600000,
492 .timeperframe = {
493 .numerator = 100,
494 .denominator = 501
495 },
496 .max_exp = 2996,
497 /* .max_gain = 0, */
498 .bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
499 .sensitivity = 65536
500 },
501 .regs = {
502 { ET8EK8_REG_8BIT, 0x1239, 0x7B },
503 { ET8EK8_REG_8BIT, 0x1238, 0x82 },
504 { ET8EK8_REG_8BIT, 0x123B, 0x70 },
505 { ET8EK8_REG_8BIT, 0x123A, 0x17 },
506 { ET8EK8_REG_8BIT, 0x121B, 0x63 },
507 { ET8EK8_REG_8BIT, 0x121D, 0x63 },
508 { ET8EK8_REG_8BIT, 0x1221, 0x00 },
509 { ET8EK8_REG_8BIT, 0x1220, 0x89 },
510 { ET8EK8_REG_8BIT, 0x1223, 0x00 },
511 { ET8EK8_REG_8BIT, 0x1222, 0xFA },
512 { ET8EK8_REG_8BIT, 0x125D, 0x88 }, /* CCP_LVDS_MODE/ */
513 { ET8EK8_REG_TERM, 0, 0}
514 }
515 };
516
517 /* Mode_4VGA_1296x984_25fps_DPCM10-8 */
518 static struct et8ek8_reglist mode_4vga_1296x984_25fps_dpcm10_8 = {
519 /* (without the +1)
520 * SPCK = 84.2666666666667 MHz
521 * CCP2 = 505.6 MHz
522 * VCO = 505.6 MHz
523 * VCOUNT = 88 (2112)
524 * HCOUNT = 133 (3192)
525 * CKREF_DIV = 2
526 * CKVAR_DIV = 158
527 * VCO_DIV = 0
528 * SPCK_DIV = 5
529 * MRCK_DIV = 7
530 * LVDSCK_DIV = 0
531 */
532 .type = ET8EK8_REGLIST_MODE,
533 .mode = {
534 .sensor_width = 2592,
535 .sensor_height = 1968,
536 .sensor_window_origin_x = 0,
537 .sensor_window_origin_y = 0,
538 .sensor_window_width = 2592,
539 .sensor_window_height = 1968,
540 .width = 3192,
541 .height = 1056,
542 .window_origin_x = 0,
543 .window_origin_y = 0,
544 .window_width = 1296,
545 .window_height = 984,
546 .pixel_clock = 84266667,
547 .ext_clock = 9600000,
548 .timeperframe = {
549 .numerator = 100,
550 .denominator = 2500
551 },
552 .max_exp = 1052,
553 /* .max_gain = 0, */
554 .bus_format = MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8,
555 .sensitivity = 65536
556 },
557 .regs = {
558 { ET8EK8_REG_8BIT, 0x1239, 0x4F },
559 { ET8EK8_REG_8BIT, 0x1238, 0x02 },
560 { ET8EK8_REG_8BIT, 0x123B, 0x70 },
561 { ET8EK8_REG_8BIT, 0x123A, 0x05 },
562 { ET8EK8_REG_8BIT, 0x121B, 0x63 },
563 { ET8EK8_REG_8BIT, 0x1220, 0x85 },
564 { ET8EK8_REG_8BIT, 0x1221, 0x00 },
565 { ET8EK8_REG_8BIT, 0x1222, 0x58 },
566 { ET8EK8_REG_8BIT, 0x1223, 0x00 },
567 { ET8EK8_REG_8BIT, 0x121D, 0x63 },
568 { ET8EK8_REG_8BIT, 0x125D, 0x83 },
569 { ET8EK8_REG_TERM, 0, 0}
570 }
571 };
572
573 struct et8ek8_meta_reglist meta_reglist = {
574 .version = "V14 03-June-2008",
575 .reglist = {
576 { .ptr = &mode1_poweron_mode2_16vga_2592x1968_12_07fps },
577 { .ptr = &mode1_16vga_2592x1968_13_12fps_dpcm10_8 },
578 { .ptr = &mode3_4vga_1296x984_29_99fps_dpcm10_8 },
579 { .ptr = &mode4_svga_864x656_29_88fps },
580 { .ptr = &mode5_vga_648x492_29_93fps },
581 { .ptr = &mode2_16vga_2592x1968_3_99fps },
582 { .ptr = &mode_648x492_5fps },
583 { .ptr = &mode3_4vga_1296x984_5fps },
584 { .ptr = &mode_4vga_1296x984_25fps_dpcm10_8 },
585 { .ptr = NULL }
586 }
587 };