]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/blob - drivers/staging/media/atomisp/i2c/imx/imx134.h
Merge branch 'linus' into perf/urgent, to pick up dependent commits
[mirror_ubuntu-focal-kernel.git] / drivers / staging / media / atomisp / i2c / imx / imx134.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __IMX134_H__
3 #define __IMX134_H__
4
5 /********************** imx134 setting - version 1 *********************/
6 static struct imx_reg const imx134_init_settings[] = {
7 GROUPED_PARAMETER_HOLD_ENABLE,
8 /* Basic settings */
9 { IMX_8BIT, 0x0105, 0x01 },
10 { IMX_8BIT, 0x0220, 0x01 },
11 { IMX_8BIT, 0x3302, 0x11 },
12 { IMX_8BIT, 0x3833, 0x20 },
13 { IMX_8BIT, 0x3893, 0x00 },
14 { IMX_8BIT, 0x3906, 0x08 },
15 { IMX_8BIT, 0x3907, 0x01 },
16 { IMX_8BIT, 0x391B, 0x01 },
17 { IMX_8BIT, 0x3C09, 0x01 },
18 { IMX_8BIT, 0x600A, 0x00 },
19
20 /* Analog settings */
21 { IMX_8BIT, 0x3008, 0xB0 },
22 { IMX_8BIT, 0x320A, 0x01 },
23 { IMX_8BIT, 0x320D, 0x10 },
24 { IMX_8BIT, 0x3216, 0x2E },
25 { IMX_8BIT, 0x322C, 0x02 },
26 { IMX_8BIT, 0x3409, 0x0C },
27 { IMX_8BIT, 0x340C, 0x2D },
28 { IMX_8BIT, 0x3411, 0x39 },
29 { IMX_8BIT, 0x3414, 0x1E },
30 { IMX_8BIT, 0x3427, 0x04 },
31 { IMX_8BIT, 0x3480, 0x1E },
32 { IMX_8BIT, 0x3484, 0x1E },
33 { IMX_8BIT, 0x3488, 0x1E },
34 { IMX_8BIT, 0x348C, 0x1E },
35 { IMX_8BIT, 0x3490, 0x1E },
36 { IMX_8BIT, 0x3494, 0x1E },
37 { IMX_8BIT, 0x3511, 0x8F },
38 { IMX_8BIT, 0x3617, 0x2D },
39
40 GROUPED_PARAMETER_HOLD_DISABLE,
41 { IMX_TOK_TERM, 0, 0 }
42 };
43
44 /* 4 lane 3280x2464 8M 30fps, vendor provide */
45 static struct imx_reg const imx134_8M_30fps[] = {
46 GROUPED_PARAMETER_HOLD_ENABLE,
47 /* mode set clear */
48 { IMX_8BIT, 0x3A43, 0x01 },
49 /* clock setting */
50 { IMX_8BIT, 0x011E, 0x13 },
51 { IMX_8BIT, 0x011F, 0x33 },
52 { IMX_8BIT, 0x0301, 0x05 },
53 { IMX_8BIT, 0x0303, 0x01 },
54 { IMX_8BIT, 0x0305, 0x0C },
55 { IMX_8BIT, 0x0309, 0x05 },
56 { IMX_8BIT, 0x030B, 0x01 },
57 { IMX_8BIT, 0x030C, 0x01 },
58 { IMX_8BIT, 0x030D, 0xA9 },
59 { IMX_8BIT, 0x030E, 0x01 },
60 { IMX_8BIT, 0x3A06, 0x11 },
61
62 /* Mode setting */
63 { IMX_8BIT, 0x0108, 0x03 },
64 { IMX_8BIT, 0x0112, 0x0A },
65 { IMX_8BIT, 0x0113, 0x0A },
66 { IMX_8BIT, 0x0381, 0x01 },
67 { IMX_8BIT, 0x0383, 0x01 },
68 { IMX_8BIT, 0x0385, 0x01 },
69 { IMX_8BIT, 0x0387, 0x01 },
70 { IMX_8BIT, 0x0390, 0x00 },
71 { IMX_8BIT, 0x0391, 0x11 },
72 { IMX_8BIT, 0x0392, 0x00 },
73 { IMX_8BIT, 0x0401, 0x00 },
74 { IMX_8BIT, 0x0404, 0x00 },
75 { IMX_8BIT, 0x0405, 0x10 }, /* down scaling 16/16 = 1 */
76 { IMX_8BIT, 0x4082, 0x01 },
77 { IMX_8BIT, 0x4083, 0x01 },
78 { IMX_8BIT, 0x7006, 0x04 },
79
80 /* optionnal Function setting */
81 { IMX_8BIT, 0x0700, 0x00 },
82 { IMX_8BIT, 0x3A63, 0x00 },
83 { IMX_8BIT, 0x4100, 0xF8 },
84 { IMX_8BIT, 0x4203, 0xFF },
85 { IMX_8BIT, 0x4344, 0x00 },
86 { IMX_8BIT, 0x441C, 0x01 },
87
88 /* Size setting */
89 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:0 */
90 { IMX_8BIT, 0x0345, 0x00 }, /* x_addr_start[7:0] */
91 { IMX_8BIT, 0x0346, 0x00 }, /* y_addr_start[15:8]:0 */
92 { IMX_8BIT, 0x0347, 0x00 }, /* y_addr_start[7:0] */
93 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3279 */
94 { IMX_8BIT, 0x0349, 0xCF }, /* x_addr_end[7:0] */
95 { IMX_8BIT, 0x034A, 0x09 }, /* y_addr_end[15:8]:2463 */
96 { IMX_8BIT, 0x034B, 0x9F }, /* y_addr_end[7:0] */
97 { IMX_8BIT, 0x034C, 0x0C }, /* x_output_size[15:8]: 3280*/
98 { IMX_8BIT, 0x034D, 0xD0 }, /* x_output_size[7:0] */
99 { IMX_8BIT, 0x034E, 0x09 }, /* y_output_size[15:8]:2464 */
100 { IMX_8BIT, 0x034F, 0xA0 }, /* y_output_size[7:0] */
101 { IMX_8BIT, 0x0350, 0x00 },
102 { IMX_8BIT, 0x0351, 0x00 },
103 { IMX_8BIT, 0x0352, 0x00 },
104 { IMX_8BIT, 0x0353, 0x00 },
105 { IMX_8BIT, 0x0354, 0x0C },
106 { IMX_8BIT, 0x0355, 0xD0 },
107 { IMX_8BIT, 0x0356, 0x09 },
108 { IMX_8BIT, 0x0357, 0xA0 },
109 { IMX_8BIT, 0x301D, 0x30 },
110 { IMX_8BIT, 0x3310, 0x0C },
111 { IMX_8BIT, 0x3311, 0xD0 },
112 { IMX_8BIT, 0x3312, 0x09 },
113 { IMX_8BIT, 0x3313, 0xA0 },
114 { IMX_8BIT, 0x331C, 0x01 },
115 { IMX_8BIT, 0x331D, 0xAE },
116 { IMX_8BIT, 0x4084, 0x00 },
117 { IMX_8BIT, 0x4085, 0x00 },
118 { IMX_8BIT, 0x4086, 0x00 },
119 { IMX_8BIT, 0x4087, 0x00 },
120 { IMX_8BIT, 0x4400, 0x00 },
121
122 /* Global timing setting */
123 { IMX_8BIT, 0x0830, 0x77 },
124 { IMX_8BIT, 0x0831, 0x2F },
125 { IMX_8BIT, 0x0832, 0x4F },
126 { IMX_8BIT, 0x0833, 0x37 },
127 { IMX_8BIT, 0x0834, 0x2F },
128 { IMX_8BIT, 0x0835, 0x37 },
129 { IMX_8BIT, 0x0836, 0xAF },
130 { IMX_8BIT, 0x0837, 0x37 },
131 { IMX_8BIT, 0x0839, 0x1F },
132 { IMX_8BIT, 0x083A, 0x17 },
133 { IMX_8BIT, 0x083B, 0x02 },
134
135 /* Integration time setting */
136 { IMX_8BIT, 0x0202, 0x09 },
137 { IMX_8BIT, 0x0203, 0xD2 },
138
139 /* HDR setting */
140 { IMX_8BIT, 0x0230, 0x00 },
141 { IMX_8BIT, 0x0231, 0x00 },
142 { IMX_8BIT, 0x0233, 0x00 },
143 { IMX_8BIT, 0x0234, 0x00 },
144 { IMX_8BIT, 0x0235, 0x40 },
145 { IMX_8BIT, 0x0238, 0x00 },
146 { IMX_8BIT, 0x0239, 0x04 },
147 { IMX_8BIT, 0x023B, 0x00 },
148 { IMX_8BIT, 0x023C, 0x01 },
149 { IMX_8BIT, 0x33B0, 0x04 },
150 { IMX_8BIT, 0x33B1, 0x00 },
151 { IMX_8BIT, 0x33B3, 0x00 },
152 { IMX_8BIT, 0x33B4, 0x01 },
153 { IMX_8BIT, 0x3800, 0x00 },
154 { IMX_TOK_TERM, 0, 0 }
155 };
156
157 /* 4 lane, 1/2 binning 30fps 1640x1232, vendor provide */
158 static struct imx_reg const imx134_1640_1232_30fps[] = {
159 GROUPED_PARAMETER_HOLD_ENABLE,
160 /* mode set clear */
161 { IMX_8BIT, 0x3A43, 0x01 },
162 /* Clock Setting */
163 { IMX_8BIT, 0x011E, 0x13 },
164 { IMX_8BIT, 0x011F, 0x33 },
165 { IMX_8BIT, 0x0301, 0x05 },
166 { IMX_8BIT, 0x0303, 0x01 },
167 { IMX_8BIT, 0x0305, 0x0C },
168 { IMX_8BIT, 0x0309, 0x05 },
169 { IMX_8BIT, 0x030B, 0x01 },
170 { IMX_8BIT, 0x030C, 0x01 },
171 { IMX_8BIT, 0x030D, 0xA9 },
172 { IMX_8BIT, 0x030E, 0x01 },
173 { IMX_8BIT, 0x3A06, 0x11 },
174
175 /* Mode setting */
176 { IMX_8BIT, 0x0108, 0x03 },
177 { IMX_8BIT, 0x0112, 0x0A },
178 { IMX_8BIT, 0x0113, 0x0A },
179 { IMX_8BIT, 0x0381, 0x01 },
180 { IMX_8BIT, 0x0383, 0x01 },
181 { IMX_8BIT, 0x0385, 0x01 },
182 { IMX_8BIT, 0x0387, 0x01 },
183 { IMX_8BIT, 0x0390, 0x01 }, /* binning */
184 { IMX_8BIT, 0x0391, 0x22 }, /* 2x2 binning */
185 { IMX_8BIT, 0x0392, 0x00 },
186 { IMX_8BIT, 0x0401, 0x00 }, /* no resize */
187 { IMX_8BIT, 0x0404, 0x00 },
188 { IMX_8BIT, 0x0405, 0x10 },
189 { IMX_8BIT, 0x4082, 0x01 },
190 { IMX_8BIT, 0x4083, 0x01 },
191 { IMX_8BIT, 0x7006, 0x04 },
192
193 /* Optionnal Function setting */
194 { IMX_8BIT, 0x0700, 0x00 },
195 { IMX_8BIT, 0x3A63, 0x00 },
196 { IMX_8BIT, 0x4100, 0xF8 },
197 { IMX_8BIT, 0x4203, 0xFF },
198 { IMX_8BIT, 0x4344, 0x00 },
199 { IMX_8BIT, 0x441C, 0x01 },
200
201 /* Size setting */
202 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:0 */
203 { IMX_8BIT, 0x0345, 0x00 }, /* x_addr_start[7:0] */
204 { IMX_8BIT, 0x0346, 0x00 }, /* y_addr_start[15:8]:0 */
205 { IMX_8BIT, 0x0347, 0x00 }, /* y_addr_start[7:0] */
206 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3279 */
207 { IMX_8BIT, 0x0349, 0xCF }, /* x_addr_end[7:0] */
208 { IMX_8BIT, 0x034A, 0x09 }, /* y_addr_end[15:8]:2463 */
209 { IMX_8BIT, 0x034B, 0x9F }, /* y_addr_end[7:0] */
210 { IMX_8BIT, 0x034C, 0x06 }, /* x_output_size[15:8]:1640 */
211 { IMX_8BIT, 0x034D, 0x68 }, /* x_output_size[7:0] */
212 { IMX_8BIT, 0x034E, 0x04 }, /* y_output_size[15:8]:1232 */
213 { IMX_8BIT, 0x034F, 0xD0 }, /* y_output_size[7:0] */
214 { IMX_8BIT, 0x0350, 0x00 },
215 { IMX_8BIT, 0x0351, 0x00 },
216 { IMX_8BIT, 0x0352, 0x00 },
217 { IMX_8BIT, 0x0353, 0x00 },
218 { IMX_8BIT, 0x0354, 0x06 },
219 { IMX_8BIT, 0x0355, 0x68 },
220 { IMX_8BIT, 0x0356, 0x04 },
221 { IMX_8BIT, 0x0357, 0xD0 },
222
223 { IMX_8BIT, 0x301D, 0x30 },
224
225 { IMX_8BIT, 0x3310, 0x06 },
226 { IMX_8BIT, 0x3311, 0x68 },
227 { IMX_8BIT, 0x3312, 0x04 },
228 { IMX_8BIT, 0x3313, 0xD0 },
229
230 { IMX_8BIT, 0x331C, 0x04 },
231 { IMX_8BIT, 0x331D, 0x06 },
232 { IMX_8BIT, 0x4084, 0x00 },
233 { IMX_8BIT, 0x4085, 0x00 },
234 { IMX_8BIT, 0x4086, 0x00 },
235 { IMX_8BIT, 0x4087, 0x00 },
236 { IMX_8BIT, 0x4400, 0x00 },
237
238 /* Global Timing Setting */
239 { IMX_8BIT, 0x0830, 0x77 },
240 { IMX_8BIT, 0x0831, 0x2F },
241 { IMX_8BIT, 0x0832, 0x4F },
242 { IMX_8BIT, 0x0833, 0x37 },
243 { IMX_8BIT, 0x0834, 0x2F },
244 { IMX_8BIT, 0x0835, 0x37 },
245 { IMX_8BIT, 0x0836, 0xAF },
246 { IMX_8BIT, 0x0837, 0x37 },
247 { IMX_8BIT, 0x0839, 0x1F },
248 { IMX_8BIT, 0x083A, 0x17 },
249 { IMX_8BIT, 0x083B, 0x02 },
250
251 /* Integration Time Setting */
252 { IMX_8BIT, 0x0202, 0x09 },
253 { IMX_8BIT, 0x0203, 0xD2 },
254
255 /* HDR Setting */
256 { IMX_8BIT, 0x0230, 0x00 },
257 { IMX_8BIT, 0x0231, 0x00 },
258 { IMX_8BIT, 0x0233, 0x00 },
259 { IMX_8BIT, 0x0234, 0x00 },
260 { IMX_8BIT, 0x0235, 0x40 },
261 { IMX_8BIT, 0x0238, 0x00 },
262 { IMX_8BIT, 0x0239, 0x04 },
263 { IMX_8BIT, 0x023B, 0x00 },
264 { IMX_8BIT, 0x023C, 0x01 },
265 { IMX_8BIT, 0x33B0, 0x04 },
266 { IMX_8BIT, 0x33B1, 0x00 },
267 { IMX_8BIT, 0x33B3, 0x00 },
268 { IMX_8BIT, 0x33B4, 0x01 },
269 { IMX_8BIT, 0x3800, 0x00 },
270 { IMX_TOK_TERM, 0, 0 }
271 };
272
273 /* 4 lane, 1/4 binning 30fps 820x616, vendor provide */
274 static struct imx_reg const imx134_820_616_30fps[] = {
275 GROUPED_PARAMETER_HOLD_ENABLE,
276 /* mode set clear */
277 { IMX_8BIT, 0x3A43, 0x01 },
278 /* Clock Setting */
279 { IMX_8BIT, 0x011E, 0x13 },
280 { IMX_8BIT, 0x011F, 0x33 },
281 { IMX_8BIT, 0x0301, 0x05 },
282 { IMX_8BIT, 0x0303, 0x01 },
283 { IMX_8BIT, 0x0305, 0x0C },
284 { IMX_8BIT, 0x0309, 0x05 },
285 { IMX_8BIT, 0x030B, 0x01 },
286 { IMX_8BIT, 0x030C, 0x01 },
287 { IMX_8BIT, 0x030D, 0xA9 },
288 { IMX_8BIT, 0x030E, 0x01 },
289 { IMX_8BIT, 0x3A06, 0x11 },
290
291 /* Mode setting */
292 { IMX_8BIT, 0x0108, 0x03 },
293 { IMX_8BIT, 0x0112, 0x0A },
294 { IMX_8BIT, 0x0113, 0x0A },
295 { IMX_8BIT, 0x0381, 0x01 },
296 { IMX_8BIT, 0x0383, 0x01 },
297 { IMX_8BIT, 0x0385, 0x01 },
298 { IMX_8BIT, 0x0387, 0x01 },
299 { IMX_8BIT, 0x0390, 0x01 }, /* binning */
300 { IMX_8BIT, 0x0391, 0x44 }, /* 4x4 binning */
301 { IMX_8BIT, 0x0392, 0x00 },
302 { IMX_8BIT, 0x0401, 0x00 }, /* no resize */
303 { IMX_8BIT, 0x0404, 0x00 },
304 { IMX_8BIT, 0x0405, 0x10 },
305 { IMX_8BIT, 0x4082, 0x01 },
306 { IMX_8BIT, 0x4083, 0x01 },
307 { IMX_8BIT, 0x7006, 0x04 },
308
309 /* Optionnal Function setting */
310 { IMX_8BIT, 0x0700, 0x00 },
311 { IMX_8BIT, 0x3A63, 0x00 },
312 { IMX_8BIT, 0x4100, 0xF8 },
313 { IMX_8BIT, 0x4203, 0xFF },
314 { IMX_8BIT, 0x4344, 0x00 },
315 { IMX_8BIT, 0x441C, 0x01 },
316
317 /* Size setting */
318 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:0 */
319 { IMX_8BIT, 0x0345, 0x00 }, /* x_addr_start[7:0] */
320 { IMX_8BIT, 0x0346, 0x00 }, /* y_addr_start[15:8]:0 */
321 { IMX_8BIT, 0x0347, 0x00 }, /* y_addr_start[7:0] */
322 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3279 */
323 { IMX_8BIT, 0x0349, 0xCF }, /* x_addr_end[7:0] */
324 { IMX_8BIT, 0x034A, 0x09 }, /* y_addr_end[15:8]:2463 */
325 { IMX_8BIT, 0x034B, 0x9F }, /* y_addr_end[7:0] */
326 { IMX_8BIT, 0x034C, 0x03 }, /* x_output_size[15:8]:820 */
327 { IMX_8BIT, 0x034D, 0x34 }, /* x_output_size[7:0] */
328 { IMX_8BIT, 0x034E, 0x02 }, /* y_output_size[15:8]:616 */
329 { IMX_8BIT, 0x034F, 0x68 }, /* y_output_size[7:0] */
330 { IMX_8BIT, 0x0350, 0x00 },
331 { IMX_8BIT, 0x0351, 0x00 },
332 { IMX_8BIT, 0x0352, 0x00 },
333 { IMX_8BIT, 0x0353, 0x00 },
334 { IMX_8BIT, 0x0354, 0x03 },
335 { IMX_8BIT, 0x0355, 0x34 },
336 { IMX_8BIT, 0x0356, 0x02 },
337 { IMX_8BIT, 0x0357, 0x68 },
338 { IMX_8BIT, 0x301D, 0x30 },
339 { IMX_8BIT, 0x3310, 0x03 },
340 { IMX_8BIT, 0x3311, 0x34 },
341 { IMX_8BIT, 0x3312, 0x02 },
342 { IMX_8BIT, 0x3313, 0x68 },
343 { IMX_8BIT, 0x331C, 0x02 },
344 { IMX_8BIT, 0x331D, 0xD0 },
345 { IMX_8BIT, 0x4084, 0x00 },
346 { IMX_8BIT, 0x4085, 0x00 },
347 { IMX_8BIT, 0x4086, 0x00 },
348 { IMX_8BIT, 0x4087, 0x00 },
349 { IMX_8BIT, 0x4400, 0x00 },
350
351 /* Global Timing Setting */
352 { IMX_8BIT, 0x0830, 0x77 },
353 { IMX_8BIT, 0x0831, 0x2F },
354 { IMX_8BIT, 0x0832, 0x4F },
355 { IMX_8BIT, 0x0833, 0x37 },
356 { IMX_8BIT, 0x0834, 0x2F },
357 { IMX_8BIT, 0x0835, 0x37 },
358 { IMX_8BIT, 0x0836, 0xAF },
359 { IMX_8BIT, 0x0837, 0x37 },
360 { IMX_8BIT, 0x0839, 0x1F },
361 { IMX_8BIT, 0x083A, 0x17 },
362 { IMX_8BIT, 0x083B, 0x02 },
363
364 /* Integration Time Setting */
365 { IMX_8BIT, 0x0202, 0x09 },
366 { IMX_8BIT, 0x0203, 0xD2 },
367
368 /* HDR Setting */
369 { IMX_8BIT, 0x0230, 0x00 },
370 { IMX_8BIT, 0x0231, 0x00 },
371 { IMX_8BIT, 0x0233, 0x00 },
372 { IMX_8BIT, 0x0234, 0x00 },
373 { IMX_8BIT, 0x0235, 0x40 },
374 { IMX_8BIT, 0x0238, 0x00 },
375 { IMX_8BIT, 0x0239, 0x04 },
376 { IMX_8BIT, 0x023B, 0x00 },
377 { IMX_8BIT, 0x023C, 0x01 },
378 { IMX_8BIT, 0x33B0, 0x04 },
379 { IMX_8BIT, 0x33B1, 0x00 },
380 { IMX_8BIT, 0x33B3, 0x00 },
381 { IMX_8BIT, 0x33B4, 0x01 },
382 { IMX_8BIT, 0x3800, 0x00 },
383 { IMX_TOK_TERM, 0, 0 }
384 };
385
386 /* 4 lane, 1/4 binning 30fps 820x552 */
387 static struct imx_reg const imx134_820_552_30fps[] = {
388 GROUPED_PARAMETER_HOLD_ENABLE,
389 /* mode set clear */
390 { IMX_8BIT, 0x3A43, 0x01 },
391 /* Clock Setting */
392 { IMX_8BIT, 0x011E, 0x13 },
393 { IMX_8BIT, 0x011F, 0x33 },
394 { IMX_8BIT, 0x0301, 0x05 },
395 { IMX_8BIT, 0x0303, 0x01 },
396 { IMX_8BIT, 0x0305, 0x0C },
397 { IMX_8BIT, 0x0309, 0x05 },
398 { IMX_8BIT, 0x030B, 0x01 },
399 { IMX_8BIT, 0x030C, 0x01 },
400 { IMX_8BIT, 0x030D, 0xA9 },
401 { IMX_8BIT, 0x030E, 0x01 },
402 { IMX_8BIT, 0x3A06, 0x11 },
403
404 /* Mode setting */
405 { IMX_8BIT, 0x0108, 0x03 },
406 { IMX_8BIT, 0x0112, 0x0A },
407 { IMX_8BIT, 0x0113, 0x0A },
408 { IMX_8BIT, 0x0381, 0x01 },
409 { IMX_8BIT, 0x0383, 0x01 },
410 { IMX_8BIT, 0x0385, 0x01 },
411 { IMX_8BIT, 0x0387, 0x01 },
412 { IMX_8BIT, 0x0390, 0x01 }, /* binning */
413 { IMX_8BIT, 0x0391, 0x44 }, /* 4x4 binning */
414 { IMX_8BIT, 0x0392, 0x00 },
415 { IMX_8BIT, 0x0401, 0x00 }, /* no resize */
416 { IMX_8BIT, 0x0404, 0x00 },
417 { IMX_8BIT, 0x0405, 0x10 },
418 { IMX_8BIT, 0x4082, 0x01 },
419 { IMX_8BIT, 0x4083, 0x01 },
420 { IMX_8BIT, 0x7006, 0x04 },
421
422 /* Optionnal Function setting */
423 { IMX_8BIT, 0x0700, 0x00 },
424 { IMX_8BIT, 0x3A63, 0x00 },
425 { IMX_8BIT, 0x4100, 0xF8 },
426 { IMX_8BIT, 0x4203, 0xFF },
427 { IMX_8BIT, 0x4344, 0x00 },
428 { IMX_8BIT, 0x441C, 0x01 },
429
430 /* Size setting */
431 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:0 */
432 { IMX_8BIT, 0x0345, 0x00 }, /* x_addr_start[7:0] */
433 { IMX_8BIT, 0x0346, 0x00 }, /* y_addr_start[15:8]:128 */
434 { IMX_8BIT, 0x0347, 0x80 }, /* y_addr_start[7:0] */
435 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3280-1 */
436 { IMX_8BIT, 0x0349, 0xCF }, /* x_addr_end[7:0] */
437 { IMX_8BIT, 0x034A, 0x09 }, /* y_addr_end[15:8]:2208+128-1 */
438 { IMX_8BIT, 0x034B, 0x1F }, /* y_addr_end[7:0] */
439 { IMX_8BIT, 0x034C, 0x03 }, /* x_output_size[15:8]: */
440 { IMX_8BIT, 0x034D, 0x34 }, /* x_output_size[7:0] */
441 { IMX_8BIT, 0x034E, 0x02 }, /* y_output_size[15:8]:616 */
442 { IMX_8BIT, 0x034F, 0x28 }, /* y_output_size[7:0] */
443 { IMX_8BIT, 0x0350, 0x00 },
444 { IMX_8BIT, 0x0351, 0x00 },
445 { IMX_8BIT, 0x0352, 0x00 },
446 { IMX_8BIT, 0x0353, 0x00 },
447 { IMX_8BIT, 0x0354, 0x03 },
448 { IMX_8BIT, 0x0355, 0x34 },
449 { IMX_8BIT, 0x0356, 0x02 },
450 { IMX_8BIT, 0x0357, 0x28 },
451 { IMX_8BIT, 0x301D, 0x30 },
452 { IMX_8BIT, 0x3310, 0x03 },
453 { IMX_8BIT, 0x3311, 0x34 },
454 { IMX_8BIT, 0x3312, 0x02 },
455 { IMX_8BIT, 0x3313, 0x28 },
456 { IMX_8BIT, 0x331C, 0x02 },
457 { IMX_8BIT, 0x331D, 0xD0 },
458 { IMX_8BIT, 0x4084, 0x00 },
459 { IMX_8BIT, 0x4085, 0x00 },
460 { IMX_8BIT, 0x4086, 0x00 },
461 { IMX_8BIT, 0x4087, 0x00 },
462 { IMX_8BIT, 0x4400, 0x00 },
463
464 /* Global Timing Setting */
465 { IMX_8BIT, 0x0830, 0x77 },
466 { IMX_8BIT, 0x0831, 0x2F },
467 { IMX_8BIT, 0x0832, 0x4F },
468 { IMX_8BIT, 0x0833, 0x37 },
469 { IMX_8BIT, 0x0834, 0x2F },
470 { IMX_8BIT, 0x0835, 0x37 },
471 { IMX_8BIT, 0x0836, 0xAF },
472 { IMX_8BIT, 0x0837, 0x37 },
473 { IMX_8BIT, 0x0839, 0x1F },
474 { IMX_8BIT, 0x083A, 0x17 },
475 { IMX_8BIT, 0x083B, 0x02 },
476
477 /* Integration Time Setting */
478 { IMX_8BIT, 0x0202, 0x09 },
479 { IMX_8BIT, 0x0203, 0xD2 },
480
481 /* HDR Setting */
482 { IMX_8BIT, 0x0230, 0x00 },
483 { IMX_8BIT, 0x0231, 0x00 },
484 { IMX_8BIT, 0x0233, 0x00 },
485 { IMX_8BIT, 0x0234, 0x00 },
486 { IMX_8BIT, 0x0235, 0x40 },
487 { IMX_8BIT, 0x0238, 0x00 },
488 { IMX_8BIT, 0x0239, 0x04 },
489 { IMX_8BIT, 0x023B, 0x00 },
490 { IMX_8BIT, 0x023C, 0x01 },
491 { IMX_8BIT, 0x33B0, 0x04 },
492 { IMX_8BIT, 0x33B1, 0x00 },
493 { IMX_8BIT, 0x33B3, 0x00 },
494 { IMX_8BIT, 0x33B4, 0x01 },
495 { IMX_8BIT, 0x3800, 0x00 },
496 { IMX_TOK_TERM, 0, 0 }
497 };
498
499 /* 4 lane, 1/4 binning 30fps 720x592 */
500 static struct imx_reg const imx134_720_592_30fps[] = {
501 GROUPED_PARAMETER_HOLD_ENABLE,
502 /* mode set clear */
503 { IMX_8BIT, 0x3A43, 0x01 },
504 /* Clock Setting */
505 { IMX_8BIT, 0x011E, 0x13 },
506 { IMX_8BIT, 0x011F, 0x33 },
507 { IMX_8BIT, 0x0301, 0x05 },
508 { IMX_8BIT, 0x0303, 0x01 },
509 { IMX_8BIT, 0x0305, 0x0C },
510 { IMX_8BIT, 0x0309, 0x05 },
511 { IMX_8BIT, 0x030B, 0x01 },
512 { IMX_8BIT, 0x030C, 0x01 },
513 { IMX_8BIT, 0x030D, 0xA9 },
514 { IMX_8BIT, 0x030E, 0x01 },
515 { IMX_8BIT, 0x3A06, 0x11 },
516
517 /* Mode setting */
518 { IMX_8BIT, 0x0108, 0x03 },
519 { IMX_8BIT, 0x0112, 0x0A },
520 { IMX_8BIT, 0x0113, 0x0A },
521 { IMX_8BIT, 0x0381, 0x01 },
522 { IMX_8BIT, 0x0383, 0x01 },
523 { IMX_8BIT, 0x0385, 0x01 },
524 { IMX_8BIT, 0x0387, 0x01 },
525 { IMX_8BIT, 0x0390, 0x01 }, /* binning */
526 { IMX_8BIT, 0x0391, 0x44 }, /* 4x4 binning */
527 { IMX_8BIT, 0x0392, 0x00 },
528 { IMX_8BIT, 0x0401, 0x00 }, /* no resize */
529 { IMX_8BIT, 0x0404, 0x00 },
530 { IMX_8BIT, 0x0405, 0x10 },
531 { IMX_8BIT, 0x4082, 0x01 },
532 { IMX_8BIT, 0x4083, 0x01 },
533 { IMX_8BIT, 0x7006, 0x04 },
534
535 /* Optionnal Function setting */
536 { IMX_8BIT, 0x0700, 0x00 },
537 { IMX_8BIT, 0x3A63, 0x00 },
538 { IMX_8BIT, 0x4100, 0xF8 },
539 { IMX_8BIT, 0x4203, 0xFF },
540 { IMX_8BIT, 0x4344, 0x00 },
541 { IMX_8BIT, 0x441C, 0x01 },
542
543 /* Size setting */
544 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:200 */
545 { IMX_8BIT, 0x0345, 0xC8 }, /* x_addr_start[7:0] */
546 { IMX_8BIT, 0x0346, 0x00 }, /* y_addr_start[15:8]:40 */
547 { IMX_8BIT, 0x0347, 0x28 }, /* y_addr_start[7:0] */
548 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:2880+200-1 */
549 { IMX_8BIT, 0x0349, 0x07 }, /* x_addr_end[7:0] */
550 { IMX_8BIT, 0x034A, 0x09 }, /* y_addr_end[15:8]:2368+40-1 */
551 { IMX_8BIT, 0x034B, 0x67 }, /* y_addr_end[7:0] */
552 { IMX_8BIT, 0x034C, 0x02 }, /* x_output_size[15:8]: */
553 { IMX_8BIT, 0x034D, 0xD0 }, /* x_output_size[7:0] */
554 { IMX_8BIT, 0x034E, 0x02 }, /* y_output_size[15:8]:616 */
555 { IMX_8BIT, 0x034F, 0x50 }, /* y_output_size[7:0] */
556 { IMX_8BIT, 0x0350, 0x00 },
557 { IMX_8BIT, 0x0351, 0x00 },
558 { IMX_8BIT, 0x0352, 0x00 },
559 { IMX_8BIT, 0x0353, 0x00 },
560 { IMX_8BIT, 0x0354, 0x02 },
561 { IMX_8BIT, 0x0355, 0xD0 },
562 { IMX_8BIT, 0x0356, 0x02 },
563 { IMX_8BIT, 0x0357, 0x50 },
564 { IMX_8BIT, 0x301D, 0x30 },
565 { IMX_8BIT, 0x3310, 0x02 },
566 { IMX_8BIT, 0x3311, 0xD0 },
567 { IMX_8BIT, 0x3312, 0x02 },
568 { IMX_8BIT, 0x3313, 0x50 },
569 { IMX_8BIT, 0x331C, 0x02 },
570 { IMX_8BIT, 0x331D, 0xD0 },
571 { IMX_8BIT, 0x4084, 0x00 },
572 { IMX_8BIT, 0x4085, 0x00 },
573 { IMX_8BIT, 0x4086, 0x00 },
574 { IMX_8BIT, 0x4087, 0x00 },
575 { IMX_8BIT, 0x4400, 0x00 },
576
577 /* Global Timing Setting */
578 { IMX_8BIT, 0x0830, 0x77 },
579 { IMX_8BIT, 0x0831, 0x2F },
580 { IMX_8BIT, 0x0832, 0x4F },
581 { IMX_8BIT, 0x0833, 0x37 },
582 { IMX_8BIT, 0x0834, 0x2F },
583 { IMX_8BIT, 0x0835, 0x37 },
584 { IMX_8BIT, 0x0836, 0xAF },
585 { IMX_8BIT, 0x0837, 0x37 },
586 { IMX_8BIT, 0x0839, 0x1F },
587 { IMX_8BIT, 0x083A, 0x17 },
588 { IMX_8BIT, 0x083B, 0x02 },
589
590 /* Integration Time Setting */
591 { IMX_8BIT, 0x0202, 0x09 },
592 { IMX_8BIT, 0x0203, 0xD2 },
593
594 /* HDR Setting */
595 { IMX_8BIT, 0x0230, 0x00 },
596 { IMX_8BIT, 0x0231, 0x00 },
597 { IMX_8BIT, 0x0233, 0x00 },
598 { IMX_8BIT, 0x0234, 0x00 },
599 { IMX_8BIT, 0x0235, 0x40 },
600 { IMX_8BIT, 0x0238, 0x00 },
601 { IMX_8BIT, 0x0239, 0x04 },
602 { IMX_8BIT, 0x023B, 0x00 },
603 { IMX_8BIT, 0x023C, 0x01 },
604 { IMX_8BIT, 0x33B0, 0x04 },
605 { IMX_8BIT, 0x33B1, 0x00 },
606 { IMX_8BIT, 0x33B3, 0x00 },
607 { IMX_8BIT, 0x33B4, 0x01 },
608 { IMX_8BIT, 0x3800, 0x00 },
609 { IMX_TOK_TERM, 0, 0 }
610 };
611
612 static struct imx_reg const imx134_752_616_30fps[] = {
613 GROUPED_PARAMETER_HOLD_ENABLE,
614 /* mode set clear */
615 { IMX_8BIT, 0x3A43, 0x01 },
616 /* Clock Setting */
617 { IMX_8BIT, 0x011E, 0x13 },
618 { IMX_8BIT, 0x011F, 0x33 },
619 { IMX_8BIT, 0x0301, 0x05 },
620 { IMX_8BIT, 0x0303, 0x01 },
621 { IMX_8BIT, 0x0305, 0x0C },
622 { IMX_8BIT, 0x0309, 0x05 },
623 { IMX_8BIT, 0x030B, 0x01 },
624 { IMX_8BIT, 0x030C, 0x01 },
625 { IMX_8BIT, 0x030D, 0xA9 },
626 { IMX_8BIT, 0x030E, 0x01 },
627 { IMX_8BIT, 0x3A06, 0x11 },
628
629 /* Mode setting */
630 { IMX_8BIT, 0x0108, 0x03 },
631 { IMX_8BIT, 0x0112, 0x0A },
632 { IMX_8BIT, 0x0113, 0x0A },
633 { IMX_8BIT, 0x0381, 0x01 },
634 { IMX_8BIT, 0x0383, 0x01 },
635 { IMX_8BIT, 0x0385, 0x01 },
636 { IMX_8BIT, 0x0387, 0x01 },
637 { IMX_8BIT, 0x0390, 0x01 }, /* binning */
638 { IMX_8BIT, 0x0391, 0x44 }, /* 4x4 binning */
639 { IMX_8BIT, 0x0392, 0x00 },
640 { IMX_8BIT, 0x0401, 0x00 }, /* no resize */
641 { IMX_8BIT, 0x0404, 0x00 },
642 { IMX_8BIT, 0x0405, 0x10 },
643 { IMX_8BIT, 0x4082, 0x01 },
644 { IMX_8BIT, 0x4083, 0x01 },
645 { IMX_8BIT, 0x7006, 0x04 },
646
647 /* Optionnal Function setting */
648 { IMX_8BIT, 0x0700, 0x00 },
649 { IMX_8BIT, 0x3A63, 0x00 },
650 { IMX_8BIT, 0x4100, 0xF8 },
651 { IMX_8BIT, 0x4203, 0xFF },
652 { IMX_8BIT, 0x4344, 0x00 },
653 { IMX_8BIT, 0x441C, 0x01 },
654
655 /* Size setting */
656 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:136 */
657 { IMX_8BIT, 0x0345, 0x88 }, /* x_addr_start[7:0] */
658 { IMX_8BIT, 0x0346, 0x00 }, /* y_addr_start[15:8]:0 */
659 { IMX_8BIT, 0x0347, 0x00 }, /* y_addr_start[7:0] */
660 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3145+134-1 */
661 { IMX_8BIT, 0x0349, 0x47 }, /* x_addr_end[7:0] */
662 { IMX_8BIT, 0x034A, 0x09 }, /* y_addr_end[15:8]:2463 */
663 { IMX_8BIT, 0x034B, 0x9F }, /* y_addr_end[7:0] */
664 { IMX_8BIT, 0x034C, 0x02 }, /* x_output_size[15:8]: 752*/
665 { IMX_8BIT, 0x034D, 0xF0 }, /* x_output_size[7:0] */
666 { IMX_8BIT, 0x034E, 0x02 }, /* y_output_size[15:8]:616 */
667 { IMX_8BIT, 0x034F, 0x68 }, /* y_output_size[7:0] */
668 { IMX_8BIT, 0x0350, 0x00 },
669 { IMX_8BIT, 0x0351, 0x00 },
670 { IMX_8BIT, 0x0352, 0x00 },
671 { IMX_8BIT, 0x0353, 0x00 },
672
673 { IMX_8BIT, 0x0354, 0x02 },
674 { IMX_8BIT, 0x0355, 0xF0 },
675 { IMX_8BIT, 0x0356, 0x02 },
676 { IMX_8BIT, 0x0357, 0x68 },
677
678 { IMX_8BIT, 0x301D, 0x30 },
679
680 { IMX_8BIT, 0x3310, 0x02 },
681 { IMX_8BIT, 0x3311, 0xF0 },
682 { IMX_8BIT, 0x3312, 0x02 },
683 { IMX_8BIT, 0x3313, 0x68 },
684
685 { IMX_8BIT, 0x331C, 0x02 },
686 { IMX_8BIT, 0x331D, 0xD0 },
687 { IMX_8BIT, 0x4084, 0x00 },
688 { IMX_8BIT, 0x4085, 0x00 },
689 { IMX_8BIT, 0x4086, 0x00 },
690 { IMX_8BIT, 0x4087, 0x00 },
691 { IMX_8BIT, 0x4400, 0x00 },
692
693 /* Global Timing Setting */
694 { IMX_8BIT, 0x0830, 0x77 },
695 { IMX_8BIT, 0x0831, 0x2F },
696 { IMX_8BIT, 0x0832, 0x4F },
697 { IMX_8BIT, 0x0833, 0x37 },
698 { IMX_8BIT, 0x0834, 0x2F },
699 { IMX_8BIT, 0x0835, 0x37 },
700 { IMX_8BIT, 0x0836, 0xAF },
701 { IMX_8BIT, 0x0837, 0x37 },
702 { IMX_8BIT, 0x0839, 0x1F },
703 { IMX_8BIT, 0x083A, 0x17 },
704 { IMX_8BIT, 0x083B, 0x02 },
705
706 /* Integration Time Setting */
707 { IMX_8BIT, 0x0202, 0x09 },
708 { IMX_8BIT, 0x0203, 0xD2 },
709
710 /* HDR Setting */
711 { IMX_8BIT, 0x0230, 0x00 },
712 { IMX_8BIT, 0x0231, 0x00 },
713 { IMX_8BIT, 0x0233, 0x00 },
714 { IMX_8BIT, 0x0234, 0x00 },
715 { IMX_8BIT, 0x0235, 0x40 },
716 { IMX_8BIT, 0x0238, 0x00 },
717 { IMX_8BIT, 0x0239, 0x04 },
718 { IMX_8BIT, 0x023B, 0x00 },
719 { IMX_8BIT, 0x023C, 0x01 },
720 { IMX_8BIT, 0x33B0, 0x04 },
721 { IMX_8BIT, 0x33B1, 0x00 },
722 { IMX_8BIT, 0x33B3, 0x00 },
723 { IMX_8BIT, 0x33B4, 0x01 },
724 { IMX_8BIT, 0x3800, 0x00 },
725 { IMX_TOK_TERM, 0, 0 }
726 };
727
728 /* 1424x1168 */
729 static struct imx_reg const imx134_1424_1168_30fps[] = {
730 GROUPED_PARAMETER_HOLD_ENABLE,
731 /* mode set clear */
732 { IMX_8BIT, 0x3A43, 0x01 },
733 /* Clock Setting */
734 { IMX_8BIT, 0x011E, 0x13 },
735 { IMX_8BIT, 0x011F, 0x33 },
736 { IMX_8BIT, 0x0301, 0x05 },
737 { IMX_8BIT, 0x0303, 0x01 },
738 { IMX_8BIT, 0x0305, 0x0C },
739 { IMX_8BIT, 0x0309, 0x05 },
740 { IMX_8BIT, 0x030B, 0x01 },
741 { IMX_8BIT, 0x030C, 0x01 },
742 { IMX_8BIT, 0x030D, 0xA9 },
743 { IMX_8BIT, 0x030E, 0x01 },
744 { IMX_8BIT, 0x3A06, 0x11 },
745
746 /* Mode setting */
747 { IMX_8BIT, 0x0108, 0x03 },
748 { IMX_8BIT, 0x0112, 0x0A },
749 { IMX_8BIT, 0x0113, 0x0A },
750 { IMX_8BIT, 0x0381, 0x01 },
751 { IMX_8BIT, 0x0383, 0x01 },
752 { IMX_8BIT, 0x0385, 0x01 },
753 { IMX_8BIT, 0x0387, 0x01 },
754 { IMX_8BIT, 0x0390, 0x00 }, /* binning */
755 { IMX_8BIT, 0x0391, 0x11 }, /* no binning */
756 { IMX_8BIT, 0x0392, 0x00 },
757 { IMX_8BIT, 0x0401, 0x02 }, /* resize */
758 { IMX_8BIT, 0x0404, 0x00 },
759 { IMX_8BIT, 0x0405, 0x22 }, /* 34/16=2.125 */
760 { IMX_8BIT, 0x4082, 0x00 }, /* ?? */
761 { IMX_8BIT, 0x4083, 0x00 }, /* ?? */
762 { IMX_8BIT, 0x7006, 0x04 },
763
764 /* Optionnal Function setting */
765 { IMX_8BIT, 0x0700, 0x00 },
766 { IMX_8BIT, 0x3A63, 0x00 },
767 { IMX_8BIT, 0x4100, 0xF8 },
768 { IMX_8BIT, 0x4203, 0xFF },
769 { IMX_8BIT, 0x4344, 0x00 },
770 { IMX_8BIT, 0x441C, 0x01 },
771
772 /* Size setting */
773 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:136 */
774 { IMX_8BIT, 0x0345, 0x80 }, /* x_addr_start[7:0] */
775 { IMX_8BIT, 0x0346, 0x00 }, /* y_addr_start[15:8]:0 */
776 { IMX_8BIT, 0x0347, 0x00 }, /* y_addr_start[7:0] */
777 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3145+134-1 */
778 { IMX_8BIT, 0x0349, 0x51 }, /* x_addr_end[7:0] */
779 { IMX_8BIT, 0x034A, 0x09 }, /* y_addr_end[15:8]:2463 */
780 { IMX_8BIT, 0x034B, 0xB1 }, /* y_addr_end[7:0] */
781 { IMX_8BIT, 0x034C, 0x05 }, /* x_output_size[15:8]: 1424*/
782 { IMX_8BIT, 0x034D, 0x90 }, /* x_output_size[7:0] */
783 { IMX_8BIT, 0x034E, 0x04 }, /* y_output_size[15:8]:1168 */
784 { IMX_8BIT, 0x034F, 0x90 }, /* y_output_size[7:0] */
785 { IMX_8BIT, 0x0350, 0x00 },
786 { IMX_8BIT, 0x0351, 0x00 },
787 { IMX_8BIT, 0x0352, 0x00 },
788 { IMX_8BIT, 0x0353, 0x00 },
789
790 { IMX_8BIT, 0x0354, 0x0B },
791 { IMX_8BIT, 0x0355, 0xD2 },
792 { IMX_8BIT, 0x0356, 0x09 },
793 { IMX_8BIT, 0x0357, 0xB2 },
794
795 { IMX_8BIT, 0x301D, 0x30 },
796
797 { IMX_8BIT, 0x3310, 0x05 },
798 { IMX_8BIT, 0x3311, 0x90 },
799 { IMX_8BIT, 0x3312, 0x04 },
800 { IMX_8BIT, 0x3313, 0x90 },
801
802 { IMX_8BIT, 0x331C, 0x02 },
803 { IMX_8BIT, 0x331D, 0xD0 },
804 { IMX_8BIT, 0x4084, 0x05 },
805 { IMX_8BIT, 0x4085, 0x90 },
806 { IMX_8BIT, 0x4086, 0x04 },
807 { IMX_8BIT, 0x4087, 0x90 },
808 { IMX_8BIT, 0x4400, 0x00 },
809
810 /* Global Timing Setting */
811 { IMX_8BIT, 0x0830, 0x77 },
812 { IMX_8BIT, 0x0831, 0x2F },
813 { IMX_8BIT, 0x0832, 0x4F },
814 { IMX_8BIT, 0x0833, 0x37 },
815 { IMX_8BIT, 0x0834, 0x2F },
816 { IMX_8BIT, 0x0835, 0x37 },
817 { IMX_8BIT, 0x0836, 0xAF },
818 { IMX_8BIT, 0x0837, 0x37 },
819 { IMX_8BIT, 0x0839, 0x1F },
820 { IMX_8BIT, 0x083A, 0x17 },
821 { IMX_8BIT, 0x083B, 0x02 },
822
823 /* Integration Time Setting */
824 { IMX_8BIT, 0x0202, 0x09 },
825 { IMX_8BIT, 0x0203, 0xD2 },
826
827 /* HDR Setting */
828 { IMX_8BIT, 0x0230, 0x00 },
829 { IMX_8BIT, 0x0231, 0x00 },
830 { IMX_8BIT, 0x0233, 0x00 },
831 { IMX_8BIT, 0x0234, 0x00 },
832 { IMX_8BIT, 0x0235, 0x40 },
833 { IMX_8BIT, 0x0238, 0x00 },
834 { IMX_8BIT, 0x0239, 0x04 },
835 { IMX_8BIT, 0x023B, 0x00 },
836 { IMX_8BIT, 0x023C, 0x01 },
837 { IMX_8BIT, 0x33B0, 0x04 },
838 { IMX_8BIT, 0x33B1, 0x00 },
839 { IMX_8BIT, 0x33B3, 0x00 },
840 { IMX_8BIT, 0x33B4, 0x01 },
841 { IMX_8BIT, 0x3800, 0x00 },
842 { IMX_TOK_TERM, 0, 0 }
843 };
844
845 /* 4 lane, 1/4 binning, 16/35 down scaling, 30fps, dvs */
846 static struct imx_reg const imx134_240_196_30fps[] = {
847 GROUPED_PARAMETER_HOLD_ENABLE,
848 /* mode set clear */
849 { IMX_8BIT, 0x3A43, 0x01 },
850 /* Clock Setting */
851 { IMX_8BIT, 0x011E, 0x13 },
852 { IMX_8BIT, 0x011F, 0x33 },
853 { IMX_8BIT, 0x0301, 0x05 },
854 { IMX_8BIT, 0x0303, 0x01 },
855 { IMX_8BIT, 0x0305, 0x0C },
856 { IMX_8BIT, 0x0309, 0x05 },
857 { IMX_8BIT, 0x030B, 0x01 },
858 { IMX_8BIT, 0x030C, 0x01 },
859 { IMX_8BIT, 0x030D, 0xA9 },
860 { IMX_8BIT, 0x030E, 0x01 },
861 { IMX_8BIT, 0x3A06, 0x11 },
862
863 /* Mode setting */
864 { IMX_8BIT, 0x0108, 0x03 },
865 { IMX_8BIT, 0x0112, 0x0A },
866 { IMX_8BIT, 0x0113, 0x0A },
867 { IMX_8BIT, 0x0381, 0x01 },
868 { IMX_8BIT, 0x0383, 0x01 },
869 { IMX_8BIT, 0x0385, 0x01 },
870 { IMX_8BIT, 0x0387, 0x01 },
871 { IMX_8BIT, 0x0390, 0x01 }, /*4x4 binning */
872 { IMX_8BIT, 0x0391, 0x44 },
873 { IMX_8BIT, 0x0392, 0x00 },
874 { IMX_8BIT, 0x0401, 0x02 }, /* resize */
875 { IMX_8BIT, 0x0404, 0x00 },
876 { IMX_8BIT, 0x0405, 0x23 }, /* down scaling = 16/35 */
877 { IMX_8BIT, 0x4082, 0x00 },
878 { IMX_8BIT, 0x4083, 0x00 },
879 { IMX_8BIT, 0x7006, 0x04 },
880
881 /* Optionnal Function setting */
882 { IMX_8BIT, 0x0700, 0x00 },
883 { IMX_8BIT, 0x3A63, 0x00 },
884 { IMX_8BIT, 0x4100, 0xF8 },
885 { IMX_8BIT, 0x4203, 0xFF },
886 { IMX_8BIT, 0x4344, 0x00 },
887 { IMX_8BIT, 0x441C, 0x01 },
888
889 /* Size setting */
890 { IMX_8BIT, 0x0344, 0x02 }, /* x_addr_start[15:8]:590 */
891 { IMX_8BIT, 0x0345, 0x4E }, /* x_addr_start[7:0] */
892 { IMX_8BIT, 0x0346, 0x01 }, /* y_addr_start[15:8]:366 */
893 { IMX_8BIT, 0x0347, 0x6E }, /* y_addr_start[7:0] */
894 { IMX_8BIT, 0x0348, 0x0A }, /* x_addr_end[15:8]:2104+590-1 */
895 { IMX_8BIT, 0x0349, 0x85 }, /* x_addr_end[7:0] */
896 { IMX_8BIT, 0x034A, 0x08 }, /* y_addr_end[15:8]:1720+366-1 */
897 { IMX_8BIT, 0x034B, 0x25 }, /* y_addr_end[7:0] */
898 { IMX_8BIT, 0x034C, 0x00 }, /* x_output_size[15:8]: 240*/
899 { IMX_8BIT, 0x034D, 0xF0 }, /* x_output_size[7:0] */
900 { IMX_8BIT, 0x034E, 0x00 }, /* y_output_size[15:8]:196 */
901 { IMX_8BIT, 0x034F, 0xC4 }, /* y_output_size[7:0] */
902 { IMX_8BIT, 0x0350, 0x00 },
903 { IMX_8BIT, 0x0351, 0x00 },
904 { IMX_8BIT, 0x0352, 0x00 },
905 { IMX_8BIT, 0x0353, 0x00 },
906 { IMX_8BIT, 0x0354, 0x02 }, /* crop_x: 526 */
907 { IMX_8BIT, 0x0355, 0x0E },
908 { IMX_8BIT, 0x0356, 0x01 }, /* crop_y: 430 */
909 { IMX_8BIT, 0x0357, 0xAE },
910
911 { IMX_8BIT, 0x301D, 0x30 },
912
913 { IMX_8BIT, 0x3310, 0x00 },
914 { IMX_8BIT, 0x3311, 0xF0 },
915 { IMX_8BIT, 0x3312, 0x00 },
916 { IMX_8BIT, 0x3313, 0xC4 },
917
918 { IMX_8BIT, 0x331C, 0x04 },
919 { IMX_8BIT, 0x331D, 0x4C },
920
921 { IMX_8BIT, 0x4084, 0x00 },
922 { IMX_8BIT, 0x4085, 0xF0 },
923 { IMX_8BIT, 0x4086, 0x00 },
924 { IMX_8BIT, 0x4087, 0xC4 },
925
926 { IMX_8BIT, 0x4400, 0x00 },
927
928 /* Global Timing Setting */
929 { IMX_8BIT, 0x0830, 0x77 },
930 { IMX_8BIT, 0x0831, 0x2F },
931 { IMX_8BIT, 0x0832, 0x4F },
932 { IMX_8BIT, 0x0833, 0x37 },
933 { IMX_8BIT, 0x0834, 0x2F },
934 { IMX_8BIT, 0x0835, 0x37 },
935 { IMX_8BIT, 0x0836, 0xAF },
936 { IMX_8BIT, 0x0837, 0x37 },
937 { IMX_8BIT, 0x0839, 0x1F },
938 { IMX_8BIT, 0x083A, 0x17 },
939 { IMX_8BIT, 0x083B, 0x02 },
940
941 /* Integration Time Setting */
942 { IMX_8BIT, 0x0202, 0x0A },
943 { IMX_8BIT, 0x0203, 0x88 },
944
945 /* HDR Setting */
946 { IMX_8BIT, 0x0230, 0x00 },
947 { IMX_8BIT, 0x0231, 0x00 },
948 { IMX_8BIT, 0x0233, 0x00 },
949 { IMX_8BIT, 0x0234, 0x00 },
950 { IMX_8BIT, 0x0235, 0x40 },
951 { IMX_8BIT, 0x0238, 0x00 },
952 { IMX_8BIT, 0x0239, 0x04 },
953 { IMX_8BIT, 0x023B, 0x00 },
954 { IMX_8BIT, 0x023C, 0x01 },
955 { IMX_8BIT, 0x33B0, 0x04 },
956 { IMX_8BIT, 0x33B1, 0x00 },
957 { IMX_8BIT, 0x33B3, 0x00 },
958 { IMX_8BIT, 0x33B4, 0x01 },
959 { IMX_8BIT, 0x3800, 0x00 },
960 { IMX_TOK_TERM, 0, 0 }
961 };
962
963 /* 4 lane, 1/2 binning, 16/38 downscaling, 30fps, dvs */
964 static struct imx_reg const imx134_448_366_30fps[] = {
965 GROUPED_PARAMETER_HOLD_ENABLE,
966 /* mode set clear */
967 { IMX_8BIT, 0x3A43, 0x01 },
968 /* Clock Setting */
969 { IMX_8BIT, 0x011E, 0x13 },
970 { IMX_8BIT, 0x011F, 0x33 },
971 { IMX_8BIT, 0x0301, 0x05 },
972 { IMX_8BIT, 0x0303, 0x01 },
973 { IMX_8BIT, 0x0305, 0x0C },
974 { IMX_8BIT, 0x0309, 0x05 },
975 { IMX_8BIT, 0x030B, 0x01 },
976 { IMX_8BIT, 0x030C, 0x01 },
977 { IMX_8BIT, 0x030D, 0xA9 },
978 { IMX_8BIT, 0x030E, 0x01 },
979 { IMX_8BIT, 0x3A06, 0x11 },
980
981 /* Mode setting */
982 { IMX_8BIT, 0x0108, 0x03 },
983 { IMX_8BIT, 0x0112, 0x0A },
984 { IMX_8BIT, 0x0113, 0x0A },
985 { IMX_8BIT, 0x0381, 0x01 },
986 { IMX_8BIT, 0x0383, 0x01 },
987 { IMX_8BIT, 0x0385, 0x01 },
988 { IMX_8BIT, 0x0387, 0x01 },
989 { IMX_8BIT, 0x0390, 0x01 }, /* 2x2 binning */
990 { IMX_8BIT, 0x0391, 0x22 },
991 { IMX_8BIT, 0x0392, 0x00 },
992 { IMX_8BIT, 0x0401, 0x02 }, /* resize */
993 { IMX_8BIT, 0x0404, 0x00 },
994 { IMX_8BIT, 0x0405, 0x26 }, /* down scaling = 16/38 */
995 { IMX_8BIT, 0x4082, 0x00 },
996 { IMX_8BIT, 0x4083, 0x00 },
997 { IMX_8BIT, 0x7006, 0x04 },
998
999 /* Optionnal Function setting */
1000 { IMX_8BIT, 0x0700, 0x00 },
1001 { IMX_8BIT, 0x3A63, 0x00 },
1002 { IMX_8BIT, 0x4100, 0xF8 },
1003 { IMX_8BIT, 0x4203, 0xFF },
1004 { IMX_8BIT, 0x4344, 0x00 },
1005 { IMX_8BIT, 0x441C, 0x01 },
1006
1007 /* Size setting */
1008 { IMX_8BIT, 0x0344, 0x02 }, /* x_addr_start[15:8]:590 */
1009 { IMX_8BIT, 0x0345, 0x4E }, /* x_addr_start[7:0] */
1010 { IMX_8BIT, 0x0346, 0x01 }, /* y_addr_start[15:8]:366 */
1011 { IMX_8BIT, 0x0347, 0x6E }, /* y_addr_start[7:0] */
1012 { IMX_8BIT, 0x0348, 0x0A }, /* x_addr_end[15:8]:2128+590-1 */
1013 { IMX_8BIT, 0x0349, 0x9D }, /* x_addr_end[7:0] */
1014 { IMX_8BIT, 0x034A, 0x08 }, /* y_addr_end[15:8]:1740+366-1 */
1015 { IMX_8BIT, 0x034B, 0x39 }, /* y_addr_end[7:0] */
1016 { IMX_8BIT, 0x034C, 0x01 }, /* x_output_size[15:8]: 448*/
1017 { IMX_8BIT, 0x034D, 0xC0 }, /* x_output_size[7:0] */
1018 { IMX_8BIT, 0x034E, 0x01 }, /* y_output_size[15:8]:366 */
1019 { IMX_8BIT, 0x034F, 0x6E }, /* y_output_size[7:0] */
1020 { IMX_8BIT, 0x0350, 0x00 },
1021 { IMX_8BIT, 0x0351, 0x00 },
1022 { IMX_8BIT, 0x0352, 0x00 },
1023 { IMX_8BIT, 0x0353, 0x00 },
1024 { IMX_8BIT, 0x0354, 0x04 }, /* crop_x: 1064 */
1025 { IMX_8BIT, 0x0355, 0x28 },
1026 { IMX_8BIT, 0x0356, 0x03 }, /* crop_y: 870 */
1027 { IMX_8BIT, 0x0357, 0x66 },
1028
1029 { IMX_8BIT, 0x301D, 0x30 },
1030
1031 { IMX_8BIT, 0x3310, 0x01 },
1032 { IMX_8BIT, 0x3311, 0xC0 },
1033 { IMX_8BIT, 0x3312, 0x01 },
1034 { IMX_8BIT, 0x3313, 0x6E },
1035
1036 { IMX_8BIT, 0x331C, 0x02 },
1037 { IMX_8BIT, 0x331D, 0xD0 },
1038
1039 { IMX_8BIT, 0x4084, 0x01 },
1040 { IMX_8BIT, 0x4085, 0xC0 },
1041 { IMX_8BIT, 0x4086, 0x01 },
1042 { IMX_8BIT, 0x4087, 0x6E },
1043 { IMX_8BIT, 0x4400, 0x00 },
1044
1045 /* Global Timing Setting */
1046 { IMX_8BIT, 0x0830, 0x77 },
1047 { IMX_8BIT, 0x0831, 0x2F },
1048 { IMX_8BIT, 0x0832, 0x4F },
1049 { IMX_8BIT, 0x0833, 0x37 },
1050 { IMX_8BIT, 0x0834, 0x2F },
1051 { IMX_8BIT, 0x0835, 0x37 },
1052 { IMX_8BIT, 0x0836, 0xAF },
1053 { IMX_8BIT, 0x0837, 0x37 },
1054 { IMX_8BIT, 0x0839, 0x1F },
1055 { IMX_8BIT, 0x083A, 0x17 },
1056 { IMX_8BIT, 0x083B, 0x02 },
1057
1058 /* Integration Time Setting */
1059 { IMX_8BIT, 0x0202, 0x09 },
1060 { IMX_8BIT, 0x0203, 0xD2 },
1061
1062 /* HDR Setting */
1063 { IMX_8BIT, 0x0230, 0x00 },
1064 { IMX_8BIT, 0x0231, 0x00 },
1065 { IMX_8BIT, 0x0233, 0x00 },
1066 { IMX_8BIT, 0x0234, 0x00 },
1067 { IMX_8BIT, 0x0235, 0x40 },
1068 { IMX_8BIT, 0x0238, 0x00 },
1069 { IMX_8BIT, 0x0239, 0x04 },
1070 { IMX_8BIT, 0x023B, 0x00 },
1071 { IMX_8BIT, 0x023C, 0x01 },
1072 { IMX_8BIT, 0x33B0, 0x04 },
1073 { IMX_8BIT, 0x33B1, 0x00 },
1074 { IMX_8BIT, 0x33B3, 0x00 },
1075 { IMX_8BIT, 0x33B4, 0x01 },
1076 { IMX_8BIT, 0x3800, 0x00 },
1077 { IMX_TOK_TERM, 0, 0 }
1078 };
1079
1080 /* 4 lane 2336x1312, 30fps, for 1080p dvs, vendor provide */
1081 static struct imx_reg const imx134_2336_1312_30fps[] = {
1082 GROUPED_PARAMETER_HOLD_ENABLE,
1083 /* mode set clear */
1084 { IMX_8BIT, 0x3A43, 0x01 },
1085 /* Clock Setting */
1086 { IMX_8BIT, 0x011E, 0x13 },
1087 { IMX_8BIT, 0x011F, 0x33 },
1088 { IMX_8BIT, 0x0301, 0x05 },
1089 { IMX_8BIT, 0x0303, 0x01 },
1090 { IMX_8BIT, 0x0305, 0x0C },
1091 { IMX_8BIT, 0x0309, 0x05 },
1092 { IMX_8BIT, 0x030B, 0x01 },
1093 { IMX_8BIT, 0x030C, 0x01 },
1094 { IMX_8BIT, 0x030D, 0xA9 },
1095 { IMX_8BIT, 0x030E, 0x01 },
1096 { IMX_8BIT, 0x3A06, 0x11 },
1097
1098 /* Mode setting */
1099 { IMX_8BIT, 0x0108, 0x03 },
1100 { IMX_8BIT, 0x0112, 0x0A },
1101 { IMX_8BIT, 0x0113, 0x0A },
1102 { IMX_8BIT, 0x0381, 0x01 },
1103 { IMX_8BIT, 0x0383, 0x01 },
1104 { IMX_8BIT, 0x0385, 0x01 },
1105 { IMX_8BIT, 0x0387, 0x01 },
1106 { IMX_8BIT, 0x0390, 0x00 }, /* disable binning */
1107 { IMX_8BIT, 0x0391, 0x11 },
1108 { IMX_8BIT, 0x0392, 0x00 },
1109 { IMX_8BIT, 0x0401, 0x02 }, /* H/V resize */
1110 { IMX_8BIT, 0x0404, 0x00 },
1111 { IMX_8BIT, 0x0405, 0x16 }, /* down scaling = 16/22 = 8/11 */
1112 { IMX_8BIT, 0x4082, 0x00 },
1113 { IMX_8BIT, 0x4083, 0x00 },
1114 { IMX_8BIT, 0x7006, 0x04 },
1115
1116 /* Optionnal Function setting */
1117 { IMX_8BIT, 0x0700, 0x00 },
1118 { IMX_8BIT, 0x3A63, 0x00 },
1119 { IMX_8BIT, 0x4100, 0xF8 },
1120 { IMX_8BIT, 0x4203, 0xFF },
1121 { IMX_8BIT, 0x4344, 0x00 },
1122 { IMX_8BIT, 0x441C, 0x01 },
1123
1124 /* Size setting */
1125 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:34 */
1126 { IMX_8BIT, 0x0345, 0x22 }, /* x_addr_start[7:0] */
1127 { IMX_8BIT, 0x0346, 0x01 }, /* y_addr_start[15:8]:332 */
1128 { IMX_8BIT, 0x0347, 0x4C }, /* y_addr_start[7:0] */
1129 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3245 */
1130 { IMX_8BIT, 0x0349, 0xAD }, /* x_addr_end[7:0] */
1131 { IMX_8BIT, 0x034A, 0x08 }, /* y_addr_end[15:8]:2135 */
1132 { IMX_8BIT, 0x034B, 0x57 }, /* y_addr_end[7:0] */
1133 { IMX_8BIT, 0x034C, 0x09 }, /* x_output_size[15:8]:2336 */
1134 { IMX_8BIT, 0x034D, 0x20 }, /* x_output_size[7:0] */
1135 { IMX_8BIT, 0x034E, 0x05 }, /* y_output_size[15:8]:1312 */
1136 { IMX_8BIT, 0x034F, 0x20 }, /* y_output_size[7:0] */
1137 { IMX_8BIT, 0x0350, 0x00 },
1138 { IMX_8BIT, 0x0351, 0x00 },
1139 { IMX_8BIT, 0x0352, 0x00 },
1140 { IMX_8BIT, 0x0353, 0x00 },
1141 { IMX_8BIT, 0x0354, 0x0C },
1142 { IMX_8BIT, 0x0355, 0x8C },
1143 { IMX_8BIT, 0x0356, 0x07 },
1144 { IMX_8BIT, 0x0357, 0x0C },
1145 { IMX_8BIT, 0x301D, 0x30 },
1146 { IMX_8BIT, 0x3310, 0x09 },
1147 { IMX_8BIT, 0x3311, 0x20 },
1148 { IMX_8BIT, 0x3312, 0x05 },
1149 { IMX_8BIT, 0x3313, 0x20 },
1150 { IMX_8BIT, 0x331C, 0x03 },
1151 { IMX_8BIT, 0x331D, 0xEB },
1152 { IMX_8BIT, 0x4084, 0x09 },
1153 { IMX_8BIT, 0x4085, 0x20 },
1154 { IMX_8BIT, 0x4086, 0x05 },
1155 { IMX_8BIT, 0x4087, 0x20 },
1156 { IMX_8BIT, 0x4400, 0x00 },
1157
1158 /* Global Timing Setting */
1159 { IMX_8BIT, 0x0830, 0x77 },
1160 { IMX_8BIT, 0x0831, 0x2F },
1161 { IMX_8BIT, 0x0832, 0x4F },
1162 { IMX_8BIT, 0x0833, 0x37 },
1163 { IMX_8BIT, 0x0834, 0x2F },
1164 { IMX_8BIT, 0x0835, 0x37 },
1165 { IMX_8BIT, 0x0836, 0xAF },
1166 { IMX_8BIT, 0x0837, 0x37 },
1167 { IMX_8BIT, 0x0839, 0x1F },
1168 { IMX_8BIT, 0x083A, 0x17 },
1169 { IMX_8BIT, 0x083B, 0x02 },
1170
1171 /* Integration Time Setting */
1172 { IMX_8BIT, 0x0202, 0x09 },
1173 { IMX_8BIT, 0x0203, 0xD2 },
1174
1175 /* HDR Setting */
1176 { IMX_8BIT, 0x0230, 0x00 },
1177 { IMX_8BIT, 0x0231, 0x00 },
1178 { IMX_8BIT, 0x0233, 0x00 },
1179 { IMX_8BIT, 0x0234, 0x00 },
1180 { IMX_8BIT, 0x0235, 0x40 },
1181 { IMX_8BIT, 0x0238, 0x00 },
1182 { IMX_8BIT, 0x0239, 0x04 },
1183 { IMX_8BIT, 0x023B, 0x00 },
1184 { IMX_8BIT, 0x023C, 0x01 },
1185 { IMX_8BIT, 0x33B0, 0x04 },
1186 { IMX_8BIT, 0x33B1, 0x00 },
1187 { IMX_8BIT, 0x33B3, 0x00 },
1188 { IMX_8BIT, 0x33B4, 0x01 },
1189 { IMX_8BIT, 0x3800, 0x00 },
1190 { IMX_TOK_TERM, 0, 0 }
1191 };
1192
1193 /* 4 lane 1920x1080, 30fps, for 720p still capture */
1194 static struct imx_reg const imx134_1936_1096_30fps_v1[] = {
1195 GROUPED_PARAMETER_HOLD_ENABLE,
1196 /* mode set clear */
1197 { IMX_8BIT, 0x3A43, 0x01 },
1198 /* Clock Setting */
1199 { IMX_8BIT, 0x011E, 0x13 },
1200 { IMX_8BIT, 0x011F, 0x33 },
1201 { IMX_8BIT, 0x0301, 0x05 },
1202 { IMX_8BIT, 0x0303, 0x01 },
1203 { IMX_8BIT, 0x0305, 0x0C },
1204 { IMX_8BIT, 0x0309, 0x05 },
1205 { IMX_8BIT, 0x030B, 0x01 },
1206 { IMX_8BIT, 0x030C, 0x01 },
1207 { IMX_8BIT, 0x030D, 0xA9 },
1208 { IMX_8BIT, 0x030E, 0x01 },
1209 { IMX_8BIT, 0x3A06, 0x11 },
1210
1211 /* Mode setting */
1212 { IMX_8BIT, 0x0108, 0x03 },
1213 { IMX_8BIT, 0x0112, 0x0A },
1214 { IMX_8BIT, 0x0113, 0x0A },
1215 { IMX_8BIT, 0x0381, 0x01 },
1216 { IMX_8BIT, 0x0383, 0x01 },
1217 { IMX_8BIT, 0x0385, 0x01 },
1218 { IMX_8BIT, 0x0387, 0x01 },
1219 { IMX_8BIT, 0x0390, 0x00 }, /* disable binning */
1220 { IMX_8BIT, 0x0391, 0x11 }, /* 2x2 binning */
1221 { IMX_8BIT, 0x0392, 0x00 },
1222 { IMX_8BIT, 0x0401, 0x02 }, /* H/V resize */
1223 { IMX_8BIT, 0x0404, 0x00 },
1224 { IMX_8BIT, 0x0405, 0x1A }, /* downscaling 16/26*/
1225 { IMX_8BIT, 0x4082, 0x00 },
1226 { IMX_8BIT, 0x4083, 0x00 },
1227 { IMX_8BIT, 0x7006, 0x04 },
1228
1229 /* Optionnal Function setting */
1230 { IMX_8BIT, 0x0700, 0x00 },
1231 { IMX_8BIT, 0x3A63, 0x00 },
1232 { IMX_8BIT, 0x4100, 0xF8 },
1233 { IMX_8BIT, 0x4203, 0xFF },
1234 { IMX_8BIT, 0x4344, 0x00 },
1235 { IMX_8BIT, 0x441C, 0x01 },
1236
1237 /* Size setting */
1238 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:64 */
1239 { IMX_8BIT, 0x0345, 0x40 }, /* x_addr_start[7:0] */
1240 { IMX_8BIT, 0x0346, 0x01 }, /* y_addr_start[15:8]:340 */
1241 { IMX_8BIT, 0x0347, 0x54 }, /* y_addr_start[7:0] */
1242 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3209 */
1243 { IMX_8BIT, 0x0349, 0x89 }, /* x_addr_end[7:0] */
1244 { IMX_8BIT, 0x034A, 0x08 }, /* y_addr_end[15:8]:2121 */
1245 { IMX_8BIT, 0x034B, 0x49 }, /* y_addr_end[7:0] */
1246 { IMX_8BIT, 0x034C, 0x07 }, /* x_output_size[15:8]:1936 */
1247 { IMX_8BIT, 0x034D, 0x90 }, /* x_output_size[7:0] */
1248 { IMX_8BIT, 0x034E, 0x04 }, /* y_output_size[15:8]:1096 */
1249 { IMX_8BIT, 0x034F, 0x48 }, /* y_output_size[7:0] */
1250 { IMX_8BIT, 0x0350, 0x00 },
1251 { IMX_8BIT, 0x0351, 0x00 },
1252 { IMX_8BIT, 0x0352, 0x00 },
1253 { IMX_8BIT, 0x0353, 0x00 },
1254 { IMX_8BIT, 0x0354, 0x0C }, /* crop x:3146 */
1255 { IMX_8BIT, 0x0355, 0x4A },
1256 { IMX_8BIT, 0x0356, 0x06 }, /* xrop y:1782 */
1257 { IMX_8BIT, 0x0357, 0xF6 },
1258 { IMX_8BIT, 0x301D, 0x30 },
1259 { IMX_8BIT, 0x3310, 0x07 },
1260 { IMX_8BIT, 0x3311, 0x80 },
1261 { IMX_8BIT, 0x3312, 0x04 },
1262 { IMX_8BIT, 0x3313, 0x38 },
1263 { IMX_8BIT, 0x331C, 0x04 },
1264 { IMX_8BIT, 0x331D, 0x1E },
1265 { IMX_8BIT, 0x4084, 0x07 },
1266 { IMX_8BIT, 0x4085, 0x80 },
1267 { IMX_8BIT, 0x4086, 0x04 },
1268 { IMX_8BIT, 0x4087, 0x38 },
1269 { IMX_8BIT, 0x4400, 0x00 },
1270
1271 /* Global Timing Setting */
1272 { IMX_8BIT, 0x0830, 0x77 },
1273 { IMX_8BIT, 0x0831, 0x2F },
1274 { IMX_8BIT, 0x0832, 0x4F },
1275 { IMX_8BIT, 0x0833, 0x37 },
1276 { IMX_8BIT, 0x0834, 0x2F },
1277 { IMX_8BIT, 0x0835, 0x37 },
1278 { IMX_8BIT, 0x0836, 0xAF },
1279 { IMX_8BIT, 0x0837, 0x37 },
1280 { IMX_8BIT, 0x0839, 0x1F },
1281 { IMX_8BIT, 0x083A, 0x17 },
1282 { IMX_8BIT, 0x083B, 0x02 },
1283
1284 /* Integration Time Setting */
1285 { IMX_8BIT, 0x0202, 0x09 },
1286 { IMX_8BIT, 0x0203, 0xD2 },
1287
1288 /* HDR Setting */
1289 { IMX_8BIT, 0x0230, 0x00 },
1290 { IMX_8BIT, 0x0231, 0x00 },
1291 { IMX_8BIT, 0x0233, 0x00 },
1292 { IMX_8BIT, 0x0234, 0x00 },
1293 { IMX_8BIT, 0x0235, 0x40 },
1294 { IMX_8BIT, 0x0238, 0x00 },
1295 { IMX_8BIT, 0x0239, 0x04 },
1296 { IMX_8BIT, 0x023B, 0x00 },
1297 { IMX_8BIT, 0x023C, 0x01 },
1298 { IMX_8BIT, 0x33B0, 0x04 },
1299 { IMX_8BIT, 0x33B1, 0x00 },
1300 { IMX_8BIT, 0x33B3, 0x00 },
1301 { IMX_8BIT, 0x33B4, 0x01 },
1302 { IMX_8BIT, 0x3800, 0x00 },
1303 { IMX_TOK_TERM, 0, 0 }
1304 };
1305
1306 /* 4 lane 1920x1080, 30fps, for 720p still capture, vendor provide */
1307 static struct imx_reg const imx134_1936_1096_30fps_v2[] = {
1308 GROUPED_PARAMETER_HOLD_ENABLE,
1309 /* mode set clear */
1310 { IMX_8BIT, 0x3A43, 0x01 },
1311 /* Clock Setting */
1312 { IMX_8BIT, 0x011E, 0x13 },
1313 { IMX_8BIT, 0x011F, 0x33 },
1314 { IMX_8BIT, 0x0301, 0x05 },
1315 { IMX_8BIT, 0x0303, 0x01 },
1316 { IMX_8BIT, 0x0305, 0x0C },
1317 { IMX_8BIT, 0x0309, 0x05 },
1318 { IMX_8BIT, 0x030B, 0x01 },
1319 { IMX_8BIT, 0x030C, 0x01 },
1320 { IMX_8BIT, 0x030D, 0xA9 },
1321 { IMX_8BIT, 0x030E, 0x01 },
1322 { IMX_8BIT, 0x3A06, 0x11 },
1323
1324 /* Mode setting */
1325 { IMX_8BIT, 0x0108, 0x03 },
1326 { IMX_8BIT, 0x0112, 0x0A },
1327 { IMX_8BIT, 0x0113, 0x0A },
1328 { IMX_8BIT, 0x0381, 0x01 },
1329 { IMX_8BIT, 0x0383, 0x01 },
1330 { IMX_8BIT, 0x0385, 0x01 },
1331 { IMX_8BIT, 0x0387, 0x01 },
1332 { IMX_8BIT, 0x0390, 0x00 }, /* disable binning */
1333 { IMX_8BIT, 0x0391, 0x11 },
1334 { IMX_8BIT, 0x0392, 0x00 },
1335 { IMX_8BIT, 0x0401, 0x02 }, /* H/V resize */
1336 { IMX_8BIT, 0x0404, 0x00 },
1337 { IMX_8BIT, 0x0405, 0x1B }, /* downscaling 16/27*/
1338 { IMX_8BIT, 0x4082, 0x00 },
1339 { IMX_8BIT, 0x4083, 0x00 },
1340 { IMX_8BIT, 0x7006, 0x04 },
1341
1342 /* Optionnal Function setting */
1343 { IMX_8BIT, 0x0700, 0x00 },
1344 { IMX_8BIT, 0x3A63, 0x00 },
1345 { IMX_8BIT, 0x4100, 0xF8 },
1346 { IMX_8BIT, 0x4203, 0xFF },
1347 { IMX_8BIT, 0x4344, 0x00 },
1348 { IMX_8BIT, 0x441C, 0x01 },
1349
1350 /* Size setting */
1351 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:64 */
1352 { IMX_8BIT, 0x0345, 0x06 }, /* x_addr_start[7:0] */
1353 { IMX_8BIT, 0x0346, 0x01 }, /* y_addr_start[15:8]:340 */
1354 { IMX_8BIT, 0x0347, 0x34 }, /* y_addr_start[7:0] */
1355 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3209 */
1356 { IMX_8BIT, 0x0349, 0xC9 }, /* x_addr_end[7:0] */
1357 { IMX_8BIT, 0x034A, 0x08 }, /* y_addr_end[15:8]:2121 */
1358 { IMX_8BIT, 0x034B, 0x6F }, /* y_addr_end[7:0] */
1359 { IMX_8BIT, 0x034C, 0x07 }, /* x_output_size[15:8]:1936 */
1360 { IMX_8BIT, 0x034D, 0x90 }, /* x_output_size[7:0] */
1361 { IMX_8BIT, 0x034E, 0x04 }, /* y_output_size[15:8]:1096 */
1362 { IMX_8BIT, 0x034F, 0x48 }, /* y_output_size[7:0] */
1363 { IMX_8BIT, 0x0350, 0x00 },
1364 { IMX_8BIT, 0x0351, 0x00 },
1365 { IMX_8BIT, 0x0352, 0x00 },
1366 { IMX_8BIT, 0x0353, 0x00 },
1367 { IMX_8BIT, 0x0354, 0x0C }, /* crop x:3146 */
1368 { IMX_8BIT, 0x0355, 0xC4 },
1369 { IMX_8BIT, 0x0356, 0x07 }, /* xrop y:1782 */
1370 { IMX_8BIT, 0x0357, 0x3A },
1371 { IMX_8BIT, 0x301D, 0x30 },
1372 { IMX_8BIT, 0x3310, 0x07 }, /* decide by mode and output size */
1373 { IMX_8BIT, 0x3311, 0x90 },
1374 { IMX_8BIT, 0x3312, 0x04 },
1375 { IMX_8BIT, 0x3313, 0x48 },
1376 { IMX_8BIT, 0x331C, 0x04 },
1377 { IMX_8BIT, 0x331D, 0x1E },
1378 { IMX_8BIT, 0x4084, 0x07 },
1379 { IMX_8BIT, 0x4085, 0x90 },
1380 { IMX_8BIT, 0x4086, 0x04 },
1381 { IMX_8BIT, 0x4087, 0x48 },
1382 { IMX_8BIT, 0x4400, 0x00 },
1383
1384 /* Global Timing Setting */
1385 { IMX_8BIT, 0x0830, 0x77 },
1386 { IMX_8BIT, 0x0831, 0x2F },
1387 { IMX_8BIT, 0x0832, 0x4F },
1388 { IMX_8BIT, 0x0833, 0x37 },
1389 { IMX_8BIT, 0x0834, 0x2F },
1390 { IMX_8BIT, 0x0835, 0x37 },
1391 { IMX_8BIT, 0x0836, 0xAF },
1392 { IMX_8BIT, 0x0837, 0x37 },
1393 { IMX_8BIT, 0x0839, 0x1F },
1394 { IMX_8BIT, 0x083A, 0x17 },
1395 { IMX_8BIT, 0x083B, 0x02 },
1396
1397 /* Integration Time Setting */
1398 { IMX_8BIT, 0x0202, 0x09 },
1399 { IMX_8BIT, 0x0203, 0xD2 },
1400
1401 /* HDR Setting */
1402 { IMX_8BIT, 0x0230, 0x00 },
1403 { IMX_8BIT, 0x0231, 0x00 },
1404 { IMX_8BIT, 0x0233, 0x00 },
1405 { IMX_8BIT, 0x0234, 0x00 },
1406 { IMX_8BIT, 0x0235, 0x40 },
1407 { IMX_8BIT, 0x0238, 0x00 },
1408 { IMX_8BIT, 0x0239, 0x04 },
1409 { IMX_8BIT, 0x023B, 0x00 },
1410 { IMX_8BIT, 0x023C, 0x01 },
1411 { IMX_8BIT, 0x33B0, 0x04 },
1412 { IMX_8BIT, 0x33B1, 0x00 },
1413 { IMX_8BIT, 0x33B3, 0x00 },
1414 { IMX_8BIT, 0x33B4, 0x01 },
1415 { IMX_8BIT, 0x3800, 0x00 },
1416 { IMX_TOK_TERM, 0, 0 }
1417 };
1418
1419 /* 4 lane 1296x736, 30fps, for 720p still capture, vendor provide */
1420 static struct imx_reg const imx134_1296_736_30fps_v2[] = {
1421 GROUPED_PARAMETER_HOLD_ENABLE,
1422 /* mode set clear */
1423 { IMX_8BIT, 0x3A43, 0x01 },
1424 /* Clock Setting */
1425 { IMX_8BIT, 0x011E, 0x13 },
1426 { IMX_8BIT, 0x011F, 0x33 },
1427 { IMX_8BIT, 0x0301, 0x05 },
1428 { IMX_8BIT, 0x0303, 0x01 },
1429 { IMX_8BIT, 0x0305, 0x0C },
1430 { IMX_8BIT, 0x0309, 0x05 },
1431 { IMX_8BIT, 0x030B, 0x01 },
1432 { IMX_8BIT, 0x030C, 0x01 },
1433 { IMX_8BIT, 0x030D, 0xA9 },
1434 { IMX_8BIT, 0x030E, 0x01 },
1435 { IMX_8BIT, 0x3A06, 0x11 },
1436
1437 /* Mode setting */
1438 { IMX_8BIT, 0x0108, 0x03 },
1439 { IMX_8BIT, 0x0112, 0x0A },
1440 { IMX_8BIT, 0x0113, 0x0A },
1441 { IMX_8BIT, 0x0381, 0x01 },
1442 { IMX_8BIT, 0x0383, 0x01 },
1443 { IMX_8BIT, 0x0385, 0x01 },
1444 { IMX_8BIT, 0x0387, 0x01 },
1445 { IMX_8BIT, 0x0390, 0x01 }, /* binning */
1446 { IMX_8BIT, 0x0391, 0x22 }, /* 2x2 binning */
1447 { IMX_8BIT, 0x0392, 0x00 },
1448 { IMX_8BIT, 0x0401, 0x02 }, /* H/V resize */
1449 { IMX_8BIT, 0x0404, 0x00 },
1450 { IMX_8BIT, 0x0405, 0x14 },
1451 { IMX_8BIT, 0x4082, 0x00 },
1452 { IMX_8BIT, 0x4083, 0x00 },
1453 { IMX_8BIT, 0x7006, 0x04 },
1454
1455 /* OptionnalFunction settig */
1456 { IMX_8BIT, 0x0700, 0x00 },
1457 { IMX_8BIT, 0x3A63, 0x00 },
1458 { IMX_8BIT, 0x4100, 0xF8 },
1459 { IMX_8BIT, 0x4203, 0xFF },
1460 { IMX_8BIT, 0x4344, 0x00 },
1461 { IMX_8BIT, 0x441C, 0x01 },
1462
1463 /* Size setting */
1464 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:40 */
1465 { IMX_8BIT, 0x0345, 0x14 }, /* x_addr_start[7:0] */
1466 { IMX_8BIT, 0x0346, 0x01 }, /* y_addr_start[15:8]:332 */
1467 { IMX_8BIT, 0x0347, 0x38 }, /* y_addr_start[7:0] */
1468 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3239 */
1469 { IMX_8BIT, 0x0349, 0xBB }, /* x_addr_end[7:0] */
1470 { IMX_8BIT, 0x034A, 0x08 }, /* y_addr_end[15:8]:2131 */
1471 { IMX_8BIT, 0x034B, 0x67 }, /* y_addr_end[7:0] */
1472 { IMX_8BIT, 0x034C, 0x05 }, /* x_output_size[15:8]:1280 */
1473 { IMX_8BIT, 0x034D, 0x10 }, /* x_output_size[7:0] */
1474 { IMX_8BIT, 0x034E, 0x02 }, /* y_output_size[15:8]:720 */
1475 { IMX_8BIT, 0x034F, 0xE0 }, /* y_output_size[7:0] */
1476 { IMX_8BIT, 0x0350, 0x00 },
1477 { IMX_8BIT, 0x0351, 0x00 },
1478 { IMX_8BIT, 0x0352, 0x00 },
1479 { IMX_8BIT, 0x0353, 0x00 },
1480 { IMX_8BIT, 0x0354, 0x06 },
1481 { IMX_8BIT, 0x0355, 0x54 },
1482 { IMX_8BIT, 0x0356, 0x03 },
1483 { IMX_8BIT, 0x0357, 0x98 },
1484 { IMX_8BIT, 0x301D, 0x30 },
1485 { IMX_8BIT, 0x3310, 0x05 },
1486 { IMX_8BIT, 0x3311, 0x10 },
1487 { IMX_8BIT, 0x3312, 0x02 },
1488 { IMX_8BIT, 0x3313, 0xE0 },
1489 { IMX_8BIT, 0x331C, 0x01 },
1490 { IMX_8BIT, 0x331D, 0x10 },
1491 { IMX_8BIT, 0x4084, 0x05 },
1492 { IMX_8BIT, 0x4085, 0x10 },
1493 { IMX_8BIT, 0x4086, 0x02 },
1494 { IMX_8BIT, 0x4087, 0xE0 },
1495 { IMX_8BIT, 0x4400, 0x00 },
1496
1497 /* Global Timing Setting */
1498 { IMX_8BIT, 0x0830, 0x77 },
1499 { IMX_8BIT, 0x0831, 0x2F },
1500 { IMX_8BIT, 0x0832, 0x4F },
1501 { IMX_8BIT, 0x0833, 0x37 },
1502 { IMX_8BIT, 0x0834, 0x2F },
1503 { IMX_8BIT, 0x0835, 0x37 },
1504 { IMX_8BIT, 0x0836, 0xAF },
1505 { IMX_8BIT, 0x0837, 0x37 },
1506 { IMX_8BIT, 0x0839, 0x1F },
1507 { IMX_8BIT, 0x083A, 0x17 },
1508 { IMX_8BIT, 0x083B, 0x02 },
1509
1510 /* Integration Time Settin */
1511 { IMX_8BIT, 0x0202, 0x09 },
1512 { IMX_8BIT, 0x0203, 0xD2 },
1513
1514 /* HDR Setting */
1515 { IMX_8BIT, 0x0230, 0x00 },
1516 { IMX_8BIT, 0x0231, 0x00 },
1517 { IMX_8BIT, 0x0233, 0x00 },
1518 { IMX_8BIT, 0x0234, 0x00 },
1519 { IMX_8BIT, 0x0235, 0x40 },
1520 { IMX_8BIT, 0x0238, 0x00 },
1521 { IMX_8BIT, 0x0239, 0x04 },
1522 { IMX_8BIT, 0x023B, 0x00 },
1523 { IMX_8BIT, 0x023C, 0x01 },
1524 { IMX_8BIT, 0x33B0, 0x04 },
1525 { IMX_8BIT, 0x33B1, 0x00 },
1526 { IMX_8BIT, 0x33B3, 0x00 },
1527 { IMX_8BIT, 0x33B4, 0x01 },
1528 { IMX_8BIT, 0x3800, 0x00 },
1529 { IMX_TOK_TERM, 0, 0 }
1530 };
1531
1532 /* 4 lane 1280x720, 30fps, for 720p dvs, vendor provide */
1533 static struct imx_reg const imx134_1568_880_30fps[] = {
1534 GROUPED_PARAMETER_HOLD_ENABLE,
1535 /* mode set clear */
1536 { IMX_8BIT, 0x3A43, 0x01 },
1537 /* Clock Setting */
1538 { IMX_8BIT, 0x011E, 0x13 },
1539 { IMX_8BIT, 0x011F, 0x33 },
1540 { IMX_8BIT, 0x0301, 0x05 },
1541 { IMX_8BIT, 0x0303, 0x01 },
1542 { IMX_8BIT, 0x0305, 0x0C },
1543 { IMX_8BIT, 0x0309, 0x05 },
1544 { IMX_8BIT, 0x030B, 0x01 },
1545 { IMX_8BIT, 0x030C, 0x01 },
1546 { IMX_8BIT, 0x030D, 0xA9 },
1547 { IMX_8BIT, 0x030E, 0x01 },
1548 { IMX_8BIT, 0x3A06, 0x11 },
1549
1550 /* Mode setting */
1551 { IMX_8BIT, 0x0108, 0x03 },
1552 { IMX_8BIT, 0x0112, 0x0A },
1553 { IMX_8BIT, 0x0113, 0x0A },
1554 { IMX_8BIT, 0x0381, 0x01 },
1555 { IMX_8BIT, 0x0383, 0x01 },
1556 { IMX_8BIT, 0x0385, 0x01 },
1557 { IMX_8BIT, 0x0387, 0x01 },
1558 { IMX_8BIT, 0x0390, 0x01 }, /* binning*/
1559 { IMX_8BIT, 0x0391, 0x22 }, /* 2x2 binning */
1560 { IMX_8BIT, 0x0392, 0x00 },
1561 { IMX_8BIT, 0x0401, 0x02 }, /* H/V resize */
1562 { IMX_8BIT, 0x0404, 0x00 },
1563 { IMX_8BIT, 0x0405, 0x10 }, /* down scaling 16/16 = 1 */
1564 { IMX_8BIT, 0x4082, 0x01 },
1565 { IMX_8BIT, 0x4083, 0x01 },
1566 { IMX_8BIT, 0x7006, 0x04 },
1567
1568 /* OptionnalFunction settig */
1569 { IMX_8BIT, 0x0700, 0x00 },
1570 { IMX_8BIT, 0x3A63, 0x00 },
1571 { IMX_8BIT, 0x4100, 0xF8 },
1572 { IMX_8BIT, 0x4203, 0xFF },
1573 { IMX_8BIT, 0x4344, 0x00 },
1574 { IMX_8BIT, 0x441C, 0x01 },
1575
1576 /* Size setting */
1577 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:72 */
1578 { IMX_8BIT, 0x0345, 0x48 }, /* x_addr_start[7:0] */
1579 { IMX_8BIT, 0x0346, 0x01 }, /* y_addr_start[15:8]:356 */
1580 { IMX_8BIT, 0x0347, 0x64 }, /* y_addr_start[7:0] */
1581 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3207 */
1582 { IMX_8BIT, 0x0349, 0x87 }, /* x_addr_end[7:0] */
1583 { IMX_8BIT, 0x034A, 0x08 }, /* y_addr_end[15:8]:2115 */
1584 { IMX_8BIT, 0x034B, 0x43 }, /* y_addr_end[7:0] */
1585 { IMX_8BIT, 0x034C, 0x06 }, /* x_output_size[15:8]:1568 */
1586 { IMX_8BIT, 0x034D, 0x20 }, /* x_output_size[7:0] */
1587 { IMX_8BIT, 0x034E, 0x03 }, /* y_output_size[15:8]:880 */
1588 { IMX_8BIT, 0x034F, 0x70 }, /* y_output_size[7:0] */
1589 { IMX_8BIT, 0x0350, 0x00 },
1590 { IMX_8BIT, 0x0351, 0x00 },
1591 { IMX_8BIT, 0x0352, 0x00 },
1592 { IMX_8BIT, 0x0353, 0x00 },
1593 { IMX_8BIT, 0x0354, 0x06 },
1594 { IMX_8BIT, 0x0355, 0x20 },
1595 { IMX_8BIT, 0x0356, 0x03 },
1596 { IMX_8BIT, 0x0357, 0x70 },
1597 { IMX_8BIT, 0x301D, 0x30 },
1598 { IMX_8BIT, 0x3310, 0x06 },
1599 { IMX_8BIT, 0x3311, 0x20 },
1600 { IMX_8BIT, 0x3312, 0x03 },
1601 { IMX_8BIT, 0x3313, 0x70 },
1602 { IMX_8BIT, 0x331C, 0x03 },
1603 { IMX_8BIT, 0x331D, 0xF2 },
1604 { IMX_8BIT, 0x4084, 0x00 },
1605 { IMX_8BIT, 0x4085, 0x00 },
1606 { IMX_8BIT, 0x4086, 0x00 },
1607 { IMX_8BIT, 0x4087, 0x00 },
1608 { IMX_8BIT, 0x4400, 0x00 },
1609
1610 /* Global Timing Setting */
1611 { IMX_8BIT, 0x0830, 0x77 },
1612 { IMX_8BIT, 0x0831, 0x2F },
1613 { IMX_8BIT, 0x0832, 0x4F },
1614 { IMX_8BIT, 0x0833, 0x37 },
1615 { IMX_8BIT, 0x0834, 0x2F },
1616 { IMX_8BIT, 0x0835, 0x37 },
1617 { IMX_8BIT, 0x0836, 0xAF },
1618 { IMX_8BIT, 0x0837, 0x37 },
1619 { IMX_8BIT, 0x0839, 0x1F },
1620 { IMX_8BIT, 0x083A, 0x17 },
1621 { IMX_8BIT, 0x083B, 0x02 },
1622
1623 /* Integration Time Settin */
1624 { IMX_8BIT, 0x0202, 0x09 },
1625 { IMX_8BIT, 0x0203, 0xD2 },
1626
1627 /* HDR Setting */
1628 { IMX_8BIT, 0x0230, 0x00 },
1629 { IMX_8BIT, 0x0231, 0x00 },
1630 { IMX_8BIT, 0x0233, 0x00 },
1631 { IMX_8BIT, 0x0234, 0x00 },
1632 { IMX_8BIT, 0x0235, 0x40 },
1633 { IMX_8BIT, 0x0238, 0x00 },
1634 { IMX_8BIT, 0x0239, 0x04 },
1635 { IMX_8BIT, 0x023B, 0x00 },
1636 { IMX_8BIT, 0x023C, 0x01 },
1637 { IMX_8BIT, 0x33B0, 0x04 },
1638 { IMX_8BIT, 0x33B1, 0x00 },
1639 { IMX_8BIT, 0x33B3, 0x00 },
1640 { IMX_8BIT, 0x33B4, 0x01 },
1641 { IMX_8BIT, 0x3800, 0x00 },
1642 { IMX_TOK_TERM, 0, 0 }
1643 };
1644
1645 static struct imx_reg const imx134_1568_876_60fps_0625[] = {
1646 GROUPED_PARAMETER_HOLD_ENABLE,
1647 /* mode set clear */
1648 { IMX_8BIT, 0x3A43, 0x01 },
1649 /* Clock Setting */
1650 { IMX_8BIT, 0x011E, 0x13 },
1651 { IMX_8BIT, 0x011F, 0x33 },
1652 { IMX_8BIT, 0x0301, 0x05 },
1653 { IMX_8BIT, 0x0303, 0x01 },
1654 { IMX_8BIT, 0x0305, 0x0C },
1655 { IMX_8BIT, 0x0309, 0x05 },
1656 { IMX_8BIT, 0x030B, 0x01 },
1657 { IMX_8BIT, 0x030C, 0x01 },
1658 { IMX_8BIT, 0x030D, 0x8F },
1659 { IMX_8BIT, 0x030E, 0x01 },
1660 { IMX_8BIT, 0x3A06, 0x11 },
1661
1662 /* Mode setting */
1663 { IMX_8BIT, 0x0108, 0x03 },
1664 { IMX_8BIT, 0x0112, 0x0A },
1665 { IMX_8BIT, 0x0113, 0x0A },
1666 { IMX_8BIT, 0x0381, 0x01 },
1667 { IMX_8BIT, 0x0383, 0x01 },
1668 { IMX_8BIT, 0x0385, 0x01 },
1669 { IMX_8BIT, 0x0387, 0x01 },
1670 { IMX_8BIT, 0x0390, 0x01 }, /* binning*/
1671 { IMX_8BIT, 0x0391, 0x22 }, /* 2x2 binning */
1672 { IMX_8BIT, 0x0392, 0x00 },
1673 { IMX_8BIT, 0x0401, 0x00 }, /* H/V resize */
1674 { IMX_8BIT, 0x0404, 0x00 },
1675 { IMX_8BIT, 0x0405, 0x10 }, /* down scaling 16/16 = 1 */
1676 { IMX_8BIT, 0x4082, 0x01 },
1677 { IMX_8BIT, 0x4083, 0x01 },
1678 { IMX_8BIT, 0x7006, 0x04 },
1679
1680 /* OptionnalFunction settig */
1681 { IMX_8BIT, 0x0700, 0x00 },
1682 { IMX_8BIT, 0x3A63, 0x00 },
1683 { IMX_8BIT, 0x4100, 0xF8 },
1684 { IMX_8BIT, 0x4203, 0xFF },
1685 { IMX_8BIT, 0x4344, 0x00 },
1686 { IMX_8BIT, 0x441C, 0x01 },
1687
1688 /* Size setting */
1689 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:72 */
1690 { IMX_8BIT, 0x0345, 0x48 }, /* x_addr_start[7:0] */
1691 { IMX_8BIT, 0x0346, 0x01 }, /* y_addr_start[15:8]:356 */
1692 { IMX_8BIT, 0x0347, 0x64 }, /* y_addr_start[7:0] */
1693 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3207 */
1694 { IMX_8BIT, 0x0349, 0x87 }, /* x_addr_end[7:0] */
1695 { IMX_8BIT, 0x034A, 0x08 }, /* y_addr_end[15:8]:2115 */
1696 { IMX_8BIT, 0x034B, 0x3B }, /* y_addr_end[7:0] */
1697 { IMX_8BIT, 0x034C, 0x06 }, /* x_output_size[15:8]:1568 */
1698 { IMX_8BIT, 0x034D, 0x20 }, /* x_output_size[7:0] */
1699 { IMX_8BIT, 0x034E, 0x03 }, /* y_output_size[15:8]:880 */
1700 { IMX_8BIT, 0x034F, 0x6C }, /* y_output_size[7:0] */
1701 { IMX_8BIT, 0x0350, 0x00 },
1702 { IMX_8BIT, 0x0351, 0x00 },
1703 { IMX_8BIT, 0x0352, 0x00 },
1704 { IMX_8BIT, 0x0353, 0x00 },
1705 { IMX_8BIT, 0x0354, 0x06 },
1706 { IMX_8BIT, 0x0355, 0x20 },
1707 { IMX_8BIT, 0x0356, 0x03 },
1708 { IMX_8BIT, 0x0357, 0x6C },
1709 { IMX_8BIT, 0x301D, 0x30 },
1710 { IMX_8BIT, 0x3310, 0x06 },
1711 { IMX_8BIT, 0x3311, 0x20 },
1712 { IMX_8BIT, 0x3312, 0x03 },
1713 { IMX_8BIT, 0x3313, 0x6C },
1714 { IMX_8BIT, 0x331C, 0x03 },
1715 { IMX_8BIT, 0x331D, 0xF2 },
1716 { IMX_8BIT, 0x4084, 0x00 },
1717 { IMX_8BIT, 0x4085, 0x00 },
1718 { IMX_8BIT, 0x4086, 0x00 },
1719 { IMX_8BIT, 0x4087, 0x00 },
1720 { IMX_8BIT, 0x4400, 0x00 },
1721
1722 /* Global Timing Setting */
1723 { IMX_8BIT, 0x0830, 0x6F },
1724 { IMX_8BIT, 0x0831, 0x27 },
1725 { IMX_8BIT, 0x0832, 0x4F },
1726 { IMX_8BIT, 0x0833, 0x2F },
1727 { IMX_8BIT, 0x0834, 0x2F },
1728 { IMX_8BIT, 0x0835, 0x2F },
1729 { IMX_8BIT, 0x0836, 0x9F },
1730 { IMX_8BIT, 0x0837, 0x37 },
1731 { IMX_8BIT, 0x0839, 0x1F },
1732 { IMX_8BIT, 0x083A, 0x17 },
1733 { IMX_8BIT, 0x083B, 0x02 },
1734
1735 /* Integration Time Settin */
1736 { IMX_8BIT, 0x0202, 0x09 },
1737 { IMX_8BIT, 0x0203, 0xD2 },
1738
1739 /* HDR Setting */
1740 { IMX_8BIT, 0x0230, 0x00 },
1741 { IMX_8BIT, 0x0231, 0x00 },
1742 { IMX_8BIT, 0x0233, 0x00 },
1743 { IMX_8BIT, 0x0234, 0x00 },
1744 { IMX_8BIT, 0x0235, 0x40 },
1745 { IMX_8BIT, 0x0238, 0x00 },
1746 { IMX_8BIT, 0x0239, 0x04 },
1747 { IMX_8BIT, 0x023B, 0x00 },
1748 { IMX_8BIT, 0x023C, 0x01 },
1749 { IMX_8BIT, 0x33B0, 0x04 },
1750 { IMX_8BIT, 0x33B1, 0x00 },
1751 { IMX_8BIT, 0x33B3, 0x00 },
1752 { IMX_8BIT, 0x33B4, 0x01 },
1753 { IMX_8BIT, 0x3800, 0x00 },
1754 { IMX_TOK_TERM, 0, 0 }
1755 };
1756
1757
1758 /* 4 lane for 720p dvs, vendor provide */
1759 static struct imx_reg const imx134_1568_880[] = {
1760 GROUPED_PARAMETER_HOLD_ENABLE,
1761 /* mode set clear */
1762 { IMX_8BIT, 0x3A43, 0x01 },
1763 /* Clock Setting */
1764 { IMX_8BIT, 0x011E, 0x13 },
1765 { IMX_8BIT, 0x011F, 0x33 },
1766 { IMX_8BIT, 0x0301, 0x05 },
1767 { IMX_8BIT, 0x0303, 0x01 },
1768 { IMX_8BIT, 0x0305, 0x0C },
1769 { IMX_8BIT, 0x0309, 0x05 },
1770 { IMX_8BIT, 0x030B, 0x01 },
1771 { IMX_8BIT, 0x030C, 0x01 },
1772 { IMX_8BIT, 0x030D, 0xC8 },
1773 { IMX_8BIT, 0x030E, 0x01 },
1774 { IMX_8BIT, 0x3A06, 0x11 },
1775
1776 /* Mode setting */
1777 { IMX_8BIT, 0x0108, 0x03 },
1778 { IMX_8BIT, 0x0112, 0x0A },
1779 { IMX_8BIT, 0x0113, 0x0A },
1780 { IMX_8BIT, 0x0381, 0x01 },
1781 { IMX_8BIT, 0x0383, 0x01 },
1782 { IMX_8BIT, 0x0385, 0x01 },
1783 { IMX_8BIT, 0x0387, 0x01 },
1784 { IMX_8BIT, 0x0390, 0x01 }, /* binning*/
1785 { IMX_8BIT, 0x0391, 0x22 }, /* 2x2 binning */
1786 { IMX_8BIT, 0x0392, 0x00 },
1787 { IMX_8BIT, 0x0401, 0x00 }, /* H/V resize */
1788 { IMX_8BIT, 0x0404, 0x00 },
1789 { IMX_8BIT, 0x0405, 0x10 }, /* down scaling 16/16 = 1 */
1790 { IMX_8BIT, 0x4082, 0x01 },
1791 { IMX_8BIT, 0x4083, 0x01 },
1792 { IMX_8BIT, 0x7006, 0x04 },
1793
1794 /* OptionnalFunction settig */
1795 { IMX_8BIT, 0x0700, 0x00 },
1796 { IMX_8BIT, 0x3A63, 0x00 },
1797 { IMX_8BIT, 0x4100, 0xF8 },
1798 { IMX_8BIT, 0x4203, 0xFF },
1799 { IMX_8BIT, 0x4344, 0x00 },
1800 { IMX_8BIT, 0x441C, 0x01 },
1801
1802 /* Size setting */
1803 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:72 */
1804 { IMX_8BIT, 0x0345, 0x48 }, /* x_addr_start[7:0] */
1805 { IMX_8BIT, 0x0346, 0x01 }, /* y_addr_start[15:8]:356 */
1806 { IMX_8BIT, 0x0347, 0x64 }, /* y_addr_start[7:0] */
1807 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3207 */
1808 { IMX_8BIT, 0x0349, 0x87 }, /* x_addr_end[7:0] */
1809 { IMX_8BIT, 0x034A, 0x08 }, /* y_addr_end[15:8]:2115 */
1810 { IMX_8BIT, 0x034B, 0x43 }, /* y_addr_end[7:0] */
1811 { IMX_8BIT, 0x034C, 0x06 }, /* x_output_size[15:8]:1568 */
1812 { IMX_8BIT, 0x034D, 0x20 }, /* x_output_size[7:0] */
1813 { IMX_8BIT, 0x034E, 0x03 }, /* y_output_size[15:8]:880 */
1814 { IMX_8BIT, 0x034F, 0x70 }, /* y_output_size[7:0] */
1815 { IMX_8BIT, 0x0350, 0x00 },
1816 { IMX_8BIT, 0x0351, 0x00 },
1817 { IMX_8BIT, 0x0352, 0x00 },
1818 { IMX_8BIT, 0x0353, 0x00 },
1819 { IMX_8BIT, 0x0354, 0x06 },
1820 { IMX_8BIT, 0x0355, 0x20 },
1821 { IMX_8BIT, 0x0356, 0x03 },
1822 { IMX_8BIT, 0x0357, 0x70 },
1823 { IMX_8BIT, 0x301D, 0x30 },
1824 { IMX_8BIT, 0x3310, 0x06 },
1825 { IMX_8BIT, 0x3311, 0x20 },
1826 { IMX_8BIT, 0x3312, 0x03 },
1827 { IMX_8BIT, 0x3313, 0x70 },
1828 { IMX_8BIT, 0x331C, 0x03 },
1829 { IMX_8BIT, 0x331D, 0xF2 },
1830 { IMX_8BIT, 0x4084, 0x00 },
1831 { IMX_8BIT, 0x4085, 0x00 },
1832 { IMX_8BIT, 0x4086, 0x00 },
1833 { IMX_8BIT, 0x4087, 0x00 },
1834 { IMX_8BIT, 0x4400, 0x00 },
1835
1836 /* Global Timing Setting */
1837 { IMX_8BIT, 0x0830, 0x77 },
1838 { IMX_8BIT, 0x0831, 0x2F },
1839 { IMX_8BIT, 0x0832, 0x5F },
1840 { IMX_8BIT, 0x0833, 0x37 },
1841 { IMX_8BIT, 0x0834, 0x37 },
1842 { IMX_8BIT, 0x0835, 0x37 },
1843 { IMX_8BIT, 0x0836, 0xBF },
1844 { IMX_8BIT, 0x0837, 0x3F },
1845 { IMX_8BIT, 0x0839, 0x1F },
1846 { IMX_8BIT, 0x083A, 0x17 },
1847 { IMX_8BIT, 0x083B, 0x02 },
1848
1849
1850 /* Integration Time Settin */
1851 { IMX_8BIT, 0x0202, 0x09 },
1852 { IMX_8BIT, 0x0203, 0xD2 },
1853
1854 /* HDR Setting */
1855 { IMX_8BIT, 0x0230, 0x00 },
1856 { IMX_8BIT, 0x0231, 0x00 },
1857 { IMX_8BIT, 0x0233, 0x00 },
1858 { IMX_8BIT, 0x0234, 0x00 },
1859 { IMX_8BIT, 0x0235, 0x40 },
1860 { IMX_8BIT, 0x0238, 0x00 },
1861 { IMX_8BIT, 0x0239, 0x04 },
1862 { IMX_8BIT, 0x023B, 0x00 },
1863 { IMX_8BIT, 0x023C, 0x01 },
1864 { IMX_8BIT, 0x33B0, 0x04 },
1865 { IMX_8BIT, 0x33B1, 0x00 },
1866 { IMX_8BIT, 0x33B3, 0x00 },
1867 { IMX_8BIT, 0x33B4, 0x01 },
1868 { IMX_8BIT, 0x3800, 0x00 },
1869 { IMX_TOK_TERM, 0, 0 }
1870 };
1871 /* 4 lane for 480p dvs, default 60fps, vendor provide */
1872 static struct imx_reg const imx134_880_592[] = {
1873 GROUPED_PARAMETER_HOLD_ENABLE,
1874 /* mode set clear */
1875 { IMX_8BIT, 0x3A43, 0x01 },
1876 /* Clock Setting */
1877 { IMX_8BIT, 0x011E, 0x13 },
1878 { IMX_8BIT, 0x011F, 0x33 },
1879 { IMX_8BIT, 0x0301, 0x05 },
1880 { IMX_8BIT, 0x0303, 0x01 },
1881 { IMX_8BIT, 0x0305, 0x0C },
1882 { IMX_8BIT, 0x0309, 0x05 },
1883 { IMX_8BIT, 0x030B, 0x01 },
1884 { IMX_8BIT, 0x030C, 0x01 },
1885 { IMX_8BIT, 0x030D, 0xC8 },
1886 { IMX_8BIT, 0x030E, 0x01 },
1887 { IMX_8BIT, 0x3A06, 0x11 },
1888
1889 /* Mode setting */
1890 { IMX_8BIT, 0x0108, 0x03 },
1891 { IMX_8BIT, 0x0112, 0x0A },
1892 { IMX_8BIT, 0x0113, 0x0A },
1893 { IMX_8BIT, 0x0381, 0x01 },
1894 { IMX_8BIT, 0x0383, 0x01 },
1895 { IMX_8BIT, 0x0385, 0x01 },
1896 { IMX_8BIT, 0x0387, 0x01 },
1897 { IMX_8BIT, 0x0390, 0x01 }, /* binning*/
1898 { IMX_8BIT, 0x0391, 0x22 }, /* 2x2 binning */
1899 { IMX_8BIT, 0x0392, 0x00 },
1900 { IMX_8BIT, 0x0401, 0x02 }, /* H/V resize */
1901 { IMX_8BIT, 0x0404, 0x00 },
1902 { IMX_8BIT, 0x0405, 0x1D }, /* downscaling ratio = 16/29 */
1903 { IMX_8BIT, 0x4082, 0x00 },
1904 { IMX_8BIT, 0x4083, 0x00 },
1905 { IMX_8BIT, 0x7006, 0x04 },
1906
1907 /* OptionnalFunction settig */
1908 { IMX_8BIT, 0x0700, 0x00 },
1909 { IMX_8BIT, 0x3A63, 0x00 },
1910 { IMX_8BIT, 0x4100, 0xF8 },
1911 { IMX_8BIT, 0x4203, 0xFF },
1912 { IMX_8BIT, 0x4344, 0x00 },
1913 { IMX_8BIT, 0x441C, 0x01 },
1914
1915 /* Size setting */
1916 { IMX_8BIT, 0x0344, 0x00 }, /* x_addr_start[15:8]:44 */
1917 { IMX_8BIT, 0x0345, 0x2C }, /* x_addr_start[7:0] */
1918 { IMX_8BIT, 0x0346, 0x00 }, /* y_addr_start[15:8]:160 */
1919 { IMX_8BIT, 0x0347, 0xA0 }, /* y_addr_start[7:0] */
1920 { IMX_8BIT, 0x0348, 0x0C }, /* x_addr_end[15:8]:3235 */
1921 { IMX_8BIT, 0x0349, 0xA3 }, /* x_addr_end[7:0] */
1922 { IMX_8BIT, 0x034A, 0x09 }, /* y_addr_end[15:8]:2307 */
1923 { IMX_8BIT, 0x034B, 0x03 }, /* y_addr_end[7:0] */
1924 { IMX_8BIT, 0x034C, 0x03 }, /* x_output_size[15:8]:880 */
1925 { IMX_8BIT, 0x034D, 0x70 }, /* x_output_size[7:0] */
1926 { IMX_8BIT, 0x034E, 0x02 }, /* y_output_size[15:8]:592 */
1927 { IMX_8BIT, 0x034F, 0x50 }, /* y_output_size[7:0] */
1928 { IMX_8BIT, 0x0350, 0x00 },
1929 { IMX_8BIT, 0x0351, 0x00 },
1930 { IMX_8BIT, 0x0352, 0x00 },
1931 { IMX_8BIT, 0x0353, 0x00 },
1932 { IMX_8BIT, 0x0354, 0x06 },
1933 { IMX_8BIT, 0x0355, 0x3C },
1934 { IMX_8BIT, 0x0356, 0x04 },
1935 { IMX_8BIT, 0x0357, 0x32 },
1936 { IMX_8BIT, 0x301D, 0x30 },
1937 { IMX_8BIT, 0x3310, 0x03 },
1938 { IMX_8BIT, 0x3311, 0x70 },
1939 { IMX_8BIT, 0x3312, 0x02 },
1940 { IMX_8BIT, 0x3313, 0x50 },
1941 { IMX_8BIT, 0x331C, 0x04 },
1942 { IMX_8BIT, 0x331D, 0x4C },
1943 { IMX_8BIT, 0x4084, 0x03 },
1944 { IMX_8BIT, 0x4085, 0x70 },
1945 { IMX_8BIT, 0x4086, 0x02 },
1946 { IMX_8BIT, 0x4087, 0x50 },
1947 { IMX_8BIT, 0x4400, 0x00 },
1948
1949 /* Global Timing Setting */
1950 { IMX_8BIT, 0x0830, 0x77 },
1951 { IMX_8BIT, 0x0831, 0x2F },
1952 { IMX_8BIT, 0x0832, 0x5F },
1953 { IMX_8BIT, 0x0833, 0x37 },
1954 { IMX_8BIT, 0x0834, 0x37 },
1955 { IMX_8BIT, 0x0835, 0x37 },
1956 { IMX_8BIT, 0x0836, 0xBF },
1957 { IMX_8BIT, 0x0837, 0x3F },
1958 { IMX_8BIT, 0x0839, 0x1F },
1959 { IMX_8BIT, 0x083A, 0x17 },
1960 { IMX_8BIT, 0x083B, 0x02 },
1961
1962
1963 /* Integration Time Settin */
1964 { IMX_8BIT, 0x0202, 0x05 },
1965 { IMX_8BIT, 0x0203, 0x42 },
1966
1967 /* HDR Setting */
1968 { IMX_8BIT, 0x0230, 0x00 },
1969 { IMX_8BIT, 0x0231, 0x00 },
1970 { IMX_8BIT, 0x0233, 0x00 },
1971 { IMX_8BIT, 0x0234, 0x00 },
1972 { IMX_8BIT, 0x0235, 0x40 },
1973 { IMX_8BIT, 0x0238, 0x00 },
1974 { IMX_8BIT, 0x0239, 0x04 },
1975 { IMX_8BIT, 0x023B, 0x00 },
1976 { IMX_8BIT, 0x023C, 0x01 },
1977 { IMX_8BIT, 0x33B0, 0x04 },
1978 { IMX_8BIT, 0x33B1, 0x00 },
1979 { IMX_8BIT, 0x33B3, 0x00 },
1980 { IMX_8BIT, 0x33B4, 0x01 },
1981 { IMX_8BIT, 0x3800, 0x00 },
1982 { IMX_TOK_TERM, 0, 0 }
1983 };
1984 static struct imx_reg const imx134_2336_1308_60fps[] = {
1985 GROUPED_PARAMETER_HOLD_ENABLE,
1986 /* mode set clear */
1987 { IMX_8BIT, 0x3A43, 0x01 },
1988 /* Clock Setting */
1989 { IMX_8BIT, 0x011E, 0x13 },
1990 { IMX_8BIT, 0x011F, 0x33 },
1991 { IMX_8BIT, 0x0301, 0x05 },
1992 { IMX_8BIT, 0x0303, 0x01 },
1993 { IMX_8BIT, 0x0305, 0x0C },
1994 { IMX_8BIT, 0x0309, 0x05 },
1995 { IMX_8BIT, 0x030B, 0x01 },
1996 { IMX_8BIT, 0x030C, 0x01 },
1997 { IMX_8BIT, 0x030D, 0xC8 },
1998 { IMX_8BIT, 0x030E, 0x01 },
1999 { IMX_8BIT, 0x3A06, 0x11 },
2000
2001 /* Mode setting */
2002 { IMX_8BIT, 0x0108, 0x03 },
2003 { IMX_8BIT, 0x0112, 0x0A },
2004 { IMX_8BIT, 0x0113, 0x0A },
2005 { IMX_8BIT, 0x0381, 0x01 },
2006 { IMX_8BIT, 0x0383, 0x01 },
2007 { IMX_8BIT, 0x0385, 0x01 },
2008 { IMX_8BIT, 0x0387, 0x01 },
2009 { IMX_8BIT, 0x0390, 0x00 }, /* binning*/
2010 { IMX_8BIT, 0x0391, 0x11 }, /* 2x2 binning */
2011 { IMX_8BIT, 0x0392, 0x00 },
2012 { IMX_8BIT, 0x0401, 0x00 }, /* H/V resize */
2013 { IMX_8BIT, 0x0404, 0x00 },
2014 { IMX_8BIT, 0x0405, 0x10 }, /* down scaling 16/16 = 1 */
2015 { IMX_8BIT, 0x4082, 0x01 },
2016 { IMX_8BIT, 0x4083, 0x01 },
2017 { IMX_8BIT, 0x7006, 0x04 },
2018
2019 /* OptionnalFunction settig */
2020 { IMX_8BIT, 0x0700, 0x00 },
2021 { IMX_8BIT, 0x3A63, 0x00 },
2022 { IMX_8BIT, 0x4100, 0xF8 },
2023 { IMX_8BIT, 0x4203, 0xFF },
2024 { IMX_8BIT, 0x4344, 0x00 },
2025 { IMX_8BIT, 0x441C, 0x01 },
2026
2027 /* Size setting */
2028 { IMX_8BIT, 0x0344, 0x01 }, /* x_addr_start[15:8]:72 */
2029 { IMX_8BIT, 0x0345, 0xD8 }, /* x_addr_start[7:0] */
2030 { IMX_8BIT, 0x0346, 0x02 }, /* y_addr_start[15:8]:356 */
2031 { IMX_8BIT, 0x0347, 0x44 }, /* y_addr_start[7:0] */
2032 { IMX_8BIT, 0x0348, 0x0A }, /* x_addr_end[15:8]:3207 */
2033 { IMX_8BIT, 0x0349, 0xF7 }, /* x_addr_end[7:0] */
2034 { IMX_8BIT, 0x034A, 0x07 }, /* y_addr_end[15:8]:2107 */
2035 { IMX_8BIT, 0x034B, 0x5F+4 }, /* y_addr_end[7:0] */
2036 { IMX_8BIT, 0x034C, 0x09 }, /* x_output_size[15:8]:1568 */
2037 { IMX_8BIT, 0x034D, 0x20 }, /* x_output_size[7:0] */
2038 { IMX_8BIT, 0x034E, 0x05 }, /* y_output_size[15:8]:876 */
2039 { IMX_8BIT, 0x034F, 0x1C+4 }, /* y_output_size[7:0] */
2040 { IMX_8BIT, 0x0350, 0x00 },
2041 { IMX_8BIT, 0x0351, 0x00 },
2042 { IMX_8BIT, 0x0352, 0x00 },
2043 { IMX_8BIT, 0x0353, 0x00 },
2044 { IMX_8BIT, 0x0354, 0x09 },
2045 { IMX_8BIT, 0x0355, 0x20 },
2046 { IMX_8BIT, 0x0356, 0x05 },
2047 { IMX_8BIT, 0x0357, 0x1C+4 },
2048 { IMX_8BIT, 0x301D, 0x30 },
2049 { IMX_8BIT, 0x3310, 0x09 },
2050 { IMX_8BIT, 0x3311, 0x20 },
2051 { IMX_8BIT, 0x3312, 0x05 },
2052 { IMX_8BIT, 0x3313, 0x1C+4 },
2053 { IMX_8BIT, 0x331C, 0x03 },
2054 { IMX_8BIT, 0x331D, 0xE8 },
2055 { IMX_8BIT, 0x4084, 0x00 },
2056 { IMX_8BIT, 0x4085, 0x00 },
2057 { IMX_8BIT, 0x4086, 0x00 },
2058 { IMX_8BIT, 0x4087, 0x00 },
2059 { IMX_8BIT, 0x4400, 0x00 },
2060
2061 /* Global Timing Setting */
2062 { IMX_8BIT, 0x0830, 0x77 },
2063 { IMX_8BIT, 0x0831, 0x2F },
2064 { IMX_8BIT, 0x0832, 0x5F },
2065 { IMX_8BIT, 0x0833, 0x37 },
2066 { IMX_8BIT, 0x0834, 0x37 },
2067 { IMX_8BIT, 0x0835, 0x37 },
2068 { IMX_8BIT, 0x0836, 0xBF },
2069 { IMX_8BIT, 0x0837, 0x3F },
2070 { IMX_8BIT, 0x0839, 0x1F },
2071 { IMX_8BIT, 0x083A, 0x17 },
2072 { IMX_8BIT, 0x083B, 0x02 },
2073
2074 /* Integration Time Settin */
2075 { IMX_8BIT, 0x0202, 0x05 },
2076 { IMX_8BIT, 0x0203, 0x42 },
2077
2078 /* HDR Setting */
2079 { IMX_8BIT, 0x0230, 0x00 },
2080 { IMX_8BIT, 0x0231, 0x00 },
2081 { IMX_8BIT, 0x0233, 0x00 },
2082 { IMX_8BIT, 0x0234, 0x00 },
2083 { IMX_8BIT, 0x0235, 0x40 },
2084 { IMX_8BIT, 0x0238, 0x00 },
2085 { IMX_8BIT, 0x0239, 0x04 },
2086 { IMX_8BIT, 0x023B, 0x00 },
2087 { IMX_8BIT, 0x023C, 0x01 },
2088 { IMX_8BIT, 0x33B0, 0x04 },
2089 { IMX_8BIT, 0x33B1, 0x00 },
2090 { IMX_8BIT, 0x33B3, 0x00 },
2091 { IMX_8BIT, 0x33B4, 0x01 },
2092 { IMX_8BIT, 0x3800, 0x00 },
2093 { IMX_TOK_TERM, 0, 0 }
2094 };
2095
2096 struct imx_resolution imx134_res_preview[] = {
2097 {
2098 .desc = "imx134_CIF_30fps",
2099 .regs = imx134_720_592_30fps,
2100 .width = 720,
2101 .height = 592,
2102 .fps_options = {
2103 {
2104 .fps = 30,
2105 .pixels_per_line = 3600,
2106 .lines_per_frame = 2518,
2107 },
2108 {
2109 }
2110 },
2111 .bin_factor_x = 2,
2112 .bin_factor_y = 2,
2113 .used = 0,
2114 },
2115 {
2116 .desc = "imx134_820_552_30fps_preview",
2117 .regs = imx134_820_552_30fps,
2118 .width = 820,
2119 .height = 552,
2120 .fps_options = {
2121 {
2122 .fps = 30,
2123 .pixels_per_line = 3600,
2124 .lines_per_frame = 2518,
2125 },
2126 {
2127 }
2128 },
2129 .bin_factor_x = 2,
2130 .bin_factor_y = 2,
2131 .used = 0,
2132 },
2133 {
2134 .desc = "imx134_820_616_preview_30fps",
2135 .regs = imx134_820_616_30fps,
2136 .width = 820,
2137 .height = 616,
2138 .fps_options = {
2139 {
2140 .fps = 30,
2141 .pixels_per_line = 3600,
2142 .lines_per_frame = 2518,
2143 },
2144 {
2145 }
2146 },
2147 .bin_factor_x = 2,
2148 .bin_factor_y = 2,
2149 .used = 0,
2150 },
2151 {
2152 .desc = "imx134_1080p_preview_30fps",
2153 .regs = imx134_1936_1096_30fps_v2,
2154 .width = 1936,
2155 .height = 1096,
2156 .fps_options = {
2157 {
2158 .fps = 30,
2159 .pixels_per_line = 3600,
2160 .lines_per_frame = 2518,
2161 },
2162 {
2163 }
2164 },
2165 .bin_factor_x = 0,
2166 .bin_factor_y = 0,
2167 .used = 0,
2168 },
2169 {
2170 .desc = "imx134_1640_1232_preview_30fps",
2171 .regs = imx134_1640_1232_30fps,
2172 .width = 1640,
2173 .height = 1232,
2174 .fps_options = {
2175 {
2176 .fps = 30,
2177 .pixels_per_line = 3600,
2178 .lines_per_frame = 2518,
2179 },
2180 {
2181 }
2182 },
2183 .bin_factor_x = 1,
2184 .bin_factor_y = 1,
2185 .used = 0,
2186 },
2187 {
2188 .desc = "imx134_8M_preview_30fps",
2189 .regs = imx134_8M_30fps,
2190 .width = 3280,
2191 .height = 2464,
2192 .fps_options = {
2193 {
2194 .fps = 30,
2195 .pixels_per_line = 3600,
2196 .lines_per_frame = 2518,
2197 },
2198 {
2199 }
2200 },
2201 .bin_factor_x = 0,
2202 .bin_factor_y = 0,
2203 .used = 0,
2204 },
2205 };
2206
2207 struct imx_resolution imx134_res_still[] = {
2208 {
2209 .desc = "imx134_CIF_30fps",
2210 .regs = imx134_1424_1168_30fps,
2211 .width = 1424,
2212 .height = 1168,
2213 .fps_options = {
2214 {
2215 .fps = 30,
2216 .pixels_per_line = 3600,
2217 .lines_per_frame = 2518,
2218 },
2219 {
2220 }
2221 },
2222 .bin_factor_x = 1,
2223 .bin_factor_y = 1,
2224 .used = 0,
2225 },
2226 {
2227 .desc = "imx134_VGA_still_30fps",
2228 .regs = imx134_1640_1232_30fps,
2229 .width = 1640,
2230 .height = 1232,
2231 .fps_options = {
2232 {
2233 .fps = 30,
2234 .pixels_per_line = 3600,
2235 .lines_per_frame = 2518,
2236 },
2237 {
2238 }
2239 },
2240 .bin_factor_x = 1,
2241 .bin_factor_y = 1,
2242 .used = 0,
2243 },
2244 {
2245 .desc = "imx134_1080p_still_30fps",
2246 .regs = imx134_1936_1096_30fps_v2,
2247 .width = 1936,
2248 .height = 1096,
2249 .fps_options = {
2250 {
2251 .fps = 30,
2252 .pixels_per_line = 3600,
2253 .lines_per_frame = 2518,
2254 },
2255 {
2256 }
2257 },
2258 .bin_factor_x = 0,
2259 .bin_factor_y = 0,
2260 .used = 0,
2261 },
2262 {
2263 .desc = "imx134_1640_1232_still_30fps",
2264 .regs = imx134_1640_1232_30fps,
2265 .width = 1640,
2266 .height = 1232,
2267 .fps_options = {
2268 {
2269 .fps = 30,
2270 .pixels_per_line = 3600,
2271 .lines_per_frame = 2518,
2272 },
2273 {
2274 }
2275 },
2276 .bin_factor_x = 1,
2277 .bin_factor_y = 1,
2278 .used = 0,
2279 },
2280 {
2281 .desc = "imx134_8M_still_30fps",
2282 .regs = imx134_8M_30fps,
2283 .width = 3280,
2284 .height = 2464,
2285 .fps_options = {
2286 {
2287 /* WORKAROUND for FW performance limitation */
2288 .fps = 8,
2289 .pixels_per_line = 6400,
2290 .lines_per_frame = 5312,
2291 },
2292 {
2293 .fps = 30,
2294 .pixels_per_line = 3600,
2295 .lines_per_frame = 2518,
2296 },
2297 {
2298 }
2299 },
2300 .bin_factor_x = 0,
2301 .bin_factor_y = 0,
2302 .used = 0,
2303 },
2304 };
2305
2306 struct imx_resolution imx134_res_video[] = {
2307 {
2308 .desc = "imx134_QCIF_DVS_30fps",
2309 .regs = imx134_240_196_30fps,
2310 .width = 240,
2311 .height = 196,
2312 .fps_options = {
2313 {
2314 .fps = 30,
2315 .pixels_per_line = 3600,
2316 .lines_per_frame = 2518,
2317 },
2318 {
2319 }
2320 },
2321 .bin_factor_x = 2,
2322 .bin_factor_y = 2,
2323 .used = 0,
2324 },
2325 {
2326 .desc = "imx134_CIF_DVS_30fps",
2327 .regs = imx134_448_366_30fps,
2328 .width = 448,
2329 .height = 366,
2330 .fps_options = {
2331 {
2332 .fps = 30,
2333 .pixels_per_line = 3600,
2334 .lines_per_frame = 2518,
2335 },
2336 {
2337 }
2338 },
2339 .bin_factor_x = 1,
2340 .bin_factor_y = 1,
2341 .used = 0,
2342 },
2343 {
2344 .desc = "imx134_VGA_30fps",
2345 .regs = imx134_820_616_30fps,
2346 .width = 820,
2347 .height = 616,
2348 .fps_options = {
2349 {
2350 .fps = 30,
2351 .pixels_per_line = 3600,
2352 .lines_per_frame = 2518,
2353 },
2354 {
2355 }
2356 },
2357 .bin_factor_x = 2,
2358 .bin_factor_y = 2,
2359 .used = 0,
2360 },
2361 {
2362 .desc = "imx134_480p",
2363 .regs = imx134_880_592,
2364 .width = 880,
2365 .height = 592,
2366 .fps_options = {
2367 {
2368 .fps = 30,
2369 .pixels_per_line = 3600,
2370 .lines_per_frame = 2700,
2371 },
2372 {
2373 .fps = 60,
2374 .pixels_per_line = 3600,
2375 .lines_per_frame = 1350,
2376 },
2377 {
2378 }
2379 },
2380 .bin_factor_x = 1,
2381 .bin_factor_y = 1,
2382 .used = 0,
2383 },
2384 {
2385 .desc = "imx134_1568_880",
2386 .regs = imx134_1568_880,
2387 .width = 1568,
2388 .height = 880,
2389 .fps_options = {
2390 {
2391 .fps = 30,
2392 .pixels_per_line = 3600,
2393 .lines_per_frame = 2700,
2394 },
2395 {
2396 .fps = 60,
2397 .pixels_per_line = 3600,
2398 .lines_per_frame = 1350,
2399 },
2400 {
2401 }
2402 },
2403 .bin_factor_x = 1,
2404 .bin_factor_y = 1,
2405 .used = 0,
2406 },
2407 {
2408 .desc = "imx134_1080p_dvs_30fps",
2409 .regs = imx134_2336_1312_30fps,
2410 .width = 2336,
2411 .height = 1312,
2412 .fps_options = {
2413 {
2414 .fps = 30,
2415 .pixels_per_line = 3600,
2416 .lines_per_frame = 2518,
2417 },
2418 {
2419 }
2420 },
2421 .bin_factor_x = 0,
2422 .bin_factor_y = 0,
2423 .used = 0,
2424 },
2425 {
2426 .desc = "imx134_1080p_dvs_60fps",
2427 .regs = imx134_2336_1308_60fps,
2428 .width = 2336,
2429 .height = 1312,
2430 .fps_options = {
2431 {
2432 .fps = 60,
2433 .pixels_per_line = 3600,
2434 .lines_per_frame = 1350,
2435 },
2436 {
2437 }
2438 },
2439 .bin_factor_x = 0,
2440 .bin_factor_y = 0,
2441 .used = 0,
2442 },
2443 {
2444 /*This setting only be used for SDV mode*/
2445 .desc = "imx134_8M_sdv_30fps",
2446 .regs = imx134_8M_30fps,
2447 .width = 3280,
2448 .height = 2464,
2449 .fps_options = {
2450 {
2451 .fps = 30,
2452 .pixels_per_line = 3600,
2453 .lines_per_frame = 2518,
2454 },
2455 {
2456 }
2457 },
2458 .bin_factor_x = 0,
2459 .bin_factor_y = 0,
2460 .used = 0,
2461 },
2462 };
2463
2464 #endif
2465