GNU Linux-libre 4.14.259-gnu1
[releases.git] / drivers / staging / media / atomisp / i2c / imx / imx135.h
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 */
169 static 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
427 static 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*/
485 static 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
542 static 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
599 static 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  */
666 static 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  */
733 static 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  */
800 static 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  */
867 static 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  */
934 static 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  */
997 static 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
1054 static 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
1111 static 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
1168 static 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
1225 static 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
1282 static 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  */
1344 static 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
1401 static 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
1458 static 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 */
1516 static 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
1572 static 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 */
1629 static 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 */
1686 static 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
1742 static 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 */
1801 static 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 */
1858 static 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 */
1915 static 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 */
1972 static 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 */
2029 static 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 */
2086 static 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 */
2143 static 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 */
2200 static 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 */
2257 static 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 */
2317 static 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 */
2374 static 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 */
2431 static 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 */
2488 static 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  */
2554 struct 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
2725 struct 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  */
2817 struct 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
2993 struct 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  */
3133 struct 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