GNU Linux-libre 4.14.302-gnu1
[releases.git] / drivers / staging / media / atomisp / i2c / imx / imx227.h
1 /* SPDX-License-Identifier: GPL-2.0 */
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  */
25 static const uint32_t
26 imx227_embedded_effective_size[IMX227_EMBEDDED_DATA_LINE_NUM] = {160, 62};
27
28 /************************** settings for imx *************************/
29 /* Full Output Mode */
30 static 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 */
41 static 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 */
65 static 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)*/
89 static 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 */
100 static 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 */
148 static 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 */
159 static 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 */
170 static 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 */
217 static 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 */
265 static 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
311 static 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
358 static 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 */
402 struct 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
502 struct 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
574 struct 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__ */