[9610] fimc-is2: Buffer modification in case of otp data error at 2x5 module
[GitHub/MotorolaMobilityLLC/kernel-slsi.git] / drivers / media / platform / exynos / fimc-is2 / sensor / module_framework / cis / fimc-is-cis-imx241-setA.h
CommitLineData
d8cd4c5c
WM
1/*
2 * Samsung Exynos5 SoC series Sensor driver
3 *
4 *
5 * Copyright (c) 2011 Samsung Electronics Co., Ltd
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12// IMX241ES1_Samsung(0ATH5)_RegisterSetting_ver0.28-0.21_23.96MHz_160727(On5 pjt).xlsx
13
14#ifndef FIMC_IS_CIS_IMX241_SET_A_H
15#define FIMC_IS_CIS_IMX241_SET_A_H
16
17#include "fimc-is-cis.h"
18#include "fimc-is-cis-imx241.h"
19
20const u32 sensor_imx241_setfile_A_initial[] = {
21 // Init Global Setting
22 0x0101, 0x00, 0x1,
23 0x303C, 0x4B, 0x1,
24 0x303D, 0x00, 0x1,
25 0x3041, 0xD7, 0x1,
26 0x30E0, 0x00, 0x1,
27 0x30E1, 0x00, 0x1,
28 0x30F6, 0x00, 0x1,
29 0x34CE, 0xFF, 0x1,
30
31 //Image Quality adjustment setting
32 //Mode Setting
33 0x0340, 0x08, 0x1,
34 0x0341, 0x7A, 0x1,
35 0x0342, 0x05, 0x1,
36 0x0343, 0xB0, 0x1,
37 0x0344, 0x00, 0x1,
38 0x0345, 0x00, 0x1,
39 0x0346, 0x00, 0x1,
40 0x0347, 0x02, 0x1,
41 0x0348, 0x0A, 0x1,
42 0x0349, 0x1F, 0x1,
43 0x034A, 0x07, 0x1,
44 0x034B, 0x97, 0x1,
45 0x0381, 0x01, 0x1,
46 0x0383, 0x01, 0x1,
47 0x0385, 0x01, 0x1,
48 0x0387, 0x01, 0x1,
49 0x3048, 0x20, 0x1,
50 0x30D5, 0x00, 0x1,
51 0x3165, 0x20, 0x1,
52 0x30D1, 0x00, 0x1,
53 0x30D0, 0x2A, 0x1,
54 0x3102, 0x13, 0x1,
55 0x3103, 0x47, 0x1,
56 0x3049, 0x01, 0x1,
57 0x304D, 0x02, 0x1,
58 0x304C, 0xD7, 0x1,
59
60 //Output Size Setting
61 0x0112, 0x0A, 0x1,
62 0x0113, 0x0A, 0x1,
63 0x034C, 0x0A, 0x1,
64 0x034D, 0x20, 0x1,
65 0x034E, 0x05, 0x1,
66 0x034F, 0x96, 0x1,
67
68 //Clock Setting
69 0x0305, 0x03, 0x1,
70 0x0307, 0x75, 0x1,
71 0x3037, 0x0A, 0x1,
72 0x3038, 0x01, 0x1,
73 0x303E, 0x01, 0x1,
74 0x30A2, 0x0E, 0x1,
75 0x30A5, 0x60, 0x1,
76 0x30A7, 0x40, 0x1,
77 0x31AA, 0x02, 0x1,
78
79 //Data Rate Setting
80 0x3301, 0x00, 0x1,
81 0x3318, 0x60, 0x1,
82
83 //Integration Time Setting
84 0x0202, 0x08, 0x1,
85 0x0203, 0x75, 0x1,
86
87 //Gain Setting
88 0x0204, 0x00, 0x1,
89 0x0205, 0x00, 0x1,
90 0x020E, 0x01, 0x1,
91 0x020F, 0x00, 0x1,
92 0x0210, 0x01, 0x1,
93 0x0211, 0x00, 0x1,
94 0x0212, 0x01, 0x1,
95 0x0213, 0x00, 0x1,
96 0x0214, 0x01, 0x1,
97 0x0215, 0x00, 0x1,
98};
99
100const u32 sensor_imx241_setfile_A_global[] = {
101 // Init Global Setting
102 0x0101, 0x00, 0x1,
103 0x303C, 0x4B, 0x1,
104 0x303D, 0x00, 0x1,
105 0x3041, 0xD7, 0x1,
106 0x30E0, 0x00, 0x1,
107 0x30E1, 0x00, 0x1,
108 0x30F6, 0x00, 0x1,
109 0x34CE, 0xFF, 0x1,
110};
111
112const u32 sensor_imx241_setfile_A_Image[] = {
113
114};
115
116/* 4:3 */
117const u32 sensor_imx241_setfile_A_2592x1942_30fps[] = {
118 //Mode Setting
119 0x0340, 0x08, 0x1,
120 0x0341, 0x7A, 0x1,
121 0x0342, 0x05, 0x1,
122 0x0343, 0xB0, 0x1,
123 0x0344, 0x00, 0x1,
124 0x0345, 0x00, 0x1,
125 0x0346, 0x00, 0x1,
126 0x0347, 0x02, 0x1,
127 0x0348, 0x0A, 0x1,
128 0x0349, 0x1F, 0x1,
129 0x034A, 0x07, 0x1,
130 0x034B, 0x97, 0x1,
131 0x0381, 0x01, 0x1,
132 0x0383, 0x01, 0x1,
133 0x0385, 0x01, 0x1,
134 0x0387, 0x01, 0x1,
135 0x3048, 0x20, 0x1,
136 0x30D5, 0x00, 0x1,
137 0x3165, 0x20, 0x1,
138 0x30D1, 0x00, 0x1,
139 0x30D0, 0x2A, 0x1,
140 0x3102, 0x13, 0x1,
141 0x3103, 0x47, 0x1,
142 0x3049, 0x01, 0x1,
143 0x304D, 0x02, 0x1,
144 0x304C, 0xD7, 0x1,
145
146 //Output Size Setting
147 0x0112, 0x0A, 0x1,
148 0x0113, 0x0A, 0x1,
149 0x034C, 0x0A, 0x1,
150 0x034D, 0x20, 0x1,
151 0x034E, 0x07, 0x1,
152 0x034F, 0x96, 0x1,
153
154 //Clock Setting
155 0x0305, 0x03, 0x1,
156 0x0307, 0x75, 0x1,
157 0x3037, 0x0A, 0x1,
158 0x3038, 0x01, 0x1,
159 0x303E, 0x01, 0x1,
160 0x30A2, 0x0E, 0x1,
161 0x30A5, 0x60, 0x1,
162 0x30A7, 0x40, 0x1,
163 0x31AA, 0x02, 0x1,
164
165 //Data Rate Setting
166 0x3301, 0x00, 0x1,
167 0x3318, 0x60, 0x1,
168
169 //Integration Time Setting
170 0x0202, 0x08, 0x1,
171 0x0203, 0x75, 0x1,
172
173 //Gain Setting
174 0x0204, 0x00, 0x1,
175 0x0205, 0x00, 0x1,
176 0x020E, 0x01, 0x1,
177 0x020F, 0x00, 0x1,
178 0x0210, 0x01, 0x1,
179 0x0211, 0x00, 0x1,
180 0x0212, 0x01, 0x1,
181 0x0213, 0x00, 0x1,
182 0x0214, 0x01, 0x1,
183 0x0215, 0x00, 0x1,
184};
185
186/* 16:9, 16x10 margin */
187const u32 sensor_imx241_setfile_A_2592x1450_30fps[] = {
188 //Mode Setting
189 0x0340, 0x08, 0x1,
190 0x0341, 0x7A, 0x1,
191 0x0342, 0x05, 0x1,
192 0x0343, 0xB0, 0x1,
193 0x0344, 0x00, 0x1,
194 0x0345, 0x00, 0x1,
195 0x0346, 0x00, 0x1,
196 0x0347, 0xF0, 0x1,
197 0x0348, 0x0A, 0x1,
198 0x0349, 0x1F, 0x1,
199 0x034A, 0x06, 0x1,
200 0x034B, 0xA7, 0x1,
201 0x0381, 0x01, 0x1,
202 0x0383, 0x01, 0x1,
203 0x0385, 0x01, 0x1,
204 0x0387, 0x01, 0x1,
205 0x3048, 0x20, 0x1,
206 0x30D5, 0x00, 0x1,
207 0x3165, 0x20, 0x1,
208 0x30D1, 0x00, 0x1,
209 0x30D0, 0x2A, 0x1,
210 0x3102, 0x13, 0x1,
211 0x3103, 0x47, 0x1,
212 0x3049, 0x01, 0x1,
213 0x304D, 0x02, 0x1,
214 0x304C, 0xD7, 0x1,
215
216 //Output Size Setting
217 0x0112, 0x0A, 0x1,
218 0x0113, 0x0A, 0x1,
219 0x034C, 0x0A, 0x1,
220 0x034D, 0x20, 0x1,
221 0x034E, 0x05, 0x1,
222 0x034F, 0xAA, 0x1,
223
224 //Clock Setting
225 0x0305, 0x03, 0x1,
226 0x0307, 0x75, 0x1,
227 0x3037, 0x0A, 0x1,
228 0x3038, 0x01, 0x1,
229 0x303E, 0x01, 0x1,
230 0x30A2, 0x0E, 0x1,
231 0x30A5, 0x60, 0x1,
232 0x30A7, 0x40, 0x1,
233 0x31AA, 0x02, 0x1,
234 0x0306, 0x00, 0x1,
235 0x0309, 0x0A, 0x1,
236 0x030D, 0x0F, 0x1,
237 0x030E, 0x03, 0x1,
238 0x030F, 0x41, 0x1,
239 0x0310, 0x00, 0x1,
240
241 //Data Rate Setting
242 0x3301, 0x00, 0x1,
243 0x3318, 0x60, 0x1,
244
245 //Integration Time Setting
246 0x0202, 0x08, 0x1,
247 0x0203, 0x75, 0x1,
248
249 //Gain Setting
250 0x0204, 0x00, 0x1,
251 0x0205, 0x00, 0x1,
252 0x020E, 0x01, 0x1,
253 0x020F, 0x00, 0x1,
254 0x0210, 0x01, 0x1,
255 0x0211, 0x00, 0x1,
256 0x0212, 0x01, 0x1,
257 0x0213, 0x00, 0x1,
258 0x0214, 0x01, 0x1,
259 0x0215, 0x00, 0x1,
260};
261
262/* 4:3 120fps*/
263const u32 sensor_imx241_setfile_A_648x484_120fps[] = {
264 //Mode Setting
265 0x0340, 0x02, 0x1,
266 0x0341, 0x1F, 0x1,
267 0x0342, 0x05, 0x1,
268 0x0343, 0xB0, 0x1,
269 0x0344, 0x00, 0x1,
270 0x0345, 0x00, 0x1,
271 0x0346, 0x00, 0x1,
272 0x0347, 0x00, 0x1,
273 0x0348, 0x0A, 0x1,
274 0x0349, 0x1F, 0x1,
275 0x034A, 0x07, 0x1,
276 0x034B, 0x8F, 0x1,
277 0x0381, 0x01, 0x1,
278 0x0383, 0x07, 0x1,
279 0x0385, 0x01, 0x1,
280 0x0387, 0x07, 0x1,
281 0x3048, 0x23, 0x1,
282 0x30D5, 0x03, 0x1,
283 0x3165, 0x28, 0x1,
284 0x30D1, 0x00, 0x1,
285 0x30D0, 0x2A, 0x1,
286 0x3102, 0x13, 0x1,
287 0x3103, 0x47, 0x1,
288 0x3049, 0x01, 0x1,
289 0x304D, 0x02, 0x1,
290 0x304C, 0xD7, 0x1,
291
292 //Output Size Setting
293 0x0112, 0x0A, 0x1,
294 0x0113, 0x0A, 0x1,
295 0x034C, 0x02, 0x1,
296 0x034D, 0x88, 0x1,
297 0x034E, 0x01, 0x1,
298 0x034F, 0xE4, 0x1,
299
300 //Clock Setting
301 0x0305, 0x03, 0x1,
302 0x0307, 0x75, 0x1,
303 0x3037, 0x0A, 0x1,
304 0x3038, 0x01, 0x1,
305 0x303E, 0x01, 0x1,
306 0x30A2, 0x0E, 0x1,
307 0x30A5, 0x60, 0x1,
308 0x30A7, 0x40, 0x1,
309 0x31AA, 0x02, 0x1,
310
311 //Data Rate Setting
312 0x3301, 0x00, 0x1,
313 0x3318, 0x79, 0x1,
314
315 //Integration Time Setting
316 0x0202, 0x02, 0x1,
317 0x0203, 0x1A, 0x1,
318
319 //Gain Setting
320 0x0204, 0x00, 0x1,
321 0x0205, 0x00, 0x1,
322 0x020E, 0x01, 0x1,
323 0x020F, 0x00, 0x1,
324 0x0210, 0x01, 0x1,
325 0x0211, 0x00, 0x1,
326 0x0212, 0x01, 0x1,
327 0x0213, 0x00, 0x1,
328 0x0214, 0x01, 0x1,
329 0x0215, 0x00, 0x1,
330};
331
332/* 16:9 120fps*/
333const u32 sensor_imx241_setfile_A_648x362_120fps[] = {
334 //Mode Setting
335 0x0340, 0x02, 0x1,
336 0x0341, 0x1F, 0x1,
337 0x0342, 0x05, 0x1,
338 0x0343, 0xB0, 0x1,
339 0x0344, 0x00, 0x1,
340 0x0345, 0x00, 0x1,
341 0x0346, 0x00, 0x1,
342 0x0347, 0x00, 0x1,
343 0x0348, 0x0A, 0x1,
344 0x0349, 0x1F, 0x1,
345 0x034A, 0x07, 0x1,
346 0x034B, 0x97, 0x1,
347 0x0381, 0x01, 0x1,
348 0x0383, 0x07, 0x1,
349 0x0385, 0x01, 0x1,
350 0x0387, 0x07, 0x1,
351 0x3048, 0x23, 0x1,
352 0x30D5, 0x03, 0x1,
353 0x3165, 0x28, 0x1,
354 0x30D1, 0x00, 0x1,
355 0x30D0, 0x2A, 0x1,
356 0x3102, 0x13, 0x1,
357 0x3103, 0x47, 0x1,
358 0x3049, 0x01, 0x1,
359 0x304D, 0x02, 0x1,
360 0x304C, 0xD7, 0x1,
361
362 //Output Size Setting
363 0x0112, 0x0A, 0x1,
364 0x0113, 0x0A, 0x1,
365 0x034C, 0x02, 0x1,
366 0x034D, 0x88, 0x1,
367 0x034E, 0x01, 0x1,
368 0x034F, 0x6A, 0x1,
369
370 //Clock Setting
371 0x0305, 0x03, 0x1,
372 0x0307, 0x75, 0x1,
373 0x3037, 0x0A, 0x1,
374 0x3038, 0x01, 0x1,
375 0x303E, 0x01, 0x1,
376 0x30A2, 0x0E, 0x1,
377 0x30A5, 0x60, 0x1,
378 0x30A7, 0x40, 0x1,
379 0x31AA, 0x02, 0x1,
380
381 //Data Rate Setting
382 0x3301, 0x00, 0x1,
383 0x3318, 0x79, 0x1,
384
385 //Integration Time Setting
386 0x0202, 0x02, 0x1,
387 0x0203, 0x1A, 0x1,
388
389 //Gain Setting
390 0x0204, 0x00, 0x1,
391 0x0205, 0x00, 0x1,
392 0x020E, 0x01, 0x1,
393 0x020F, 0x00, 0x1,
394 0x0210, 0x01, 0x1,
395 0x0211, 0x00, 0x1,
396 0x0212, 0x01, 0x1,
397 0x0213, 0x00, 0x1,
398 0x0214, 0x01, 0x1,
399 0x0215, 0x00, 0x1,
400};
401
402
403const struct sensor_pll_info sensor_imx241_pllinfo_A_2592x1942_30fps = {
404 EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
405 0x05, /* vt_pix_clk_div */
406 0x02, /* vt_sys_clk_div */
407 0x03, /* pre_pll_clk_div */
408 0x75, /* pll_multiplier */
409 0x01, /* op_pix_clk_div */
410 0x01, /* op_sys_clk_div */
411
412 0x00, /* secnd_pre_pll_clk_div */
413 0x00, /* secnd_pll_multiplier */
414 0x87A, /* frame_length_lines */
415 0x5B0, /* line_length_pck */
416};
417
418const struct sensor_pll_info sensor_imx241_pllinfo_A_2592x1450_30fps = {
419 EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
420 0x05, /* vt_pix_clk_div */
421 0x02, /* vt_sys_clk_div */
422 0x03, /* pre_pll_clk_div */
423 0x75, /* pll_multiplier */
424 0x01, /* op_pix_clk_div */
425 0x01, /* op_sys_clk_div */
426
427 0x00, /* secnd_pre_pll_clk_div */
428 0x00, /* secnd_pll_multiplier */
429 0x87A, /* frame_length_lines */
430 0x5B0, /* line_length_pck */
431};
432
433const struct sensor_pll_info sensor_imx241_pllinfo_A_648x484_120fps = {
434 EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
435 0x05, /* vt_pix_clk_div */
436 0x02, /* vt_sys_clk_div */
437 0x03, /* pre_pll_clk_div */
438 0x75, /* pll_multiplier */
439 0x01, /* op_pix_clk_div */
440 0x01, /* op_sys_clk_div */
441
442 0x00, /* secnd_pre_pll_clk_div */
443 0x00, /* secnd_pll_multiplier */
444 0x21F, /* frame_length_lines */
445 0x5B0, /* line_length_pck */
446};
447
448const struct sensor_pll_info sensor_imx241_pllinfo_A_648x362_120fps = {
449 EXT_CLK_Mhz * 1000 * 1000, /* ext_clk */
450 0x05, /* vt_pix_clk_div */
451 0x02, /* vt_sys_clk_div */
452 0x03, /* pre_pll_clk_div */
453 0x75, /* pll_multiplier */
454 0x01, /* op_pix_clk_div */
455 0x01, /* op_sys_clk_div */
456
457 0x00, /* secnd_pre_pll_clk_div */
458 0x00, /* secnd_pll_multiplier */
459 0x21F, /* frame_length_lines */
460 0x5B0, /* line_length_pck */
461};
462
463static const u32 *sensor_imx241_setfiles_A[] = {
464 sensor_imx241_setfile_A_2592x1942_30fps,
465 sensor_imx241_setfile_A_2592x1450_30fps,
466 sensor_imx241_setfile_A_648x484_120fps,
467 sensor_imx241_setfile_A_648x362_120fps,
468};
469
470static const u32 sensor_imx241_setfile_A_sizes[] = {
471 sizeof(sensor_imx241_setfile_A_2592x1942_30fps) / sizeof(sensor_imx241_setfile_A_2592x1942_30fps[0]),
472 sizeof(sensor_imx241_setfile_A_2592x1450_30fps) / sizeof(sensor_imx241_setfile_A_2592x1450_30fps[0]),
473 sizeof(sensor_imx241_setfile_A_648x484_120fps) / sizeof(sensor_imx241_setfile_A_648x484_120fps[0]),
474 sizeof(sensor_imx241_setfile_A_648x362_120fps) / sizeof(sensor_imx241_setfile_A_648x362_120fps[0]),
475};
476
477static const u32 sensor_imx241_setfile_A_initial_size =
478 sizeof(sensor_imx241_setfile_A_initial) / sizeof(sensor_imx241_setfile_A_initial[0]);
479static const u32 sensor_imx241_setfile_A_global_size =
480 sizeof(sensor_imx241_setfile_A_global) / sizeof(sensor_imx241_setfile_A_global[0]);
481static const u32 sensor_imx241_setfile_A_Image_size =
482 sizeof(sensor_imx241_setfile_A_Image) / sizeof(sensor_imx241_setfile_A_Image[0]);
483
484static const struct sensor_pll_info *sensor_imx241_pllinfos_A[] = {
485 &sensor_imx241_pllinfo_A_2592x1942_30fps,
486 &sensor_imx241_pllinfo_A_2592x1450_30fps,
487 &sensor_imx241_pllinfo_A_648x484_120fps,
488 &sensor_imx241_pllinfo_A_648x362_120fps,
489};
490
491#endif
492