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