]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - drivers/staging/media/atomisp/i2c/imx/imx208.h
media: staging: atomisp: Convert timers to use timer_setup()
[mirror_ubuntu-bionic-kernel.git] / drivers / staging / media / atomisp / i2c / imx / imx208.h
1 /*
2 * Support for Sony IMX camera sensor.
3 *
4 * Copyright (c) 2014 Intel Corporation. All Rights Reserved.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License version
8 * 2 as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 * 02110-1301, USA.
19 *
20 */
21
22 #ifndef __IMX208_H__
23 #define __IMX208_H__
24 #include "common.h"
25
26 /********************** settings for imx from vendor*********************/
27 static struct imx_reg imx208_1080p_30fps[] = {
28 GROUPED_PARAMETER_HOLD_ENABLE,
29 {IMX_8BIT, 0x0305, 0x02}, /* PREPLLCK DIV */
30 {IMX_8BIT, 0x0307, 0x54}, /* PLL MPY */
31 {IMX_8BIT, 0x303C, 0x3C}, /* PLL oscillation stable wait time */
32 {IMX_8BIT, 0x30A4, 0x02}, /* Default */
33 {IMX_8BIT, 0x0112, 0x0A}, /* CCP_data_format : RAW 10bit */
34 {IMX_8BIT, 0x0113, 0x0A}, /* CCP_data_format : RAW 10bit */
35 {IMX_8BIT, 0x0340, 0x04}, /* frame length line [15:8] */
36 {IMX_8BIT, 0x0341, 0xAA}, /* frame length line [7:0] */
37 {IMX_8BIT, 0x0342, 0x08}, /* line length pck [15:8] */
38 {IMX_8BIT, 0x0343, 0xC8}, /* line length pck [7:0] */
39 {IMX_8BIT, 0x0344, 0x00}, /* x_addr_start[12:8] */
40 {IMX_8BIT, 0x0345, 0x00}, /* x_addr_start[7:0] */
41 {IMX_8BIT, 0x0346, 0x00}, /* y_addr_start[12:8] */
42 {IMX_8BIT, 0x0347, 0x00}, /* y_addr_start[7:0] */
43 {IMX_8BIT, 0x0348, 0x07}, /* x_addr_end [12:8] */
44 {IMX_8BIT, 0x0349, 0x8F}, /* x_addr_end [7:0] */
45 {IMX_8BIT, 0x034A, 0x04}, /* y_addr_end [12:8] */
46 {IMX_8BIT, 0x034B, 0x47}, /* y_addr_end [7:0] */
47 {IMX_8BIT, 0x034C, 0x07}, /* x_output_size [ 12:8] */
48 {IMX_8BIT, 0x034D, 0x90}, /* x_output_size [7:0] */
49 {IMX_8BIT, 0x034E, 0x04}, /* y_output_size [11:8] */
50 {IMX_8BIT, 0x034F, 0x48}, /* y_output_size [7:0] */
51 {IMX_8BIT, 0x0381, 0x01}, /* x_even_inc */
52 {IMX_8BIT, 0x0383, 0x01}, /* x_odd_inc */
53 {IMX_8BIT, 0x0385, 0x01}, /* y_even_inc */
54 {IMX_8BIT, 0x0387, 0x01}, /* y_odd_inc */
55 {IMX_8BIT, 0x3048, 0x00}, /* VMODEFDS binning operation */
56 {IMX_8BIT, 0x304E, 0x0A}, /* VTPXCK_DIV */
57 {IMX_8BIT, 0x3050, 0x02}, /* OPSYCK_DIV */
58 {IMX_8BIT, 0x309B, 0x00}, /* RGDAFDSUMEN */
59 {IMX_8BIT, 0x30D5, 0x00}, /* HADDEN ( binning ) */
60 {IMX_8BIT, 0x3301, 0x01}, /* RGLANESEL */
61 {IMX_8BIT, 0x3318, 0x61}, /* MIPI Global Timing */
62 {IMX_8BIT, 0x0202, 0x01}, /* coarse integration time */
63 {IMX_8BIT, 0x0203, 0x90}, /* coarse integration time */
64 {IMX_8BIT, 0x0205, 0x00}, /* ana global gain */
65
66 {IMX_TOK_TERM, 0, 0},
67 };
68
69 static struct imx_reg imx208_1296x736_30fps[] = {
70 GROUPED_PARAMETER_HOLD_ENABLE,
71 {IMX_8BIT, 0x0305, 0x02}, /* PREPLLCK DIV */
72 {IMX_8BIT, 0x0307, 0x54}, /* PLL MPY */
73 {IMX_8BIT, 0x303C, 0x3C}, /* PLL oscillation stable wait time */
74 {IMX_8BIT, 0x30A4, 0x02}, /* Default */
75 {IMX_8BIT, 0x0112, 0x0A}, /* CCP_data_format : RAW 10bit */
76 {IMX_8BIT, 0x0113, 0x0A}, /* CCP_data_format : RAW 10bit */
77 {IMX_8BIT, 0x0340, 0x04}, /* frame length line [15:8] */
78 {IMX_8BIT, 0x0341, 0xAA}, /* frame length line [7:0] */
79 {IMX_8BIT, 0x0342, 0x08}, /* line length pck [15:8] */
80 {IMX_8BIT, 0x0343, 0xC8}, /* line length pck [7:0] */
81 {IMX_8BIT, 0x0344, 0x01}, /* x_addr_start[12:8] */
82 {IMX_8BIT, 0x0345, 0x40}, /* x_addr_start[7:0] */
83 {IMX_8BIT, 0x0346, 0x00}, /* y_addr_start[12:8] */
84 {IMX_8BIT, 0x0347, 0xB4}, /* y_addr_start[7:0] */
85 {IMX_8BIT, 0x0348, 0x06}, /* x_addr_end [12:8] */
86 {IMX_8BIT, 0x0349, 0x4F}, /* x_addr_end [7:0] */
87 {IMX_8BIT, 0x034A, 0x03}, /* y_addr_end [12:8] */
88 {IMX_8BIT, 0x034B, 0x93}, /* y_addr_end [7:0] */
89 {IMX_8BIT, 0x034C, 0x05}, /* x_output_size [ 12:8] */
90 {IMX_8BIT, 0x034D, 0x10}, /* x_output_size [7:0] */
91 {IMX_8BIT, 0x034E, 0x02}, /* y_output_size [11:8] */
92 {IMX_8BIT, 0x034F, 0xE0}, /* y_output_size [7:0] */
93 {IMX_8BIT, 0x0381, 0x01}, /* x_even_inc */
94 {IMX_8BIT, 0x0383, 0x01}, /* x_odd_inc */
95 {IMX_8BIT, 0x0385, 0x01}, /* y_even_inc */
96 {IMX_8BIT, 0x0387, 0x01}, /* y_odd_inc */
97 {IMX_8BIT, 0x3048, 0x00}, /* VMODEFDS binning operation */
98 {IMX_8BIT, 0x304E, 0x0A}, /* VTPXCK_DIV */
99 {IMX_8BIT, 0x3050, 0x02}, /* OPSYCK_DIV */
100 {IMX_8BIT, 0x309B, 0x00}, /* RGDAFDSUMEN */
101 {IMX_8BIT, 0x30D5, 0x00}, /* HADDEN ( binning ) */
102 {IMX_8BIT, 0x3301, 0x01}, /* RGLANESEL */
103 {IMX_8BIT, 0x3318, 0x61}, /* MIPI Global Timing */
104 {IMX_8BIT, 0x0202, 0x01}, /* coarse integration time */
105 {IMX_8BIT, 0x0203, 0x90}, /* coarse integration time */
106 {IMX_8BIT, 0x0205, 0x00}, /* ana global gain */
107
108 {IMX_TOK_TERM, 0, 0},
109 };
110
111 static struct imx_reg imx208_1296x976_30fps[] = {
112 GROUPED_PARAMETER_HOLD_ENABLE,
113 {IMX_8BIT, 0x0305, 0x02}, /* PREPLLCK DIV */
114 {IMX_8BIT, 0x0307, 0x54}, /* PLL MPY */
115 {IMX_8BIT, 0x303C, 0x3C}, /* PLL oscillation stable wait time */
116 {IMX_8BIT, 0x30A4, 0x02}, /* Default */
117 {IMX_8BIT, 0x0112, 0x0A}, /* CCP_data_format : RAW 10bit */
118 {IMX_8BIT, 0x0113, 0x0A}, /* CCP_data_format : RAW 10bit */
119 {IMX_8BIT, 0x0340, 0x04}, /* frame length line [15:8] */
120 {IMX_8BIT, 0x0341, 0xAA}, /* frame length line [7:0] */
121 {IMX_8BIT, 0x0342, 0x08}, /* line length pck [15:8] */
122 {IMX_8BIT, 0x0343, 0xC8}, /* line length pck [7:0] */
123 {IMX_8BIT, 0x0344, 0x01}, /* x_addr_start[12:8] */
124 {IMX_8BIT, 0x0345, 0x40}, /* x_addr_start[7:0] */
125 {IMX_8BIT, 0x0346, 0x00}, /* y_addr_start[12:8] */
126 {IMX_8BIT, 0x0347, 0x3C}, /* y_addr_start[7:0] */
127 {IMX_8BIT, 0x0348, 0x06}, /* x_addr_end [12:8] */
128 {IMX_8BIT, 0x0349, 0x4F}, /* x_addr_end [7:0] */
129 {IMX_8BIT, 0x034A, 0x04}, /* y_addr_end [12:8] */
130 {IMX_8BIT, 0x034B, 0x0B}, /* y_addr_end [7:0] */
131 {IMX_8BIT, 0x034C, 0x05}, /* x_output_size [ 12:8] */
132 {IMX_8BIT, 0x034D, 0x10}, /* x_output_size [7:0] */
133 {IMX_8BIT, 0x034E, 0x03}, /* y_output_size [11:8] */
134 {IMX_8BIT, 0x034F, 0xD0}, /* y_output_size [7:0] */
135 {IMX_8BIT, 0x0381, 0x01}, /* x_even_inc */
136 {IMX_8BIT, 0x0383, 0x01}, /* x_odd_inc */
137 {IMX_8BIT, 0x0385, 0x01}, /* y_even_inc */
138 {IMX_8BIT, 0x0387, 0x01}, /* y_odd_inc */
139 {IMX_8BIT, 0x3048, 0x00}, /* VMODEFDS binning operation */
140 {IMX_8BIT, 0x304E, 0x0A}, /* VTPXCK_DIV */
141 {IMX_8BIT, 0x3050, 0x02}, /* OPSYCK_DIV */
142 {IMX_8BIT, 0x309B, 0x00}, /* RGDAFDSUMEN */
143 {IMX_8BIT, 0x30D5, 0x00}, /* HADDEN ( binning ) */
144 {IMX_8BIT, 0x3301, 0x01}, /* RGLANESEL */
145 {IMX_8BIT, 0x3318, 0x61}, /* MIPI Global Timing */
146 {IMX_8BIT, 0x0202, 0x01}, /* coarse integration time */
147 {IMX_8BIT, 0x0203, 0x90}, /* coarse integration time */
148 {IMX_8BIT, 0x0205, 0x00}, /* ana global gain */
149
150 {IMX_TOK_TERM, 0, 0},
151 };
152
153 static struct imx_reg imx208_336x256_30fps[] = {
154 GROUPED_PARAMETER_HOLD_ENABLE,
155 {IMX_8BIT, 0x0305, 0x02}, /* PREPLLCK DIV */
156 {IMX_8BIT, 0x0307, 0x54}, /* PLL MPY */
157 {IMX_8BIT, 0x303C, 0x3C}, /* PLL oscillation stable wait time */
158 {IMX_8BIT, 0x30A4, 0x02}, /* Default */
159 {IMX_8BIT, 0x0112, 0x0A}, /* CCP_data_format : RAW 10bit */
160 {IMX_8BIT, 0x0113, 0x0A}, /* CCP_data_format : RAW 10bit */
161 {IMX_8BIT, 0x0340, 0x04}, /* frame length line [15:8] */
162 {IMX_8BIT, 0x0341, 0xAA}, /* frame length line [7:0] */
163 {IMX_8BIT, 0x0342, 0x08}, /* line length pck [15:8] */
164 {IMX_8BIT, 0x0343, 0xC8}, /* line length pck [7:0] */
165 {IMX_8BIT, 0x0344, 0x02}, /* x_addr_start[12:8] */
166 {IMX_8BIT, 0x0345, 0x78}, /* x_addr_start[7:0] */
167 {IMX_8BIT, 0x0346, 0x01}, /* y_addr_start[12:8] */
168 {IMX_8BIT, 0x0347, 0x24}, /* y_addr_start[7:0] */
169 {IMX_8BIT, 0x0348, 0x05}, /* x_addr_end [12:8] */
170 {IMX_8BIT, 0x0349, 0x17}, /* x_addr_end [7:0] */
171 {IMX_8BIT, 0x034A, 0x03}, /* y_addr_end [12:8] */
172 {IMX_8BIT, 0x034B, 0x23}, /* y_addr_end [7:0] */
173 {IMX_8BIT, 0x034C, 0x01}, /* x_output_size [ 12:8] */
174 {IMX_8BIT, 0x034D, 0x50}, /* x_output_size [7:0] */
175 {IMX_8BIT, 0x034E, 0x01}, /* y_output_size [11:8] */
176 {IMX_8BIT, 0x034F, 0x00}, /* y_output_size [7:0] */
177 {IMX_8BIT, 0x0381, 0x01}, /* x_even_inc */
178 {IMX_8BIT, 0x0383, 0x03}, /* x_odd_inc */
179 {IMX_8BIT, 0x0385, 0x01}, /* y_even_inc */
180 {IMX_8BIT, 0x0387, 0x03}, /* y_odd_inc */
181 {IMX_8BIT, 0x3048, 0x01}, /* VMODEFDS binning operation */
182 {IMX_8BIT, 0x304E, 0x0A}, /* VTPXCK_DIV */
183 {IMX_8BIT, 0x3050, 0x02}, /* OPSYCK_DIV */
184 {IMX_8BIT, 0x309B, 0x00}, /* RGDAFDSUMEN */
185 {IMX_8BIT, 0x30D5, 0x03}, /* HADDEN ( binning ) */
186 {IMX_8BIT, 0x3301, 0x01}, /* RGLANESEL */
187 {IMX_8BIT, 0x3318, 0x66}, /* MIPI Global Timing */
188 {IMX_8BIT, 0x0202, 0x01}, /* coarse integration time */
189 {IMX_8BIT, 0x0203, 0x90}, /* coarse integration time */
190 {IMX_8BIT, 0x0205, 0x00}, /* ana global gain */
191
192 {IMX_TOK_TERM, 0, 0},
193 };
194
195 static struct imx_reg imx208_192x160_30fps[] = {
196 GROUPED_PARAMETER_HOLD_ENABLE,
197 {IMX_8BIT, 0x0305, 0x02}, /* PREPLLCK DIV */
198 {IMX_8BIT, 0x0307, 0x54}, /* PLL MPY */
199 {IMX_8BIT, 0x303C, 0x3C}, /* PLL oscillation stable wait time */
200 {IMX_8BIT, 0x30A4, 0x02}, /* Default */
201 {IMX_8BIT, 0x0112, 0x0A}, /* CCP_data_format : RAW 10bit */
202 {IMX_8BIT, 0x0113, 0x0A}, /* CCP_data_format : RAW 10bit */
203 {IMX_8BIT, 0x0340, 0x04}, /* frame length line [15:8] */
204 {IMX_8BIT, 0x0341, 0xAA}, /* frame length line [7:0] */
205 {IMX_8BIT, 0x0342, 0x08}, /* line length pck [15:8] */
206 {IMX_8BIT, 0x0343, 0xC8}, /* line length pck [7:0] */
207 {IMX_8BIT, 0x0344, 0x02}, /* x_addr_start[12:8] */
208 {IMX_8BIT, 0x0345, 0x48}, /* x_addr_start[7:0] */
209 {IMX_8BIT, 0x0346, 0x00}, /* y_addr_start[12:8] */
210 {IMX_8BIT, 0x0347, 0xE4}, /* y_addr_start[7:0] */
211 {IMX_8BIT, 0x0348, 0x05}, /* x_addr_end [12:8] */
212 {IMX_8BIT, 0x0349, 0x47}, /* x_addr_end [7:0] */
213 {IMX_8BIT, 0x034A, 0x03}, /* y_addr_end [12:8] */
214 {IMX_8BIT, 0x034B, 0x63}, /* y_addr_end [7:0] */
215 {IMX_8BIT, 0x034C, 0x00}, /* x_output_size [ 12:8] */
216 {IMX_8BIT, 0x034D, 0xC0}, /* x_output_size [7:0] */
217 {IMX_8BIT, 0x034E, 0x00}, /* y_output_size [11:8] */
218 {IMX_8BIT, 0x034F, 0xA0}, /* y_output_size [7:0] */
219 {IMX_8BIT, 0x0381, 0x03}, /* x_even_inc */
220 {IMX_8BIT, 0x0383, 0x05}, /* x_odd_inc */
221 {IMX_8BIT, 0x0385, 0x03}, /* y_even_inc */
222 {IMX_8BIT, 0x0387, 0x05}, /* y_odd_inc */
223 {IMX_8BIT, 0x3048, 0x01}, /* VMODEFDS binning operation */
224 {IMX_8BIT, 0x304E, 0x0A}, /* VTPXCK_DIV */
225 {IMX_8BIT, 0x3050, 0x02}, /* OPSYCK_DIV */
226 {IMX_8BIT, 0x309B, 0x00}, /* RGDAFDSUMEN */
227 {IMX_8BIT, 0x30D5, 0x03}, /* HADDEN ( binning ) */
228 {IMX_8BIT, 0x3301, 0x11}, /* RGLANESEL */
229 {IMX_8BIT, 0x3318, 0x74}, /* MIPI Global Timing */
230 {IMX_8BIT, 0x0202, 0x01}, /* coarse integration time */
231 {IMX_8BIT, 0x0203, 0x90}, /* coarse integration time */
232 {IMX_8BIT, 0x0205, 0x00}, /* ana global gain */
233
234 {IMX_TOK_TERM, 0, 0},
235 };
236 /********************** settings for imx - reference *********************/
237 static struct imx_reg const imx208_init_settings[] = {
238 { IMX_TOK_TERM, 0, 0}
239 };
240
241 struct imx_resolution imx208_res_preview[] = {
242 {
243 .desc = "imx208_1080p_30fps",
244 .regs = imx208_1080p_30fps,
245 .width = 1936,
246 .height = 1096,
247 .fps_options = {
248 {
249 .fps = 30,
250 .pixels_per_line = 0x08C8,
251 .lines_per_frame = 0x04AA,
252 },
253 {
254 }
255 },
256 .bin_factor_x = 1,
257 .bin_factor_y = 1,
258 .used = 0,
259 .skip_frames = 2,
260 .mipi_freq = 403200,
261 },
262 {
263 .desc = "imx208_1296x976_30fps",
264 .regs = imx208_1296x976_30fps,
265 .width = 1296,
266 .height = 976,
267 .fps_options = {
268 {
269 .fps = 30,
270 .pixels_per_line = 0x08C8,
271 .lines_per_frame = 0x04AA,
272 },
273 {
274 }
275 },
276 .bin_factor_x = 1,
277 .bin_factor_y = 1,
278 .used = 0,
279 .skip_frames = 2,
280 .mipi_freq = 403200,
281 },
282 {
283 .desc = "imx208_1296x736_30fps",
284 .regs = imx208_1296x736_30fps,
285 .width = 1296,
286 .height = 736,
287 .fps_options = {
288 {
289 .fps = 30,
290 .pixels_per_line = 0x08C8,
291 .lines_per_frame = 0x04AA,
292 },
293 {
294 }
295 },
296 .bin_factor_x = 1,
297 .bin_factor_y = 1,
298 .used = 0,
299 .skip_frames = 2,
300 .mipi_freq = 403200,
301 },
302 {
303 .desc = "imx208_336x256_30fps",
304 .regs = imx208_336x256_30fps,
305 .width = 336,
306 .height = 256,
307 .fps_options = {
308 {
309 .fps = 30,
310 .pixels_per_line = 0x08C8,
311 .lines_per_frame = 0x04AA,
312 },
313 {
314 }
315 },
316 .bin_factor_x = 2,
317 .bin_factor_y = 2,
318 .used = 0,
319 .skip_frames = 2,
320 .mipi_freq = 201600,
321 },
322 {
323 .desc = "imx208_192x160_30fps",
324 .regs = imx208_192x160_30fps,
325 .width = 192,
326 .height = 160,
327 .fps_options = {
328 {
329 .fps = 30,
330 .pixels_per_line = 0x08C8,
331 .lines_per_frame = 0x04AA,
332 },
333 {
334 }
335 },
336 .bin_factor_x = 4,
337 .bin_factor_y = 4,
338 .used = 0,
339 .skip_frames = 2,
340 .mipi_freq = 100800,
341 },
342 };
343
344 struct imx_resolution imx208_res_still[] = {
345 {
346 .desc = "imx208_1080p_30fps",
347 .regs = imx208_1080p_30fps,
348 .width = 1936,
349 .height = 1096,
350 .fps_options = {
351 {
352 .fps = 30,
353 .pixels_per_line = 0x08C8,
354 .lines_per_frame = 0x04AA,
355 },
356 {
357 }
358 },
359 .bin_factor_x = 1,
360 .bin_factor_y = 1,
361 .used = 0,
362 .skip_frames = 2,
363 .mipi_freq = 403200,
364 },
365 {
366 .desc = "imx208_1296x976_30fps",
367 .regs = imx208_1296x976_30fps,
368 .width = 1296,
369 .height = 976,
370 .fps_options = {
371 {
372 .fps = 30,
373 .pixels_per_line = 0x08C8,
374 .lines_per_frame = 0x04AA,
375 },
376 {
377 }
378 },
379 .bin_factor_x = 1,
380 .bin_factor_y = 1,
381 .used = 0,
382 .skip_frames = 2,
383 .mipi_freq = 403200,
384 },
385 {
386 .desc = "imx208_1296x736_30fps",
387 .regs = imx208_1296x736_30fps,
388 .width = 1296,
389 .height = 736,
390 .fps_options = {
391 {
392 .fps = 30,
393 .pixels_per_line = 0x08C8,
394 .lines_per_frame = 0x04AA,
395 },
396 {
397 }
398 },
399 .bin_factor_x = 1,
400 .bin_factor_y = 1,
401 .used = 0,
402 .skip_frames = 2,
403 .mipi_freq = 403200,
404 },
405 {
406 .desc = "imx208_336x256_30fps",
407 .regs = imx208_336x256_30fps,
408 .width = 336,
409 .height = 256,
410 .fps_options = {
411 {
412 .fps = 30,
413 .pixels_per_line = 0x08C8,
414 .lines_per_frame = 0x04AA,
415 },
416 {
417 }
418 },
419 .bin_factor_x = 2,
420 .bin_factor_y = 2,
421 .used = 0,
422 .skip_frames = 2,
423 .mipi_freq = 201600,
424 },
425 {
426 .desc = "imx208_192x160_30fps",
427 .regs = imx208_192x160_30fps,
428 .width = 192,
429 .height = 160,
430 .fps_options = {
431 {
432 .fps = 30,
433 .pixels_per_line = 0x08C8,
434 .lines_per_frame = 0x04AA,
435 },
436 {
437 }
438 },
439 .bin_factor_x = 4,
440 .bin_factor_y = 4,
441 .used = 0,
442 .skip_frames = 2,
443 .mipi_freq = 100800,
444 },
445 };
446
447 struct imx_resolution imx208_res_video[] = {
448 {
449 .desc = "imx208_1080p_30fps",
450 .regs = imx208_1080p_30fps,
451 .width = 1936,
452 .height = 1096,
453 .fps_options = {
454 {
455 .fps = 30,
456 .pixels_per_line = 0x08C8,
457 .lines_per_frame = 0x04AA,
458 },
459 {
460 }
461 },
462 .bin_factor_x = 1,
463 .bin_factor_y = 1,
464 .used = 0,
465 .skip_frames = 2,
466 .mipi_freq = 403200,
467 },
468 {
469 .desc = "imx208_1296x976_30fps",
470 .regs = imx208_1296x976_30fps,
471 .width = 1296,
472 .height = 976,
473 .fps_options = {
474 {
475 .fps = 30,
476 .pixels_per_line = 0x08C8,
477 .lines_per_frame = 0x04AA,
478 },
479 {
480 }
481 },
482 .bin_factor_x = 1,
483 .bin_factor_y = 1,
484 .used = 0,
485 .skip_frames = 2,
486 .mipi_freq = 403200,
487 },
488 {
489 .desc = "imx208_1296x736_30fps",
490 .regs = imx208_1296x736_30fps,
491 .width = 1296,
492 .height = 736,
493 .fps_options = {
494 {
495 .fps = 30,
496 .pixels_per_line = 0x08C8,
497 .lines_per_frame = 0x04AA,
498 },
499 {
500 }
501 },
502 .bin_factor_x = 1,
503 .bin_factor_y = 1,
504 .used = 0,
505 .skip_frames = 2,
506 .mipi_freq = 403200,
507 },
508 {
509 .desc = "imx208_336x256_30fps",
510 .regs = imx208_336x256_30fps,
511 .width = 336,
512 .height = 256,
513 .fps_options = {
514 {
515 .fps = 30,
516 .pixels_per_line = 0x08C8,
517 .lines_per_frame = 0x04AA,
518 },
519 {
520 }
521 },
522 .bin_factor_x = 2,
523 .bin_factor_y = 2,
524 .used = 0,
525 .skip_frames = 2,
526 .mipi_freq = 201600,
527 },
528 {
529 .desc = "imx208_192x160_30fps",
530 .regs = imx208_192x160_30fps,
531 .width = 192,
532 .height = 160,
533 .fps_options = {
534 {
535 .fps = 30,
536 .pixels_per_line = 0x08C8,
537 .lines_per_frame = 0x04AA,
538 },
539 {
540 }
541 },
542 .bin_factor_x = 4,
543 .bin_factor_y = 4,
544 .used = 0,
545 .skip_frames = 2,
546 .mipi_freq = 100800,
547 },
548 };
549 #endif
550