]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blob - drivers/staging/media/atomisp/i2c/imx/imx227.h
staging/atomisp: Add support for the Intel IPU v2
[mirror_ubuntu-jammy-kernel.git] / drivers / staging / media / atomisp / i2c / imx / imx227.h
1 #ifndef __IMX227_H__
2 #define __IMX227_H__
3
4 #include "common.h"
5
6 #define IMX227_EMBEDDED_DATA_LINE_NUM 2
7 #define IMX227_OUTPUT_DATA_FORMAT_REG 0x0112
8 #define IMX227_OUTPUT_FORMAT_RAW10 0x0a0a
9
10 /* AE Bracketing Registers */
11 #define IMX227_BRACKETING_LUT_MODE_BIT_CONTINUE_STREAMING 0x1
12 #define IMX227_BRACKETING_LUT_MODE_BIT_LOOP_MODE 0x2
13
14 #define IMX227_BRACKETING_LUT_CONTROL 0x0E00
15 #define IMX227_BRACKETING_LUT_MODE 0x0E01
16 #define IMX227_BRACKETING_LUT_ENTRY_CONTROL 0x0E02
17
18 /*
19 * The imx135 embedded data info:
20 * embedded data line num: 2
21 * line 0 effective data size(byte): 76
22 * line 1 effective data size(byte): 113
23 */
24 static const uint32_t
25 imx227_embedded_effective_size[IMX227_EMBEDDED_DATA_LINE_NUM] = {160, 62};
26
27 /************************** settings for imx *************************/
28 /* Full Output Mode */
29 static struct imx_reg const imx_STILL_6_5M_25fps[] = {
30 GROUPED_PARAMETER_HOLD_ENABLE,
31 {IMX_8BIT, 0x6259, 0x06}, /* latency ctrl */
32 {IMX_8BIT, 0x9004, 0xd0}, /* preset_sel */
33 {IMX_8BIT, 0x9005, 0x3f}, /* preset_en */
34 {IMX_8BIT, 0x0136, 0x13},
35 {IMX_8BIT, 0x0137, 0x33},
36 {IMX_TOK_TERM, 0, 0}
37 };
38
39 /* 4:3 Output Mode */
40 static struct imx_reg const imx_STILL_5_5M_3X4_30fps[] = {
41 GROUPED_PARAMETER_HOLD_ENABLE,
42 {IMX_8BIT, 0x0344, 0x00},
43 {IMX_8BIT, 0x0345, 0xb0},
44 {IMX_8BIT, 0x0346, 0x00},
45 {IMX_8BIT, 0x0347, 0x00},
46 {IMX_8BIT, 0x0348, 0x08},
47 {IMX_8BIT, 0x0349, 0xaf},
48 {IMX_8BIT, 0x034a, 0x0a},
49 {IMX_8BIT, 0x034b, 0x9f},
50 {IMX_8BIT, 0x034c, 0x08},
51 {IMX_8BIT, 0x034d, 0x00},
52 {IMX_8BIT, 0x034e, 0x0a},
53 {IMX_8BIT, 0x034f, 0xa0},
54
55 {IMX_8BIT, 0x6259, 0x05}, /* latency ctrl */
56 {IMX_8BIT, 0x9004, 0xd8}, /* preset_sel */
57 {IMX_8BIT, 0x9005, 0x3f}, /* preset_en */
58 {IMX_8BIT, 0x0136, 0x13},
59 {IMX_8BIT, 0x0137, 0x33},
60 {IMX_TOK_TERM, 0, 0}
61 };
62
63 /* Square Output Mode */
64 static struct imx_reg const imx_STILL_5_7M_1X1_30fps[] = {
65 GROUPED_PARAMETER_HOLD_ENABLE,
66 {IMX_8BIT, 0x0344, 0x00},
67 {IMX_8BIT, 0x0345, 0x00},
68 {IMX_8BIT, 0x0346, 0x00},
69 {IMX_8BIT, 0x0347, 0xa0},
70 {IMX_8BIT, 0x0348, 0x09},
71 {IMX_8BIT, 0x0349, 0x5f},
72 {IMX_8BIT, 0x034a, 0x09},
73 {IMX_8BIT, 0x034b, 0xff},
74 {IMX_8BIT, 0x034c, 0x09},
75 {IMX_8BIT, 0x034d, 0x60},
76 {IMX_8BIT, 0x034e, 0x09},
77 {IMX_8BIT, 0x034f, 0x60},
78
79 {IMX_8BIT, 0x6259, 0x06}, /* latency ctrl */
80 {IMX_8BIT, 0x9004, 0xd4}, /* preset_sel */
81 {IMX_8BIT, 0x9005, 0x3f}, /* preset_en */
82 {IMX_8BIT, 0x0136, 0x13},
83 {IMX_8BIT, 0x0137, 0x33},
84 {IMX_TOK_TERM, 0, 0}
85 };
86
87 /* Full Frame 1080P Mode (use ISP scaler)*/
88 static struct imx_reg const imx_VIDEO_4M_9X16_30fps[] = {
89 GROUPED_PARAMETER_HOLD_ENABLE,
90 {IMX_8BIT, 0x6259, 0x05}, /* latency ctrl */
91 {IMX_8BIT, 0x9004, 0xdc}, /* preset_sel */
92 {IMX_8BIT, 0x9005, 0x3f}, /* preset_en */
93 {IMX_8BIT, 0x0136, 0x13},
94 {IMX_8BIT, 0x0137, 0x33},
95 {IMX_TOK_TERM, 0, 0}
96 };
97
98 /* Cropped 1080P Mode */
99 static struct imx_reg const imx_VIDEO_2M_9X16_45fps[] = {
100 GROUPED_PARAMETER_HOLD_ENABLE,
101 {IMX_8BIT, 0x0112, 0x0a},
102 {IMX_8BIT, 0x0113, 0x0a},
103 {IMX_8BIT, 0x0344, 0x02},
104 {IMX_8BIT, 0x0345, 0x8a},
105 {IMX_8BIT, 0x0346, 0x01},
106 {IMX_8BIT, 0x0347, 0x88},
107 {IMX_8BIT, 0x0348, 0x06},
108 {IMX_8BIT, 0x0349, 0xd1},
109 {IMX_8BIT, 0x034a, 0x09},
110 {IMX_8BIT, 0x034b, 0x17},
111 {IMX_8BIT, 0x034c, 0x04},
112 {IMX_8BIT, 0x034d, 0x48},
113 {IMX_8BIT, 0x034e, 0x07},
114 {IMX_8BIT, 0x034f, 0x90},
115
116 {IMX_8BIT, 0x0380, 0x00},
117 {IMX_8BIT, 0x0381, 0x01},
118 {IMX_8BIT, 0x0382, 0x00},
119 {IMX_8BIT, 0x0383, 0x01},
120 {IMX_8BIT, 0x0384, 0x00},
121 {IMX_8BIT, 0x0385, 0x01},
122 {IMX_8BIT, 0x0386, 0x00},
123 {IMX_8BIT, 0x0387, 0x01},
124
125 {IMX_8BIT, 0x0408, 0x00},
126 {IMX_8BIT, 0x0409, 0x00},
127 {IMX_8BIT, 0x040a, 0x00},
128 {IMX_8BIT, 0x040b, 0x00},
129 {IMX_8BIT, 0x040c, 0x04},
130 {IMX_8BIT, 0x040d, 0x48},
131 {IMX_8BIT, 0x040e, 0x07},
132 {IMX_8BIT, 0x040f, 0x90},
133
134 {IMX_8BIT, 0x0900, 0x00},
135 {IMX_8BIT, 0x0901, 0x00},
136
137 {IMX_8BIT, 0x6259, 0x05}, /* latency ctrl */
138 {IMX_8BIT, 0x9004, 0xdc}, /* preset_sel */
139 {IMX_8BIT, 0x9005, 0x3c}, /* preset_en */
140
141 {IMX_8BIT, 0x0136, 0x13},
142 {IMX_8BIT, 0x0137, 0x33},
143 {IMX_TOK_TERM, 0, 0}
144 };
145
146 /* Moment mode */
147 static struct imx_reg const imx_VIDEO_1_3M_3X4_60fps[] = {
148 GROUPED_PARAMETER_HOLD_ENABLE,
149 {IMX_8BIT, 0x6259, 0x05}, /* latency ctrl */
150 {IMX_8BIT, 0x9004, 0xd9}, /* preset_sel */
151 {IMX_8BIT, 0x9005, 0x3f}, /* preset_en */
152 {IMX_8BIT, 0x0136, 0x13},
153 {IMX_8BIT, 0x0137, 0x33},
154 {IMX_TOK_TERM, 0, 0}
155 };
156
157 /* High Speed 3:4 mode */
158 static struct imx_reg const imx_VIDEO_VGA_3X4_120fps[] = {
159 GROUPED_PARAMETER_HOLD_ENABLE,
160 {IMX_8BIT, 0x9004, 0xca}, /* preset_sel */
161 {IMX_8BIT, 0x9005, 0x3f}, /* preset_en */
162 {IMX_8BIT, 0x0136, 0x13},
163 {IMX_8BIT, 0x0137, 0x33},
164 {IMX_TOK_TERM, 0, 0}
165 };
166
167
168 /* Binned 720P mode */
169 static struct imx_reg const imx_VIDEO_1M_9X16_60fps[] = {
170 GROUPED_PARAMETER_HOLD_ENABLE,
171 {IMX_8BIT, 0x0112, 0x0a},
172 {IMX_8BIT, 0x0113, 0x0a},
173 {IMX_8BIT, 0x0344, 0x01},
174 {IMX_8BIT, 0x0345, 0xd0},
175 {IMX_8BIT, 0x0346, 0x00},
176 {IMX_8BIT, 0x0347, 0x40},
177 {IMX_8BIT, 0x0348, 0x07},
178 {IMX_8BIT, 0x0349, 0x8f},
179 {IMX_8BIT, 0x034a, 0x0a},
180 {IMX_8BIT, 0x034b, 0x5f},
181 {IMX_8BIT, 0x034c, 0x02},
182 {IMX_8BIT, 0x034d, 0xe0},
183 {IMX_8BIT, 0x034e, 0x05},
184 {IMX_8BIT, 0x034f, 0x10},
185
186 {IMX_8BIT, 0x0380, 0x00},
187 {IMX_8BIT, 0x0381, 0x01},
188 {IMX_8BIT, 0x0382, 0x00},
189 {IMX_8BIT, 0x0383, 0x01},
190 {IMX_8BIT, 0x0384, 0x00},
191 {IMX_8BIT, 0x0385, 0x01},
192 {IMX_8BIT, 0x0386, 0x00},
193 {IMX_8BIT, 0x0387, 0x01},
194
195 {IMX_8BIT, 0x0408, 0x00},
196 {IMX_8BIT, 0x0409, 0x00},
197 {IMX_8BIT, 0x040a, 0x00},
198 {IMX_8BIT, 0x040b, 0x00},
199 {IMX_8BIT, 0x040c, 0x02},
200 {IMX_8BIT, 0x040d, 0xe0},
201 {IMX_8BIT, 0x040e, 0x05},
202 {IMX_8BIT, 0x040f, 0x10},
203
204 {IMX_8BIT, 0x0900, 0x01},
205 {IMX_8BIT, 0x0901, 0x22},
206
207 {IMX_8BIT, 0x6259, 0x05}, /* latency ctrl */
208 {IMX_8BIT, 0x9004, 0xdd}, /* preset_sel */
209 {IMX_8BIT, 0x9005, 0x3c}, /* preset_en */
210 {IMX_8BIT, 0x0136, 0x13},
211 {IMX_8BIT, 0x0137, 0x33},
212 {IMX_TOK_TERM, 0, 0}
213 };
214
215 /* Binned 496x868 mode */
216 static struct imx_reg const imx_VIDEO_496x868_30fps[] = {
217 GROUPED_PARAMETER_HOLD_ENABLE,
218 {IMX_8BIT, 0x0112, 0x0a},
219 {IMX_8BIT, 0x0113, 0x0a},
220 {IMX_8BIT, 0x0344, 0x02},
221 {IMX_8BIT, 0x0345, 0xc0},
222 {IMX_8BIT, 0x0346, 0x01},
223 {IMX_8BIT, 0x0347, 0xec},
224 {IMX_8BIT, 0x0348, 0x06},
225 {IMX_8BIT, 0x0349, 0x9f},
226 {IMX_8BIT, 0x034a, 0x08},
227 {IMX_8BIT, 0x034b, 0xb3},
228 {IMX_8BIT, 0x034c, 0x01},
229 {IMX_8BIT, 0x034d, 0xf0},
230 {IMX_8BIT, 0x034e, 0x03},
231 {IMX_8BIT, 0x034f, 0x64},
232
233 {IMX_8BIT, 0x0380, 0x00},
234 {IMX_8BIT, 0x0381, 0x01},
235 {IMX_8BIT, 0x0382, 0x00},
236 {IMX_8BIT, 0x0383, 0x01},
237 {IMX_8BIT, 0x0384, 0x00},
238 {IMX_8BIT, 0x0385, 0x01},
239 {IMX_8BIT, 0x0386, 0x00},
240 {IMX_8BIT, 0x0387, 0x01},
241
242 {IMX_8BIT, 0x0408, 0x00},
243 {IMX_8BIT, 0x0409, 0x00},
244 {IMX_8BIT, 0x040a, 0x00},
245 {IMX_8BIT, 0x040b, 0x00},
246 {IMX_8BIT, 0x040c, 0x01},
247 {IMX_8BIT, 0x040d, 0xf0},
248 {IMX_8BIT, 0x040e, 0x03},
249 {IMX_8BIT, 0x040f, 0x64},
250
251 {IMX_8BIT, 0x0900, 0x01},
252 {IMX_8BIT, 0x0901, 0x22},
253
254 {IMX_8BIT, 0x6259, 0x05}, /* latency ctrl */
255 {IMX_8BIT, 0x9004, 0xdd}, /* preset_sel */
256 {IMX_8BIT, 0x9005, 0x3c}, /* preset_en */
257 {IMX_8BIT, 0x0136, 0x13},
258 {IMX_8BIT, 0x0137, 0x33},
259 {IMX_TOK_TERM, 0, 0}
260 };
261
262
263 /* Hangout mode */
264 static struct imx_reg const imx_PREVIEW_374X652_30fps[] = {
265 GROUPED_PARAMETER_HOLD_ENABLE,
266 {IMX_8BIT, 0x0112, 0x0a},
267 {IMX_8BIT, 0x0113, 0x0a},
268 {IMX_8BIT, 0x0344, 0x01},
269 {IMX_8BIT, 0x0345, 0xc0},
270 {IMX_8BIT, 0x0346, 0x00},
271 {IMX_8BIT, 0x0347, 0x30},
272 {IMX_8BIT, 0x0348, 0x07},
273 {IMX_8BIT, 0x0349, 0x9f},
274 {IMX_8BIT, 0x034a, 0x0a},
275 {IMX_8BIT, 0x034b, 0x6f},
276 {IMX_8BIT, 0x034c, 0x01},
277 {IMX_8BIT, 0x034d, 0x78},
278 {IMX_8BIT, 0x034e, 0x02},
279 {IMX_8BIT, 0x034f, 0x90},
280
281 {IMX_8BIT, 0x0380, 0x00},
282 {IMX_8BIT, 0x0381, 0x01},
283 {IMX_8BIT, 0x0382, 0x00},
284 {IMX_8BIT, 0x0383, 0x03},
285 {IMX_8BIT, 0x0384, 0x00},
286 {IMX_8BIT, 0x0385, 0x01},
287 {IMX_8BIT, 0x0386, 0x00},
288 {IMX_8BIT, 0x0387, 0x03},
289
290 {IMX_8BIT, 0x0408, 0x00},
291 {IMX_8BIT, 0x0409, 0x00},
292 {IMX_8BIT, 0x040a, 0x00},
293 {IMX_8BIT, 0x040b, 0x02},
294 {IMX_8BIT, 0x040c, 0x01},
295 {IMX_8BIT, 0x040d, 0x76},
296 {IMX_8BIT, 0x040e, 0x02},
297 {IMX_8BIT, 0x040f, 0x8c},
298
299 {IMX_8BIT, 0x0900, 0x01},
300 {IMX_8BIT, 0x0901, 0x22},
301
302 {IMX_8BIT, 0x6259, 0x05}, /* latency ctrl */
303 {IMX_8BIT, 0x9004, 0xde}, /* preset_sel */
304 {IMX_8BIT, 0x9005, 0x3c}, /* preset_en */
305 {IMX_8BIT, 0x0136, 0x13},
306 {IMX_8BIT, 0x0137, 0x33},
307 {IMX_TOK_TERM, 0, 0}
308 };
309
310 static struct imx_reg const imx_VIDEO_NHD_9X16_30fps[] = {
311 GROUPED_PARAMETER_HOLD_ENABLE,
312 {IMX_8BIT, 0x0112, 0x0a},
313 {IMX_8BIT, 0x0113, 0x0a},
314 {IMX_8BIT, 0x0344, 0x01},
315 {IMX_8BIT, 0x0345, 0xc0},
316 {IMX_8BIT, 0x0346, 0x00},
317 {IMX_8BIT, 0x0347, 0x30},
318 {IMX_8BIT, 0x0348, 0x07},
319 {IMX_8BIT, 0x0349, 0x9f},
320 {IMX_8BIT, 0x034a, 0x0a},
321 {IMX_8BIT, 0x034b, 0x6f},
322 {IMX_8BIT, 0x034c, 0x01},
323 {IMX_8BIT, 0x034d, 0x78},
324 {IMX_8BIT, 0x034e, 0x02},
325 {IMX_8BIT, 0x034f, 0x90},
326
327 {IMX_8BIT, 0x0380, 0x00},
328 {IMX_8BIT, 0x0381, 0x01},
329 {IMX_8BIT, 0x0382, 0x00},
330 {IMX_8BIT, 0x0383, 0x03},
331 {IMX_8BIT, 0x0384, 0x00},
332 {IMX_8BIT, 0x0385, 0x01},
333 {IMX_8BIT, 0x0386, 0x00},
334 {IMX_8BIT, 0x0387, 0x03},
335
336 {IMX_8BIT, 0x0408, 0x00},
337 {IMX_8BIT, 0x0409, 0x00},
338 {IMX_8BIT, 0x040a, 0x00},
339 {IMX_8BIT, 0x040b, 0x00},
340 {IMX_8BIT, 0x040c, 0x01},
341 {IMX_8BIT, 0x040d, 0x78},
342 {IMX_8BIT, 0x040e, 0x02},
343 {IMX_8BIT, 0x040f, 0x90},
344
345 {IMX_8BIT, 0x0900, 0x01},
346 {IMX_8BIT, 0x0901, 0x22},
347
348 {IMX_8BIT, 0x6259, 0x05}, /* latency ctrl */
349 {IMX_8BIT, 0x9004, 0xde}, /* preset_sel */
350 {IMX_8BIT, 0x9005, 0x3c}, /* preset_en */
351 {IMX_8BIT, 0x0136, 0x13},
352 {IMX_8BIT, 0x0137, 0x33},
353 {IMX_TOK_TERM, 0, 0}
354 };
355
356
357 static struct imx_reg const imx227_init_settings[] = {
358 {IMX_8BIT, 0x0100, 0x00}, /* mode_select */
359 GROUPED_PARAMETER_HOLD_ENABLE,
360 {IMX_8BIT, 0x0306, 0x00},
361 {IMX_8BIT, 0x0307, 0xBB},
362 {IMX_8BIT, 0x030E, 0x03},
363 {IMX_8BIT, 0x030F, 0x0D},
364 {IMX_8BIT, 0x463b, 0x30},
365 {IMX_8BIT, 0x463e, 0x05},
366 {IMX_8BIT, 0x4612, 0x66},
367 {IMX_8BIT, 0x4815, 0x65},
368 {IMX_8BIT, 0x4991, 0x00},
369 {IMX_8BIT, 0x4992, 0x01},
370 {IMX_8BIT, 0x4993, 0xff},
371 {IMX_8BIT, 0x458b, 0x00},
372 {IMX_8BIT, 0x452a, 0x02},
373 {IMX_8BIT, 0x4a7c, 0x00},
374 {IMX_8BIT, 0x4a7d, 0x1c},
375 {IMX_8BIT, 0x4a7e, 0x00},
376 {IMX_8BIT, 0x4a7f, 0x17},
377 {IMX_8BIT, 0x462C, 0x2E},
378 {IMX_8BIT, 0x461B, 0x28},
379 {IMX_8BIT, 0x4663, 0x29},
380 {IMX_8BIT, 0x461A, 0x7C},
381 {IMX_8BIT, 0x4619, 0x28},
382 {IMX_8BIT, 0x4667, 0x22},
383 {IMX_8BIT, 0x466B, 0x23},
384 {IMX_8BIT, 0x40AD, 0xFF},
385 {IMX_8BIT, 0x40BE, 0x00},
386 {IMX_8BIT, 0x40BF, 0x6E},
387 {IMX_8BIT, 0x40CE, 0x00},
388 {IMX_8BIT, 0x40CF, 0x0A},
389 {IMX_8BIT, 0x40CA, 0x00},
390 {IMX_8BIT, 0x40CB, 0x1F},
391 {IMX_8BIT, 0x4D16, 0x00},
392 {IMX_8BIT, 0x6204, 0x01},
393 {IMX_8BIT, 0x6209, 0x00},
394 {IMX_8BIT, 0x621F, 0x01},
395 {IMX_8BIT, 0x621E, 0x10},
396 GROUPED_PARAMETER_HOLD_DISABLE,
397 {IMX_TOK_TERM, 0, 0}
398 };
399
400 /* TODO settings of preview/still/video will be updated with new use case */
401 struct imx_resolution imx227_res_preview[] = {
402 {
403 .desc = "imx_PREVIEW_374X652_30fps",
404 .regs = imx_PREVIEW_374X652_30fps,
405 .width = 374,
406 .height = 652,
407 .bin_factor_x = 2,
408 .bin_factor_y = 2,
409 .mipi_freq = 499000,
410 .used = 0,
411 .fps_options = {
412 {
413 .fps = 30,
414 .pixels_per_line = 0x0E70,
415 .lines_per_frame = 0x0C0A,
416 },
417 {
418 }
419 },
420 },
421 {
422 .desc = "imx_VIDEO_496x868_30fps",
423 .regs = imx_VIDEO_496x868_30fps,
424 .width = 496,
425 .height = 868,
426 .bin_factor_x = 1,
427 .bin_factor_y = 1,
428 .mipi_freq = 499000,
429 .used = 0,
430 .fps_options = {
431 {
432 .fps = 30,
433 .pixels_per_line = 0x0E70,
434 .lines_per_frame = 0x0C08,
435 },
436 {
437 }
438 },
439 },
440 {
441 .desc = "imx_STILL_5_5M_3X4_30fps",
442 .regs = imx_STILL_5_5M_3X4_30fps,
443 .width = 2048,
444 .height = 2720,
445 .bin_factor_x = 0,
446 .bin_factor_y = 0,
447 .mipi_freq = 499000,
448 .used = 0,
449 .fps_options = {
450 {
451 .fps = 30,
452 .pixels_per_line = 0x0ED8,
453 .lines_per_frame = 0x0BB8,
454 },
455 {
456 }
457 },
458
459 },
460 {
461 .desc = "imx_STILL_5_7M_1X1_30fps",
462 .regs = imx_STILL_5_7M_1X1_30fps,
463 .width = 2400,
464 .height = 2400,
465 .bin_factor_x = 0,
466 .bin_factor_y = 0,
467 .mipi_freq = 499000,
468 .used = 0,
469 .fps_options = {
470 {
471 .fps = 30,
472 .pixels_per_line = 0x1130,
473 .lines_per_frame = 0x0A1E,
474 },
475 {
476 }
477 },
478
479 },
480 {
481 .desc = "imx_STILL_6_5M_25fps",
482 .regs = imx_STILL_6_5M_25fps,
483 .width = 2400,
484 .height = 2720,
485 .bin_factor_x = 0,
486 .bin_factor_y = 0,
487 .mipi_freq = 499000,
488 .used = 0,
489 .fps_options = {
490 {
491 .fps = 25,
492 .pixels_per_line = 0x1130,
493 .lines_per_frame = 0x0C24,
494 },
495 {
496 }
497 },
498 }
499 };
500
501 struct imx_resolution imx227_res_still[] = {
502 {
503 .desc = "imx_STILL_5_5M_3X4_30fps",
504 .regs = imx_STILL_5_5M_3X4_30fps,
505 .width = 2048,
506 .height = 2720,
507 .bin_factor_x = 0,
508 .bin_factor_y = 0,
509 .mipi_freq = 499000,
510 .used = 0,
511 .fps_options = {
512 {
513 .fps = 6,
514 .pixels_per_line = 0x2130,
515 .lines_per_frame = 0x1A22,
516 },
517 {
518 .fps = 30,
519 .pixels_per_line = 0x0ED8,
520 .lines_per_frame = 0x0BB8,
521 },
522 {
523 }
524 },
525
526 },
527 {
528 .desc = "imx_STILL_5_7M_1X1_30fps",
529 .regs = imx_STILL_5_7M_1X1_30fps,
530 .width = 2400,
531 .height = 2400,
532 .bin_factor_x = 0,
533 .bin_factor_y = 0,
534 .mipi_freq = 499000,
535 .used = 0,
536 .fps_options = {
537 {
538 .fps = 6,
539 .pixels_per_line = 0x266E,
540 .lines_per_frame = 0x1704,
541 },
542 {
543 .fps = 30,
544 .pixels_per_line = 0x1130,
545 .lines_per_frame = 0x0A1E,
546 },
547 {
548 }
549 },
550
551 },
552 {
553 .desc = "imx_STILL_6_5M_25fps",
554 .regs = imx_STILL_6_5M_25fps,
555 .width = 2400,
556 .height = 2720,
557 .bin_factor_x = 0,
558 .bin_factor_y = 0,
559 .mipi_freq = 499000,
560 .used = 0,
561 .fps_options = {
562 {
563 .fps = 25,
564 .pixels_per_line = 0x1130,
565 .lines_per_frame = 0x0C24,
566 },
567 {
568 }
569 },
570 },
571 };
572
573 struct imx_resolution imx227_res_video[] = {
574 {
575 .desc = "imx_VIDEO_4M_9X16_30fps",
576 .regs = imx_VIDEO_4M_9X16_30fps,
577 .width = 1536,
578 .height = 2720,
579 .bin_factor_x = 0,
580 .bin_factor_y = 0,
581 .mipi_freq = 499000,
582 .used = 0,
583 .fps_options = {
584 {
585 .fps = 30,
586 .pixels_per_line = 0x0E70,
587 .lines_per_frame = 0x0C08,
588 },
589 {
590 }
591 },
592
593 },
594 {
595 .desc = "imx_VIDEO_2M_9X16_45fps",
596 .regs = imx_VIDEO_2M_9X16_45fps,
597 .width = 1096,
598 .height = 1936,
599 .bin_factor_x = 0,
600 .bin_factor_y = 0,
601 .mipi_freq = 499000,
602 .used = 0,
603 .fps_options = {
604 {
605 .fps = 30,
606 .pixels_per_line = 0x0E70,
607 .lines_per_frame = 0x0C08,
608 },
609 {
610 .fps = 45,
611 .pixels_per_line = 0x0E70,
612 .lines_per_frame = 0x0800,
613 },
614 {
615 }
616 },
617
618 },
619 {
620 .desc = "imx_VIDEO_1_3M_3X4_60fps",
621 .regs = imx_VIDEO_1_3M_3X4_60fps,
622 .width = 1024,
623 .height = 1360,
624 .bin_factor_x = 1,
625 .bin_factor_y = 1,
626 .mipi_freq = 499000,
627 .used = 0,
628 .fps_options = {
629 {
630 .fps = 60,
631 .pixels_per_line = 0x0E70,
632 .lines_per_frame = 0x0604,
633 },
634 {
635 }
636 },
637 },
638 {
639 .desc = "imx_VIDEO_496x868_30fps",
640 .regs = imx_VIDEO_496x868_30fps,
641 .width = 496,
642 .height = 868,
643 .bin_factor_x = 1,
644 .bin_factor_y = 1,
645 .mipi_freq = 499000,
646 .used = 0,
647 .fps_options = {
648 {
649 .fps = 30,
650 .pixels_per_line = 0x0E70,
651 .lines_per_frame = 0x0C08,
652 },
653 {
654 }
655 },
656 },
657 {
658 .desc = "imx_VIDEO_1M_9X16_60fps",
659 .regs = imx_VIDEO_1M_9X16_60fps,
660 .width = 736,
661 .height = 1296,
662 .bin_factor_x = 1,
663 .bin_factor_y = 1,
664 .mipi_freq = 499000,
665 .used = 0,
666 .fps_options = {
667 {
668 .fps = 60,
669 .pixels_per_line = 0x0E70,
670 .lines_per_frame = 0x0604,
671 },
672 {
673 .fps = 30,
674 .pixels_per_line = 0x0E70,
675 .lines_per_frame = 0x0C10,
676 },
677 {
678 }
679 },
680 },
681 {
682 .desc = "imx_VIDEO_VGA_3X4_120fps",
683 .regs = imx_VIDEO_VGA_3X4_120fps,
684 .width = 512,
685 .height = 680,
686 .bin_factor_x = 2,
687 .bin_factor_y = 2,
688 .mipi_freq = 499000,
689 .used = 0,
690 .fps_options = {
691 {
692 .fps = 120,
693 .pixels_per_line = 0x0E70,
694 .lines_per_frame = 0x0302,
695 },
696 {
697 .fps = 30,
698 .pixels_per_line = 0x0E70,
699 .lines_per_frame = 0x0C08,
700 },
701 {
702 }
703 },
704 },
705 {
706 .desc = "imx_VIDEO_NHD_9X16_30fps",
707 .regs = imx_VIDEO_NHD_9X16_30fps,
708 .width = 376,
709 .height = 656,
710 .bin_factor_x = 2,
711 .bin_factor_y = 2,
712 .mipi_freq = 499000,
713 .used = 0,
714 .fps_options = {
715 {
716 .fps = 30,
717 .pixels_per_line = 0x0E70,
718 .lines_per_frame = 0x0C0A,
719 },
720 {
721 }
722 },
723 },
724 };
725
726 #endif /* __IMX227_H__ */