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

source code of linux/drivers/media/i2c/et8ek8/et8ek8_mode.c