]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - drivers/staging/media/atomisp/i2c/imx/imx135.h
media: staging: atomisp: Convert timers to use timer_setup()
[mirror_ubuntu-bionic-kernel.git] / drivers / staging / media / atomisp / i2c / imx / imx135.h
CommitLineData
a49d2536
AC
1/*
2 * Support for Sony IMX camera sensor.
3 *
4 * Copyright (c) 2010 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 __IMX135_H__
23#define __IMX135_H__
24
25#include "common.h"
26
27#define IMX_SC_CMMN_CHIP_ID_H 0x0016
28#define IMX_SC_CMMN_CHIP_ID_L 0x0017
29
30/*
31 * focal length bits definition:
32 * bits 31-16: numerator, bits 15-0: denominator
33 */
34#define IMX_FOCAL_LENGTH_DEFAULT 0x1710064
35
36/*
37 * current f-number bits definition:
38 * bits 31-16: numerator, bits 15-0: denominator
39 */
40#define IMX_F_NUMBER_DEFAULT 0x16000a
41
42/*
43 * f-number range bits definition:
44 * bits 31-24: max f-number numerator
45 * bits 23-16: max f-number denominator
46 * bits 15-8: min f-number numerator
47 * bits 7-0: min f-number denominator
48 */
49#define IMX_F_NUMBER_RANGE 0x160a160a
50
51#define GROUPED_PARAMETER_HOLD_ENABLE {IMX_8BIT, 0x0104, 0x1}
52#define GROUPED_PARAMETER_HOLD_DISABLE {IMX_8BIT, 0x0104, 0x0}
53
54#define IMX135_EMBEDDED_DATA_LINE_NUM 2
55#define IMX135_OUTPUT_DATA_FORMAT_REG 0x0112
56#define IMX135_OUTPUT_FORMAT_RAW10 0x0a0a
57/*
58 * We use three different MIPI rates for our modes based on the resolution and
59 * FPS requirements. So we have three PLL configurationa and these are based
60 * on the EMC friendly MIPI values.
61 *
62 * Maximum clock: Pix clock @ 360.96MHz MIPI @ 451.2MHz 902.4mbps
63 * Reduced clock: Pix clock @ 273.00MHz MIPI @ 342.0MHz 684.0mbps
64 * Binning modes: Pix clock @ 335.36MHz MIPI @ 209.6MHz 419.2mbps
65 * Global Timing registers are based on the data rates and these are part of
66 * the below clock definitions.
67 */
68/* MIPI 499.2MHz 998.4mbps PIXCLK: 399.36MHz */
69#define PLL_SETTINGS_FOR_MIPI_499_2MHZ_SALTBAY \
70 {IMX_8BIT, 0x011e, 0x13}, \
71 {IMX_8BIT, 0x011f, 0x33}, \
72 {IMX_8BIT, 0x0301, 0x05}, \
73 {IMX_8BIT, 0x0303, 0x01}, \
74 {IMX_8BIT, 0x0305, 0x0c}, \
75 {IMX_8BIT, 0x0309, 0x05}, \
76 {IMX_8BIT, 0x030b, 0x01}, \
77 {IMX_8BIT, 0x030c, 0x02}, \
78 {IMX_8BIT, 0x030d, 0x70}, \
79 {IMX_8BIT, 0x030e, 0x01}, \
80 {IMX_8BIT, 0x3a06, 0x11}, \
81 {IMX_8BIT, 0x0830, 0x7f}, \
82 {IMX_8BIT, 0x0831, 0x37}, \
83 {IMX_8BIT, 0x0832, 0x67}, \
84 {IMX_8BIT, 0x0833, 0x3f}, \
85 {IMX_8BIT, 0x0834, 0x3f}, \
86 {IMX_8BIT, 0x0835, 0x47}, \
87 {IMX_8BIT, 0x0836, 0xdf}, \
88 {IMX_8BIT, 0x0837, 0x47}, \
89 {IMX_8BIT, 0x0839, 0x1f}, \
90 {IMX_8BIT, 0x083a, 0x17}, \
91 {IMX_8BIT, 0x083b, 0x02}
92
93/* MIPI 451.2MHz 902.4mbps PIXCLK: 360.96MHz */
94#define PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY \
95 {IMX_8BIT, 0x011e, 0x13}, \
96 {IMX_8BIT, 0x011f, 0x33}, \
97 {IMX_8BIT, 0x0301, 0x05}, \
98 {IMX_8BIT, 0x0303, 0x01}, \
99 {IMX_8BIT, 0x0305, 0x0c}, \
100 {IMX_8BIT, 0x0309, 0x05}, \
101 {IMX_8BIT, 0x030b, 0x01}, \
102 {IMX_8BIT, 0x030c, 0x02}, \
103 {IMX_8BIT, 0x030d, 0x34}, \
104 {IMX_8BIT, 0x030e, 0x01}, \
105 {IMX_8BIT, 0x3a06, 0x11}, \
106 {IMX_8BIT, 0x0830, 0x7f}, \
107 {IMX_8BIT, 0x0831, 0x37}, \
108 {IMX_8BIT, 0x0832, 0x67}, \
109 {IMX_8BIT, 0x0833, 0x3f}, \
110 {IMX_8BIT, 0x0834, 0x3f}, \
111 {IMX_8BIT, 0x0835, 0x47}, \
112 {IMX_8BIT, 0x0836, 0xdf}, \
113 {IMX_8BIT, 0x0837, 0x47}, \
114 {IMX_8BIT, 0x0839, 0x1f}, \
115 {IMX_8BIT, 0x083a, 0x17}, \
116 {IMX_8BIT, 0x083b, 0x02}
117
118/* MIPI 209.6MHz, 419.2mbps PIXCLK: 335.36 MHz */
119#define PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY \
120 {IMX_8BIT, 0x011e, 0x13}, \
121 {IMX_8BIT, 0x011f, 0x33}, \
122 {IMX_8BIT, 0x0301, 0x05}, \
123 {IMX_8BIT, 0x0303, 0x01}, \
124 {IMX_8BIT, 0x0305, 0x06}, \
125 {IMX_8BIT, 0x0309, 0x05}, \
126 {IMX_8BIT, 0x030b, 0x02}, \
127 {IMX_8BIT, 0x030c, 0x01}, \
128 {IMX_8BIT, 0x030d, 0x06}, \
129 {IMX_8BIT, 0x030e, 0x01}, \
130 {IMX_8BIT, 0x3a06, 0x12}, \
131 {IMX_8BIT, 0x0830, 0x5f}, \
132 {IMX_8BIT, 0x0831, 0x1f}, \
133 {IMX_8BIT, 0x0832, 0x3f}, \
134 {IMX_8BIT, 0x0833, 0x1f}, \
135 {IMX_8BIT, 0x0834, 0x1f}, \
136 {IMX_8BIT, 0x0835, 0x17}, \
137 {IMX_8BIT, 0x0836, 0x67}, \
138 {IMX_8BIT, 0x0837, 0x27}, \
139 {IMX_8BIT, 0x0839, 0x1f}, \
140 {IMX_8BIT, 0x083a, 0x17}, \
141 {IMX_8BIT, 0x083b, 0x02}
142
143/* MIPI 342MHz 684mbps PIXCLK: 273.6MHz */
144#define PLL_SETTINGS_FOR_MIPI_342MHZ_SALTBAY \
145 {IMX_8BIT, 0x011e, 0x13}, \
146 {IMX_8BIT, 0x011f, 0x33}, \
147 {IMX_8BIT, 0x0301, 0x05}, \
148 {IMX_8BIT, 0x0303, 0x01}, \
149 {IMX_8BIT, 0x0305, 0x08}, \
150 {IMX_8BIT, 0x0309, 0x05}, \
151 {IMX_8BIT, 0x030b, 0x01}, \
152 {IMX_8BIT, 0x030c, 0x01}, \
153 {IMX_8BIT, 0x030d, 0x1d}, \
154 {IMX_8BIT, 0x030e, 0x01}, \
155 {IMX_8BIT, 0x3a06, 0x11}, \
156 {IMX_8BIT, 0x0830, 0x77}, \
157 {IMX_8BIT, 0x0831, 0x2f}, \
158 {IMX_8BIT, 0x0832, 0x4f}, \
159 {IMX_8BIT, 0x0833, 0x37}, \
160 {IMX_8BIT, 0x0834, 0x2f}, \
161 {IMX_8BIT, 0x0835, 0x37}, \
162 {IMX_8BIT, 0x0836, 0xa7}, \
163 {IMX_8BIT, 0x0837, 0x37}, \
164 {IMX_8BIT, 0x0839, 0x1f}, \
165 {IMX_8BIT, 0x083a, 0x17}, \
166 {IMX_8BIT, 0x083b, 0x02}
167
168/* Basic settings: Applied only once after the sensor power up */
169static struct imx_reg const imx135_init_settings[] = {
170 GROUPED_PARAMETER_HOLD_ENABLE,
171 { IMX_8BIT, 0x0220, 0x01},
172 { IMX_8BIT, 0x3008, 0xB0},
173 { IMX_8BIT, 0x320A, 0x01},
174 { IMX_8BIT, 0x320D, 0x10},
175 { IMX_8BIT, 0x3216, 0x2E},
176 { IMX_8BIT, 0x3230, 0x0A},
177 { IMX_8BIT, 0x3228, 0x05},
178 { IMX_8BIT, 0x3229, 0x02},
179 { IMX_8BIT, 0x322C, 0x02},
180 { IMX_8BIT, 0x3302, 0x10},
181 { IMX_8BIT, 0x3390, 0x45},
182 { IMX_8BIT, 0x3409, 0x0C},
183 { IMX_8BIT, 0x340B, 0xF5},
184 { IMX_8BIT, 0x340C, 0x2D},
185 { IMX_8BIT, 0x3412, 0x41},
186 { IMX_8BIT, 0x3413, 0xAD},
187 { IMX_8BIT, 0x3414, 0x1E},
188 { IMX_8BIT, 0x3427, 0x04},
189 { IMX_8BIT, 0x3480, 0x1E},
190 { IMX_8BIT, 0x3484, 0x1E},
191 { IMX_8BIT, 0x3488, 0x1E},
192 { IMX_8BIT, 0x348C, 0x1E},
193 { IMX_8BIT, 0x3490, 0x1E},
194 { IMX_8BIT, 0x3494, 0x1E},
195 { IMX_8BIT, 0x349C, 0x38},
196 { IMX_8BIT, 0x34A3, 0x38},
197 { IMX_8BIT, 0x3511, 0x8F},
198 { IMX_8BIT, 0x3518, 0x00},
199 { IMX_8BIT, 0x3519, 0x94},
200 { IMX_8BIT, 0x3833, 0x20},
201 { IMX_8BIT, 0x3893, 0x01},
202 { IMX_8BIT, 0x38C2, 0x08},
203 { IMX_8BIT, 0x38C3, 0x08},
204 { IMX_8BIT, 0x3C09, 0x01},
205 { IMX_8BIT, 0x4000, 0x0E},
206 { IMX_8BIT, 0x4300, 0x00},
207 { IMX_8BIT, 0x4316, 0x12},
208 { IMX_8BIT, 0x4317, 0x22},
209 { IMX_8BIT, 0x4318, 0x00},
210 { IMX_8BIT, 0x4319, 0x00},
211 { IMX_8BIT, 0x431A, 0x00},
212 { IMX_8BIT, 0x4324, 0x03},
213 { IMX_8BIT, 0x4325, 0x20},
214 { IMX_8BIT, 0x4326, 0x03},
215 { IMX_8BIT, 0x4327, 0x84},
216 { IMX_8BIT, 0x4328, 0x03},
217 { IMX_8BIT, 0x4329, 0x20},
218 { IMX_8BIT, 0x432A, 0x03},
219 { IMX_8BIT, 0x432B, 0x84},
220 { IMX_8BIT, 0x432C, 0x01},
221 { IMX_8BIT, 0x4401, 0x3F},
222 { IMX_8BIT, 0x4402, 0xFF},
223 { IMX_8BIT, 0x4412, 0x3F},
224 { IMX_8BIT, 0x4413, 0xFF},
225 { IMX_8BIT, 0x441D, 0x28},
226 { IMX_8BIT, 0x4444, 0x00},
227 { IMX_8BIT, 0x4445, 0x00},
228 { IMX_8BIT, 0x4446, 0x3F},
229 { IMX_8BIT, 0x4447, 0xFF},
230 { IMX_8BIT, 0x4452, 0x00},
231 { IMX_8BIT, 0x4453, 0xA0},
232 { IMX_8BIT, 0x4454, 0x08},
233 { IMX_8BIT, 0x4455, 0x00},
234 { IMX_8BIT, 0x4458, 0x18},
235 { IMX_8BIT, 0x4459, 0x18},
236 { IMX_8BIT, 0x445A, 0x3F},
237 { IMX_8BIT, 0x445B, 0x3A},
238 { IMX_8BIT, 0x4462, 0x00},
239 { IMX_8BIT, 0x4463, 0x00},
240 { IMX_8BIT, 0x4464, 0x00},
241 { IMX_8BIT, 0x4465, 0x00},
242 { IMX_8BIT, 0x446E, 0x01},
243 { IMX_8BIT, 0x4500, 0x1F},
244 { IMX_8BIT, 0x600a, 0x00},
245 { IMX_8BIT, 0x380a, 0x00},
246 { IMX_8BIT, 0x380b, 0x00},
247 { IMX_8BIT, 0x4103, 0x00},
248 { IMX_8BIT, 0x4243, 0x9a},
249 { IMX_8BIT, 0x4330, 0x01},
250 { IMX_8BIT, 0x4331, 0x90},
251 { IMX_8BIT, 0x4332, 0x02},
252 { IMX_8BIT, 0x4333, 0x58},
253 { IMX_8BIT, 0x4334, 0x03},
254 { IMX_8BIT, 0x4335, 0x20},
255 { IMX_8BIT, 0x4336, 0x03},
256 { IMX_8BIT, 0x4337, 0x84},
257 { IMX_8BIT, 0x433C, 0x01},
258 { IMX_8BIT, 0x4340, 0x02},
259 { IMX_8BIT, 0x4341, 0x58},
260 { IMX_8BIT, 0x4342, 0x03},
261 { IMX_8BIT, 0x4343, 0x52},
262 { IMX_8BIT, 0x4364, 0x0b},
263 { IMX_8BIT, 0x4368, 0x00},
264 { IMX_8BIT, 0x4369, 0x0f},
265 { IMX_8BIT, 0x436a, 0x03},
266 { IMX_8BIT, 0x436b, 0xa8},
267 { IMX_8BIT, 0x436c, 0x00},
268 { IMX_8BIT, 0x436d, 0x00},
269 { IMX_8BIT, 0x436e, 0x00},
270 { IMX_8BIT, 0x436f, 0x06},
271 { IMX_8BIT, 0x4281, 0x21},
272 { IMX_8BIT, 0x4282, 0x18},
273 { IMX_8BIT, 0x4283, 0x04},
274 { IMX_8BIT, 0x4284, 0x08},
275 { IMX_8BIT, 0x4287, 0x7f},
276 { IMX_8BIT, 0x4288, 0x08},
277 { IMX_8BIT, 0x428c, 0x08},
278 { IMX_8BIT, 0x4297, 0x00},
279 { IMX_8BIT, 0x4299, 0x7E},
280 { IMX_8BIT, 0x42A4, 0xFB},
281 { IMX_8BIT, 0x42A5, 0x7E},
282 { IMX_8BIT, 0x42A6, 0xDF},
283 { IMX_8BIT, 0x42A7, 0xB7},
284 { IMX_8BIT, 0x42AF, 0x03},
285 { IMX_8BIT, 0x4207, 0x03},
286 { IMX_8BIT, 0x4218, 0x00},
287 { IMX_8BIT, 0x421B, 0x20},
288 { IMX_8BIT, 0x421F, 0x04},
289 { IMX_8BIT, 0x4222, 0x02},
290 { IMX_8BIT, 0x4223, 0x22},
291 { IMX_8BIT, 0x422E, 0x54},
292 { IMX_8BIT, 0x422F, 0xFB},
293 { IMX_8BIT, 0x4230, 0xFF},
294 { IMX_8BIT, 0x4231, 0xFE},
295 { IMX_8BIT, 0x4232, 0xFF},
296 { IMX_8BIT, 0x4235, 0x58},
297 { IMX_8BIT, 0x4236, 0xF7},
298 { IMX_8BIT, 0x4237, 0xFD},
299 { IMX_8BIT, 0x4239, 0x4E},
300 { IMX_8BIT, 0x423A, 0xFC},
301 { IMX_8BIT, 0x423B, 0xFD},
302 { IMX_8BIT, 0x4300, 0x00},
303 { IMX_8BIT, 0x4316, 0x12},
304 { IMX_8BIT, 0x4317, 0x22},
305 { IMX_8BIT, 0x4318, 0x00},
306 { IMX_8BIT, 0x4319, 0x00},
307 { IMX_8BIT, 0x431A, 0x00},
308 { IMX_8BIT, 0x4324, 0x03},
309 { IMX_8BIT, 0x4325, 0x20},
310 { IMX_8BIT, 0x4326, 0x03},
311 { IMX_8BIT, 0x4327, 0x84},
312 { IMX_8BIT, 0x4328, 0x03},
313 { IMX_8BIT, 0x4329, 0x20},
314 { IMX_8BIT, 0x432A, 0x03},
315 { IMX_8BIT, 0x432B, 0x20},
316 { IMX_8BIT, 0x432C, 0x01},
317 { IMX_8BIT, 0x432D, 0x01},
318 { IMX_8BIT, 0x4338, 0x02},
319 { IMX_8BIT, 0x4339, 0x00},
320 { IMX_8BIT, 0x433A, 0x00},
321 { IMX_8BIT, 0x433B, 0x02},
322 { IMX_8BIT, 0x435A, 0x03},
323 { IMX_8BIT, 0x435B, 0x84},
324 { IMX_8BIT, 0x435E, 0x01},
325 { IMX_8BIT, 0x435F, 0xFF},
326 { IMX_8BIT, 0x4360, 0x01},
327 { IMX_8BIT, 0x4361, 0xF4},
328 { IMX_8BIT, 0x4362, 0x03},
329 { IMX_8BIT, 0x4363, 0x84},
330 { IMX_8BIT, 0x437B, 0x01},
331 { IMX_8BIT, 0x4400, 0x00}, /* STATS off ISP do not support STATS*/
332 { IMX_8BIT, 0x4401, 0x3F},
333 { IMX_8BIT, 0x4402, 0xFF},
334 { IMX_8BIT, 0x4404, 0x13},
335 { IMX_8BIT, 0x4405, 0x26},
336 { IMX_8BIT, 0x4406, 0x07},
337 { IMX_8BIT, 0x4408, 0x20},
338 { IMX_8BIT, 0x4409, 0xE5},
339 { IMX_8BIT, 0x440A, 0xFB},
340 { IMX_8BIT, 0x440C, 0xF6},
341 { IMX_8BIT, 0x440D, 0xEA},
342 { IMX_8BIT, 0x440E, 0x20},
343 { IMX_8BIT, 0x4410, 0x00},
344 { IMX_8BIT, 0x4411, 0x00},
345 { IMX_8BIT, 0x4412, 0x3F},
346 { IMX_8BIT, 0x4413, 0xFF},
347 { IMX_8BIT, 0x4414, 0x1F},
348 { IMX_8BIT, 0x4415, 0xFF},
349 { IMX_8BIT, 0x4416, 0x20},
350 { IMX_8BIT, 0x4417, 0x00},
351 { IMX_8BIT, 0x4418, 0x1F},
352 { IMX_8BIT, 0x4419, 0xFF},
353 { IMX_8BIT, 0x441A, 0x20},
354 { IMX_8BIT, 0x441B, 0x00},
355 { IMX_8BIT, 0x441D, 0x40},
356 { IMX_8BIT, 0x441E, 0x1E},
357 { IMX_8BIT, 0x441F, 0x38},
358 { IMX_8BIT, 0x4420, 0x01},
359 { IMX_8BIT, 0x4444, 0x00},
360 { IMX_8BIT, 0x4445, 0x00},
361 { IMX_8BIT, 0x4446, 0x1D},
362 { IMX_8BIT, 0x4447, 0xF9},
363 { IMX_8BIT, 0x4452, 0x00},
364 { IMX_8BIT, 0x4453, 0xA0},
365 { IMX_8BIT, 0x4454, 0x08},
366 { IMX_8BIT, 0x4455, 0x00},
367 { IMX_8BIT, 0x4456, 0x0F},
368 { IMX_8BIT, 0x4457, 0xFF},
369 { IMX_8BIT, 0x4458, 0x18},
370 { IMX_8BIT, 0x4459, 0x18},
371 { IMX_8BIT, 0x445A, 0x3F},
372 { IMX_8BIT, 0x445B, 0x3A},
373 { IMX_8BIT, 0x445C, 0x00},
374 { IMX_8BIT, 0x445D, 0x28},
375 { IMX_8BIT, 0x445E, 0x01},
376 { IMX_8BIT, 0x445F, 0x90},
377 { IMX_8BIT, 0x4460, 0x00},
378 { IMX_8BIT, 0x4461, 0x60},
379 { IMX_8BIT, 0x4462, 0x00},
380 { IMX_8BIT, 0x4463, 0x00},
381 { IMX_8BIT, 0x4464, 0x00},
382 { IMX_8BIT, 0x4465, 0x00},
383 { IMX_8BIT, 0x446C, 0x00},
384 { IMX_8BIT, 0x446D, 0x00},
385 { IMX_8BIT, 0x446E, 0x00},
386 { IMX_8BIT, 0x452A, 0x02},
387 { IMX_8BIT, 0x0712, 0x01},
388 { IMX_8BIT, 0x0713, 0x00},
389 { IMX_8BIT, 0x0714, 0x01},
390 { IMX_8BIT, 0x0715, 0x00},
391 { IMX_8BIT, 0x0716, 0x01},
392 { IMX_8BIT, 0x0717, 0x00},
393 { IMX_8BIT, 0x0718, 0x01},
394 { IMX_8BIT, 0x0719, 0x00},
395 { IMX_8BIT, 0x4500, 0x1F },
396 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
397 { IMX_8BIT, 0x0205, 0x00},
398 { IMX_8BIT, 0x020E, 0x01},
399 { IMX_8BIT, 0x020F, 0x00},
400 { IMX_8BIT, 0x0210, 0x02},
401 { IMX_8BIT, 0x0211, 0x00},
402 { IMX_8BIT, 0x0212, 0x02},
403 { IMX_8BIT, 0x0213, 0x00},
404 { IMX_8BIT, 0x0214, 0x01},
405 { IMX_8BIT, 0x0215, 0x00},
406 /* HDR Setting */
407 { IMX_8BIT, 0x0230, 0x00},
408 { IMX_8BIT, 0x0231, 0x00},
409 { IMX_8BIT, 0x0233, 0x00},
410 { IMX_8BIT, 0x0234, 0x00},
411 { IMX_8BIT, 0x0235, 0x40},
412 { IMX_8BIT, 0x0238, 0x00},
413 { IMX_8BIT, 0x0239, 0x04},
414 { IMX_8BIT, 0x023B, 0x00},
415 { IMX_8BIT, 0x023C, 0x01},
416 { IMX_8BIT, 0x33B0, 0x04},
417 { IMX_8BIT, 0x33B1, 0x00},
418 { IMX_8BIT, 0x33B3, 0x00},
419 { IMX_8BIT, 0x33B4, 0x01},
420 { IMX_8BIT, 0x3800, 0x00},
421 GROUPED_PARAMETER_HOLD_DISABLE,
422 { IMX_TOK_TERM, 0, 0}
423};
424
425/********* Preview, continuous capture and still modes *****************/
426
427static struct imx_reg const imx135_13m[] = {
428 GROUPED_PARAMETER_HOLD_ENABLE,
429 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
430 /* Mode setting */
431 {IMX_8BIT, 0x0108, 0x03},
432 {IMX_8BIT, 0x0112, 0x0A},
433 {IMX_8BIT, 0x0113, 0x0A},
434 {IMX_8BIT, 0x0381, 0x01},
435 {IMX_8BIT, 0x0383, 0x01},
436 {IMX_8BIT, 0x0385, 0x01},
437 {IMX_8BIT, 0x0387, 0x01},
438 {IMX_8BIT, 0x0390, 0x00},
439 {IMX_8BIT, 0x0391, 0x11},
440 {IMX_8BIT, 0x0392, 0x00},
441 {IMX_8BIT, 0x0401, 0x00},
442 {IMX_8BIT, 0x0404, 0x00},
443 {IMX_8BIT, 0x0405, 0x10},
444 {IMX_8BIT, 0x4082, 0x01},
445 {IMX_8BIT, 0x4083, 0x01},
446 {IMX_8BIT, 0x4203, 0xFF},
447 {IMX_8BIT, 0x7006, 0x04},
448 /* Size Setting */
449 {IMX_8BIT, 0x0344, 0x00}, /* 0, 0, 4207,3119 4208x3120 */
450 {IMX_8BIT, 0x0345, 0x00},
451 {IMX_8BIT, 0x0346, 0x00},
452 {IMX_8BIT, 0x0347, 0x00},
453 {IMX_8BIT, 0x0348, 0x10},
454 {IMX_8BIT, 0x0349, 0x6F},
455 {IMX_8BIT, 0x034A, 0x0C},
456 {IMX_8BIT, 0x034B, 0x2F},
457 {IMX_8BIT, 0x034C, 0x10},
458 {IMX_8BIT, 0x034D, 0x70},
459 {IMX_8BIT, 0x034E, 0x0C},
460 {IMX_8BIT, 0x034F, 0x30},
461 {IMX_8BIT, 0x0350, 0x00},
462 {IMX_8BIT, 0x0351, 0x00},
463 {IMX_8BIT, 0x0352, 0x00},
464 {IMX_8BIT, 0x0353, 0x00},
465 {IMX_8BIT, 0x0354, 0x10}, /* 4208x3120 */
466 {IMX_8BIT, 0x0355, 0x70},
467 {IMX_8BIT, 0x0356, 0x0C},
468 {IMX_8BIT, 0x0357, 0x30},
469 {IMX_8BIT, 0x301D, 0x30},
470 {IMX_8BIT, 0x3310, 0x10},
471 {IMX_8BIT, 0x3311, 0x70},
472 {IMX_8BIT, 0x3312, 0x0C},
473 {IMX_8BIT, 0x3313, 0x30},
474 {IMX_8BIT, 0x331C, 0x00},
475 {IMX_8BIT, 0x331D, 0x10},
476 {IMX_8BIT, 0x4084, 0x00}, /* If scaling, Fill this */
477 {IMX_8BIT, 0x4085, 0x00},
478 {IMX_8BIT, 0x4086, 0x00},
479 {IMX_8BIT, 0x4087, 0x00},
480 {IMX_8BIT, 0x4400, 0x00},
481 {IMX_TOK_TERM, 0, 0},
482};
483
484/* 13MP reduced pixel clock MIPI 342MHz is EMC friendly*/
485static struct imx_reg const imx135_13m_for_mipi_342[] = {
486 GROUPED_PARAMETER_HOLD_ENABLE,
487 PLL_SETTINGS_FOR_MIPI_342MHZ_SALTBAY,
488 /* Mode setting */
489 {IMX_8BIT, 0x0108, 0x03},
490 {IMX_8BIT, 0x0112, 0x0A},
491 {IMX_8BIT, 0x0113, 0x0A},
492 {IMX_8BIT, 0x0381, 0x01},
493 {IMX_8BIT, 0x0383, 0x01},
494 {IMX_8BIT, 0x0385, 0x01},
495 {IMX_8BIT, 0x0387, 0x01},
496 {IMX_8BIT, 0x0390, 0x00},
497 {IMX_8BIT, 0x0391, 0x11},
498 {IMX_8BIT, 0x0392, 0x00},
499 {IMX_8BIT, 0x0401, 0x00},
500 {IMX_8BIT, 0x0404, 0x00},
501 {IMX_8BIT, 0x0405, 0x10},
502 {IMX_8BIT, 0x4082, 0x01},
503 {IMX_8BIT, 0x4083, 0x01},
504 {IMX_8BIT, 0x4203, 0xFF},
505 {IMX_8BIT, 0x7006, 0x04},
506 /* Size Setting */
507 {IMX_8BIT, 0x0344, 0x00},
508 {IMX_8BIT, 0x0345, 0x00},
509 {IMX_8BIT, 0x0346, 0x00},
510 {IMX_8BIT, 0x0347, 0x00},
511 {IMX_8BIT, 0x0348, 0x10},
512 {IMX_8BIT, 0x0349, 0x6F},
513 {IMX_8BIT, 0x034A, 0x0C},
514 {IMX_8BIT, 0x034B, 0x2F},
515 {IMX_8BIT, 0x034C, 0x10},
516 {IMX_8BIT, 0x034D, 0x70},
517 {IMX_8BIT, 0x034E, 0x0C},
518 {IMX_8BIT, 0x034F, 0x30},
519 {IMX_8BIT, 0x0350, 0x00},
520 {IMX_8BIT, 0x0351, 0x00},
521 {IMX_8BIT, 0x0352, 0x00},
522 {IMX_8BIT, 0x0353, 0x00},
523 {IMX_8BIT, 0x0354, 0x10},
524 {IMX_8BIT, 0x0355, 0x70},
525 {IMX_8BIT, 0x0356, 0x0C},
526 {IMX_8BIT, 0x0357, 0x30},
527 {IMX_8BIT, 0x301D, 0x30},
528 {IMX_8BIT, 0x3310, 0x10},
529 {IMX_8BIT, 0x3311, 0x70},
530 {IMX_8BIT, 0x3312, 0x0C},
531 {IMX_8BIT, 0x3313, 0x30},
532 {IMX_8BIT, 0x331C, 0x00},
533 {IMX_8BIT, 0x331D, 0x10},
534 {IMX_8BIT, 0x4084, 0x00}, /* If scaling, Fill this */
535 {IMX_8BIT, 0x4085, 0x00},
536 {IMX_8BIT, 0x4086, 0x00},
537 {IMX_8BIT, 0x4087, 0x00},
538 {IMX_8BIT, 0x4400, 0x00},
539 {IMX_TOK_TERM, 0, 0},
540};
541
542static struct imx_reg const imx135_10m[] = {
543 GROUPED_PARAMETER_HOLD_ENABLE,
544 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
545 /* Mode setting */
546 {IMX_8BIT, 0x0108, 0x03},
547 {IMX_8BIT, 0x0112, 0x0A},
548 {IMX_8BIT, 0x0113, 0x0A},
549 {IMX_8BIT, 0x0381, 0x01},
550 {IMX_8BIT, 0x0383, 0x01},
551 {IMX_8BIT, 0x0385, 0x01},
552 {IMX_8BIT, 0x0387, 0x01},
553 {IMX_8BIT, 0x0390, 0x00},
554 {IMX_8BIT, 0x0391, 0x11},
555 {IMX_8BIT, 0x0392, 0x00},
556 {IMX_8BIT, 0x0401, 0x00},
557 {IMX_8BIT, 0x0404, 0x00},
558 {IMX_8BIT, 0x0405, 0x10},
559 {IMX_8BIT, 0x4082, 0x01},
560 {IMX_8BIT, 0x4083, 0x01},
561 {IMX_8BIT, 0x4203, 0xFF},
562 {IMX_8BIT, 0x7006, 0x04},
563 /* Size setting */
564 {IMX_8BIT, 0x0344, 0x00}, /* 0, 376, 4207, 2743 */
565 {IMX_8BIT, 0x0345, 0x00},
566 {IMX_8BIT, 0x0346, 0x01},
567 {IMX_8BIT, 0x0347, 0x78},
568 {IMX_8BIT, 0x0348, 0x10},
569 {IMX_8BIT, 0x0349, 0x6f},
570 {IMX_8BIT, 0x034A, 0x0a},
571 {IMX_8BIT, 0x034B, 0xb7},
572 {IMX_8BIT, 0x034C, 0x10}, /* 4208x2368 */
573 {IMX_8BIT, 0x034D, 0x70},
574 {IMX_8BIT, 0x034E, 0x09},
575 {IMX_8BIT, 0x034F, 0x40},
576 {IMX_8BIT, 0x0350, 0x00},
577 {IMX_8BIT, 0x0351, 0x00},
578 {IMX_8BIT, 0x0352, 0x00},
579 {IMX_8BIT, 0x0353, 0x00},
580 {IMX_8BIT, 0x0354, 0x10},
581 {IMX_8BIT, 0x0355, 0x70},
582 {IMX_8BIT, 0x0356, 0x09},
583 {IMX_8BIT, 0x0357, 0x40},
584 {IMX_8BIT, 0x301D, 0x30},
585 {IMX_8BIT, 0x3310, 0x10},
586 {IMX_8BIT, 0x3311, 0x70},
587 {IMX_8BIT, 0x3312, 0x09},
588 {IMX_8BIT, 0x3313, 0x40},
589 {IMX_8BIT, 0x331C, 0x01},
590 {IMX_8BIT, 0x331D, 0x68},
591 {IMX_8BIT, 0x4084, 0x00},
592 {IMX_8BIT, 0x4085, 0x00},
593 {IMX_8BIT, 0x4086, 0x00},
594 {IMX_8BIT, 0x4087, 0x00},
595 {IMX_8BIT, 0x4400, 0x00},
596 {IMX_TOK_TERM, 0, 0},
597};
598
599static struct imx_reg const imx135_10m_for_mipi_342[] = {
600 GROUPED_PARAMETER_HOLD_ENABLE,
601 PLL_SETTINGS_FOR_MIPI_342MHZ_SALTBAY,
602 /* Mode setting */
603 {IMX_8BIT, 0x0108, 0x03},
604 {IMX_8BIT, 0x0112, 0x0A},
605 {IMX_8BIT, 0x0113, 0x0A},
606 {IMX_8BIT, 0x0381, 0x01},
607 {IMX_8BIT, 0x0383, 0x01},
608 {IMX_8BIT, 0x0385, 0x01},
609 {IMX_8BIT, 0x0387, 0x01},
610 {IMX_8BIT, 0x0390, 0x00},
611 {IMX_8BIT, 0x0391, 0x11},
612 {IMX_8BIT, 0x0392, 0x00},
613 {IMX_8BIT, 0x0401, 0x00},
614 {IMX_8BIT, 0x0404, 0x00},
615 {IMX_8BIT, 0x0405, 0x10},
616 {IMX_8BIT, 0x4082, 0x01},
617 {IMX_8BIT, 0x4083, 0x01},
618 {IMX_8BIT, 0x4203, 0xFF},
619 {IMX_8BIT, 0x7006, 0x04},
620 /* Size setting */
621 {IMX_8BIT, 0x0344, 0x00}, /* 0, 376, 4207, 2743 */
622 {IMX_8BIT, 0x0345, 0x00},
623 {IMX_8BIT, 0x0346, 0x01},
624 {IMX_8BIT, 0x0347, 0x78},
625 {IMX_8BIT, 0x0348, 0x10},
626 {IMX_8BIT, 0x0349, 0x6f},
627 {IMX_8BIT, 0x034A, 0x0a},
628 {IMX_8BIT, 0x034B, 0xb7},
629 {IMX_8BIT, 0x034C, 0x10}, /* 4208x2368 */
630 {IMX_8BIT, 0x034D, 0x70},
631 {IMX_8BIT, 0x034E, 0x09},
632 {IMX_8BIT, 0x034F, 0x40},
633 {IMX_8BIT, 0x0350, 0x00},
634 {IMX_8BIT, 0x0351, 0x00},
635 {IMX_8BIT, 0x0352, 0x00},
636 {IMX_8BIT, 0x0353, 0x00},
637 {IMX_8BIT, 0x0354, 0x10},
638 {IMX_8BIT, 0x0355, 0x70},
639 {IMX_8BIT, 0x0356, 0x09},
640 {IMX_8BIT, 0x0357, 0x40},
641 {IMX_8BIT, 0x301D, 0x30},
642 {IMX_8BIT, 0x3310, 0x10},
643 {IMX_8BIT, 0x3311, 0x70},
644 {IMX_8BIT, 0x3312, 0x09},
645 {IMX_8BIT, 0x3313, 0x40},
646 {IMX_8BIT, 0x331C, 0x01},
647 {IMX_8BIT, 0x331D, 0x68},
648 {IMX_8BIT, 0x4084, 0x00},
649 {IMX_8BIT, 0x4085, 0x00},
650 {IMX_8BIT, 0x4086, 0x00},
651 {IMX_8BIT, 0x4087, 0x00},
652 {IMX_8BIT, 0x4400, 0x00},
653 {IMX_TOK_TERM, 0, 0},
654};
655
656/*
657 * It is 8.5 DS from (3:2)8m cropped setting.
658 *
659 * The 8m(3:2) cropped setting is 2992x2448 effective res.
660 * The ISP effect cropped setting should be 1408x1152 effect res.
661 *
662 * Consider ISP 16x16 padding:
663 * sensor outputs 368x304
664 * cropped region is 3128x2584
665 */
666static struct imx_reg const imx135_368x304_cropped[] = {
667 GROUPED_PARAMETER_HOLD_ENABLE,
668 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
669 /* Mode setting */
670 {IMX_8BIT, 0x0108, 0x03},
671 {IMX_8BIT, 0x0112, 0x0A},
672 {IMX_8BIT, 0x0113, 0x0A},
673 {IMX_8BIT, 0x0381, 0x01},
674 {IMX_8BIT, 0x0383, 0x01},
675 {IMX_8BIT, 0x0385, 0x01},
676 {IMX_8BIT, 0x0387, 0x01},
677 {IMX_8BIT, 0x0390, 0x00},
678 {IMX_8BIT, 0x0391, 0x11}, /* no binning */
679 {IMX_8BIT, 0x0392, 0x00},
680 {IMX_8BIT, 0x0401, 0x02}, /* resize */
681 {IMX_8BIT, 0x0404, 0x00},
682 {IMX_8BIT, 0x0405, 0x88}, /* 136/16=8.5 */
683 {IMX_8BIT, 0x4082, 0x00},
684 {IMX_8BIT, 0x4083, 0x00},
685 {IMX_8BIT, 0x4203, 0xFF},
686 {IMX_8BIT, 0x7006, 0x04},
687 /* Size setting */
688 {IMX_8BIT, 0x0344, 0x02}, /* X_ADD_STA */
689 {IMX_8BIT, 0x0345, 0x1C}, /* 540 */
690 {IMX_8BIT, 0x0346, 0x01}, /* Y_ADD_STA */
691 {IMX_8BIT, 0x0347, 0x0C}, /* 268 */
692 {IMX_8BIT, 0x0348, 0x0E}, /* X_ADD_END */
693 {IMX_8BIT, 0x0349, 0x53}, /* 3667 */
694 {IMX_8BIT, 0x034A, 0x0B}, /* Y_ADD_END */
695 {IMX_8BIT, 0x034B, 0x23}, /* 2851 */
696 {IMX_8BIT, 0x034C, 0x01}, /* X_OUT_SIZE */
697 {IMX_8BIT, 0x034D, 0x70}, /* 368 */
698 {IMX_8BIT, 0x034E, 0x01}, /* Y_OUT_SIZE */
699 {IMX_8BIT, 0x034F, 0x30}, /* 304 */
700 {IMX_8BIT, 0x0350, 0x00}, /* No Dig crop */
701 {IMX_8BIT, 0x0351, 0x00},
702 {IMX_8BIT, 0x0352, 0x00},
703 {IMX_8BIT, 0x0353, 0x00},
704 {IMX_8BIT, 0x0354, 0x0C}, /* Cut out siz same as the size after crop */
705 {IMX_8BIT, 0x0355, 0x38},
706 {IMX_8BIT, 0x0356, 0x0A},
707 {IMX_8BIT, 0x0357, 0x18},
708 {IMX_8BIT, 0x301D, 0x30}, /* ?? */
709 {IMX_8BIT, 0x3310, 0x01}, /* Write H and V size same as output size? */
710 {IMX_8BIT, 0x3311, 0x70},
711 {IMX_8BIT, 0x3312, 0x01},
712 {IMX_8BIT, 0x3313, 0x30},
713 {IMX_8BIT, 0x331C, 0x02}, /* ?? */
714 {IMX_8BIT, 0x331D, 0xD0},
715 {IMX_8BIT, 0x4084, 0x01}, /* Scaling related? */
716 {IMX_8BIT, 0x4085, 0x70},
717 {IMX_8BIT, 0x4086, 0x01},
718 {IMX_8BIT, 0x4087, 0x30},
719 {IMX_8BIT, 0x4400, 0x00}, /* STATS off */
720 {IMX_TOK_TERM, 0, 0},
721};
722
723/*
724 * It is 1/4 binning from 8m cropped setting.
725 *
726 * The 8m cropped setting is 3264x2448 effective res.
727 * The xga cropped setting should be 816x612 effect res.
728 *
729 * Consider ISP 16x16 padding:
730 * sensor outputs 832x628
731 * cropped region is 3328x2512
732 */
733static struct imx_reg const imx135_xga_cropped[] = {
734 GROUPED_PARAMETER_HOLD_ENABLE,
735 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
736 /* Mode setting */
737 {IMX_8BIT, 0x0108, 0x03},
738 {IMX_8BIT, 0x0112, 0x0A},
739 {IMX_8BIT, 0x0113, 0x0A},
740 {IMX_8BIT, 0x0381, 0x01},
741 {IMX_8BIT, 0x0383, 0x01},
742 {IMX_8BIT, 0x0385, 0x01},
743 {IMX_8BIT, 0x0387, 0x01},
744 {IMX_8BIT, 0x0390, 0x01},
745 {IMX_8BIT, 0x0391, 0x44},
746 {IMX_8BIT, 0x0392, 0x00},
747 {IMX_8BIT, 0x0401, 0x00},
748 {IMX_8BIT, 0x0404, 0x00},
749 {IMX_8BIT, 0x0405, 0x10},
750 {IMX_8BIT, 0x4082, 0x00},
751 {IMX_8BIT, 0x4083, 0x00},
752/* {IMX_8BIT, 0x4203, 0xFF}, */
753 {IMX_8BIT, 0x7006, 0x04},
754 /* Size setting */
755 {IMX_8BIT, 0x0344, 0x01}, /* X_ADD_STA */
756 {IMX_8BIT, 0x0345, 0xB8}, /* 440 */
757 {IMX_8BIT, 0x0346, 0x01}, /* Y_ADD_STA */
758 {IMX_8BIT, 0x0347, 0x30}, /* 304 */
759 {IMX_8BIT, 0x0348, 0x0E}, /* X_ADD_END */
760 {IMX_8BIT, 0x0349, 0xB7}, /* 4207-440=3767 */
761 {IMX_8BIT, 0x034A, 0x0A}, /* Y_ADD_END */
762 {IMX_8BIT, 0x034B, 0xFF}, /* 3119-304=2815 */
763 {IMX_8BIT, 0x034C, 0x03}, /* X_OUT_SIZE */
764 {IMX_8BIT, 0x034D, 0x40}, /* 832 */
765 {IMX_8BIT, 0x034E, 0x02}, /* Y_OUT_SIZE */
766 {IMX_8BIT, 0x034F, 0x74}, /* 628 */
767 {IMX_8BIT, 0x0350, 0x00}, /* No Dig crop */
768 {IMX_8BIT, 0x0351, 0x00},
769 {IMX_8BIT, 0x0352, 0x00},
770 {IMX_8BIT, 0x0353, 0x00},
771 {IMX_8BIT, 0x0354, 0x03}, /* Cut out size same as the size after crop */
772 {IMX_8BIT, 0x0355, 0x40},
773 {IMX_8BIT, 0x0356, 0x02},
774 {IMX_8BIT, 0x0357, 0x74},
775 {IMX_8BIT, 0x301D, 0x30}, /* ?? */
776 {IMX_8BIT, 0x3310, 0x03}, /* Write H and V size same as output size? */
777 {IMX_8BIT, 0x3311, 0x40},
778 {IMX_8BIT, 0x3312, 0x02},
779 {IMX_8BIT, 0x3313, 0x74},
780 {IMX_8BIT, 0x331C, 0x02}, /* ?? */
781 {IMX_8BIT, 0x331D, 0x21},
782 {IMX_8BIT, 0x4084, 0x03}, /* Scaling related? */
783 {IMX_8BIT, 0x4085, 0x40},
784 {IMX_8BIT, 0x4086, 0x02},
785 {IMX_8BIT, 0x4087, 0x74},
786 {IMX_8BIT, 0x4400, 0x00}, /* STATS off */
787 {IMX_TOK_TERM, 0, 0},
788};
789
790/*
791 * It is 28/16 DS from (16:9)8m cropped setting.
792 *
793 * The 8m(16:9) cropped setting is 3360x1890 effective res.
794 * - this is larger then the expected 3264x1836 FOV
795 *
796 * Consider ISP 16x16 padding:
797 * sensor outputs 1936x1096
798 * cropped region is 3388x1918
799 */
800static struct imx_reg const imx135_1936x1096_cropped[] = {
801 GROUPED_PARAMETER_HOLD_ENABLE,
802 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
803 /* Mode setting */
804 {IMX_8BIT, 0x0108, 0x03},
805 {IMX_8BIT, 0x0112, 0x0A},
806 {IMX_8BIT, 0x0113, 0x0A},
807 {IMX_8BIT, 0x0381, 0x01},
808 {IMX_8BIT, 0x0383, 0x01},
809 {IMX_8BIT, 0x0385, 0x01},
810 {IMX_8BIT, 0x0387, 0x01},
811 {IMX_8BIT, 0x0390, 0x00},
812 {IMX_8BIT, 0x0391, 0x11}, /* no binning */
813 {IMX_8BIT, 0x0392, 0x00},
814 {IMX_8BIT, 0x0401, 0x02}, /* resize */
815 {IMX_8BIT, 0x0404, 0x00},
816 {IMX_8BIT, 0x0405, 0x1C}, /* 28/16 */
817 {IMX_8BIT, 0x4082, 0x00},
818 {IMX_8BIT, 0x4083, 0x00},
819 {IMX_8BIT, 0x4203, 0xFF},
820 {IMX_8BIT, 0x7006, 0x04},
821 /* Size setting */
822 {IMX_8BIT, 0x0344, 0x01}, /* X_ADD_STA */
823 {IMX_8BIT, 0x0345, 0x9A}, /* 410 */
824 {IMX_8BIT, 0x0346, 0x02}, /* Y_ADD_STA */
825 {IMX_8BIT, 0x0347, 0x58}, /* 600 */
826 {IMX_8BIT, 0x0348, 0x0E}, /* X_ADD_END */
827 {IMX_8BIT, 0x0349, 0xD5}, /* 3797 */
828 {IMX_8BIT, 0x034A, 0x09}, /* Y_ADD_END */
829 {IMX_8BIT, 0x034B, 0xD5}, /* 2517 */
830 {IMX_8BIT, 0x034C, 0x07}, /* X_OUT_SIZE */
831 {IMX_8BIT, 0x034D, 0x90}, /* 1936 */
832 {IMX_8BIT, 0x034E, 0x04}, /* Y_OUT_SIZE */
833 {IMX_8BIT, 0x034F, 0x48}, /* 1096 */
834 {IMX_8BIT, 0x0350, 0x00}, /* No Dig crop */
835 {IMX_8BIT, 0x0351, 0x00},
836 {IMX_8BIT, 0x0352, 0x00},
837 {IMX_8BIT, 0x0353, 0x00},
838 {IMX_8BIT, 0x0354, 0x0D}, /* Cut out siz same as the size after crop */
839 {IMX_8BIT, 0x0355, 0x3C},
840 {IMX_8BIT, 0x0356, 0x07},
841 {IMX_8BIT, 0x0357, 0x7E},
842 {IMX_8BIT, 0x301D, 0x30}, /* ?? */
843 {IMX_8BIT, 0x3310, 0x07}, /* Write H and V size same as output size? */
844 {IMX_8BIT, 0x3311, 0x90},
845 {IMX_8BIT, 0x3312, 0x04},
846 {IMX_8BIT, 0x3313, 0x48},
847 {IMX_8BIT, 0x331C, 0x00}, /* ?? */
848 {IMX_8BIT, 0x331D, 0xAA},
849 {IMX_8BIT, 0x4084, 0x07}, /* Scaling related? */
850 {IMX_8BIT, 0x4085, 0x90},
851 {IMX_8BIT, 0x4086, 0x04},
852 {IMX_8BIT, 0x4087, 0x48},
853 {IMX_8BIT, 0x4400, 0x00}, /* STATS off */
854 {IMX_TOK_TERM, 0, 0},
855};
856
857/*
858 * It is 2.125 DS from (3:2)8m cropped setting.
859 *
860 * The 8m(3:2) cropped setting is 2992x2448 effective res.
861 * The ISP effect cropped setting should be 1408x1152 effect res.
862 *
863 * Consider ISP 16x16 padding:
864 * sensor outputs 1424x1168
865 * cropped region is 3026x2482
866 */
867static struct imx_reg const imx135_1424x1168_cropped[] = {
868 GROUPED_PARAMETER_HOLD_ENABLE,
869 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
870 /* Mode setting */
871 {IMX_8BIT, 0x0108, 0x03},
872 {IMX_8BIT, 0x0112, 0x0A},
873 {IMX_8BIT, 0x0113, 0x0A},
874 {IMX_8BIT, 0x0381, 0x01},
875 {IMX_8BIT, 0x0383, 0x01},
876 {IMX_8BIT, 0x0385, 0x01},
877 {IMX_8BIT, 0x0387, 0x01},
878 {IMX_8BIT, 0x0390, 0x00},
879 {IMX_8BIT, 0x0391, 0x11}, /* no binning */
880 {IMX_8BIT, 0x0392, 0x00},
881 {IMX_8BIT, 0x0401, 0x02}, /* resize */
882 {IMX_8BIT, 0x0404, 0x00},
883 {IMX_8BIT, 0x0405, 0x22}, /* 34/16=2.125 */
884 {IMX_8BIT, 0x4082, 0x00},
885 {IMX_8BIT, 0x4083, 0x00},
886 {IMX_8BIT, 0x4203, 0xFF},
887 {IMX_8BIT, 0x7006, 0x04},
888 /* Size setting */
889 {IMX_8BIT, 0x0344, 0x02}, /* X_ADD_STA */
890 {IMX_8BIT, 0x0345, 0x4E}, /* 590 */
891 {IMX_8BIT, 0x0346, 0x01}, /* Y_ADD_STA */
892 {IMX_8BIT, 0x0347, 0x3E}, /* 318 */
893 {IMX_8BIT, 0x0348, 0x0E}, /* X_ADD_END */
894 {IMX_8BIT, 0x0349, 0x1F}, /* 3615 */
895 {IMX_8BIT, 0x034A, 0x0A}, /* Y_ADD_END */
896 {IMX_8BIT, 0x034B, 0xEF}, /* 2799 */
897 {IMX_8BIT, 0x034C, 0x05}, /* X_OUT_SIZE */
898 {IMX_8BIT, 0x034D, 0x90}, /* 1424 */
899 {IMX_8BIT, 0x034E, 0x04}, /* Y_OUT_SIZE */
900 {IMX_8BIT, 0x034F, 0x90}, /* 1168 */
901 {IMX_8BIT, 0x0350, 0x00}, /* No Dig crop */
902 {IMX_8BIT, 0x0351, 0x00},
903 {IMX_8BIT, 0x0352, 0x00},
904 {IMX_8BIT, 0x0353, 0x00},
905 {IMX_8BIT, 0x0354, 0x0B}, /* Cut out siz same as the size after crop */
906 {IMX_8BIT, 0x0355, 0xD2},
907 {IMX_8BIT, 0x0356, 0x09},
908 {IMX_8BIT, 0x0357, 0xB2},
909 {IMX_8BIT, 0x301D, 0x30}, /* ?? */
910 {IMX_8BIT, 0x3310, 0x05}, /* Write H and V size same as output size? */
911 {IMX_8BIT, 0x3311, 0x90},
912 {IMX_8BIT, 0x3312, 0x04},
913 {IMX_8BIT, 0x3313, 0x90},
914 {IMX_8BIT, 0x331C, 0x00}, /* ?? */
915 {IMX_8BIT, 0x331D, 0xAA},
916 {IMX_8BIT, 0x4084, 0x05}, /* Scaling related? */
917 {IMX_8BIT, 0x4085, 0x90},
918 {IMX_8BIT, 0x4086, 0x04},
919 {IMX_8BIT, 0x4087, 0x90},
920 {IMX_8BIT, 0x4400, 0x00}, /* STATS off */
921 {IMX_TOK_TERM, 0, 0},
922};
923
924/*
925 * It is 1/2 binning from 8m cropped setting.
926 *
927 * The 8m cropped setting is 3264x2448 effective res.
928 * The 2m cropped setting should be 1632x1224 effect res.
929 *
930 * Consider ISP 16x16 padding:
931 * sensor outputs 1648x1240
932 * cropped region is 3296x2480
933 */
934static struct imx_reg const imx135_2m_cropped[] = {
935 GROUPED_PARAMETER_HOLD_ENABLE,
936 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
937 /* Mode setting */
938 {IMX_8BIT, 0x0108, 0x03},
939 {IMX_8BIT, 0x0112, 0x0A},
940 {IMX_8BIT, 0x0113, 0x0A},
941 {IMX_8BIT, 0x0381, 0x01},
942 {IMX_8BIT, 0x0383, 0x01},
943 {IMX_8BIT, 0x0385, 0x01},
944 {IMX_8BIT, 0x0387, 0x01},
945 {IMX_8BIT, 0x0390, 0x01},
946 {IMX_8BIT, 0x0391, 0x22},
947 {IMX_8BIT, 0x0392, 0x00},
948 {IMX_8BIT, 0x0401, 0x00},
949 {IMX_8BIT, 0x0404, 0x00},
950 {IMX_8BIT, 0x0405, 0x10},
951 {IMX_8BIT, 0x4082, 0x01},
952 {IMX_8BIT, 0x4083, 0x01},
953 {IMX_8BIT, 0x4203, 0xFF},
954 {IMX_8BIT, 0x7006, 0x04},
955 /* Size setting */
956 {IMX_8BIT, 0x0344, 0x01}, /* X_ADD_STA */
957 {IMX_8BIT, 0x0345, 0xC8}, /* 464(1D0) -> 456(1C8)*/
958 {IMX_8BIT, 0x0346, 0x01}, /* Y_ADD_STA */
959 {IMX_8BIT, 0x0347, 0x40}, /* 320 */
960 {IMX_8BIT, 0x0348, 0x0E}, /* X_ADD_END */
961 {IMX_8BIT, 0x0349, 0xA7}, /* 4207-456=3751 */
962 {IMX_8BIT, 0x034A, 0x0A}, /* Y_ADD_END */
963 {IMX_8BIT, 0x034B, 0xEF}, /* 3119-320=2799 */
964 {IMX_8BIT, 0x034C, 0x06}, /* X_OUT_SIZE */
965 {IMX_8BIT, 0x034D, 0x70}, /* 1648 */
966 {IMX_8BIT, 0x034E, 0x04}, /* Y_OUT_SIZE */
967 {IMX_8BIT, 0x034F, 0xD8}, /* 1240 */
968 {IMX_8BIT, 0x0350, 0x00}, /* No Dig crop */
969 {IMX_8BIT, 0x0351, 0x00},
970 {IMX_8BIT, 0x0352, 0x00},
971 {IMX_8BIT, 0x0353, 0x00},
972 {IMX_8BIT, 0x0354, 0x06}, /* Cut out size same as the size after crop */
973 {IMX_8BIT, 0x0355, 0x70},
974 {IMX_8BIT, 0x0356, 0x04},
975 {IMX_8BIT, 0x0357, 0xD8},
976 {IMX_8BIT, 0x301D, 0x30}, /* ?? */
977 {IMX_8BIT, 0x3310, 0x06}, /* Write H and V size same as output size? */
978 {IMX_8BIT, 0x3311, 0x70},
979 {IMX_8BIT, 0x3312, 0x04},
980 {IMX_8BIT, 0x3313, 0xD8},
981 {IMX_8BIT, 0x331C, 0x00}, /* ?? */
982 {IMX_8BIT, 0x331D, 0xAA},
983 {IMX_8BIT, 0x4084, 0x00}, /* Scaling related? */
984 {IMX_8BIT, 0x4085, 0x00},
985 {IMX_8BIT, 0x4086, 0x00},
986 {IMX_8BIT, 0x4087, 0x00},
987 {IMX_8BIT, 0x4400, 0x00}, /* STATS off */
988 {IMX_TOK_TERM, 0, 0},
989};
990
991/*
992 * 8M Cropped 16:9 setting
993 *
994 * Effect res: 3264x1836
995 * Sensor out: 3280x1852
996 */
997static struct imx_reg const imx135_6m_cropped[] = {
998 GROUPED_PARAMETER_HOLD_ENABLE,
999 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
1000 /* Mode setting */
1001 {IMX_8BIT, 0x0108, 0x03},
1002 {IMX_8BIT, 0x0112, 0x0A},
1003 {IMX_8BIT, 0x0113, 0x0A},
1004 {IMX_8BIT, 0x0381, 0x01},
1005 {IMX_8BIT, 0x0383, 0x01},
1006 {IMX_8BIT, 0x0385, 0x01},
1007 {IMX_8BIT, 0x0387, 0x01},
1008 {IMX_8BIT, 0x0390, 0x00},
1009 {IMX_8BIT, 0x0391, 0x11},
1010 {IMX_8BIT, 0x0392, 0x00},
1011 {IMX_8BIT, 0x0401, 0x00},
1012 {IMX_8BIT, 0x0404, 0x00},
1013 {IMX_8BIT, 0x0405, 0x10},
1014 {IMX_8BIT, 0x4082, 0x01},
1015 {IMX_8BIT, 0x4083, 0x01},
1016 {IMX_8BIT, 0x4203, 0xFF},
1017 {IMX_8BIT, 0x7006, 0x04},
1018 /* Size setting */
1019 {IMX_8BIT, 0x0344, 0x01},
1020 {IMX_8BIT, 0x0345, 0xD0},
1021 {IMX_8BIT, 0x0346, 0x02}, /* 634 */
1022 {IMX_8BIT, 0x0347, 0x7A},
1023 {IMX_8BIT, 0x0348, 0x0E},
1024 {IMX_8BIT, 0x0349, 0x9F},
1025 {IMX_8BIT, 0x034A, 0x09}, /* 2485 */
1026 {IMX_8BIT, 0x034B, 0xB5},
1027 {IMX_8BIT, 0x034C, 0x0C}, /* 3280 */
1028 {IMX_8BIT, 0x034D, 0xD0},
1029 {IMX_8BIT, 0x034E, 0x07}, /* 1852 */
1030 {IMX_8BIT, 0x034F, 0x3C},
1031 {IMX_8BIT, 0x0350, 0x00}, /* No Dig crop */
1032 {IMX_8BIT, 0x0351, 0x00},
1033 {IMX_8BIT, 0x0352, 0x00},
1034 {IMX_8BIT, 0x0353, 0x00},
1035 {IMX_8BIT, 0x0354, 0x0C}, /* Cut out size same as the size after crop */
1036 {IMX_8BIT, 0x0355, 0xD0},
1037 {IMX_8BIT, 0x0356, 0x07},
1038 {IMX_8BIT, 0x0357, 0x3C},
1039 {IMX_8BIT, 0x301D, 0x30}, /* ?? */
1040 {IMX_8BIT, 0x3310, 0x0C}, /* Write H and V size same as output size? */
1041 {IMX_8BIT, 0x3311, 0xD0},
1042 {IMX_8BIT, 0x3312, 0x07},
1043 {IMX_8BIT, 0x3313, 0x3C},
1044 {IMX_8BIT, 0x331C, 0x00}, /* ?? */
1045 {IMX_8BIT, 0x331D, 0x10},
1046 {IMX_8BIT, 0x4084, 0x00}, /* Scaling related? */
1047 {IMX_8BIT, 0x4085, 0x00},
1048 {IMX_8BIT, 0x4086, 0x00},
1049 {IMX_8BIT, 0x4087, 0x00},
1050 {IMX_8BIT, 0x4400, 0x00}, /* STATS off */
1051 {IMX_TOK_TERM, 0, 0},
1052};
1053
1054static struct imx_reg const imx135_8m_cropped[] = {
1055 GROUPED_PARAMETER_HOLD_ENABLE,
1056 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
1057 /* Mode setting */
1058 {IMX_8BIT, 0x0108, 0x03},
1059 {IMX_8BIT, 0x0112, 0x0A},
1060 {IMX_8BIT, 0x0113, 0x0A},
1061 {IMX_8BIT, 0x0381, 0x01},
1062 {IMX_8BIT, 0x0383, 0x01},
1063 {IMX_8BIT, 0x0385, 0x01},
1064 {IMX_8BIT, 0x0387, 0x01},
1065 {IMX_8BIT, 0x0390, 0x00},
1066 {IMX_8BIT, 0x0391, 0x11},
1067 {IMX_8BIT, 0x0392, 0x00},
1068 {IMX_8BIT, 0x0401, 0x00},
1069 {IMX_8BIT, 0x0404, 0x00},
1070 {IMX_8BIT, 0x0405, 0x10},
1071 {IMX_8BIT, 0x4082, 0x01},
1072 {IMX_8BIT, 0x4083, 0x01},
1073 {IMX_8BIT, 0x4203, 0xFF},
1074 {IMX_8BIT, 0x7006, 0x04},
1075 /* Size setting */
1076 {IMX_8BIT, 0x0344, 0x01},
1077 {IMX_8BIT, 0x0345, 0xD0},
1078 {IMX_8BIT, 0x0346, 0x01},
1079 {IMX_8BIT, 0x0347, 0x48},
1080 {IMX_8BIT, 0x0348, 0x0E},
1081 {IMX_8BIT, 0x0349, 0x9F},
1082 {IMX_8BIT, 0x034A, 0x0A},
1083 {IMX_8BIT, 0x034B, 0xE7},
1084 {IMX_8BIT, 0x034C, 0x0C}, /* 3280 */
1085 {IMX_8BIT, 0x034D, 0xD0},
1086 {IMX_8BIT, 0x034E, 0x09}, /* 2464 */
1087 {IMX_8BIT, 0x034F, 0xA0},
1088 {IMX_8BIT, 0x0350, 0x00}, /* No Dig crop */
1089 {IMX_8BIT, 0x0351, 0x00},
1090 {IMX_8BIT, 0x0352, 0x00},
1091 {IMX_8BIT, 0x0353, 0x00},
1092 {IMX_8BIT, 0x0354, 0x0C}, /* Cut out size same as the size after crop */
1093 {IMX_8BIT, 0x0355, 0xD0},
1094 {IMX_8BIT, 0x0356, 0x09},
1095 {IMX_8BIT, 0x0357, 0xA0},
1096 {IMX_8BIT, 0x301D, 0x30}, /* ?? */
1097 {IMX_8BIT, 0x3310, 0x0C}, /* Write H and V size same as output size? */
1098 {IMX_8BIT, 0x3311, 0xD0},
1099 {IMX_8BIT, 0x3312, 0x09},
1100 {IMX_8BIT, 0x3313, 0xA0},
1101 {IMX_8BIT, 0x331C, 0x00}, /* ?? */
1102 {IMX_8BIT, 0x331D, 0x10},
1103 {IMX_8BIT, 0x4084, 0x00}, /* Scaling related? */
1104 {IMX_8BIT, 0x4085, 0x00},
1105 {IMX_8BIT, 0x4086, 0x00},
1106 {IMX_8BIT, 0x4087, 0x00},
1107 {IMX_8BIT, 0x4400, 0x00}, /* STATS off */
1108 {IMX_TOK_TERM, 0, 0},
1109};
1110
1111static struct imx_reg const imx135_8m_scaled_from_12m[] = {
1112 GROUPED_PARAMETER_HOLD_ENABLE,
1113 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
1114 /* Mode setting */
1115 {IMX_8BIT, 0x0108, 0x03},
1116 {IMX_8BIT, 0x0112, 0x0A},
1117 {IMX_8BIT, 0x0113, 0x0A},
1118 {IMX_8BIT, 0x0381, 0x01},
1119 {IMX_8BIT, 0x0383, 0x01},
1120 {IMX_8BIT, 0x0385, 0x01},
1121 {IMX_8BIT, 0x0387, 0x01},
1122 {IMX_8BIT, 0x0390, 0x00},
1123 {IMX_8BIT, 0x0391, 0x11},
1124 {IMX_8BIT, 0x0392, 0x00},
1125 {IMX_8BIT, 0x0401, 0x02}, /* Scaling */
1126 {IMX_8BIT, 0x0404, 0x00},
1127 {IMX_8BIT, 0x0405, 0x14},
1128 {IMX_8BIT, 0x4082, 0x00},
1129 {IMX_8BIT, 0x4083, 0x00},
1130 {IMX_8BIT, 0x4203, 0xFF},
1131 {IMX_8BIT, 0x7006, 0x04},
1132 /* Size setting */
1133 {IMX_8BIT, 0x0344, 0x00},
1134 {IMX_8BIT, 0x0345, 0x36},
1135 {IMX_8BIT, 0x0346, 0x00},
1136 {IMX_8BIT, 0x0347, 0x14},
1137 {IMX_8BIT, 0x0348, 0x10},
1138 {IMX_8BIT, 0x0349, 0x39},
1139 {IMX_8BIT, 0x034A, 0x0C},
1140 {IMX_8BIT, 0x034B, 0x1B},
1141 {IMX_8BIT, 0x034C, 0x0C}, /* 3280x2464 */
1142 {IMX_8BIT, 0x034D, 0xD0},
1143 {IMX_8BIT, 0x034E, 0x09},
1144 {IMX_8BIT, 0x034F, 0xA0},
1145 {IMX_8BIT, 0x0350, 0x00}, /* No Dig crop */
1146 {IMX_8BIT, 0x0351, 0x00},
1147 {IMX_8BIT, 0x0352, 0x00},
1148 {IMX_8BIT, 0x0353, 0x00},
1149 {IMX_8BIT, 0x0354, 0x10}, /* Cut out size same as the size after crop */
1150 {IMX_8BIT, 0x0355, 0x04},
1151 {IMX_8BIT, 0x0356, 0x0C},
1152 {IMX_8BIT, 0x0357, 0x08},
1153 {IMX_8BIT, 0x301D, 0x30}, /* ?? */
1154 {IMX_8BIT, 0x3310, 0x0C}, /* Write H and V size same as output size? */
1155 {IMX_8BIT, 0x3311, 0xD0},
1156 {IMX_8BIT, 0x3312, 0x09},
1157 {IMX_8BIT, 0x3313, 0xA0},
1158 {IMX_8BIT, 0x331C, 0x02}, /* ?? */
1159 {IMX_8BIT, 0x331D, 0xA0},
1160 {IMX_8BIT, 0x4084, 0x0C}, /* Scaling related? */
1161 {IMX_8BIT, 0x4085, 0xD0},
1162 {IMX_8BIT, 0x4086, 0x09},
1163 {IMX_8BIT, 0x4087, 0xA0},
1164 {IMX_8BIT, 0x4400, 0x00}, /* STATS off */
1165 {IMX_TOK_TERM, 0, 0},
1166};
1167
1168static struct imx_reg const imx135_8m_scaled_from_12m_for_mipi342[] = {
1169 GROUPED_PARAMETER_HOLD_ENABLE,
1170 PLL_SETTINGS_FOR_MIPI_342MHZ_SALTBAY,
1171 /* Mode setting */
1172 {IMX_8BIT, 0x0108, 0x03},
1173 {IMX_8BIT, 0x0112, 0x0A},
1174 {IMX_8BIT, 0x0113, 0x0A},
1175 {IMX_8BIT, 0x0381, 0x01},
1176 {IMX_8BIT, 0x0383, 0x01},
1177 {IMX_8BIT, 0x0385, 0x01},
1178 {IMX_8BIT, 0x0387, 0x01},
1179 {IMX_8BIT, 0x0390, 0x00},
1180 {IMX_8BIT, 0x0391, 0x11},
1181 {IMX_8BIT, 0x0392, 0x00},
1182 {IMX_8BIT, 0x0401, 0x02}, /* Scaling */
1183 {IMX_8BIT, 0x0404, 0x00},
1184 {IMX_8BIT, 0x0405, 0x14},
1185 {IMX_8BIT, 0x4082, 0x00},
1186 {IMX_8BIT, 0x4083, 0x00},
1187 {IMX_8BIT, 0x4203, 0xFF},
1188 {IMX_8BIT, 0x7006, 0x04},
1189 /* Size setting */
1190 {IMX_8BIT, 0x0344, 0x00},
1191 {IMX_8BIT, 0x0345, 0x36},
1192 {IMX_8BIT, 0x0346, 0x00},
1193 {IMX_8BIT, 0x0347, 0x14},
1194 {IMX_8BIT, 0x0348, 0x10},
1195 {IMX_8BIT, 0x0349, 0x39},
1196 {IMX_8BIT, 0x034A, 0x0C},
1197 {IMX_8BIT, 0x034B, 0x1B},
1198 {IMX_8BIT, 0x034C, 0x0C}, /* 3280x2464 */
1199 {IMX_8BIT, 0x034D, 0xD0},
1200 {IMX_8BIT, 0x034E, 0x09},
1201 {IMX_8BIT, 0x034F, 0xA0},
1202 {IMX_8BIT, 0x0350, 0x00}, /* No Dig crop */
1203 {IMX_8BIT, 0x0351, 0x00},
1204 {IMX_8BIT, 0x0352, 0x00},
1205 {IMX_8BIT, 0x0353, 0x00},
1206 {IMX_8BIT, 0x0354, 0x10}, /* Cut out size same as the size after crop */
1207 {IMX_8BIT, 0x0355, 0x04},
1208 {IMX_8BIT, 0x0356, 0x0C},
1209 {IMX_8BIT, 0x0357, 0x08},
1210 {IMX_8BIT, 0x301D, 0x30}, /* ?? */
1211 {IMX_8BIT, 0x3310, 0x0C}, /* Write H and V size same as output size? */
1212 {IMX_8BIT, 0x3311, 0xD0},
1213 {IMX_8BIT, 0x3312, 0x09},
1214 {IMX_8BIT, 0x3313, 0xA0},
1215 {IMX_8BIT, 0x331C, 0x02}, /* ?? */
1216 {IMX_8BIT, 0x331D, 0xA0},
1217 {IMX_8BIT, 0x4084, 0x0C}, /* Resize IMG Hand V size-> Scaling related?*/
1218 {IMX_8BIT, 0x4085, 0xD0},
1219 {IMX_8BIT, 0x4086, 0x09},
1220 {IMX_8BIT, 0x4087, 0xA0},
1221 {IMX_8BIT, 0x4400, 0x00}, /* STATS off */
1222 {IMX_TOK_TERM, 0, 0},
1223};
1224
1225static struct imx_reg const imx135_6m[] = {
1226 GROUPED_PARAMETER_HOLD_ENABLE,
1227 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
1228 /* Mode setting */
1229 {IMX_8BIT, 0x0108, 0x03},
1230 {IMX_8BIT, 0x0112, 0x0A},
1231 {IMX_8BIT, 0x0113, 0x0A},
1232 {IMX_8BIT, 0x0381, 0x01},
1233 {IMX_8BIT, 0x0383, 0x01},
1234 {IMX_8BIT, 0x0385, 0x01},
1235 {IMX_8BIT, 0x0387, 0x01},
1236 {IMX_8BIT, 0x0390, 0x00},
1237 {IMX_8BIT, 0x0391, 0x11},
1238 {IMX_8BIT, 0x0392, 0x00},
1239 {IMX_8BIT, 0x0401, 0x02},
1240 {IMX_8BIT, 0x0404, 0x00},
1241 {IMX_8BIT, 0x0405, 0x14},
1242 {IMX_8BIT, 0x4082, 0x00},
1243 {IMX_8BIT, 0x4083, 0x00},
1244 {IMX_8BIT, 0x4203, 0xFF},
1245 {IMX_8BIT, 0x7006, 0x04},
1246 /* Size setting */
1247 {IMX_8BIT, 0x0344, 0x00}, /* 36, 194, 1039, a9f 4100x2316 */
1248 {IMX_8BIT, 0x0345, 0x36},
1249 {IMX_8BIT, 0x0346, 0x01},
1250 {IMX_8BIT, 0x0347, 0x94},
1251 {IMX_8BIT, 0x0348, 0x10},
1252 {IMX_8BIT, 0x0349, 0x39},
1253 {IMX_8BIT, 0x034A, 0x0A},
1254 {IMX_8BIT, 0x034B, 0x9F},
1255 {IMX_8BIT, 0x034C, 0x0C}, /* 3280x1852 */
1256 {IMX_8BIT, 0x034D, 0xD0},
1257 {IMX_8BIT, 0x034E, 0x07},
1258 {IMX_8BIT, 0x034F, 0x3C},
1259 {IMX_8BIT, 0x0350, 0x00},
1260 {IMX_8BIT, 0x0351, 0x00},
1261 {IMX_8BIT, 0x0352, 0x00},
1262 {IMX_8BIT, 0x0353, 0x00},
1263 {IMX_8BIT, 0x0354, 0x10}, /* 4100x2316 */
1264 {IMX_8BIT, 0x0355, 0x04},
1265 {IMX_8BIT, 0x0356, 0x09},
1266 {IMX_8BIT, 0x0357, 0x0C},
1267 {IMX_8BIT, 0x301D, 0x30},
1268 {IMX_8BIT, 0x3310, 0x0C},
1269 {IMX_8BIT, 0x3311, 0xD0},
1270 {IMX_8BIT, 0x3312, 0x07},
1271 {IMX_8BIT, 0x3313, 0x3C},
1272 {IMX_8BIT, 0x331C, 0x02},
1273 {IMX_8BIT, 0x331D, 0xA0},
1274 {IMX_8BIT, 0x4084, 0x0C},
1275 {IMX_8BIT, 0x4085, 0xD0},
1276 {IMX_8BIT, 0x4086, 0x07},
1277 {IMX_8BIT, 0x4087, 0x3C},
1278 {IMX_8BIT, 0x4400, 0x00},
1279 {IMX_TOK_TERM, 0, 0},
1280};
1281
1282static struct imx_reg const imx135_6m_for_mipi_342[] = {
1283 GROUPED_PARAMETER_HOLD_ENABLE,
1284 PLL_SETTINGS_FOR_MIPI_342MHZ_SALTBAY,
1285 /* Mode setting */
1286 {IMX_8BIT, 0x0108, 0x03},
1287 {IMX_8BIT, 0x0112, 0x0A},
1288 {IMX_8BIT, 0x0113, 0x0A},
1289 {IMX_8BIT, 0x0381, 0x01},
1290 {IMX_8BIT, 0x0383, 0x01},
1291 {IMX_8BIT, 0x0385, 0x01},
1292 {IMX_8BIT, 0x0387, 0x01},
1293 {IMX_8BIT, 0x0390, 0x00},
1294 {IMX_8BIT, 0x0391, 0x11},
1295 {IMX_8BIT, 0x0392, 0x00},
1296 {IMX_8BIT, 0x0401, 0x02},
1297 {IMX_8BIT, 0x0404, 0x00},
1298 {IMX_8BIT, 0x0405, 0x14},
1299 {IMX_8BIT, 0x4082, 0x00},
1300 {IMX_8BIT, 0x4083, 0x00},
1301 {IMX_8BIT, 0x4203, 0xFF},
1302 {IMX_8BIT, 0x7006, 0x04},
1303 /* Size setting */
1304 {IMX_8BIT, 0x0344, 0x00}, /* 36, 194, 1039, a9f 4100x2316 */
1305 {IMX_8BIT, 0x0345, 0x36},
1306 {IMX_8BIT, 0x0346, 0x01},
1307 {IMX_8BIT, 0x0347, 0x94},
1308 {IMX_8BIT, 0x0348, 0x10},
1309 {IMX_8BIT, 0x0349, 0x39},
1310 {IMX_8BIT, 0x034A, 0x0A},
1311 {IMX_8BIT, 0x034B, 0x9F},
1312 {IMX_8BIT, 0x034C, 0x0C}, /* 3280x1852 */
1313 {IMX_8BIT, 0x034D, 0xD0},
1314 {IMX_8BIT, 0x034E, 0x07},
1315 {IMX_8BIT, 0x034F, 0x3C},
1316 {IMX_8BIT, 0x0350, 0x00},
1317 {IMX_8BIT, 0x0351, 0x00},
1318 {IMX_8BIT, 0x0352, 0x00},
1319 {IMX_8BIT, 0x0353, 0x00},
1320 {IMX_8BIT, 0x0354, 0x10}, /* 4100x2316 */
1321 {IMX_8BIT, 0x0355, 0x04},
1322 {IMX_8BIT, 0x0356, 0x09},
1323 {IMX_8BIT, 0x0357, 0x0C},
1324 {IMX_8BIT, 0x301D, 0x30},
1325 {IMX_8BIT, 0x3310, 0x0C},
1326 {IMX_8BIT, 0x3311, 0xD0},
1327 {IMX_8BIT, 0x3312, 0x07},
1328 {IMX_8BIT, 0x3313, 0x3C},
1329 {IMX_8BIT, 0x331C, 0x02},
1330 {IMX_8BIT, 0x331D, 0xA0},
1331 {IMX_8BIT, 0x4084, 0x0C},
1332 {IMX_8BIT, 0x4085, 0xD0},
1333 {IMX_8BIT, 0x4086, 0x07},
1334 {IMX_8BIT, 0x4087, 0x3C},
1335 {IMX_8BIT, 0x4400, 0x00},
1336 {IMX_TOK_TERM, 0, 0},
1337};
1338
1339/*
1340 * FOV is: 3280x2464, larger then 3264x2448.
1341 * Sensor output: 336x256
1342 * Cropping region: 3444x2624
1343 */
1344static struct imx_reg const imx135_336x256[] = {
1345 GROUPED_PARAMETER_HOLD_ENABLE,
1346 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
1347 /* mode setting */
1348 {IMX_8BIT, 0x0108, 0x03},
1349 {IMX_8BIT, 0x0112, 0x0A},
1350 {IMX_8BIT, 0x0113, 0x0A},
1351 {IMX_8BIT, 0x0381, 0x01},
1352 {IMX_8BIT, 0x0383, 0x01},
1353 {IMX_8BIT, 0x0385, 0x01},
1354 {IMX_8BIT, 0x0387, 0x01},
1355 {IMX_8BIT, 0x0390, 0x01},
1356 {IMX_8BIT, 0x0391, 0x22},
1357 {IMX_8BIT, 0x0392, 0x00},
1358 {IMX_8BIT, 0x0401, 0x02}, /* 2x binning */
1359 {IMX_8BIT, 0x0404, 0x00},
1360 {IMX_8BIT, 0x0405, 0x52}, /* scaling: 82/16 */
1361 {IMX_8BIT, 0x4082, 0x00},
1362 {IMX_8BIT, 0x4083, 0x00},
1363 {IMX_8BIT, 0x4203, 0xFF},
1364 {IMX_8BIT, 0x7006, 0x04},
1365 /* Size setting */
1366 {IMX_8BIT, 0x0344, 0x01}, /* x_start: 374 */
1367 {IMX_8BIT, 0x0345, 0x76},
1368 {IMX_8BIT, 0x0346, 0x00}, /* y_start: 248 */
1369 {IMX_8BIT, 0x0347, 0xF8},
1370 {IMX_8BIT, 0x0348, 0x0E}, /* x_end: 3817 */
1371 {IMX_8BIT, 0x0349, 0xE9},
1372 {IMX_8BIT, 0x034A, 0x0B}, /* y_end: 2871 */
1373 {IMX_8BIT, 0x034B, 0x37},
1374 {IMX_8BIT, 0x034C, 0x01}, /* x_out: 336 */
1375 {IMX_8BIT, 0x034D, 0x50},
1376 {IMX_8BIT, 0x034E, 0x01}, /* y_out: 256 */
1377 {IMX_8BIT, 0x034F, 0x00},
1378 {IMX_8BIT, 0x0350, 0x00},
1379 {IMX_8BIT, 0x0351, 0x00},
1380 {IMX_8BIT, 0x0352, 0x00},
1381 {IMX_8BIT, 0x0353, 0x00},
1382 {IMX_8BIT, 0x0354, 0x06}, /* dig x_out: 1722 */
1383 {IMX_8BIT, 0x0355, 0xBA},
1384 {IMX_8BIT, 0x0356, 0x05}, /* dig y_out: 1312 */
1385 {IMX_8BIT, 0x0357, 0x20},
1386 {IMX_8BIT, 0x301D, 0x30},
1387 {IMX_8BIT, 0x3310, 0x01}, /* ?: x_out */
1388 {IMX_8BIT, 0x3311, 0x50},
1389 {IMX_8BIT, 0x3312, 0x01}, /* ?: y_out */
1390 {IMX_8BIT, 0x3313, 0x00},
1391 {IMX_8BIT, 0x331C, 0x02},
1392 {IMX_8BIT, 0x331D, 0x4E},
1393 {IMX_8BIT, 0x4084, 0x01}, /* ?: x_out */
1394 {IMX_8BIT, 0x4085, 0x50},
1395 {IMX_8BIT, 0x4086, 0x01}, /* ?: y_out */
1396 {IMX_8BIT, 0x4087, 0x00},
1397 {IMX_8BIT, 0x4400, 0x00},
1398 {IMX_TOK_TERM, 0, 0},
1399};
1400
1401static struct imx_reg const imx135_1m[] = {
1402 GROUPED_PARAMETER_HOLD_ENABLE,
1403 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
1404 /* mode setting */
1405 {IMX_8BIT, 0x0108, 0x03},
1406 {IMX_8BIT, 0x0112, 0x0A},
1407 {IMX_8BIT, 0x0113, 0x0A},
1408 {IMX_8BIT, 0x0381, 0x01},
1409 {IMX_8BIT, 0x0383, 0x01},
1410 {IMX_8BIT, 0x0385, 0x01},
1411 {IMX_8BIT, 0x0387, 0x01},
1412 {IMX_8BIT, 0x0390, 0x01},
1413 {IMX_8BIT, 0x0391, 0x22},
1414 {IMX_8BIT, 0x0392, 0x00},
1415 {IMX_8BIT, 0x0401, 0x02},
1416 {IMX_8BIT, 0x0404, 0x00},
1417 {IMX_8BIT, 0x0405, 0x1F},
1418 {IMX_8BIT, 0x4082, 0x00},
1419 {IMX_8BIT, 0x4083, 0x00},
1420 {IMX_8BIT, 0x4203, 0xFF},
1421 {IMX_8BIT, 0x7006, 0x04},
1422 /* Size setting */
1423 {IMX_8BIT, 0x0344, 0x00},
1424 {IMX_8BIT, 0x0345, 0x58},
1425 {IMX_8BIT, 0x0346, 0x00},
1426 {IMX_8BIT, 0x0347, 0x28},
1427 {IMX_8BIT, 0x0348, 0x10},
1428 {IMX_8BIT, 0x0349, 0x17},
1429 {IMX_8BIT, 0x034A, 0x0C},
1430 {IMX_8BIT, 0x034B, 0x07},
1431 {IMX_8BIT, 0x034C, 0x04},
1432 {IMX_8BIT, 0x034D, 0x10},
1433 {IMX_8BIT, 0x034E, 0x03},
1434 {IMX_8BIT, 0x034F, 0x10},
1435 {IMX_8BIT, 0x0350, 0x00},
1436 {IMX_8BIT, 0x0351, 0x00},
1437 {IMX_8BIT, 0x0352, 0x00},
1438 {IMX_8BIT, 0x0353, 0x00},
1439 {IMX_8BIT, 0x0354, 0x07},
1440 {IMX_8BIT, 0x0355, 0xE0},
1441 {IMX_8BIT, 0x0356, 0x05},
1442 {IMX_8BIT, 0x0357, 0xF0},
1443 {IMX_8BIT, 0x301D, 0x30},
1444 {IMX_8BIT, 0x3310, 0x04},
1445 {IMX_8BIT, 0x3311, 0x10},
1446 {IMX_8BIT, 0x3312, 0x03},
1447 {IMX_8BIT, 0x3313, 0x10},
1448 {IMX_8BIT, 0x331C, 0x02},
1449 {IMX_8BIT, 0x331D, 0x4E},
1450 {IMX_8BIT, 0x4084, 0x04},
1451 {IMX_8BIT, 0x4085, 0x10},
1452 {IMX_8BIT, 0x4086, 0x03},
1453 {IMX_8BIT, 0x4087, 0x10},
1454 {IMX_8BIT, 0x4400, 0x00},
1455 {IMX_TOK_TERM, 0, 0},
1456};
1457
1458static struct imx_reg const imx135_3m_binning[] = {
1459 GROUPED_PARAMETER_HOLD_ENABLE,
1460 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
1461 /* Mode setting */
1462 {IMX_8BIT, 0x0108, 0x03},
1463 {IMX_8BIT, 0x0112, 0x0A},
1464 {IMX_8BIT, 0x0113, 0x0A},
1465 {IMX_8BIT, 0x0381, 0x01},
1466 {IMX_8BIT, 0x0383, 0x01},
1467 {IMX_8BIT, 0x0385, 0x01},
1468 {IMX_8BIT, 0x0387, 0x01},
1469 {IMX_8BIT, 0x0390, 0x01}, /* Binning */
1470 {IMX_8BIT, 0x0391, 0x22}, /* 2x2 binning */
1471 {IMX_8BIT, 0x0392, 0x00}, /* average */
1472 {IMX_8BIT, 0x0401, 0x00},
1473 {IMX_8BIT, 0x0404, 0x00},
1474 {IMX_8BIT, 0x0405, 0x10},
1475 {IMX_8BIT, 0x4082, 0x01},
1476 {IMX_8BIT, 0x4083, 0x01},
1477 {IMX_8BIT, 0x4203, 0xFF},
1478 {IMX_8BIT, 0x7006, 0x04},
1479 /* Size setting */
1480 {IMX_8BIT, 0x0344, 0x00},
1481 {IMX_8BIT, 0x0345, 0x28},
1482 {IMX_8BIT, 0x0346, 0x00},
1483 {IMX_8BIT, 0x0347, 0x08},
1484 {IMX_8BIT, 0x0348, 0x10},
1485 {IMX_8BIT, 0x0349, 0x47},
1486 {IMX_8BIT, 0x034A, 0x0C},
1487 {IMX_8BIT, 0x034B, 0x27},
1488 {IMX_8BIT, 0x034C, 0x08},
1489 {IMX_8BIT, 0x034D, 0x10},
1490 {IMX_8BIT, 0x034E, 0x06},
1491 {IMX_8BIT, 0x034F, 0x10},
1492 {IMX_8BIT, 0x0350, 0x00},
1493 {IMX_8BIT, 0x0351, 0x00},
1494 {IMX_8BIT, 0x0352, 0x00},
1495 {IMX_8BIT, 0x0353, 0x00},
1496 {IMX_8BIT, 0x0354, 0x08},
1497 {IMX_8BIT, 0x0355, 0x10},
1498 {IMX_8BIT, 0x0356, 0x06},
1499 {IMX_8BIT, 0x0357, 0x10},
1500 {IMX_8BIT, 0x301D, 0x30},
1501 {IMX_8BIT, 0x3310, 0x08},
1502 {IMX_8BIT, 0x3311, 0x10},
1503 {IMX_8BIT, 0x3312, 0x06},
1504 {IMX_8BIT, 0x3313, 0x10},
1505 {IMX_8BIT, 0x331C, 0x00},
1506 {IMX_8BIT, 0x331D, 0xAA},
1507 {IMX_8BIT, 0x4084, 0x00},
1508 {IMX_8BIT, 0x4085, 0x00},
1509 {IMX_8BIT, 0x4086, 0x00},
1510 {IMX_8BIT, 0x4087, 0x00},
1511 {IMX_8BIT, 0x4400, 0x00},
1512 {IMX_TOK_TERM, 0, 0},
1513};
1514
1515/* 1080P 1936x1104 */
1516static struct imx_reg const imx135_1080p_binning[] = {
1517 GROUPED_PARAMETER_HOLD_ENABLE,
1518 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
1519 /* Mode setting */
1520 {IMX_8BIT, 0x0108, 0x03},
1521 {IMX_8BIT, 0x0112, 0x0A},
1522 {IMX_8BIT, 0x0113, 0x0A},
1523 {IMX_8BIT, 0x0381, 0x01},
1524 {IMX_8BIT, 0x0383, 0x01},
1525 {IMX_8BIT, 0x0385, 0x01},
1526 {IMX_8BIT, 0x0387, 0x01},
1527 {IMX_8BIT, 0x0390, 0x01},
1528 {IMX_8BIT, 0x0391, 0x22},
1529 {IMX_8BIT, 0x0392, 0x00},
1530 {IMX_8BIT, 0x0401, 0x02},
1531 {IMX_8BIT, 0x0404, 0x00},
1532 {IMX_8BIT, 0x0405, 0x11},
1533 {IMX_8BIT, 0x4082, 0x00},
1534 {IMX_8BIT, 0x4083, 0x00},
1535 {IMX_8BIT, 0x7006, 0x04},
1536 /* Size setting */
1537 {IMX_8BIT, 0x0344, 0x00},
1538 {IMX_8BIT, 0x0345, 0x2E},
1539 {IMX_8BIT, 0x0346, 0x01},
1540 {IMX_8BIT, 0x0347, 0x84},
1541 {IMX_8BIT, 0x0348, 0x10},
1542 {IMX_8BIT, 0x0349, 0x41},
1543 {IMX_8BIT, 0x034A, 0x0A},
1544 {IMX_8BIT, 0x034B, 0xAF},
1545 {IMX_8BIT, 0x034C, 0x07},
1546 {IMX_8BIT, 0x034D, 0x90},
1547 {IMX_8BIT, 0x034E, 0x04},
1548 {IMX_8BIT, 0x034F, 0x50},
1549 {IMX_8BIT, 0x0350, 0x00},
1550 {IMX_8BIT, 0x0351, 0x00},
1551 {IMX_8BIT, 0x0352, 0x00},
1552 {IMX_8BIT, 0x0353, 0x00},
1553 {IMX_8BIT, 0x0354, 0x08},
1554 {IMX_8BIT, 0x0355, 0x0A},
1555 {IMX_8BIT, 0x0356, 0x04},
1556 {IMX_8BIT, 0x0357, 0x96},
1557 {IMX_8BIT, 0x301D, 0x30},
1558 {IMX_8BIT, 0x3310, 0x07},
1559 {IMX_8BIT, 0x3311, 0x90},
1560 {IMX_8BIT, 0x3312, 0x04},
1561 {IMX_8BIT, 0x3313, 0x50},
1562 {IMX_8BIT, 0x331C, 0x01},
1563 {IMX_8BIT, 0x331D, 0x00},
1564 {IMX_8BIT, 0x4084, 0x07},
1565 {IMX_8BIT, 0x4085, 0x90},
1566 {IMX_8BIT, 0x4086, 0x04},
1567 {IMX_8BIT, 0x4087, 0x50},
1568 {IMX_8BIT, 0x4400, 0x00},
1569 {IMX_TOK_TERM, 0, 0},
1570};
1571
1572static const struct imx_reg imx135_1080p_nodvs_fullfov_max_clock[] = {
1573 GROUPED_PARAMETER_HOLD_ENABLE,
1574 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
1575 /* mode setting */
1576 { IMX_8BIT, 0x0108, 0x03 },
1577 { IMX_8BIT, 0x0112, 0x0A },
1578 { IMX_8BIT, 0x0113, 0x0A },
1579 { IMX_8BIT, 0x0381, 0x01 },
1580 { IMX_8BIT, 0x0383, 0x01 },
1581 { IMX_8BIT, 0x0385, 0x01 },
1582 { IMX_8BIT, 0x0387, 0x01 },
1583 { IMX_8BIT, 0x0390, 0x01 },
1584 { IMX_8BIT, 0x0391, 0x22 },
1585 { IMX_8BIT, 0x0392, 0x00 },
1586 { IMX_8BIT, 0x0401, 0x00 },
1587 { IMX_8BIT, 0x0404, 0x00 },
1588 { IMX_8BIT, 0x0405, 0x10 },
1589 { IMX_8BIT, 0x4082, 0x01 },
1590 { IMX_8BIT, 0x4083, 0x01 },
1591 { IMX_8BIT, 0x7006, 0x04 },
1592 /* size setting */
1593 { IMX_8BIT, 0x0344, 0x00 }, /* 168,464,4039,2655: 3872x2192 */
1594 { IMX_8BIT, 0x0345, 0xA8 },
1595 { IMX_8BIT, 0x0346, 0x01 },
1596 { IMX_8BIT, 0x0347, 0xD0 },
1597 { IMX_8BIT, 0x0348, 0x0F },
1598 { IMX_8BIT, 0x0349, 0xC7 },
1599 { IMX_8BIT, 0x034A, 0x0A },
1600 { IMX_8BIT, 0x034B, 0x5F },
1601 { IMX_8BIT, 0x034C, 0x07 }, /*1936 x 1096 */
1602 { IMX_8BIT, 0x034D, 0x90 },
1603 { IMX_8BIT, 0x034E, 0x04 },
1604 { IMX_8BIT, 0x034F, 0x48 },
1605 { IMX_8BIT, 0x0350, 0x00 },
1606 { IMX_8BIT, 0x0351, 0x00 },
1607 { IMX_8BIT, 0x0352, 0x00 },
1608 { IMX_8BIT, 0x0353, 0x00 },
1609 { IMX_8BIT, 0x0354, 0x07 }, /*1936 x 1096 */
1610 { IMX_8BIT, 0x0355, 0x90 },
1611 { IMX_8BIT, 0x0356, 0x04 },
1612 { IMX_8BIT, 0x0357, 0x48 },
1613 { IMX_8BIT, 0x301D, 0x30 },
1614 { IMX_8BIT, 0x3310, 0x07 },
1615 { IMX_8BIT, 0x3311, 0x90 },
1616 { IMX_8BIT, 0x3312, 0x04 },
1617 { IMX_8BIT, 0x3313, 0x48 },
1618 { IMX_8BIT, 0x331C, 0x04 },
1619 { IMX_8BIT, 0x331D, 0xB0 },
1620 { IMX_8BIT, 0x4084, 0x07 },
1621 { IMX_8BIT, 0x4085, 0x90 },
1622 { IMX_8BIT, 0x4086, 0x04 },
1623 { IMX_8BIT, 0x4087, 0x48 },
1624 { IMX_8BIT, 0x4400, 0x00 },
1625 { IMX_TOK_TERM, 0, 0}
1626};
1627
1628/* 1080P NODVS 1936x1096 */
1629static const struct imx_reg imx135_1080p_nodvs_max_clock[] = {
1630 GROUPED_PARAMETER_HOLD_ENABLE,
1631 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
1632 /* mode setting */
1633 { IMX_8BIT, 0x0108, 0x03 },
1634 { IMX_8BIT, 0x0112, 0x0A },
1635 { IMX_8BIT, 0x0113, 0x0A },
1636 { IMX_8BIT, 0x0381, 0x01 },
1637 { IMX_8BIT, 0x0383, 0x01 },
1638 { IMX_8BIT, 0x0385, 0x01 },
1639 { IMX_8BIT, 0x0387, 0x01 },
1640 { IMX_8BIT, 0x0390, 0x01 },
1641 { IMX_8BIT, 0x0391, 0x22 },
1642 { IMX_8BIT, 0x0392, 0x00 },
1643 { IMX_8BIT, 0x0401, 0x02 },
1644 { IMX_8BIT, 0x0404, 0x00 },
1645 { IMX_8BIT, 0x0405, 0x11 },
1646 { IMX_8BIT, 0x4082, 0x00 },
1647 { IMX_8BIT, 0x4083, 0x00 },
1648 { IMX_8BIT, 0x7006, 0x04 },
1649 /* size setting */
1650 { IMX_8BIT, 0x0344, 0x00 }, /* 46,396,4161,2727: 4116x2332 */
1651 { IMX_8BIT, 0x0345, 0x2E },
1652 { IMX_8BIT, 0x0346, 0x01 },
1653 { IMX_8BIT, 0x0347, 0x8C },
1654 { IMX_8BIT, 0x0348, 0x10 },
1655 { IMX_8BIT, 0x0349, 0x41 },
1656 { IMX_8BIT, 0x034A, 0x0A },
1657 { IMX_8BIT, 0x034B, 0xA7 },
1658 { IMX_8BIT, 0x034C, 0x07 }, /*1936 x 1096 */
1659 { IMX_8BIT, 0x034D, 0x90 },
1660 { IMX_8BIT, 0x034E, 0x04 },
1661 { IMX_8BIT, 0x034F, 0x48 },
1662 { IMX_8BIT, 0x0350, 0x00 },
1663 { IMX_8BIT, 0x0351, 0x00 },
1664 { IMX_8BIT, 0x0352, 0x00 },
1665 { IMX_8BIT, 0x0353, 0x00 },
1666 { IMX_8BIT, 0x0354, 0x08 }, /* 2058x1166 */
1667 { IMX_8BIT, 0x0355, 0x0A },
1668 { IMX_8BIT, 0x0356, 0x04 },
1669 { IMX_8BIT, 0x0357, 0x8E },
1670 { IMX_8BIT, 0x301D, 0x30 },
1671 { IMX_8BIT, 0x3310, 0x07 },
1672 { IMX_8BIT, 0x3311, 0x90 },
1673 { IMX_8BIT, 0x3312, 0x04 },
1674 { IMX_8BIT, 0x3313, 0x48 },
1675 { IMX_8BIT, 0x331C, 0x04 },
1676 { IMX_8BIT, 0x331D, 0xB0 },
1677 { IMX_8BIT, 0x4084, 0x07 },
1678 { IMX_8BIT, 0x4085, 0x90 },
1679 { IMX_8BIT, 0x4086, 0x04 },
1680 { IMX_8BIT, 0x4087, 0x48 },
1681 { IMX_8BIT, 0x4400, 0x00 },
1682 { IMX_TOK_TERM, 0, 0}
1683};
1684
1685/* 1080P 10%DVS 2104x1184 */
1686static const struct imx_reg imx135_1080p_10_dvs_max_clock[] = {
1687 GROUPED_PARAMETER_HOLD_ENABLE,
1688 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
1689 /* mode setting */
1690 { IMX_8BIT, 0x0108, 0x03 },
1691 { IMX_8BIT, 0x0112, 0x0A },
1692 { IMX_8BIT, 0x0113, 0x0A },
1693 { IMX_8BIT, 0x0381, 0x01 },
1694 { IMX_8BIT, 0x0383, 0x01 },
1695 { IMX_8BIT, 0x0385, 0x01 },
1696 { IMX_8BIT, 0x0387, 0x01 },
1697 { IMX_8BIT, 0x0390, 0x01 },
1698 { IMX_8BIT, 0x0391, 0x22 },
1699 { IMX_8BIT, 0x0392, 0x00 },
1700 { IMX_8BIT, 0x0401, 0x00 },
1701 { IMX_8BIT, 0x0404, 0x00 },
1702 { IMX_8BIT, 0x0405, 0x10 },
1703 { IMX_8BIT, 0x4082, 0x01 },
1704 { IMX_8BIT, 0x4083, 0x01 },
1705 { IMX_8BIT, 0x7006, 0x04 },
1706 /* size setting */
1707 { IMX_8BIT, 0x0344, 0x00 }, /* 0,376,4207,2743: 4208x2368 */
1708 { IMX_8BIT, 0x0345, 0x00 },
1709 { IMX_8BIT, 0x0346, 0x01 },
1710 { IMX_8BIT, 0x0347, 0x78 },
1711 { IMX_8BIT, 0x0348, 0x10 },
1712 { IMX_8BIT, 0x0349, 0x6F },
1713 { IMX_8BIT, 0x034A, 0x0A },
1714 { IMX_8BIT, 0x034B, 0xB7 },
1715 { IMX_8BIT, 0x034C, 0x08 }, /* 2104 x 1184 */
1716 { IMX_8BIT, 0x034D, 0x38 },
1717 { IMX_8BIT, 0x034E, 0x04 },
1718 { IMX_8BIT, 0x034F, 0xA0 },
1719 { IMX_8BIT, 0x0350, 0x00 },
1720 { IMX_8BIT, 0x0351, 0x00 },
1721 { IMX_8BIT, 0x0352, 0x00 },
1722 { IMX_8BIT, 0x0353, 0x00 },
1723 { IMX_8BIT, 0x0354, 0x08 }, /* 2104 x 1184 */
1724 { IMX_8BIT, 0x0355, 0x38 },
1725 { IMX_8BIT, 0x0356, 0x04 },
1726 { IMX_8BIT, 0x0357, 0xA0 },
1727 { IMX_8BIT, 0x301D, 0x30 },
1728 { IMX_8BIT, 0x3310, 0x08 },
1729 { IMX_8BIT, 0x3311, 0x38 },
1730 { IMX_8BIT, 0x3312, 0x04 },
1731 { IMX_8BIT, 0x3313, 0xA0 },
1732 { IMX_8BIT, 0x331C, 0x04 },
1733 { IMX_8BIT, 0x331D, 0xB0 },
1734 { IMX_8BIT, 0x4084, 0x00 },
1735 { IMX_8BIT, 0x4085, 0x00 },
1736 { IMX_8BIT, 0x4086, 0x00 },
1737 { IMX_8BIT, 0x4087, 0x00 },
1738 { IMX_8BIT, 0x4400, 0x00 },
1739 { IMX_TOK_TERM, 0, 0}
1740};
1741
1742static const struct imx_reg imx135_720pdvs_max_clock[] = {
1743 GROUPED_PARAMETER_HOLD_ENABLE,
1744 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
1745 /* mode setting */
1746 { IMX_8BIT, 0x0108, 0x03 },
1747 { IMX_8BIT, 0x0112, 0x0A },
1748 { IMX_8BIT, 0x0113, 0x0A },
1749 { IMX_8BIT, 0x0381, 0x01 },
1750 { IMX_8BIT, 0x0383, 0x01 },
1751 { IMX_8BIT, 0x0385, 0x01 },
1752 { IMX_8BIT, 0x0387, 0x01 },
1753 { IMX_8BIT, 0x0390, 0x01 },
1754 { IMX_8BIT, 0x0391, 0x22 },
1755 { IMX_8BIT, 0x0392, 0x00 },
1756 { IMX_8BIT, 0x0401, 0x02 },
1757 { IMX_8BIT, 0x0404, 0x00 },
1758 { IMX_8BIT, 0x0405, 0x15 },
1759 { IMX_8BIT, 0x4082, 0x00 },
1760 { IMX_8BIT, 0x4083, 0x00 },
1761 { IMX_8BIT, 0x7006, 0x04 },
1762 /* size setting */
1763 { IMX_8BIT, 0x0344, 0x00 }, /* 46,404,4161,2715: 4116x2312 */
1764 { IMX_8BIT, 0x0345, 0x2E },
1765 { IMX_8BIT, 0x0346, 0x01 },
1766 { IMX_8BIT, 0x0347, 0x94 },
1767 { IMX_8BIT, 0x0348, 0x10 },
1768 { IMX_8BIT, 0x0349, 0x41 },
1769 { IMX_8BIT, 0x034A, 0x0A },
1770 { IMX_8BIT, 0x034B, 0x9B },
1771 { IMX_8BIT, 0x034C, 0x06 }, /*1568 x 880 */
1772 { IMX_8BIT, 0x034D, 0x20 },
1773 { IMX_8BIT, 0x034E, 0x03 },
1774 { IMX_8BIT, 0x034F, 0x70 },
1775 { IMX_8BIT, 0x0350, 0x00 },
1776 { IMX_8BIT, 0x0351, 0x00 },
1777 { IMX_8BIT, 0x0352, 0x00 },
1778 { IMX_8BIT, 0x0353, 0x00 },
1779 { IMX_8BIT, 0x0354, 0x08 }, /*2058 x 1156 */
1780 { IMX_8BIT, 0x0355, 0x0A },
1781 { IMX_8BIT, 0x0356, 0x04 },
1782 { IMX_8BIT, 0x0357, 0x84 },
1783 { IMX_8BIT, 0x301D, 0x30 },
1784 { IMX_8BIT, 0x3310, 0x06 },
1785 { IMX_8BIT, 0x3311, 0x20 },
1786 { IMX_8BIT, 0x3312, 0x03 },
1787 { IMX_8BIT, 0x3313, 0x70 },
1788 { IMX_8BIT, 0x331C, 0x04 },
1789 { IMX_8BIT, 0x331D, 0x4C },
1790 { IMX_8BIT, 0x4084, 0x06 },
1791 { IMX_8BIT, 0x4085, 0x20 },
1792 { IMX_8BIT, 0x4086, 0x03 },
1793 { IMX_8BIT, 0x4087, 0x70 },
1794 { IMX_8BIT, 0x4400, 0x00 },
1795 { IMX_TOK_TERM, 0, 0}
1796};
1797
1798/******************* Video Modes ******************/
1799
1800/* 1080P DVS 2336x1320 */
1801static const struct imx_reg imx135_2336x1320_max_clock[] = {
1802 GROUPED_PARAMETER_HOLD_ENABLE,
1803 PLL_SETTINGS_FOR_MIPI_451_2MHZ_SALTBAY,
1804 /* mode setting */
1805 { IMX_8BIT, 0x0108, 0x03 },
1806 { IMX_8BIT, 0x0112, 0x0A },
1807 { IMX_8BIT, 0x0113, 0x0A },
1808 { IMX_8BIT, 0x0381, 0x01 },
1809 { IMX_8BIT, 0x0383, 0x01 },
1810 { IMX_8BIT, 0x0385, 0x01 },
1811 { IMX_8BIT, 0x0387, 0x01 },
1812 { IMX_8BIT, 0x0390, 0x00 },
1813 { IMX_8BIT, 0x0391, 0x11 },
1814 { IMX_8BIT, 0x0392, 0x00 },
1815 { IMX_8BIT, 0x0401, 0x02 },
1816 { IMX_8BIT, 0x0404, 0x00 },
1817 { IMX_8BIT, 0x0405, 0x1C },
1818 { IMX_8BIT, 0x4082, 0x00 },
1819 { IMX_8BIT, 0x4083, 0x00 },
1820 { IMX_8BIT, 0x7006, 0x04 },
1821 /* size setting */
1822 { IMX_8BIT, 0x0344, 0x00 }, /* 60,404,4147,2715: 4088x2312 */
1823 { IMX_8BIT, 0x0345, 0x3C },
1824 { IMX_8BIT, 0x0346, 0x01 },
1825 { IMX_8BIT, 0x0347, 0x94 },
1826 { IMX_8BIT, 0x0348, 0x10 },
1827 { IMX_8BIT, 0x0349, 0x33 },
1828 { IMX_8BIT, 0x034A, 0x0A },
1829 { IMX_8BIT, 0x034B, 0x9B },
1830 { IMX_8BIT, 0x034C, 0x09 }, /*2336 x 1320 */
1831 { IMX_8BIT, 0x034D, 0x20 },
1832 { IMX_8BIT, 0x034E, 0x05 },
1833 { IMX_8BIT, 0x034F, 0x28 },
1834 { IMX_8BIT, 0x0350, 0x00 },
1835 { IMX_8BIT, 0x0351, 0x00 },
1836 { IMX_8BIT, 0x0352, 0x00 },
1837 { IMX_8BIT, 0x0353, 0x00 },
1838 { IMX_8BIT, 0x0354, 0x0F }, /* 4088x2312 */
1839 { IMX_8BIT, 0x0355, 0xF8 },
1840 { IMX_8BIT, 0x0356, 0x09 },
1841 { IMX_8BIT, 0x0357, 0x08 },
1842 { IMX_8BIT, 0x301D, 0x30 },
1843 { IMX_8BIT, 0x3310, 0x09 },
1844 { IMX_8BIT, 0x3311, 0x20 },
1845 { IMX_8BIT, 0x3312, 0x05 },
1846 { IMX_8BIT, 0x3313, 0x28 },
1847 { IMX_8BIT, 0x331C, 0x04 },
1848 { IMX_8BIT, 0x331D, 0xE2 },
1849 { IMX_8BIT, 0x4084, 0x09 },
1850 { IMX_8BIT, 0x4085, 0x20 },
1851 { IMX_8BIT, 0x4086, 0x05 },
1852 { IMX_8BIT, 0x4087, 0x28 },
1853 { IMX_8BIT, 0x4400, 0x00 },
1854 { IMX_TOK_TERM, 0, 0}
1855};
1856
1857/* 1080P DVS 2336x1320 Cropped */
1858static const struct imx_reg imx135_2336x1320_cropped_mipi499[] = {
1859 GROUPED_PARAMETER_HOLD_ENABLE,
1860 PLL_SETTINGS_FOR_MIPI_499_2MHZ_SALTBAY,
1861 /* mode setting */
1862 { IMX_8BIT, 0x0108, 0x03 },
1863 { IMX_8BIT, 0x0112, 0x0A },
1864 { IMX_8BIT, 0x0113, 0x0A },
1865 { IMX_8BIT, 0x0381, 0x01 },
1866 { IMX_8BIT, 0x0383, 0x01 },
1867 { IMX_8BIT, 0x0385, 0x01 },
1868 { IMX_8BIT, 0x0387, 0x01 },
1869 { IMX_8BIT, 0x0390, 0x00 },
1870 { IMX_8BIT, 0x0391, 0x11 },
1871 { IMX_8BIT, 0x0392, 0x00 },
1872 { IMX_8BIT, 0x0401, 0x02 },
1873 { IMX_8BIT, 0x0404, 0x00 },
1874 { IMX_8BIT, 0x0405, 0x1C },
1875 { IMX_8BIT, 0x4082, 0x01 },
1876 { IMX_8BIT, 0x4083, 0x01 },
1877 { IMX_8BIT, 0x7006, 0x04 },
1878 /* size setting */
1879 { IMX_8BIT, 0x0344, 0x03 }, /* 936,900,3271,2219: 2336x1320 */
1880 { IMX_8BIT, 0x0345, 0xA8 },
1881 { IMX_8BIT, 0x0346, 0x03 },
1882 { IMX_8BIT, 0x0347, 0x84 },
1883 { IMX_8BIT, 0x0348, 0x0C },
1884 { IMX_8BIT, 0x0349, 0xC7 },
1885 { IMX_8BIT, 0x034A, 0x08 },
1886 { IMX_8BIT, 0x034B, 0xAB },
1887 { IMX_8BIT, 0x034C, 0x09 }, /* 2336 x 1320 */
1888 { IMX_8BIT, 0x034D, 0x20 },
1889 { IMX_8BIT, 0x034E, 0x05 },
1890 { IMX_8BIT, 0x034F, 0x28 },
1891 { IMX_8BIT, 0x0350, 0x00 },
1892 { IMX_8BIT, 0x0351, 0x00 },
1893 { IMX_8BIT, 0x0352, 0x00 },
1894 { IMX_8BIT, 0x0353, 0x00 },
1895 { IMX_8BIT, 0x0354, 0x09 }, /* 2336 x 1320 */
1896 { IMX_8BIT, 0x0355, 0x20 },
1897 { IMX_8BIT, 0x0356, 0x05 },
1898 { IMX_8BIT, 0x0357, 0x28 },
1899 { IMX_8BIT, 0x301D, 0x30 },
1900 { IMX_8BIT, 0x3310, 0x09 },
1901 { IMX_8BIT, 0x3311, 0x20 },
1902 { IMX_8BIT, 0x3312, 0x05 },
1903 { IMX_8BIT, 0x3313, 0x28 },
1904 { IMX_8BIT, 0x331C, 0x00 },
1905 { IMX_8BIT, 0x331D, 0xB4 },
1906 { IMX_8BIT, 0x4084, 0x09 },
1907 { IMX_8BIT, 0x4085, 0x20 },
1908 { IMX_8BIT, 0x4086, 0x05 },
1909 { IMX_8BIT, 0x4087, 0x28 },
1910 { IMX_8BIT, 0x4400, 0x00 },
1911 { IMX_TOK_TERM, 0, 0}
1912};
1913
1914/* 720P DVS 1568 x 880 */
1915static const struct imx_reg imx135_720p_dvs_binning[] = {
1916 GROUPED_PARAMETER_HOLD_ENABLE,
1917 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
1918 /* mode setting */
1919 { IMX_8BIT, 0x0108, 0x03 },
1920 { IMX_8BIT, 0x0112, 0x0A },
1921 { IMX_8BIT, 0x0113, 0x0A },
1922 { IMX_8BIT, 0x0381, 0x01 },
1923 { IMX_8BIT, 0x0383, 0x01 },
1924 { IMX_8BIT, 0x0385, 0x01 },
1925 { IMX_8BIT, 0x0387, 0x01 },
1926 { IMX_8BIT, 0x0390, 0x01 },
1927 { IMX_8BIT, 0x0391, 0x22 },
1928 { IMX_8BIT, 0x0392, 0x00 },
1929 { IMX_8BIT, 0x0401, 0x02 },
1930 { IMX_8BIT, 0x0404, 0x00 },
1931 { IMX_8BIT, 0x0405, 0x15 },
1932 { IMX_8BIT, 0x4082, 0x00 },
1933 { IMX_8BIT, 0x4083, 0x00 },
1934 { IMX_8BIT, 0x7006, 0x04 },
1935 /* size setting */
1936 { IMX_8BIT, 0x0344, 0x00 }, /* 46,404,4161,2715: 4116x2312 */
1937 { IMX_8BIT, 0x0345, 0x2e },
1938 { IMX_8BIT, 0x0346, 0x01 },
1939 { IMX_8BIT, 0x0347, 0x94 },
1940 { IMX_8BIT, 0x0348, 0x10 },
1941 { IMX_8BIT, 0x0349, 0x41 },
1942 { IMX_8BIT, 0x034A, 0x0A },
1943 { IMX_8BIT, 0x034B, 0x9B },
1944 { IMX_8BIT, 0x034C, 0x06 }, /*1568 x 880 */
1945 { IMX_8BIT, 0x034D, 0x20 },
1946 { IMX_8BIT, 0x034E, 0x03 },
1947 { IMX_8BIT, 0x034F, 0x70 },
1948 { IMX_8BIT, 0x0350, 0x00 },
1949 { IMX_8BIT, 0x0351, 0x00 },
1950 { IMX_8BIT, 0x0352, 0x00 },
1951 { IMX_8BIT, 0x0353, 0x00 },
1952 { IMX_8BIT, 0x0354, 0x08 }, /* 2058x1156 */
1953 { IMX_8BIT, 0x0355, 0x0a },
1954 { IMX_8BIT, 0x0356, 0x04 },
1955 { IMX_8BIT, 0x0357, 0x84 },
1956 { IMX_8BIT, 0x301D, 0x30 }, /* TODO! */
1957 { IMX_8BIT, 0x3310, 0x06 },
1958 { IMX_8BIT, 0x3311, 0x20 },
1959 { IMX_8BIT, 0x3312, 0x03 },
1960 { IMX_8BIT, 0x3313, 0x70 },
1961 { IMX_8BIT, 0x331C, 0x01 }, /* TODO! */
1962 { IMX_8BIT, 0x331D, 0xd6 }, /* TODO! */
1963 { IMX_8BIT, 0x4084, 0x06 },
1964 { IMX_8BIT, 0x4085, 0x20 },
1965 { IMX_8BIT, 0x4086, 0x03 },
1966 { IMX_8BIT, 0x4087, 0x70 },
1967 { IMX_8BIT, 0x4400, 0x00 },
1968 { IMX_TOK_TERM, 0, 0}
1969};
1970
1971/* wvga: H : 1640 V : 1024 */
1972static const struct imx_reg imx135_wvga_dvs_binning[] = {
1973 GROUPED_PARAMETER_HOLD_ENABLE,
1974 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
1975 /* Mode setting */
1976 {IMX_8BIT, 0x0108, 0x03 },
1977 {IMX_8BIT, 0x0112, 0x0A },
1978 {IMX_8BIT, 0x0113, 0x0A },
1979 {IMX_8BIT, 0x0381, 0x01 },
1980 {IMX_8BIT, 0x0383, 0x01 },
1981 {IMX_8BIT, 0x0385, 0x01 },
1982 {IMX_8BIT, 0x0387, 0x01 },
1983 {IMX_8BIT, 0x0390, 0x01 },
1984 {IMX_8BIT, 0x0391, 0x22 },
1985 {IMX_8BIT, 0x0392, 0x00 },
1986 {IMX_8BIT, 0x0401, 0x02 },
1987 {IMX_8BIT, 0x0404, 0x00 },
1988 {IMX_8BIT, 0x0405, 0x14 },
1989 {IMX_8BIT, 0x4082, 0x00 },
1990 {IMX_8BIT, 0x4083, 0x00 },
1991 {IMX_8BIT, 0x7006, 0x04 },
1992 /* Size setting */
1993 {IMX_8BIT, 0x0344, 0x00 },
1994 {IMX_8BIT, 0x0345, 0x36 },
1995 {IMX_8BIT, 0x0346, 0x01 },
1996 {IMX_8BIT, 0x0347, 0x18 },
1997 {IMX_8BIT, 0x0348, 0x10 },
1998 {IMX_8BIT, 0x0349, 0x39 },
1999 {IMX_8BIT, 0x034A, 0x0B },
2000 {IMX_8BIT, 0x034B, 0x17 },
2001 {IMX_8BIT, 0x034C, 0x06 },
2002 {IMX_8BIT, 0x034D, 0x68 },
2003 {IMX_8BIT, 0x034E, 0x04 },
2004 {IMX_8BIT, 0x034F, 0x00 },
2005 {IMX_8BIT, 0x0350, 0x00 },
2006 {IMX_8BIT, 0x0351, 0x00 },
2007 {IMX_8BIT, 0x0352, 0x00 },
2008 {IMX_8BIT, 0x0353, 0x00 },
2009 {IMX_8BIT, 0x0354, 0x08 },
2010 {IMX_8BIT, 0x0355, 0x02 },
2011 {IMX_8BIT, 0x0356, 0x05 },
2012 {IMX_8BIT, 0x0357, 0x00 },
2013 {IMX_8BIT, 0x301D, 0x30 },
2014 {IMX_8BIT, 0x3310, 0x06 },
2015 {IMX_8BIT, 0x3311, 0x68 },
2016 {IMX_8BIT, 0x3312, 0x04 },
2017 {IMX_8BIT, 0x3313, 0x00 },
2018 {IMX_8BIT, 0x331C, 0x01 },
2019 {IMX_8BIT, 0x331D, 0xBD },
2020 {IMX_8BIT, 0x4084, 0x06 },
2021 {IMX_8BIT, 0x4085, 0x68 },
2022 {IMX_8BIT, 0x4086, 0x04 },
2023 {IMX_8BIT, 0x4087, 0x00 },
2024 {IMX_8BIT, 0x4400, 0x00 },
2025 {IMX_TOK_TERM, 0, 0}
2026};
2027
2028/* 480P 1036 x 696 */
2029static const struct imx_reg imx135_480p_binning[] = {
2030 GROUPED_PARAMETER_HOLD_ENABLE,
2031 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
2032 /* Mode setting */
2033 {IMX_8BIT, 0x0108, 0x03 },
2034 {IMX_8BIT, 0x0112, 0x0A },
2035 {IMX_8BIT, 0x0113, 0x0A },
2036 {IMX_8BIT, 0x0381, 0x01 },
2037 {IMX_8BIT, 0x0383, 0x01 },
2038 {IMX_8BIT, 0x0385, 0x01 },
2039 {IMX_8BIT, 0x0387, 0x01 },
2040 {IMX_8BIT, 0x0390, 0x01 },
2041 {IMX_8BIT, 0x0391, 0x44 },
2042 {IMX_8BIT, 0x0392, 0x00 },
2043 {IMX_8BIT, 0x0401, 0x00 },
2044 {IMX_8BIT, 0x0404, 0x00 },
2045 {IMX_8BIT, 0x0405, 0x10 },/* No scal */
2046 {IMX_8BIT, 0x4082, 0x00 },
2047 {IMX_8BIT, 0x4083, 0x00 },
2048 {IMX_8BIT, 0x7006, 0x04 },
2049 /* Size setting */
2050 {IMX_8BIT, 0x0344, 0x00 }, /* 52,20,4155, 3099 4144x2784*/
2051 {IMX_8BIT, 0x0345, 0x20 },
2052 {IMX_8BIT, 0x0346, 0x00 },
2053 {IMX_8BIT, 0x0347, 0xA8 },
2054 {IMX_8BIT, 0x0348, 0x10 },
2055 {IMX_8BIT, 0x0349, 0x4F },
2056 {IMX_8BIT, 0x034A, 0x0B },
2057 {IMX_8BIT, 0x034B, 0x88 },
2058 {IMX_8BIT, 0x034C, 0x04 }, /* 1036 * 696 */
2059 {IMX_8BIT, 0x034D, 0x0C },
2060 {IMX_8BIT, 0x034E, 0x02 },
2061 {IMX_8BIT, 0x034F, 0xB8 },
2062 {IMX_8BIT, 0x0350, 0x00 },
2063 {IMX_8BIT, 0x0351, 0x00 },
2064 {IMX_8BIT, 0x0352, 0x00 },
2065 {IMX_8BIT, 0x0353, 0x00 },
2066 {IMX_8BIT, 0x0354, 0x04 }, /* 1036x696 */
2067 {IMX_8BIT, 0x0355, 0x0C },
2068 {IMX_8BIT, 0x0356, 0x02 },
2069 {IMX_8BIT, 0x0357, 0xB8 },
2070 {IMX_8BIT, 0x301D, 0x30 },
2071 {IMX_8BIT, 0x3310, 0x04 },
2072 {IMX_8BIT, 0x3311, 0x0C },
2073 {IMX_8BIT, 0x3312, 0x02 },
2074 {IMX_8BIT, 0x3313, 0xB8 },
2075 {IMX_8BIT, 0x331C, 0x02 },
2076 {IMX_8BIT, 0x331D, 0x21 },
2077 {IMX_8BIT, 0x4084, 0x04 },
2078 {IMX_8BIT, 0x4085, 0x0C },
2079 {IMX_8BIT, 0x4086, 0x02 },
2080 {IMX_8BIT, 0x4087, 0xB8 },
2081 {IMX_8BIT, 0x4400, 0x00 },
2082 {IMX_TOK_TERM, 0, 0}
2083};
2084
2085/* 480P DVS 936 x 602 */
2086static const struct imx_reg imx135_480p_dvs_binning[] = {
2087 GROUPED_PARAMETER_HOLD_ENABLE,
2088 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
2089 /* mode setting */
2090 { IMX_8BIT, 0x0108, 0x03 },
2091 { IMX_8BIT, 0x0112, 0x0A },
2092 { IMX_8BIT, 0x0113, 0x0A },
2093 { IMX_8BIT, 0x0381, 0x01 },
2094 { IMX_8BIT, 0x0383, 0x01 },
2095 { IMX_8BIT, 0x0385, 0x01 },
2096 { IMX_8BIT, 0x0387, 0x01 },
2097 { IMX_8BIT, 0x0390, 0x01 },
2098 { IMX_8BIT, 0x0391, 0x22 },
2099 { IMX_8BIT, 0x0392, 0x00 },
2100 { IMX_8BIT, 0x0401, 0x02 },
2101 { IMX_8BIT, 0x0404, 0x00 },
2102 { IMX_8BIT, 0x0405, 0x23 },
2103 { IMX_8BIT, 0x4082, 0x00 },
2104 { IMX_8BIT, 0x4083, 0x00 },
2105 { IMX_8BIT, 0x7006, 0x04 },
2106 /* size setting */
2107 { IMX_8BIT, 0x0344, 0x00 }, /* 56,244,4151,2877: 4096x2634 */
2108 { IMX_8BIT, 0x0345, 0x38 },
2109 { IMX_8BIT, 0x0346, 0x00 },
2110 { IMX_8BIT, 0x0347, 0xf4 },
2111 { IMX_8BIT, 0x0348, 0x10 },
2112 { IMX_8BIT, 0x0349, 0x37 },
2113 { IMX_8BIT, 0x034A, 0x0b },
2114 { IMX_8BIT, 0x034B, 0x3d },
2115 { IMX_8BIT, 0x034C, 0x03 }, /* 936 x 602 */
2116 { IMX_8BIT, 0x034D, 0xa8 },
2117 { IMX_8BIT, 0x034E, 0x02 },
2118 { IMX_8BIT, 0x034F, 0x5a },
2119 { IMX_8BIT, 0x0350, 0x00 },
2120 { IMX_8BIT, 0x0351, 0x00 },
2121 { IMX_8BIT, 0x0352, 0x00 },
2122 { IMX_8BIT, 0x0353, 0x00 },
2123 { IMX_8BIT, 0x0354, 0x08 }, /* 2058x1156 */
2124 { IMX_8BIT, 0x0355, 0x00 },
2125 { IMX_8BIT, 0x0356, 0x05 },
2126 { IMX_8BIT, 0x0357, 0x25 },
2127 { IMX_8BIT, 0x301D, 0x30 }, /* TODO! */
2128 { IMX_8BIT, 0x3310, 0x03 },
2129 { IMX_8BIT, 0x3311, 0xa8 },
2130 { IMX_8BIT, 0x3312, 0x02 },
2131 { IMX_8BIT, 0x3313, 0x5a },
2132 { IMX_8BIT, 0x331C, 0x01 }, /* TODO! */
2133 { IMX_8BIT, 0x331D, 0xd6 },
2134 { IMX_8BIT, 0x4084, 0x03 },
2135 { IMX_8BIT, 0x4085, 0xa8 },
2136 { IMX_8BIT, 0x4086, 0x02 },
2137 { IMX_8BIT, 0x4087, 0x5a },
2138 { IMX_8BIT, 0x4400, 0x00 },
2139 { IMX_TOK_TERM, 0, 0}
2140};
2141
2142/* VGA: H : 1036 V : 780 */
2143static const struct imx_reg imx135_vga_binning[] = {
2144 GROUPED_PARAMETER_HOLD_ENABLE,
2145 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
2146 /* Mode setting */
2147 {IMX_8BIT, 0x0108, 0x03 },
2148 {IMX_8BIT, 0x0112, 0x0A },
2149 {IMX_8BIT, 0x0113, 0x0A },
2150 {IMX_8BIT, 0x0381, 0x01 },
2151 {IMX_8BIT, 0x0383, 0x01 },
2152 {IMX_8BIT, 0x0385, 0x01 },
2153 {IMX_8BIT, 0x0387, 0x01 },
2154 {IMX_8BIT, 0x0390, 0x01 },
2155 {IMX_8BIT, 0x0391, 0x44 },
2156 {IMX_8BIT, 0x0392, 0x00 },
2157 {IMX_8BIT, 0x0401, 0x00 },
2158 {IMX_8BIT, 0x0404, 0x00 },
2159 {IMX_8BIT, 0x0405, 0x10 },
2160 {IMX_8BIT, 0x4082, 0x00 },
2161 {IMX_8BIT, 0x4083, 0x00 },
2162 {IMX_8BIT, 0x7006, 0x04 },
2163 /* Size setting */
2164 {IMX_8BIT, 0x0344, 0x00 }, /* 52,20,4155, 3099 4144x3120*/
2165 {IMX_8BIT, 0x0345, 0x20 },
2166 {IMX_8BIT, 0x0346, 0x00 },
2167 {IMX_8BIT, 0x0347, 0x00 },
2168 {IMX_8BIT, 0x0348, 0x10 },
2169 {IMX_8BIT, 0x0349, 0x4F },
2170 {IMX_8BIT, 0x034A, 0x0C },
2171 {IMX_8BIT, 0x034B, 0x2F },
2172 {IMX_8BIT, 0x034C, 0x04 }, /* 1036x780 */
2173 {IMX_8BIT, 0x034D, 0x0C },
2174 {IMX_8BIT, 0x034E, 0x03 },
2175 {IMX_8BIT, 0x034F, 0x0C },
2176 {IMX_8BIT, 0x0350, 0x00 },
2177 {IMX_8BIT, 0x0351, 0x00 },
2178 {IMX_8BIT, 0x0352, 0x00 },
2179 {IMX_8BIT, 0x0353, 0x00 },
2180 {IMX_8BIT, 0x0354, 0x04 }, /* 1036x780 */
2181 {IMX_8BIT, 0x0355, 0x0C },
2182 {IMX_8BIT, 0x0356, 0x03 },
2183 {IMX_8BIT, 0x0357, 0x0C },
2184 {IMX_8BIT, 0x301D, 0x30 },
2185 {IMX_8BIT, 0x3310, 0x04 },
2186 {IMX_8BIT, 0x3311, 0x0C },
2187 {IMX_8BIT, 0x3312, 0x03 },
2188 {IMX_8BIT, 0x3313, 0x0C },
2189 {IMX_8BIT, 0x331C, 0x02 },
2190 {IMX_8BIT, 0x331D, 0x21 },
2191 {IMX_8BIT, 0x4084, 0x04 },
2192 {IMX_8BIT, 0x4085, 0x0C },
2193 {IMX_8BIT, 0x4086, 0x03 },
2194 {IMX_8BIT, 0x4087, 0x0C },
2195 {IMX_8BIT, 0x4400, 0x00 },
2196 {IMX_TOK_TERM, 0, 0}
2197};
2198
2199/* VGA: H : 820 V : 616 */
2200static const struct imx_reg imx135_vga_dvs_binning[] = {
2201 GROUPED_PARAMETER_HOLD_ENABLE,
2202 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
2203 /* Mode setting */
2204 {IMX_8BIT, 0x0108, 0x03 },
2205 {IMX_8BIT, 0x0112, 0x0A },
2206 {IMX_8BIT, 0x0113, 0x0A },
2207 {IMX_8BIT, 0x0381, 0x01 },
2208 {IMX_8BIT, 0x0383, 0x01 },
2209 {IMX_8BIT, 0x0385, 0x01 },
2210 {IMX_8BIT, 0x0387, 0x01 },
2211 {IMX_8BIT, 0x0390, 0x01 },
2212 {IMX_8BIT, 0x0391, 0x44 },
2213 {IMX_8BIT, 0x0392, 0x00 },
2214 {IMX_8BIT, 0x0401, 0x02 },
2215 {IMX_8BIT, 0x0404, 0x00 },
2216 {IMX_8BIT, 0x0405, 0x14 },
2217 {IMX_8BIT, 0x4082, 0x00 },
2218 {IMX_8BIT, 0x4083, 0x00 },
2219 {IMX_8BIT, 0x7006, 0x04 },
2220 /* Size setting */
2221 {IMX_8BIT, 0x0344, 0x00 }, /* 52,20,4155, 3099 4104x3080*/
2222 {IMX_8BIT, 0x0345, 0x34 },
2223 {IMX_8BIT, 0x0346, 0x00 },
2224 {IMX_8BIT, 0x0347, 0x14 },
2225 {IMX_8BIT, 0x0348, 0x10 },
2226 {IMX_8BIT, 0x0349, 0x3B },
2227 {IMX_8BIT, 0x034A, 0x0C },
2228 {IMX_8BIT, 0x034B, 0x1B },
2229 {IMX_8BIT, 0x034C, 0x03 }, /* 820x616 */
2230 {IMX_8BIT, 0x034D, 0x34 },
2231 {IMX_8BIT, 0x034E, 0x02 },
2232 {IMX_8BIT, 0x034F, 0x68 },
2233 {IMX_8BIT, 0x0350, 0x00 },
2234 {IMX_8BIT, 0x0351, 0x00 },
2235 {IMX_8BIT, 0x0352, 0x00 },
2236 {IMX_8BIT, 0x0353, 0x00 },
2237 {IMX_8BIT, 0x0354, 0x04 }, /* 1026x770 */
2238 {IMX_8BIT, 0x0355, 0x02 },
2239 {IMX_8BIT, 0x0356, 0x03 },
2240 {IMX_8BIT, 0x0357, 0x02 },
2241 {IMX_8BIT, 0x301D, 0x30 },
2242 {IMX_8BIT, 0x3310, 0x03 },
2243 {IMX_8BIT, 0x3311, 0x34 },
2244 {IMX_8BIT, 0x3312, 0x02 },
2245 {IMX_8BIT, 0x3313, 0x68 },
2246 {IMX_8BIT, 0x331C, 0x02 },
2247 {IMX_8BIT, 0x331D, 0x21 },
2248 {IMX_8BIT, 0x4084, 0x03 },
2249 {IMX_8BIT, 0x4085, 0x34 },
2250 {IMX_8BIT, 0x4086, 0x02 },
2251 {IMX_8BIT, 0x4087, 0x68 },
2252 {IMX_8BIT, 0x4400, 0x00 },
2253 {IMX_TOK_TERM, 0, 0}
2254};
2255
2256/* VGA: H : 436 V : 360 */
2257static const struct imx_reg imx135_436x360_binning[] = {
2258 GROUPED_PARAMETER_HOLD_ENABLE,
2259 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
2260 /* Mode setting */
2261 {IMX_8BIT, 0x0108, 0x03 },
2262 {IMX_8BIT, 0x0112, 0x0A },
2263 {IMX_8BIT, 0x0113, 0x0A },
2264 {IMX_8BIT, 0x0381, 0x01 },
2265 {IMX_8BIT, 0x0383, 0x01 },
2266 {IMX_8BIT, 0x0385, 0x01 },
2267 {IMX_8BIT, 0x0387, 0x01 },
2268 {IMX_8BIT, 0x0390, 0x01 },
2269 {IMX_8BIT, 0x0391, 0x44 },
2270 {IMX_8BIT, 0x0392, 0x00 },
2271 {IMX_8BIT, 0x0401, 0x02 },
2272 {IMX_8BIT, 0x0404, 0x00 },
2273 {IMX_8BIT, 0x0405, 0x22 },
2274 {IMX_8BIT, 0x4082, 0x00 },
2275 {IMX_8BIT, 0x4083, 0x00 },
2276 {IMX_8BIT, 0x7006, 0x04 },
2277 /* Size setting */
2278 {IMX_8BIT, 0x0344, 0x00 }, /* 212,0,3995,3119 3784x3120 */
2279 {IMX_8BIT, 0x0345, 0xD4 },
2280 {IMX_8BIT, 0x0346, 0x00 },
2281 {IMX_8BIT, 0x0347, 0x00 },
2282 {IMX_8BIT, 0x0348, 0x0F },
2283 {IMX_8BIT, 0x0349, 0x9B },
2284 {IMX_8BIT, 0x034A, 0x0C },
2285 {IMX_8BIT, 0x034B, 0x2F },
2286
2287 {IMX_8BIT, 0x034C, 0x01 }, /* 436x360 */
2288 {IMX_8BIT, 0x034D, 0xB4 },
2289 {IMX_8BIT, 0x034E, 0x01 },
2290 {IMX_8BIT, 0x034F, 0x68 },
2291 {IMX_8BIT, 0x0350, 0x00 },
2292 {IMX_8BIT, 0x0351, 0x12 },
2293 {IMX_8BIT, 0x0352, 0x00 },
2294 {IMX_8BIT, 0x0353, 0x0C },
2295
2296 {IMX_8BIT, 0x0354, 0x03 }, /* 928x768 crop from 946x780*/
2297 {IMX_8BIT, 0x0355, 0xA0 },
2298 {IMX_8BIT, 0x0356, 0x03 },
2299 {IMX_8BIT, 0x0357, 0x00 },
2300
2301 {IMX_8BIT, 0x301D, 0x30 },
2302 {IMX_8BIT, 0x3310, 0x01 },
2303 {IMX_8BIT, 0x3311, 0xB4 },
2304 {IMX_8BIT, 0x3312, 0x01 },
2305 {IMX_8BIT, 0x3313, 0x68 },
2306 {IMX_8BIT, 0x331C, 0x02 },
2307 {IMX_8BIT, 0x331D, 0x21 },
2308 {IMX_8BIT, 0x4084, 0x01 },
2309 {IMX_8BIT, 0x4085, 0xB4 },
2310 {IMX_8BIT, 0x4086, 0x01 },
2311 {IMX_8BIT, 0x4087, 0x68 },
2312 {IMX_8BIT, 0x4400, 0x00 },
2313 {IMX_TOK_TERM, 0, 0}
2314};
2315
2316/* QVGA: H : 408 V : 308 */
2317static const struct imx_reg imx135_qvga__dvs_binning[] = {
2318 GROUPED_PARAMETER_HOLD_ENABLE,
2319 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
2320 /* Mode setting */
2321 {IMX_8BIT, 0x0108, 0x03 },
2322 {IMX_8BIT, 0x0112, 0x0A },
2323 {IMX_8BIT, 0x0113, 0x0A },
2324 {IMX_8BIT, 0x0381, 0x01 },
2325 {IMX_8BIT, 0x0383, 0x01 },
2326 {IMX_8BIT, 0x0385, 0x01 },
2327 {IMX_8BIT, 0x0387, 0x01 },
2328 {IMX_8BIT, 0x0390, 0x01 },
2329 {IMX_8BIT, 0x0391, 0x44 },
2330 {IMX_8BIT, 0x0392, 0x00 },
2331 {IMX_8BIT, 0x0401, 0x02 },
2332 {IMX_8BIT, 0x0404, 0x00 },
2333 {IMX_8BIT, 0x0405, 0x28 },
2334 {IMX_8BIT, 0x4082, 0x00 },
2335 {IMX_8BIT, 0x4083, 0x00 },
2336 {IMX_8BIT, 0x7006, 0x04 },
2337 /* Size setting */
2338 {IMX_8BIT, 0x0344, 0x00 }, /* 64,20,4143,3099 4080x3080 */
2339 {IMX_8BIT, 0x0345, 0x40 },
2340 {IMX_8BIT, 0x0346, 0x00 },
2341 {IMX_8BIT, 0x0347, 0x14 },
2342 {IMX_8BIT, 0x0348, 0x10 },
2343 {IMX_8BIT, 0x0349, 0x2F },
2344 {IMX_8BIT, 0x034A, 0x0C },
2345 {IMX_8BIT, 0x034B, 0x1B },
2346 {IMX_8BIT, 0x034C, 0x01 }, /* 408x308 */
2347 {IMX_8BIT, 0x034D, 0x98 },
2348 {IMX_8BIT, 0x034E, 0x01 },
2349 {IMX_8BIT, 0x034F, 0x34 },
2350 {IMX_8BIT, 0x0350, 0x00 },
2351 {IMX_8BIT, 0x0351, 0x00 },
2352 {IMX_8BIT, 0x0352, 0x00 },
2353 {IMX_8BIT, 0x0353, 0x00 },
2354 {IMX_8BIT, 0x0354, 0x03 }, /* 1020x770 */
2355 {IMX_8BIT, 0x0355, 0xFC },
2356 {IMX_8BIT, 0x0356, 0x03 },
2357 {IMX_8BIT, 0x0357, 0x02 },
2358 {IMX_8BIT, 0x301D, 0x30 },
2359 {IMX_8BIT, 0x3310, 0x01 },
2360 {IMX_8BIT, 0x3311, 0x98 },
2361 {IMX_8BIT, 0x3312, 0x01 },
2362 {IMX_8BIT, 0x3313, 0x34 },
2363 {IMX_8BIT, 0x331C, 0x01 },
2364 {IMX_8BIT, 0x331D, 0x68 },
2365 {IMX_8BIT, 0x4084, 0x01 },
2366 {IMX_8BIT, 0x4085, 0x98 },
2367 {IMX_8BIT, 0x4086, 0x01 },
2368 {IMX_8BIT, 0x4087, 0x34 },
2369 {IMX_8BIT, 0x4400, 0x00 },
2370 {IMX_TOK_TERM, 0, 0}
2371};
2372
2373/* CIF H : 368 V : 304 */
2374static const struct imx_reg imx135_cif_binning[] = {
2375 GROUPED_PARAMETER_HOLD_ENABLE,
2376 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
2377 /* Mode setting */
2378 {IMX_8BIT, 0x0108, 0x03 },
2379 {IMX_8BIT, 0x0112, 0x0A },
2380 {IMX_8BIT, 0x0113, 0x0A },
2381 {IMX_8BIT, 0x0381, 0x01 },
2382 {IMX_8BIT, 0x0383, 0x01 },
2383 {IMX_8BIT, 0x0385, 0x01 },
2384 {IMX_8BIT, 0x0387, 0x01 },
2385 {IMX_8BIT, 0x0390, 0x01 },
2386 {IMX_8BIT, 0x0391, 0x44 },
2387 {IMX_8BIT, 0x0392, 0x00 },
2388 {IMX_8BIT, 0x0401, 0x02 },
2389 {IMX_8BIT, 0x0404, 0x00 },
2390 {IMX_8BIT, 0x0405, 0x28 },
2391 {IMX_8BIT, 0x4082, 0x00 },
2392 {IMX_8BIT, 0x4083, 0x00 },
2393 {IMX_8BIT, 0x7006, 0x04 },
2394 /* Size setting */
2395 {IMX_8BIT, 0x0344, 0x01 }, /* 264,42,3943,3081 3680x3040 */
2396 {IMX_8BIT, 0x0345, 0x08 },
2397 {IMX_8BIT, 0x0346, 0x00 },
2398 {IMX_8BIT, 0x0347, 0x2a },
2399 {IMX_8BIT, 0x0348, 0x0F },
2400 {IMX_8BIT, 0x0349, 0x67 },
2401 {IMX_8BIT, 0x034A, 0x0c },
2402 {IMX_8BIT, 0x034B, 0x09 },
2403 {IMX_8BIT, 0x034C, 0x01 }, /* 368x304 */
2404 {IMX_8BIT, 0x034D, 0x70 },
2405 {IMX_8BIT, 0x034E, 0x01 },
2406 {IMX_8BIT, 0x034F, 0x30 },
2407 {IMX_8BIT, 0x0350, 0x00 },
2408 {IMX_8BIT, 0x0351, 0x00 },
2409 {IMX_8BIT, 0x0352, 0x00 },
2410 {IMX_8BIT, 0x0353, 0x00 },
2411 {IMX_8BIT, 0x0354, 0x03 }, /* 920x760 */
2412 {IMX_8BIT, 0x0355, 0x98 },
2413 {IMX_8BIT, 0x0356, 0x02 },
2414 {IMX_8BIT, 0x0357, 0xf8 },
2415 {IMX_8BIT, 0x301D, 0x30 },
2416 {IMX_8BIT, 0x3310, 0x01 },
2417 {IMX_8BIT, 0x3311, 0x70 },
2418 {IMX_8BIT, 0x3312, 0x01 },
2419 {IMX_8BIT, 0x3313, 0x30 },
2420 {IMX_8BIT, 0x331C, 0x02 }, /* TODO! binning 4x4 must be 021c? */
2421 {IMX_8BIT, 0x331D, 0x1C },
2422 {IMX_8BIT, 0x4084, 0x01 },
2423 {IMX_8BIT, 0x4085, 0x70 },
2424 {IMX_8BIT, 0x4086, 0x01 },
2425 {IMX_8BIT, 0x4087, 0x30 },
2426 {IMX_8BIT, 0x4400, 0x00 },
2427 {IMX_TOK_TERM, 0, 0}
2428};
2429
2430/* CIF H : 1888 V : 1548 */
2431static const struct imx_reg imx135_cif_binning_1888x1548[] = {
2432 GROUPED_PARAMETER_HOLD_ENABLE,
2433 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
2434 /* Mode setting */
2435 {IMX_8BIT, 0x0108, 0x03 },
2436 {IMX_8BIT, 0x0112, 0x0A },
2437 {IMX_8BIT, 0x0113, 0x0A },
2438 {IMX_8BIT, 0x0381, 0x01 },
2439 {IMX_8BIT, 0x0383, 0x01 },
2440 {IMX_8BIT, 0x0385, 0x01 },
2441 {IMX_8BIT, 0x0387, 0x01 },
2442 {IMX_8BIT, 0x0390, 0x01 },
2443 {IMX_8BIT, 0x0391, 0x22 },
2444 {IMX_8BIT, 0x0392, 0x00 },
2445 {IMX_8BIT, 0x0401, 0x00 },
2446 {IMX_8BIT, 0x0404, 0x00 },
2447 {IMX_8BIT, 0x0405, 0x10 },
2448 {IMX_8BIT, 0x4082, 0x00 },
2449 {IMX_8BIT, 0x4083, 0x00 },
2450 {IMX_8BIT, 0x7006, 0x04 },
2451 /* Size setting */
2452 {IMX_8BIT, 0x0344, 0x00 }, /* 264,42, 3776x3096 */
2453 {IMX_8BIT, 0x0345, 0xD8 },
2454 {IMX_8BIT, 0x0346, 0x00 },
2455 {IMX_8BIT, 0x0347, 0x0C },
2456 {IMX_8BIT, 0x0348, 0x0F },
2457 {IMX_8BIT, 0x0349, 0x97 },
2458 {IMX_8BIT, 0x034A, 0x0C },
2459 {IMX_8BIT, 0x034B, 0x23 },
2460 {IMX_8BIT, 0x034C, 0x07 }, /* 1888x1548 */
2461 {IMX_8BIT, 0x034D, 0x60 },
2462 {IMX_8BIT, 0x034E, 0x06 },
2463 {IMX_8BIT, 0x034F, 0x0C },
2464 {IMX_8BIT, 0x0350, 0x00 },
2465 {IMX_8BIT, 0x0351, 0x00 },
2466 {IMX_8BIT, 0x0352, 0x00 },
2467 {IMX_8BIT, 0x0353, 0x00 },
2468 {IMX_8BIT, 0x0354, 0x07 }, /* 1888x1548 */
2469 {IMX_8BIT, 0x0355, 0x60 },
2470 {IMX_8BIT, 0x0356, 0x06 },
2471 {IMX_8BIT, 0x0357, 0x0C },
2472 {IMX_8BIT, 0x301D, 0x30 },
2473 {IMX_8BIT, 0x3310, 0x07 },
2474 {IMX_8BIT, 0x3311, 0x60 },
2475 {IMX_8BIT, 0x3312, 0x06 },
2476 {IMX_8BIT, 0x3313, 0x0C },
2477 {IMX_8BIT, 0x331C, 0x02 }, /* TODO! binning 4x4 must be 021c? */
2478 {IMX_8BIT, 0x331D, 0x1C },
2479 {IMX_8BIT, 0x4084, 0x07 },
2480 {IMX_8BIT, 0x4085, 0x60 },
2481 {IMX_8BIT, 0x4086, 0x06 },
2482 {IMX_8BIT, 0x4087, 0x0C },
2483 {IMX_8BIT, 0x4400, 0x00 },
2484 {IMX_TOK_TERM, 0, 0}
2485};
2486
2487/* QCIF H : 216 V : 176 */
2488static const struct imx_reg imx135_qcif_dvs_binning[] = {
2489 GROUPED_PARAMETER_HOLD_ENABLE,
2490 PLL_SETTINGS_FOR_MIPI_209_6MHZ_SALTBAY,
2491 /* Mode setting */
2492 {IMX_8BIT, 0x0108, 0x03 },
2493 {IMX_8BIT, 0x0112, 0x0A },
2494 {IMX_8BIT, 0x0113, 0x0A },
2495 {IMX_8BIT, 0x0381, 0x01 },
2496 {IMX_8BIT, 0x0383, 0x01 },
2497 {IMX_8BIT, 0x0385, 0x01 },
2498 {IMX_8BIT, 0x0387, 0x01 },
2499 {IMX_8BIT, 0x0390, 0x01 },
2500 {IMX_8BIT, 0x0391, 0x44 },
2501 {IMX_8BIT, 0x0392, 0x00 },
2502 {IMX_8BIT, 0x0401, 0x02 },
2503 {IMX_8BIT, 0x0404, 0x00 },
2504 {IMX_8BIT, 0x0405, 0x46 },
2505 {IMX_8BIT, 0x4082, 0x00 },
2506 {IMX_8BIT, 0x4083, 0x00 },
2507 {IMX_8BIT, 0x7006, 0x04 },
2508 /* Size setting */
2509 {IMX_8BIT, 0x0344, 0x00 }, /* 212,20,3995,3099 3784x3080 */
2510 {IMX_8BIT, 0x0345, 0xD4 },
2511 {IMX_8BIT, 0x0346, 0x00 },
2512 {IMX_8BIT, 0x0347, 0x14 },
2513 {IMX_8BIT, 0x0348, 0x0F },
2514 {IMX_8BIT, 0x0349, 0x9B },
2515 {IMX_8BIT, 0x034A, 0x0C },
2516 {IMX_8BIT, 0x034B, 0x1B },
2517 {IMX_8BIT, 0x034C, 0x00 }, /* 216x176 */
2518 {IMX_8BIT, 0x034D, 0xD8 },
2519 {IMX_8BIT, 0x034E, 0x00 },
2520 {IMX_8BIT, 0x034F, 0xB0 },
2521 {IMX_8BIT, 0x0350, 0x00 },
2522 {IMX_8BIT, 0x0351, 0x00 },
2523 {IMX_8BIT, 0x0352, 0x00 },
2524 {IMX_8BIT, 0x0353, 0x00 },
2525 {IMX_8BIT, 0x0354, 0x03 }, /* 946x770 */
2526 {IMX_8BIT, 0x0355, 0xB2 },
2527 {IMX_8BIT, 0x0356, 0x03 },
2528 {IMX_8BIT, 0x0357, 0x02 },
2529 {IMX_8BIT, 0x301D, 0x30 },
2530 {IMX_8BIT, 0x3310, 0x00 },
2531 {IMX_8BIT, 0x3311, 0xD8 },
2532 {IMX_8BIT, 0x3312, 0x00 },
2533 {IMX_8BIT, 0x3313, 0xB0 },
2534 {IMX_8BIT, 0x331C, 0x02 }, /* TODO! binning 4x4 must be 021c */
2535 {IMX_8BIT, 0x331D, 0x1C },
2536 {IMX_8BIT, 0x4084, 0x00 },
2537 {IMX_8BIT, 0x4085, 0xD8 },
2538 {IMX_8BIT, 0x4086, 0x00 },
2539 {IMX_8BIT, 0x4087, 0xB0 },
2540 {IMX_8BIT, 0x4400, 0x00 },
2541 {IMX_TOK_TERM, 0, 0}
2542};
2543
2544/*
2545 * ISP Scaling is now supported in offine capture use cases. Because of that
2546 * we need only few modes to cover the different aspect ratios from the
2547 * sensor and the ISP will scale it based on the requested resolution from HAL.
2548 *
2549 * There is a performance impact when continuous view finder option is chose
2550 * for resolutions above 8MP. So 8MP and 6MP resolution are kept, so that lower
2551 * than these take 8MP or 6MP espectively for down scaling based on the
2552 * aspect ratio.
2553 */
2554struct imx_resolution imx135_res_preview_mofd[] = {
2555 {
2556 .desc = "imx135_cif_binning_preview",
2557 .regs = imx135_cif_binning,
2558 .width = 368,
2559 .height = 304,
2560 .fps_options = {
2561 { /* Binning Pixel clock: 335.36MHz */
2562 .fps = 30,
2563 .pixels_per_line = 9114,
2564 .lines_per_frame = 1226,
2565 },
2566 {
2567 }
2568 },
2569 .bin_factor_x = 2,
2570 .bin_factor_y = 2,
2571 .mipi_freq = 209600,
2572 },
2573 {
2574 .desc = "imx135_vga_binning_preview",
2575 .regs = imx135_vga_binning,
2576 .width = 1036,
2577 .height = 780,
2578 .fps_options = {
2579 {
2580 .fps = 30,
2581 .pixels_per_line = 9144,
2582 .lines_per_frame = 1226,
2583 },
2584 {
2585 }
2586 },
2587 .bin_factor_x = 2,
2588 .bin_factor_y = 2,
2589 .mipi_freq = 209600,
2590 },
2591 {
2592 .desc = "imx135_480p_preview",
2593 .regs = imx135_480p_binning,
2594 .width = 1036,
2595 .height = 696,
2596 .fps_options = {
2597 { /* Binning Pixel clock: 335.36MHz */
2598 .fps = 30,
2599 .pixels_per_line = 9144,
2600 .lines_per_frame = 1226,
2601 },
2602 {
2603 }
2604 },
2605 .bin_factor_x = 2,
2606 .bin_factor_y = 2,
2607 .mipi_freq = 209600,
2608 },
2609 {
2610 .desc = "imx135_1080p_binning_preview",
2611 .regs = imx135_1080p_binning,
2612 .width = 1936,
2613 .height = 1104,
2614 .fps_options = {
2615 { /* Binning Pixel clock: 335.36MHz */
2616 .fps = 30,
2617 .pixels_per_line = 5464,
2618 .lines_per_frame = 2046,
2619 },
2620 {
2621 }
2622 },
2623 .bin_factor_x = 1,
2624 .bin_factor_y = 1,
2625 .used = 0,
2626 .mipi_freq = 209600,
2627 },
2628 {
2629 .desc = "imx135_3m__cont_cap",
2630 .regs = imx135_3m_binning,
2631 .width = 2064,
2632 .height = 1552,
2633 .fps_options = {
2634 { /* Binning Pixel clock: 335.36MHz */
2635 .fps = 30,
2636 .pixels_per_line = 5464,
2637 .lines_per_frame = 2046,
2638 },
2639 {
2640 }
2641 },
2642 .bin_factor_x = 1,
2643 .bin_factor_y = 1,
2644 .used = 0,
2645 .mipi_freq = 209600,
2646 },
2647 {
2648 .desc = "imx135_6m_cont_cap",
2649 .regs = imx135_6m,
2650 .width = 3280,
2651 .height = 1852,
2652 .fps_options = {
2653 { /* Binning Pixel clock: 360.96MHz */
2654 .fps = 30,
2655 .pixels_per_line = 4572,
2656 .lines_per_frame = 2624,
2657 },
2658 {
2659 }
2660 },
2661 .bin_factor_x = 0,
2662 .bin_factor_y = 0,
2663 .used = 0,
2664 .mipi_freq = 451200,
2665 },
2666 {
2667 .desc = "imx135_8m_scaled_from_12m__cont_cap",
2668 .regs = imx135_8m_scaled_from_12m,
2669 .width = 3280,
2670 .height = 2464,
2671 .fps_options = {
2672 { /* Pixel clock: 360.96MHz */
2673 .fps = 24,
2674 .pixels_per_line = 4572,
2675 .lines_per_frame = 3280,
2676 },
2677 {
2678 }
2679 },
2680 .bin_factor_x = 0,
2681 .bin_factor_y = 0,
2682 .used = 0,
2683 .mipi_freq = 451200,
2684 },
2685 {
2686 .desc = "imx135_10m__cont_cap",
2687 .regs = imx135_10m,
2688 .width = 4208,
2689 .height = 2368,
2690 .fps_options = {
2691 { /* Pixel clock: 360.96MHz */
2692 .fps = 30,
2693 .pixels_per_line = 4572,
2694 .lines_per_frame = 2632,
2695 },
2696 {
2697 }
2698 },
2699 .bin_factor_x = 0,
2700 .bin_factor_y = 0,
2701 .used = 0,
2702 .mipi_freq = 451200,
2703 },
2704 {
2705 .desc = "imx135_13m__cont_cap",
2706 .regs = imx135_13m,
2707 .width = 4208,
2708 .height = 3120,
2709 .fps_options = {
2710 { /* Pixel clock: 360.96MHz */
2711 .fps = 24,
2712 .pixels_per_line = 4572,
2713 .lines_per_frame = 3290,
2714 },
2715 {
2716 }
2717 },
2718 .bin_factor_x = 0,
2719 .bin_factor_y = 0,
2720 .used = 0,
2721 .mipi_freq = 451200,
2722 },
2723};
2724
2725struct imx_resolution imx135_res_preview[] = {
2726 {
2727 .desc = "imx135_xga_cropped_video",
2728 .regs = imx135_xga_cropped,
2729 .width = 832,
2730 .height = 628,
2731 .fps_options = {
2732 { /* Binning Pixel clock: 335.36MHz */
2733 .fps = 30,
2734 .pixels_per_line = 5464,
2735 .lines_per_frame = 2046,
2736
2737 },
2738 {
2739 }
2740 },
2741 .bin_factor_x = 2,
2742 .bin_factor_y = 2,
2743 .used = 0,
2744 .mipi_freq = 209600,
2745 },
2746 {
2747 .desc = "imx135_2m_cropped_video",
2748 .regs = imx135_2m_cropped,
2749 .width = 1648,
2750 .height = 1240,
2751 .fps_options = {
2752 { /* Pixel clock: 335.36MHz */
2753 .fps = 30,
2754 .pixels_per_line = 5464,
2755 .lines_per_frame = 2046,
2756
2757 },
2758 {
2759 }
2760 },
2761 .bin_factor_x = 1,
2762 .bin_factor_y = 1,
2763 .used = 0,
2764 .mipi_freq = 209600,
2765 },
2766 {
2767 .desc = "imx135_1936x1096_cropped",
2768 .regs = imx135_1936x1096_cropped,
2769 .width = 1936,
2770 .height = 1096,
2771 .fps_options = {
2772 { /* Pixel clock: 335.36MHz */
2773 .fps = 30,
2774 .pixels_per_line = 5464,
2775 .lines_per_frame = 2046,
2776
2777 },
2778 {
2779 }
2780 },
2781 .bin_factor_x = 0,
2782 .bin_factor_y = 0,
2783 .used = 0,
2784 .mipi_freq = 209600,
2785 },
2786 {
2787 .desc = "imx135_8m_cropped_video",
2788 .regs = imx135_8m_cropped,
2789 .width = 3280,
2790 .height = 2464,
2791 .fps_options = {
2792 { /* Pixel clock: 360.96MHz */
2793 .fps = 30,
2794 .pixels_per_line = 4572,
2795 .lines_per_frame = 2624,
2796 },
2797 {
2798 }
2799 },
2800 .bin_factor_x = 0,
2801 .bin_factor_y = 0,
2802 .used = 0,
2803 .mipi_freq = 451200,
2804 },
2805};
2806
2807/*
2808 * ISP Scaling is now supported in online capture use cases. Because of that
2809 * we need only few modes to cover the different aspect ratios from the
2810 * sensor and the ISP will scale it based on the requested resolution from HAL.
2811 *
2812 * There is a performance impact when continuous view finder option is chose
2813 * for resolutions above 8MP. So 8MP and 6MP resolution are kept, so that lower
2814 * than these take 8MP or 6MP espectively for down scaling based on the
2815 * aspect ratio.
2816 */
2817struct imx_resolution imx135_res_still_mofd[] = {
2818 {
2819 .desc = "imx135_cif_binning_still",
2820 .regs = imx135_cif_binning_1888x1548,
2821 .width = 1888,
2822 .height = 1548,
2823 .fps_options = {
2824 { /* Binning Pixel clock: 335.36MHz */
2825 .fps = 30,
2826 .pixels_per_line = 5464,
2827 .lines_per_frame = 2046,
2828 },
2829 {
2830 }
2831 },
2832 .bin_factor_x = 1,
2833 .bin_factor_y = 1,
2834 .mipi_freq = 209600,
2835 },
2836 {
2837 .desc = "imx135_vga_binning_preview",
2838 .regs = imx135_vga_binning,
2839 .width = 1036,
2840 .height = 780,
2841 .fps_options = {
2842 {
2843 .fps = 30,
2844 .pixels_per_line = 9144,
2845 .lines_per_frame = 1226,
2846 },
2847 {
2848 }
2849 },
2850 .bin_factor_x = 2,
2851 .bin_factor_y = 2,
2852 .mipi_freq = 209600,
2853 },
2854 {
2855 .desc = "imx135_480p_preview",
2856 .regs = imx135_480p_binning,
2857 .width = 1036,
2858 .height = 696,
2859 .fps_options = {
2860 { /* Binning Pixel clock: 335.36MHz */
2861 .fps = 30,
2862 .pixels_per_line = 9144,
2863 .lines_per_frame = 1226,
2864 },
2865 {
2866 }
2867 },
2868 .bin_factor_x = 2,
2869 .bin_factor_y = 2,
2870 .mipi_freq = 209600,
2871 },
2872 {
2873 .desc = "imx135_1080p_binning_still",
2874 .regs = imx135_1080p_binning,
2875 .width = 1936,
2876 .height = 1104,
2877 .fps_options = {
2878 { /* Binning Pixel clock: 335.36MHz */
2879 .fps = 15,
2880 .pixels_per_line = 9114,
2881 .lines_per_frame = 2453,
2882 },
2883 {
2884 }
2885 },
2886 .bin_factor_x = 1,
2887 .bin_factor_y = 1,
2888 .used = 0,
2889 .mipi_freq = 209600,
2890 },
2891 {
2892 .desc = "imx135_3m__still",
2893 .regs = imx135_3m_binning,
2894 .width = 2064,
2895 .height = 1552,
2896 .fps_options = {
2897 { /* Binning Pixel clock: 335.36MHz */
2898 .fps = 15,
2899 .pixels_per_line = 9114,
2900 .lines_per_frame = 2453,
2901 },
2902 {
2903 }
2904 },
2905 .bin_factor_x = 1,
2906 .bin_factor_y = 1,
2907 .used = 0,
2908 .mipi_freq = 209600,
2909 },
2910 {
2911 .desc = "imx135_6m_for_mipi_342_still",
2912 .regs = imx135_6m_for_mipi_342,
2913 .width = 3280,
2914 .height = 1852,
2915 .fps_options = {
2916 { /* Pixel clock: 273.6MHz */
2917 .fps = 11,
2918 .pixels_per_line = 9114,
2919 .lines_per_frame = 2664,
2920 },
2921 {
2922 }
2923 },
2924 .bin_factor_x = 0,
2925 .bin_factor_y = 0,
2926 .used = 0,
2927 .mipi_freq = 342000,
2928 },
2929 {
2930 .desc = "imx135_8m_scaled_from_12m_for_mipi342_still",
2931 .regs = imx135_8m_scaled_from_12m_for_mipi342,
2932 .width = 3280,
2933 .height = 2464,
2934 .fps_options = {
2935 { /* Pixel clock: 273.6MHz */
2936 .fps = 8,
2937 .pixels_per_line = 7672,
2938 .lines_per_frame = 4458,
2939 },
2940 { /* Pixel clock: 273.6MHz */
2941 .fps = 15,
2942 .pixels_per_line = 5500,
2943 .lines_per_frame = 3314,
2944 },
2945 {
2946 }
2947 },
2948 .bin_factor_x = 0,
2949 .bin_factor_y = 0,
2950 .used = 0,
2951 .mipi_freq = 342000,
2952 },
2953 {
2954 .desc = "imx135_10m_for_mipi_342_still",
2955 .regs = imx135_10m_for_mipi_342,
2956 .width = 4208,
2957 .height = 2368,
2958 .fps_options = {
2959 { /* Pixel clock: 273.6MHz */
2960 .fps = 11,
2961 .pixels_per_line = 9144,
2962 .lines_per_frame = 2664,
2963 },
2964 {
2965 }
2966 },
2967 .bin_factor_x = 0,
2968 .bin_factor_y = 0,
2969 .used = 0,
2970 .mipi_freq = 342000,
2971 },
2972 {
2973 .desc = "imx135_13m_still",
2974 .regs = imx135_13m_for_mipi_342,
2975 .width = 4208,
2976 .height = 3120,
2977 .fps_options = {
2978 { /* Pixel clock: 273.6MHz */
2979 .fps = 5,
2980 .pixels_per_line = 9144,
2981 .lines_per_frame = 5990,
2982 },
2983 {
2984 }
2985 },
2986 .bin_factor_x = 0,
2987 .bin_factor_y = 0,
2988 .used = 0,
2989 .mipi_freq = 342000,
2990 },
2991};
2992
2993struct imx_resolution imx135_res_still[] = {
2994 {
2995 .desc = "imx135_qvga",
2996 .regs = imx135_336x256,
2997 .width = 336,
2998 .height = 256,
2999 .fps_options = {
3000 { /* Pixel clock: 360.96MHz */
3001 .fps = 30,
3002 .pixels_per_line = 4572,
3003 .lines_per_frame = 2624,
3004 },
3005 {
3006 }
3007 },
3008 .bin_factor_x = 1,
3009 .bin_factor_y = 1,
3010 .used = 0,
3011 .mipi_freq = 451200,
3012 },
3013 {
3014 .desc = "imx135_cif",
3015 .regs = imx135_368x304_cropped,
3016 .width = 368,
3017 .height = 304,
3018 .fps_options = {
3019 { /* Pixel clock: 360.96MHz */
3020 .fps = 30,
3021 .pixels_per_line = 4572,
3022 .lines_per_frame = 2624,
3023 },
3024 {
3025 }
3026 },
3027 .bin_factor_x = 1,
3028 .bin_factor_y = 1,
3029 .used = 0,
3030 .mipi_freq = 451200,
3031 },
3032 {
3033 .desc = "imx135_xga_cropped_video",
3034 .regs = imx135_xga_cropped,
3035 .width = 832,
3036 .height = 628,
3037 .fps_options = {
3038 { /* Pixel clock: 360.96MHz */
3039 .fps = 30,
3040 .pixels_per_line = 4572,
3041 .lines_per_frame = 2624,
3042 },
3043 {
3044 }
3045 },
3046 .bin_factor_x = 2,
3047 .bin_factor_y = 2,
3048 .used = 0,
3049 .mipi_freq = 451200,
3050 },
3051 {
3052 .desc = "imx135_2M_for_11:9",
3053 .regs = imx135_1424x1168_cropped,
3054 .width = 1424,
3055 .height = 1168,
3056 .fps_options = {
3057 { /* Pixel clock: 360.96MHz */
3058 .fps = 30,
3059 .pixels_per_line = 4572,
3060 .lines_per_frame = 2624,
3061 },
3062 {
3063 }
3064 },
3065 .bin_factor_x = 1,
3066 .bin_factor_y = 1,
3067 .used = 0,
3068 .mipi_freq = 451200,
3069 },
3070 {
3071 .desc = "imx135_2m_cropped_video",
3072 .regs = imx135_2m_cropped,
3073 .width = 1648,
3074 .height = 1240,
3075 .fps_options = {
3076 { /* Pixel clock: 360.96MHz */
3077 .fps = 15,
3078 .pixels_per_line = 6466,
3079 .lines_per_frame = 3710,
3080 },
3081 {
3082 }
3083 },
3084 .bin_factor_x = 1,
3085 .bin_factor_y = 1,
3086 .used = 0,
3087 .mipi_freq = 451200,
3088 },
3089 {
3090 .desc = "imx135_6m_cropped_video",
3091 .regs = imx135_6m_cropped,
3092 .width = 3280,
3093 .height = 1852,
3094 .fps_options = {
3095 { /* Pixel clock: 360.96MHz */
3096 .fps = 8,
3097 .pixels_per_line = 8850,
3098 .lines_per_frame = 5080,
3099 },
3100 {
3101 }
3102 },
3103 .bin_factor_x = 0,
3104 .bin_factor_y = 0,
3105 .used = 0,
3106 .mipi_freq = 451200,
3107 },
3108 {
3109 .desc = "imx135_8m_cropped_video",
3110 .regs = imx135_8m_cropped,
3111 .width = 3280,
3112 .height = 2464,
3113 .fps_options = {
3114 { /* Pixel clock: 360.96MHz */
3115 .fps = 8,
3116 .pixels_per_line = 8850,
3117 .lines_per_frame = 5080,
3118 },
3119 {
3120 }
3121 },
3122 .bin_factor_x = 0,
3123 .bin_factor_y = 0,
3124 .used = 0,
3125 .mipi_freq = 451200,
3126 },
3127};
3128
3129/*
3130 * ISP scaling is not supported in case of video modes. So we need to have
3131 * separate sensor mode for video use cases
3132 */
3133struct imx_resolution imx135_res_video[] = {
3134 /* For binning modes pix clock is 335.36 MHz. */
3135 {
3136 .desc = "imx135_qcif_dvs_binning_video",
3137 .regs = imx135_qcif_dvs_binning,
3138 .width = 216,
3139 .height = 176,
3140 .fps_options = {
3141 {
3142 .fps = 30,
3143 .pixels_per_line = 9144,
3144 .lines_per_frame = 1226,
3145 },
3146 {
3147 }
3148 },
3149 .bin_factor_x = 2,
3150 .bin_factor_y = 2,
3151 .mipi_freq = 209600,
3152 },
3153 {
3154 .desc = "imx135_cif_binning_video",
3155 .regs = imx135_cif_binning,
3156 .width = 368,
3157 .height = 304,
3158 .fps_options = {
3159 {
3160 .fps = 30,
3161 .pixels_per_line = 9144,
3162 .lines_per_frame = 1226,
3163 },
3164 {
3165 }
3166 },
3167 .bin_factor_x = 2,
3168 .bin_factor_y = 2,
3169 .mipi_freq = 209600,
3170 },
3171 {
3172 .desc = "imx135_qvga__dvs_binning_video",
3173 .regs = imx135_qvga__dvs_binning,
3174 .width = 408,
3175 .height = 308,
3176 .fps_options = {
3177 {
3178 .fps = 30,
3179 .pixels_per_line = 9144,
3180 .lines_per_frame = 1226,
3181 },
3182 {
3183 }
3184 },
3185 .bin_factor_x = 2,
3186 .bin_factor_y = 2,
3187 .mipi_freq = 209600,
3188 },
3189 {
3190 .desc = "imx135_436x360_binning_video",
3191 .regs = imx135_436x360_binning,
3192 .width = 436,
3193 .height = 360,
3194 .fps_options = {
3195 {
3196 .fps = 30,
3197 .pixels_per_line = 9144,
3198 .lines_per_frame = 1226,
3199 },
3200 {
3201 }
3202 },
3203 .bin_factor_x = 2,
3204 .bin_factor_y = 2,
3205 .mipi_freq = 209600,
3206 },
3207 {
3208 .desc = "imx135_vga_dvs_binning_video",
3209 .regs = imx135_vga_dvs_binning,
3210 .width = 820,
3211 .height = 616,
3212 .fps_options = {
3213 {
3214 .fps = 30,
3215 .pixels_per_line = 9144,
3216 .lines_per_frame = 1226,
3217 },
3218 {
3219 }
3220 },
3221 .bin_factor_x = 2,
3222 .bin_factor_y = 2,
3223 .mipi_freq = 209600,
3224 },
3225 {
3226 .desc = "imx135_480p_dvs_binning_video",
3227 .regs = imx135_480p_dvs_binning,
3228 .width = 936,
3229 .height = 602,
3230 .fps_options = {
3231 {
3232 .fps = 30,
3233 .pixels_per_line = 5464,
3234 .lines_per_frame = 2046,
3235 },
3236 {
3237 }
3238 },
3239 .bin_factor_x = 1,
3240 .bin_factor_y = 1,
3241 .mipi_freq = 209600,
3242 },
3243 {
3244 .desc = "imx135_720P_dvs_video",
3245 .regs = imx135_720pdvs_max_clock,
3246 .width = 1568,
3247 .height = 880,
3248 .fps_options = {
3249 {/* Pixel Clock : 360.96 MHz */
3250 .fps = 30,
3251 .pixels_per_line = 5850,
3252 .lines_per_frame = 2000,
3253 },
3254 {/* Pixel Clock : 360.96 MHz */
3255 .fps = 60,
3256 .pixels_per_line = 4572,
3257 .lines_per_frame = 1310,
3258 },
3259 {
3260 }
3261 },
3262 .bin_factor_x = 1,
3263 .bin_factor_y = 1,
3264 .mipi_freq = 451200,
3265 },
3266 {
3267 .desc = "imx135_wvga_dvs_binning_video",
3268 .regs = imx135_wvga_dvs_binning,
3269 .width = 1640,
3270 .height = 1024,
3271 .fps_options = {
3272 {
3273 .fps = 30,
3274 .pixels_per_line = 5464,
3275 .lines_per_frame = 2046,
3276 },
3277 {
3278 }
3279 },
3280 .bin_factor_x = 1,
3281 .bin_factor_y = 1,
3282 .mipi_freq = 209600,
3283 },
3284 {
3285 .desc = "imx135_1936_1096_fullfov_max_clock",
3286 .regs = imx135_1080p_nodvs_max_clock,
3287 .width = 1936,
3288 .height = 1096,
3289 .fps_options = {
3290 {/* Pixel Clock : 360.96 MHz */
3291 .fps = 30,
3292 .pixels_per_line = 5850,
3293 .lines_per_frame = 2000,
3294 },
3295 {/* Pixel Clock : 360.96 MHz */
3296 .fps = 60,
3297 .pixels_per_line = 4572,
3298 .lines_per_frame = 1310,
3299 },
3300 {
3301 }
3302 },
3303 .bin_factor_x = 1,
3304 .bin_factor_y = 1,
3305 .mipi_freq = 451200,
3306 },
3307 {
3308 .desc = "imx135_1080P_dvs_video",
3309 .regs = imx135_2336x1320_max_clock,
3310 .width = 2336,
3311 .height = 1320,
3312 .fps_options = {
3313 {/* Pixel Clock : 360.96 MHz */
3314 .fps = 30,
3315 .pixels_per_line = 4572,
3316 .lines_per_frame = 2632,
3317 .regs = imx135_2336x1320_max_clock,
3318 .mipi_freq = 451200,
3319 },
3320 {/* Pixel Clock : 399.36MHz */
3321 .fps = 60,
3322 .pixels_per_line = 4754,
3323 .lines_per_frame = 1400,
3324 .regs = imx135_2336x1320_cropped_mipi499,
3325 .mipi_freq = 499200,
3326 },
3327 {
3328 }
3329 },
3330 .bin_factor_x = 0,
3331 .bin_factor_y = 0,
3332 .mipi_freq = 451200,
3333 },
3334 {
3335 .desc = "imx135_6m_cont_cap",
3336 .regs = imx135_6m,
3337 .width = 3280,
3338 .height = 1852,
3339 .fps_options = {
3340 { /* Binning Pixel clock: 360.96MHz */
3341 .fps = 30,
3342 .pixels_per_line = 4572,
3343 .lines_per_frame = 2624,
3344 },
3345 {
3346 }
3347 },
3348 .bin_factor_x = 0,
3349 .bin_factor_y = 0,
3350 .used = 0,
3351 .mipi_freq = 451200,
3352 },
3353 {
3354 .desc = "imx135_8m_cropped_video",
3355 .regs = imx135_8m_cropped,
3356 .width = 3280,
3357 .height = 2464,
3358 .fps_options = {
3359 { /* Pixel clock: 360.96MHz */
3360 .fps = 30,
3361 .pixels_per_line = 4572,
3362 .lines_per_frame = 2624,
3363 },
3364 {
3365 }
3366 },
3367 .bin_factor_x = 0,
3368 .bin_factor_y = 0,
3369 .used = 0,
3370 .mipi_freq = 451200,
3371 },
3372};
3373
3374#endif