|
37 | 37 | #define IMX214_DEFAULT_PIXEL_RATE ((IMX214_DEFAULT_LINK_FREQ * 8LL) / 10)
|
38 | 38 | #define IMX214_FPS 30
|
39 | 39 |
|
| 40 | +#define IMX214_DEFAULT_VTPXCK_DIV 5 |
| 41 | +#define IMX214_DEFAULT_VTSYCK_DIV 2 |
| 42 | +#define IMX214_DEFAULT_PREPLLCK_VT_DIV 3 |
| 43 | +#define IMX214_DEFAULT_PLL_VT_MPY 150 |
| 44 | +#define IMX214_DEFAULT_OPPXCK_DIV 10 |
| 45 | +#define IMX214_DEFAULT_OPSYCK_DIV 1 |
| 46 | + |
40 | 47 | /* V-TIMING internal */
|
41 | 48 | #define IMX214_REG_FRM_LENGTH_LINES CCI_REG16(0x0340)
|
42 | 49 | #define IMX214_VTS_MAX 0xffff
|
|
204 | 211 | #define IMX214_PIXEL_ARRAY_WIDTH 4208U
|
205 | 212 | #define IMX214_PIXEL_ARRAY_HEIGHT 3120U
|
206 | 213 |
|
| 214 | +#define IMX214_LINK_BIT_RATE(clk_freq) \ |
| 215 | + ((clk_freq) / 1000000) / IMX214_DEFAULT_PREPLLCK_VT_DIV \ |
| 216 | + * IMX214_DEFAULT_PLL_VT_MPY / (IMX214_DEFAULT_OPSYCK_DIV \ |
| 217 | + * IMX214_DEFAULT_OPPXCK_DIV) * (IMX214_CSI_DATA_FORMAT_RAW10 >> 8) \ |
| 218 | + * (IMX214_CSI_4_LANE_MODE + 1) |
| 219 | + |
207 | 220 | static const char * const imx214_supply_name[] = {
|
208 | 221 | "vdda",
|
209 | 222 | "vddd",
|
@@ -299,15 +312,16 @@ static const struct cci_reg_sequence mode_4096x2304[] = {
|
299 | 312 | { IMX214_REG_DIG_CROP_WIDTH, 4096 },
|
300 | 313 | { IMX214_REG_DIG_CROP_HEIGHT, 2304 },
|
301 | 314 |
|
302 |
| - { IMX214_REG_VTPXCK_DIV, 5 }, |
303 |
| - { IMX214_REG_VTSYCK_DIV, 2 }, |
304 |
| - { IMX214_REG_PREPLLCK_VT_DIV, 3 }, |
305 |
| - { IMX214_REG_PLL_VT_MPY, 150 }, |
306 |
| - { IMX214_REG_OPPXCK_DIV, 10 }, |
307 |
| - { IMX214_REG_OPSYCK_DIV, 1 }, |
| 315 | + { IMX214_REG_VTPXCK_DIV, IMX214_DEFAULT_VTPXCK_DIV }, |
| 316 | + { IMX214_REG_VTSYCK_DIV, IMX214_DEFAULT_VTSYCK_DIV }, |
| 317 | + { IMX214_REG_PREPLLCK_VT_DIV, IMX214_DEFAULT_PREPLLCK_VT_DIV }, |
| 318 | + { IMX214_REG_PLL_VT_MPY, IMX214_DEFAULT_PLL_VT_MPY }, |
| 319 | + { IMX214_REG_OPPXCK_DIV, IMX214_DEFAULT_OPPXCK_DIV }, |
| 320 | + { IMX214_REG_OPSYCK_DIV, IMX214_DEFAULT_OPSYCK_DIV }, |
308 | 321 | { IMX214_REG_PLL_MULT_DRIV, IMX214_PLL_SINGLE },
|
309 | 322 |
|
310 |
| - { IMX214_REG_REQ_LINK_BIT_RATE, IMX214_LINK_BIT_RATE_MBPS(4800) }, |
| 323 | + { IMX214_REG_REQ_LINK_BIT_RATE, |
| 324 | + IMX214_LINK_BIT_RATE_MBPS(IMX214_LINK_BIT_RATE(IMX214_DEFAULT_CLK_FREQ)) }, |
311 | 325 |
|
312 | 326 | { CCI_REG8(0x3A03), 0x09 },
|
313 | 327 | { CCI_REG8(0x3A04), 0x50 },
|
@@ -362,15 +376,16 @@ static const struct cci_reg_sequence mode_1920x1080[] = {
|
362 | 376 | { IMX214_REG_DIG_CROP_WIDTH, 1920 },
|
363 | 377 | { IMX214_REG_DIG_CROP_HEIGHT, 1080 },
|
364 | 378 |
|
365 |
| - { IMX214_REG_VTPXCK_DIV, 5 }, |
366 |
| - { IMX214_REG_VTSYCK_DIV, 2 }, |
367 |
| - { IMX214_REG_PREPLLCK_VT_DIV, 3 }, |
368 |
| - { IMX214_REG_PLL_VT_MPY, 150 }, |
369 |
| - { IMX214_REG_OPPXCK_DIV, 10 }, |
370 |
| - { IMX214_REG_OPSYCK_DIV, 1 }, |
| 379 | + { IMX214_REG_VTPXCK_DIV, IMX214_DEFAULT_VTPXCK_DIV }, |
| 380 | + { IMX214_REG_VTSYCK_DIV, IMX214_DEFAULT_VTSYCK_DIV }, |
| 381 | + { IMX214_REG_PREPLLCK_VT_DIV, IMX214_DEFAULT_PREPLLCK_VT_DIV }, |
| 382 | + { IMX214_REG_PLL_VT_MPY, IMX214_DEFAULT_PLL_VT_MPY }, |
| 383 | + { IMX214_REG_OPPXCK_DIV, IMX214_DEFAULT_OPPXCK_DIV }, |
| 384 | + { IMX214_REG_OPSYCK_DIV, IMX214_DEFAULT_OPSYCK_DIV }, |
371 | 385 | { IMX214_REG_PLL_MULT_DRIV, IMX214_PLL_SINGLE },
|
372 | 386 |
|
373 |
| - { IMX214_REG_REQ_LINK_BIT_RATE, IMX214_LINK_BIT_RATE_MBPS(4800) }, |
| 387 | + { IMX214_REG_REQ_LINK_BIT_RATE, |
| 388 | + IMX214_LINK_BIT_RATE_MBPS(IMX214_LINK_BIT_RATE(IMX214_DEFAULT_CLK_FREQ)) }, |
374 | 389 |
|
375 | 390 | { CCI_REG8(0x3A03), 0x04 },
|
376 | 391 | { CCI_REG8(0x3A04), 0xF8 },
|
|
0 commit comments