GNU Linux-libre 6.1.86-gnu
[releases.git] / drivers / media / i2c / et8ek8 / et8ek8_mode.c
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 */
18 static 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 */
119 static 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 */
175 static 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 */
231 static 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 */
287 static 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 */
343 static 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 */
398 static 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 */
454 static 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 */
510 static 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
565 struct 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 };