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