]> code.ossystems Code Review - openembedded-core.git/blob
6a9c431dbce1e88ff24132e35b101e90f73dccf3
[openembedded-core.git] /
1 From 3c67994c10958001bebd89356a96358904ac9779 Mon Sep 17 00:00:00 2001
2 From: Zheng Ba <zheng.ba@intel.com>
3 Date: Thu, 1 Apr 2010 16:16:57 +0800
4 Subject: [PATCH 1/3] Moorestown Camera Imaging driver Beta 10.0
5
6 Patch-mainline: 2.6.35?
7
8 Changes from Beta 9.0:
9 1. Fixed hsd sighting
10         3469638 3469639 3469710 3469822 (high)
11         3469697 (medium)
12
13 Changes from Beta 8.0:
14 1. Fixed hsd sighting
15         3469056 3469058 (critical)
16         3469705 3469696 3469709 3469510 (medium)
17
18 Changes from Beta 7.0:
19 1. Fixed hsd sighting 3469681,3469682,3469683 (high)
20
21 Changes from Beta 6.0:
22 1. Fixed hsd sighting 3469668 (high)
23 2. Fixed ov5630 v4l2 view-finding dark issue
24 3. Enabled support for popular v4l2 applications (cheese, skype, ffmpeg)
25
26 Changes from Beta 5.1:
27 1. Fixed CRITICAL sighting 3469558 -- ciapp fails to launch with segment fault
28 2. Fixed HIGH sighting 3479513 -- ov5630 AWB unstable
29 3. Improved KMOT sensor 720p fps from 30 to 40
30
31 Changes from Beta 5.0:
32 Fixed a critical issue of camera driver not loading -- hsd 3469557
33
34 Main changes from Beta 4.0:
35 Fixed 4 HSD sightings: 3469392,3469099,3469470,3469500
36
37 Main changes from Beta 3.0:
38 Fixed 7 HSD sightings: 3469264,3469112,3469395,3469103,3469105,3469471,3469484
39
40 Main changes from Beta 2.0:
41 Fixed 6 HSD sightings: 3469047,3469315,3469317,3469101,3468409,3469391
42
43 Main changes from Beta 1.1:
44 1. Added interrupt mode for jpeg capture and KMOT viewfinding
45 2. Fixed HSD sighting 3469228 and 3469147
46
47 Main changes from Alpha2:
48 Enabled MIPI interface in ISP driver and KMOT sensor s5k4e1.
49 Enabled FIFO in ISP driver, which doubled the fps in view-finding mode.
50 Enabled Subdev Framework in CI kernel driver.
51 Enabled AF Continuous Mode.
52 Enabled AE scene evaluation.
53
54 Enabled the camera drivers in kernel:
55 Device Drivers --> Multimedia support --> Video For Linux
56 Device Drivers --> Mulitmedia support --> Video capture adapters -->
57 --> Moorestown Langwell Camera Imaging Subsystem support.
58
59 Kernel configs:
60 1. camera driver depends on GPIO library and I2C driver.
61 CONFIG_GENERIC_GPIO=y
62 CONFIG_I2C=y
63 CONFIG_GPIOLIB=y
64 2. camera driver depends on videobuf-core and videobuf-dma-contig.
65 VIDEOBUF_GEN=y
66 VIDEOBUF_DMA_CONTIG=y
67 3. enable multimedia support and video capture.
68 CONFIG_MEDIA_SUPPORT=y
69 CONFIG_VIDEO_DEV=y
70 CONFIG_VIDEO_V4L2_COMMON=y
71 CONFIG_VIDEO_MEDIA=y
72 CONFIG_VIDEO_V4L2=y
73 4. camera drivers incluing ISP, 5630, 5630-motor, s5k4e1, s5k4e1-motor, 2650,
74 9665, flash.
75 CONFIG_VIDEO_MRSTCI=y
76 CONFIG_VIDEO_MRST_ISP=y
77 CONFIG_VIDEO_MRST_OV5630=y
78 CONFIG_VIDEO_MRST_OV5630_MOTOR=y
79 CONFIG_VIDEO_MRST_S5K4E1=y
80 CONFIG_VIDEO_MRST_S5K4E1_MOTOR=y
81 CONFIG_VIDEO_MRST_FLASH=y
82 CONFIG_VIDEO_MRST_OV2650=y
83 CONFIG_VIDEO_MRST_OV9665=y
84
85 Signed-off-by: Zheng Ba <zheng.ba@intel.com>
86 ---
87  drivers/media/video/Kconfig                                       |    1 
88  drivers/media/video/Makefile                                      |    9 
89  drivers/media/video/mrstci/include/ci_isp_common.h                | 1422 +++
90  drivers/media/video/mrstci/include/ci_isp_fmts_common.h           |  128 
91  drivers/media/video/mrstci/include/ci_sensor_common.h             | 1233 ++
92  drivers/media/video/mrstci/include/ci_va.h                        |   42 
93  drivers/media/video/mrstci/include/v4l2_jpg_review.h              |   48 
94  drivers/media/video/mrstci/mrstisp/include/def.h                  |  122 
95  drivers/media/video/mrstci/mrstisp/include/mrstisp.h              |  279 
96  drivers/media/video/mrstci/mrstisp/include/mrstisp_dp.h           |  317 
97  drivers/media/video/mrstci/mrstisp/include/mrstisp_hw.h           |  245 
98  drivers/media/video/mrstci/mrstisp/include/mrstisp_isp.h          |   42 
99  drivers/media/video/mrstci/mrstisp/include/mrstisp_jpe.h          |  426 
100  drivers/media/video/mrstci/mrstisp/include/mrstisp_reg.h          | 4698 ++++++++++
101  drivers/media/video/mrstci/mrstisp/include/mrstisp_stdinc.h       |  119 
102  drivers/media/video/mrstci/mrstisp/include/project_settings_mrv.h |  622 +
103  drivers/media/video/mrstci/mrstisp/include/reg_access.h           |  233 
104  17 files changed, 9986 insertions(+)
105  create mode 100644 drivers/media/video/mrstci/include/ci_isp_common.h
106  create mode 100644 drivers/media/video/mrstci/include/ci_isp_fmts_common.h
107  create mode 100644 drivers/media/video/mrstci/include/ci_sensor_common.h
108  create mode 100644 drivers/media/video/mrstci/include/ci_va.h
109  create mode 100644 drivers/media/video/mrstci/include/v4l2_jpg_review.h
110  create mode 100644 drivers/media/video/mrstci/mrstisp/include/def.h
111  create mode 100644 drivers/media/video/mrstci/mrstisp/include/mrstisp.h
112  create mode 100644 drivers/media/video/mrstci/mrstisp/include/mrstisp_dp.h
113  create mode 100644 drivers/media/video/mrstci/mrstisp/include/mrstisp_hw.h
114  create mode 100644 drivers/media/video/mrstci/mrstisp/include/mrstisp_isp.h
115  create mode 100644 drivers/media/video/mrstci/mrstisp/include/mrstisp_jpe.h
116  create mode 100644 drivers/media/video/mrstci/mrstisp/include/mrstisp_reg.h
117  create mode 100644 drivers/media/video/mrstci/mrstisp/include/mrstisp_stdinc.h
118  create mode 100644 drivers/media/video/mrstci/mrstisp/include/project_settings_mrv.h
119  create mode 100644 drivers/media/video/mrstci/mrstisp/include/reg_access.h
120
121 --- a/drivers/media/video/Kconfig
122 +++ b/drivers/media/video/Kconfig
123 @@ -1074,4 +1074,5 @@ config USB_S2255
124           This driver can be compiled as a module, called s2255drv.
125  
126  endif # V4L_USB_DRIVERS
127 +source "drivers/media/video/mrstci/Kconfig"
128  endif # VIDEO_CAPTURE_DRIVERS
129 --- a/drivers/media/video/Makefile
130 +++ b/drivers/media/video/Makefile
131 @@ -169,6 +169,15 @@ obj-$(CONFIG_VIDEO_IR_I2C)  += ir-kbd-i2
132  
133  obj-$(CONFIG_ARCH_DAVINCI)     += davinci/
134  
135 +obj-$(CONFIG_VIDEO_MRST_OV2650) += mrstci/mrstov2650/
136 +obj-$(CONFIG_VIDEO_MRST_OV5630) += mrstci/mrstov5630/
137 +obj-$(CONFIG_VIDEO_MRST_OV5630_MOTOR) += mrstci/mrstov5630_motor/
138 +obj-$(CONFIG_VIDEO_MRST_S5K4E1) += mrstci/mrsts5k4e1/
139 +obj-$(CONFIG_VIDEO_MRST_S5K4E1_MOTOR) += mrstci/mrsts5k4e1_motor/
140 +obj-$(CONFIG_VIDEO_MRST_OV9665) += mrstci/mrstov9665/
141 +obj-$(CONFIG_VIDEO_MRST_FLASH) += mrstci/mrstflash/
142 +obj-$(CONFIG_VIDEO_MRST_ISP) += mrstci/mrstisp/
143 +
144  EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
145  EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
146  EXTRA_CFLAGS += -Idrivers/media/common/tuners
147 --- /dev/null
148 +++ b/drivers/media/video/mrstci/include/ci_isp_common.h
149 @@ -0,0 +1,1422 @@
150 +/*
151 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
152 + *
153 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
154 + *
155 + * Copyright (c) Silicon Image 2008  www.siliconimage.com
156 + *
157 + * This program is free software; you can redistribute it and/or
158 + * modify it under the terms of the GNU General Public License version
159 + * 2 as published by the Free Software Foundation.
160 + *
161 + * This program is distributed in the hope that it will be useful,
162 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
163 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
164 + * GNU General Public License for more details.
165 + *
166 + * You should have received a copy of the GNU General Public License
167 + * along with this program; if not, write to the Free Software
168 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
169 + * 02110-1301, USA.
170 + *
171 + *
172 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
173 + */
174 +
175 +#ifndef _CI_ISP_COMMON_H
176 +#define _CI_ISP_COMMON_H
177 +
178 +#include "v4l2_jpg_review.h"
179 +
180 +/*
181 + * MARVIN VI ID defines -> changed to MARVIN_FEATURE_CHIP_ID and moved to
182 + * the other chip features in project_settings.h
183 + * JPEG compression ratio defines
184 + */
185 +
186 +#define CI_ISP_JPEG_HIGH_COMPRESSION    1
187 +#define CI_ISP_JPEG_LOW_COMPRESSION     2
188 +/* Low Compression / High Quality */
189 +#define CI_ISP_JPEG_01_PERCENT          3
190 +#define CI_ISP_JPEG_20_PERCENT          4
191 +#define CI_ISP_JPEG_30_PERCENT          5
192 +#define CI_ISP_JPEG_40_PERCENT          6
193 +/* Mid Compression / Mid Quality */
194 +#define CI_ISP_JPEG_50_PERCENT          7
195 +#define CI_ISP_JPEG_60_PERCENT          8
196 +#define CI_ISP_JPEG_70_PERCENT          9
197 +#define CI_ISP_JPEG_80_PERCENT         10
198 +#define CI_ISP_JPEG_90_PERCENT         11
199 +/* High Compression / Low Quality */
200 +#define CI_ISP_JPEG_99_PERCENT         12
201 +
202 +/* Size of lens shading data table in 16 Bit words */
203 +#define CI_ISP_DATA_TBL_SIZE      289
204 +/* Size of lens shading grad table in 16 Bit words */
205 +#define CI_ISP_GRAD_TBL_SIZE        8
206 +/* Number of lens shading sectors in x or y direction */
207 +#define CI_ISP_MAX_LSC_SECTORS     16
208 +
209 +/*
210 + * Value representing 1.0 for fixed-point values
211 + * used by marvin drivers
212 + */
213 +#define CI_ISP_FIXEDPOINT_ONE   (0x1000)
214 +/* JPEG encoding */
215 +
216 +enum ci_isp_jpe_enc_mode {
217 +       /* motion JPEG with header generation */
218 +       CI_ISP_JPE_LARGE_CONT_MODE = 0x04,
219 +       /* motion JPEG only first frame with header */
220 +       CI_ISP_JPE_SHORT_CONT_MODE = 0x02,
221 +       /* JPEG with single snapshot */
222 +       CI_ISP_JPE_SINGLE_SHOT = 0x01
223 +};
224 +
225 +/* for demosaic mode */
226 +enum ci_isp_demosaic_mode {
227 +       CI_ISP_DEMOSAIC_STANDARD,
228 +       CI_ISP_DEMOSAIC_ENHANCED
229 +};
230 +
231 +struct ci_isp_window{
232 +       unsigned short hoffs;
233 +       unsigned short voffs;
234 +       unsigned short hsize;
235 +       unsigned short vsize;
236 +};
237 +
238 +/* scale settings for both self and main resize unit */
239 +struct ci_isp_scale {
240 +       u32 scale_hy;
241 +       u32 scale_hcb;
242 +       u32 scale_hcr;
243 +       u32 scale_vy;
244 +       u32 scale_vc;
245 +       u16 phase_hy;
246 +       u16 phase_hc;
247 +       u16 phase_vy;
248 +       u16 phase_vc;
249 +};
250 +
251 +/* A Lookup table for the upscale parameter in the self and main scaler */
252 +struct ci_isp_rsz_lut{
253 +       u8 rsz_lut[64];
254 +};
255 +
256 +#if (MARVIN_FEATURE_SCALE_FACTORWIDTH == MARVIN_FEATURE_16BITS)
257 +/* flag to set in scalefactor values to enable upscaling */
258 +#define RSZ_UPSCALE_ENABLE 0x20000
259 +#else
260 +/* flag to set in scalefactor values to enable upscaling */
261 +#define RSZ_UPSCALE_ENABLE 0x8000
262 +/* #if (MARVIN_FEATURE_SCALE_FACTORWIDTH == MARVIN_FEATURE_16BITS) */
263 +#endif
264 +
265 +/*
266 + * Flag to set in scalefactor values to bypass the scaler block.
267 + * Since this define is also used in calculations of scale factors and
268 + * coordinates, it needs to reflect the scale factor precision. In other
269 + * words:
270 + * RSZ_SCALER_BYPASS = max. scalefactor value> + 1
271 + */
272 +#if (MARVIN_FEATURE_SCALE_FACTORWIDTH == MARVIN_FEATURE_12BITS)
273 +#define RSZ_SCALER_BYPASS  0x1000
274 +#elif (MARVIN_FEATURE_SCALE_FACTORWIDTH == MARVIN_FEATURE_14BITS)
275 +#define RSZ_SCALER_BYPASS  0x4000
276 +#elif (MARVIN_FEATURE_SCALE_FACTORWIDTH == MARVIN_FEATURE_16BITS)
277 +#define RSZ_SCALER_BYPASS  0x10000
278 +#endif
279 +
280 +#define RSZ_FLAGS_MASK (RSZ_UPSCALE_ENABLE | RSZ_SCALER_BYPASS)
281 +
282 +/* color settings */
283 +struct ci_isp_color_settings {
284 +       u8 contrast;
285 +       u8 brightness;
286 +       u8 saturation;
287 +       u8 hue;
288 +       u32 flags;
289 +};
290 +
291 +/* color processing chrominance clipping range */
292 +#define CI_ISP_CPROC_C_OUT_RANGE       0x08
293 +/* color processing luminance input range (offset processing) */
294 +#define CI_ISP_CPROC_Y_IN_RANGE        0x04
295 +/* color processing luminance output clipping range */
296 +#define CI_ISP_CPROC_Y_OUT_RANGE       0x02
297 +/* color processing enable */
298 +#define CI_ISP_CPROC_ENABLE            0x01
299 +
300 +/* black level config */
301 +struct ci_isp_blc_config {
302 +       int bls_auto;
303 +       int henable;
304 +       int venable;
305 +       u16 hstart;
306 +       u16 hstop;
307 +       u16 vstart;
308 +       u16 vstop;
309 +       u8 blc_samples;
310 +       u8 ref_a;
311 +       u8 ref_b;
312 +       u8 ref_c;
313 +       u8 ref_d;
314 +};
315 +
316 +/* black level compensation mean values */
317 +struct ci_isp_blc_mean {
318 +       u8 mean_a;
319 +       u8 mean_b;
320 +       u8 mean_c;
321 +       u8 mean_d;
322 +};
323 +
324 +/* BLS window */
325 +struct ci_isp_bls_window {
326 +
327 +       /* En-/disable the measurement window. */
328 +       int enable_window;
329 +       /* Horizontal start address. */
330 +       u16 start_h;
331 +       /* Horizontal stop address. */
332 +       u16 stop_h;
333 +       /* Vertical start address. */
334 +       u16 start_v;
335 +       /* Vertical stop address. */
336 +       u16 stop_v;
337 +};
338 +
339 +/* BLS mean measured values */
340 +struct ci_isp_bls_measured {
341 +       /* Mean measured value for Bayer pattern position A. */
342 +       u16 meas_a;
343 +       /* Mean measured value for Bayer pattern position B. */
344 +       u16 meas_b;
345 +       /* Mean measured value for Bayer pattern position C. */
346 +       u16 meas_c;
347 +       /* Mean measured value for Bayer pattern position D. */
348 +       u16 meas_d;
349 +};
350 +
351 +/*
352 + * BLS fixed subtraction values. The values will be subtracted from the sensor
353 + * values.  Therefore a negative value means addition instead of subtraction
354 + */
355 +struct ci_isp_bls_subtraction {
356 +       /* Fixed (signed ) subtraction value for Bayer pattern position A. */
357 +       s16 fixed_a;
358 +       /* Fixed (signed ) subtraction value for Bayer pattern position B. */
359 +       s16 fixed_b;
360 +       /* Fixed (signed ) subtraction value for Bayer pattern position C. */
361 +       s16 fixed_c;
362 +       /* Fixed (signed ) subtraction value for Bayer pattern position D. */
363 +       s16 fixed_d;
364 +};
365 +
366 +/* BLS configuration */
367 +struct ci_isp_bls_config {
368 +       /*
369 +        * Automatic mode activated means that the measured values are
370 +        * subtracted. Otherwise the fixed subtraction values will be
371 +        * subtracted.
372 +        */
373 +       int enable_automatic;
374 +       /* En-/disable horizontal accumulation for mean black value. */
375 +       int disable_h;
376 +       /*
377 +        * BLS module versions 4 or higher imply that it is enabled.
378 +        * En-/disable vertical accumulation for mean black value.
379 +        */
380 +       int disable_v;
381 +       /* Measurement window 1. */
382 +       struct ci_isp_bls_window isp_bls_window1;
383 +       /* Measurement window 2. */
384 +       struct ci_isp_bls_window isp_bls_window2;
385 +
386 +       /*
387 +        * BLS module version 3 and lower do not support a second
388 +        * measurement window. Therefore the second window has to
389 +        * be disabled for these versions.
390 +        */
391 +
392 +       /*
393 +        * Set amount of measured pixels for each Bayer position (A, B,
394 +        * C and D) to 2^bls_samples.
395 +        */
396 +       u8 bls_samples;
397 +       /* Fixed subtraction values. */
398 +       struct ci_isp_bls_subtraction bls_subtraction;
399 +};
400 +
401 +/* white balancing modes for the marvin hardware */
402 +enum ci_isp_awb_mode {
403 +       CI_ISP_AWB_COMPLETELY_OFF = 0,
404 +       CI_ISP_AWB_AUTO,
405 +       CI_ISP_AWB_MAN_MEAS,
406 +       CI_ISP_AWB_MAN_NOMEAS,
407 +       CI_ISP_AWB_MAN_PUSH_AUTO,
408 +       CI_ISP_AWB_ONLY_MEAS
409 +};
410 +
411 +/* white balancing modes for the marvin hardware */
412 +enum ci_isp_awb_sub_mode {
413 +       CI_ISP_AWB_SUB_OFF = 0,
414 +       CI_ISP_AWB_MAN_DAYLIGHT,
415 +       CI_ISP_AWB_MAN_CLOUDY,
416 +       CI_ISP_AWB_MAN_SHADE,
417 +       CI_ISP_AWB_MAN_FLUORCNT,
418 +       CI_ISP_AWB_MAN_FLUORCNTH,
419 +       CI_ISP_AWB_MAN_TUNGSTEN,
420 +       CI_ISP_AWB_MAN_TWILIGHT,
421 +       CI_ISP_AWB_MAN_SUNSET,
422 +       CI_ISP_AWB_MAN_FLASH,
423 +       CI_ISP_AWB_MAN_CIE_D65,
424 +       CI_ISP_AWB_MAN_CIE_D75,
425 +       CI_ISP_AWB_MAN_CIE_F2,
426 +       CI_ISP_AWB_MAN_CIE_F11,
427 +       CI_ISP_AWB_MAN_CIE_F12,
428 +       CI_ISP_AWB_MAN_CIE_A,
429 +       CI_ISP_AWB_AUTO_ON
430 +};
431 +
432 +/*
433 + * white balancing gains
434 + * xiaolin, typedef ci_sensor_component_gain tsMrvWbGains;
435 + * white balancing measurement configuration
436 + */
437 +struct ci_isp_wb_meas_config {
438 +       /* white balance measurement window (in pixels) */
439 +       struct ci_isp_window awb_window;
440 +       /*
441 +        * only pixels values  max_y contribute to WB measurement
442 +        * (set to 0 to disable this feature)
443 +        */
444 +       u8 max_y;
445 +       /* only pixels values > min_y contribute to WB measurement */
446 +       u8 ref_cr_MaxR;
447 +       u8 minY_MaxG;
448 +       u8 ref_cb_MaxB;
449 +       /*
450 +        * Chrominance sum maximum value, only consider pixels with Cb+Cr
451 +        * smaller than threshold for WB measurements
452 +        */
453 +       u8 max_csum;
454 +
455 +       /*
456 +        * Chrominance minimum value, only consider pixels with Cb/Cr each
457 +        * greater than threshold value for WB measurements
458 +        */
459 +       u8 min_c;
460 +       /*
461 +        * number of frames+1 used for mean value calculation (frames=0
462 +        * means 1 Frame)
463 +        */
464 +       u8 frames;
465 +       u8 meas_mode;
466 +};
467 +
468 +/* white balancing measurement configuration limits */
469 +struct ci_isp_wb_meas_conf_limit {
470 +       /* maximum value for MinY */
471 +       u8 min_y_max;
472 +       /* minimum value for MinY */
473 +       u8 min_y_min;
474 +       /* maximum value for MinC */
475 +       u8 min_c_max;
476 +       /* minimum value for MinC */
477 +       u8 min_c_min;
478 +       /* maximum value for MaxCSum */
479 +       u8 max_csum_max;
480 +       /* minimum value for MaxCSum */
481 +       u8 max_csum_min;
482 +       /* maximum value for white pixel percentage */
483 +       u8 white_percent_max;
484 +       /* minimum value for white pixel percentage */
485 +       u8 white_percent_min;
486 +       /*
487 +        * maximum number of not measured frames until the gain values
488 +        * will be set to their initial values
489 +        */
490 +       u8 error_counter;
491 +};
492 +
493 +/* white balancing HW automatic configuration */
494 +struct ci_isp_wb_auto_hw_config {
495 +       /* reference C values */
496 +       u8 ref_cr;
497 +       u8 ref_cb;
498 +       /* lock / unlock settings */
499 +       u8 unlock_dly;
500 +       u8 unlock_rng;
501 +       u8 lock_dly;
502 +       u8 lock_rng;
503 +       /* maximum gain step size */
504 +       u8 step;
505 +       /* gain limits */
506 +       u8 max_gain;
507 +       u8 min_gain;
508 +};
509 +
510 +/* white balancing configuration */
511 +struct ci_isp_wb_config {
512 +       /* mode of operation */
513 +       enum ci_isp_awb_mode mrv_wb_mode;
514 +       enum ci_isp_awb_sub_mode mrv_wb_sub_mode;
515 +       /* measurement configuration */
516 +       struct ci_isp_wb_meas_config mrv_wb_meas_conf;
517 +       /* HW automatic configuration */
518 +       struct ci_isp_wb_auto_hw_config mrv_wb_auto_hw_conf;
519 +       /*
520 +        * gain values
521 +        * xiaolin, tsMrvWbGains   mrv_wb_gains;
522 +        * measurement limits
523 +        */
524 +       struct ci_isp_wb_meas_conf_limit mrv_wb_meas_conf_limit;
525 +       /* Pca Damping for awb auto mode */
526 +       u8 awb_pca_damping;
527 +       /* PriorExp Damping for awb auto mode */
528 +       u8 awb_prior_exp_damping;
529 +       /* Pca Damping for AWB auto push mode */
530 +       u8 awb_pca_push_damping;
531 +       /* PriorExp Damping for AWB auto push mode */
532 +       u8 awb_prior_exp_push_damping;
533 +       /* Max Y in AWB auto mode */
534 +       u8 awb_auto_max_y;
535 +       /* Max Y in AWB auto push mode */
536 +       u8 awb_push_max_y;
537 +       /* Max Y in AWB measurement only mode */
538 +       u8 awb_measure_max_y;
539 +       /* Distance for underexposure detecture */
540 +       u16 awb_underexp_det;
541 +       /* Distance for underexposure push detecture */
542 +       u16 awb_push_underexp_det;
543 +
544 +};
545 +
546 +/* possible AEC modes */
547 +enum ci_isp_aec_mode {
548 +       /* AEC turned off */
549 +       CI_ISP_AEC_OFF,
550 +       /* AEC measurements based on (almost) the entire picture */
551 +       CI_ISP_AEC_INTEGRAL,
552 +       /*
553 +        * AEC measurements based on a single little square in the center of
554 +        * the picture
555 +        */
556 +       CI_ISP_AEC_SPOT,
557 +       /*
558 +        * AEC measurements based on 5 little squares spread over the picture
559 +        */
560 +       CI_ISP_AEC_MFIELD5,
561 +       /*
562 +        * AEC measurements based on 9 little squares spread over the picture
563 +        */
564 +       CI_ISP_AEC_MFIELD9
565 +};
566 +
567 +
568 +/*
569 + * histogram weight 5x5 matrix coefficients
570 +* (possible values are 1=0x10,15/16=0x0F,14/16,...,1/16,0)
571 +*/
572 +struct ci_isp_hist_matrix {
573 +       u8 weight_00; u8 weight_10; u8 weight_20; u8 weight_30; u8 weight_40;
574 +       u8 weight_01; u8 weight_11; u8 weight_21; u8 weight_31; u8 weight_41;
575 +       u8 weight_02; u8 weight_12; u8 weight_22; u8 weight_32; u8 weight_42;
576 +       u8 weight_03; u8 weight_13; u8 weight_23; u8 weight_33; u8 weight_43;
577 +       u8 weight_04; u8 weight_14; u8 weight_24; u8 weight_34; u8 weight_44;
578 +};
579 +
580 +/* autoexposure config */
581 +struct ci_isp_aec_config {
582 +       /*
583 +        * Size of 1 window of MARVIN's 5x5 mean luminance
584 +        * measurement grid and offset of grid
585 +        */
586 +       struct ci_isp_window isp_aecmean_lumaWindow;
587 +       /* Size and offset of histogram window */
588 +       struct ci_isp_window isp_aechist_calcWindow;
589 +       /* Weight martix of histogram */
590 +       struct ci_isp_hist_matrix isp_aechist_calcWeight;
591 +       /* possible AEC modes */
592 +       enum ci_isp_aec_mode advanced_aec_mode;
593 +};
594 +
595 +/* autoexposure mean values */
596 +struct ci_isp_aec_mean {
597 +       u8 occ;
598 +       u8 mean;
599 +       u8 max;
600 +       u8 min;
601 +};
602 +
603 +
604 +
605 +/* histogram weight 5x5 matrix coefficients
606 + * (possible values are 1=0x10,15/16=0x0F,14/16,...,1/16,0)
607 + */
608 +struct tsMrvHistMatrix {
609 +       u8 weight_00; u8 weight_10; u8 weight_20; u8 weight_30; u8 weight_40;
610 +       u8 weight_01; u8 weight_11; u8 weight_21; u8 weight_31; u8 weight_41;
611 +       u8 weight_02; u8 weight_12; u8 weight_22; u8 weight_32; u8 weight_42;
612 +       u8 weight_03; u8 weight_13; u8 weight_23; u8 weight_33; u8 weight_43;
613 +       u8 weight_04; u8 weight_14; u8 weight_24; u8 weight_34; u8 weight_44;
614 +};
615 +
616 +/*
617 + * vi_dpcl path selector, channel mode
618 + * Configuration of the Y/C splitter
619 + */
620 +enum ci_isp_ycs_chn_mode {
621 +       /*
622 +        * 8bit data/Y only output (depreciated, please use CI_ISP_YCS_MVRaw for
623 +        * new implementations)
624 +        */
625 +       CI_ISP_YCS_Y,
626 +       /* separated 8bit Y, C routed to both main and self path */
627 +       CI_ISP_YCS_MV_SP,
628 +       /*
629 +        * separated 8bit Y, C routed to main path only (self path input
630 +        * switched off)
631 +        */
632 +       CI_ISP_YCS_MV,
633 +       /*
634 +        * separated 8bit Y, C routed to self path only (main path input
635 +        * switched off)
636 +        */
637 +       CI_ISP_YCS_SP,
638 +       /*
639 +        * raw camera data routed to main path (8 or 16 bits, depends on
640 +        * marvin drivative)
641 +        */
642 +       CI_ISP_YCS_MVRaw,
643 +       /* both main and self path input switched off */
644 +       CI_ISP_YCS_OFF
645 +};
646 +
647 +/* vi_dpcl path selector, main path cross-switch */
648 +enum ci_isp_dp_switch {
649 +       /* raw data mode */
650 +       CI_ISP_DP_RAW,
651 +       /* JPEG encoding mode */
652 +       CI_ISP_DP_JPEG,
653 +       /* main video path only */
654 +       CI_ISP_DP_MV
655 +};
656 +
657 +/* DMA-read mode selector */
658 +enum ci_isp_dma_read_mode {
659 +       /* DMA-read feature deactivated */
660 +       CI_ISP_DMA_RD_OFF = 0,
661 +       /* data from the DMA-read block feeds the self path */
662 +       CI_ISP_DMA_RD_SELF_PATH = 1,
663 +       /* data from the DMA-read block feeds the Superimpose block */
664 +       CI_ISP_DMA_RD_SUPERIMPOSE = 2,
665 +       /* data from the DMA-read block feeds the Image effects path */
666 +       CI_ISP_DMA_RD_IE_PATH = 3,
667 +       /* data from the DMA-read block feeds the JPEG encoder directly */
668 +       CI_ISP_DMA_RD_JPG_ENC = 4
669 +};
670 +
671 +/* ISP path selector */
672 +enum ci_isp_path {
673 +       /* Isp path is unknown or invalid */
674 +       CI_ISP_PATH_UNKNOWN = 0,
675 +       /* Raw data bypass */
676 +       CI_ISP_PATH_RAW = 1,
677 +       /* YCbCr path */
678 +       CI_ISP_PATH_YCBCR = 2,
679 +       /* Bayer RGB path */
680 +       CI_ISP_PATH_BAYER = 3
681 +};
682 +
683 +/* possible autofocus measurement modes */
684 +enum ci_isp_afm_mode {
685 +       /* no autofocus measurement */
686 +       CI_ISP_AFM_OFF,
687 +       /* use AF hardware to measure sharpness */
688 +       CI_ISP_AFM_HW,
689 +       /* use "Tenengrad" algorithm implemented in software */
690 +       CI_ISP_AFM_SW_TENENGRAD,
691 +       /*
692 +        * use "Threshold Squared Gradient" algorithm implemented in software
693 +        */
694 +       CI_ISP_AFM_SW_TRESH_SQRT_GRAD,
695 +       /*
696 +        * use "Frequency selective weighted median" algorithm implemented in
697 +        * software
698 +        */
699 +       CI_ISP_AFM_SW_FSWMEDIAN,
700 +       /* use AF hardware and normalize with mean luminance */
701 +       CI_ISP_AFM_HW_norm,
702 +       /* use "Tenengrad" algorithm and normalize with mean luminance */
703 +       CI_ISP_AFM_SW_TENENGRAD_norm,
704 +       /*
705 +        * use "Frequency selective weighted median" algorithm and normalize
706 +        * with mean luminance
707 +        */
708 +       CI_ISP_AFM_SW_FSWMEDIAN_norm
709 +};
710 +
711 +/* possible autofocus search strategy modes */
712 +enum ci_isp_afss_mode {
713 +       /* no focus searching */
714 +       CI_ISP_AFSS_OFF,
715 +       /* scan the full focus range to find the point of best focus */
716 +       CI_ISP_AFSS_FULL_RANGE,
717 +       /* use hillclimbing search */
718 +       CI_ISP_AFSS_HILLCLIMBING,
719 +       /*
720 +        * similar to full range search, but with multiple subsequent scans
721 +        * with
722 +        */
723 +       CI_ISP_AFSS_ADAPTIVE_RANGE,
724 +       /*
725 +        * decreasing range and step size will be performed.  search strategy
726 +        * suggested by OneLimited for their Helimorph actuator
727 +        */
728 +       CI_ISP_AFSS_HELIMORPH_OPT,
729 +       /*
730 +        * search strategy optimized for omnivision 2630 module equipped with
731 +        */
732 +       CI_ISP_AFSS_OV2630_LPD4_OPT
733 +       /*
734 +        * autofocus lend driven through a LPD4 stepper motor produced by
735 +        * Nidec Copal USA Corp. of Torrance, CA.
736 +        */
737 +};
738 +
739 +/* possible bad pixel correction type */
740 +enum ci_isp_bp_corr_type {
741 +       /* correction of bad pixel from the table */
742 +       CI_ISP_BP_CORR_TABLE,
743 +       /* direct detection and correction */
744 +       CI_ISP_BP_CORR_DIRECT
745 +};
746 +
747 +/* possible bad pixel replace approach */
748 +enum ci_isp_bp_corr_rep {
749 +       /* nearest neighbour approach */
750 +       CI_ISP_BP_CORR_REP_NB,
751 +       /* simple bilinear interpolation approach */
752 +       CI_ISP_BP_CORR_REP_LIN
753 +};
754 +
755 +/* possible bad pixel correction mode */
756 +enum ci_isp_bp_corr_mode {
757 +       /* hot pixel correction */
758 +       CI_ISP_BP_CORR_HOT_EN,
759 +       /* dead pixel correction */
760 +       CI_ISP_BP_CORR_DEAD_EN,
761 +       /* hot and dead pixel correction */
762 +       CI_ISP_BP_CORR_HOT_DEAD_EN
763 +};
764 +
765 +/* Gamma out curve (independent from the sensor characteristic). */
766 +#define CI_ISP_GAMMA_OUT_CURVE_ARR_SIZE (17)
767 +
768 +struct ci_isp_gamma_out_curve {
769 +       u16 isp_gamma_y[CI_ISP_GAMMA_OUT_CURVE_ARR_SIZE];
770 +       u8 gamma_segmentation;
771 +};
772 +
773 +/* configuration of autofocus measurement block */
774 +struct ci_isp_af_config {
775 +       /* position and size of measurement window A */
776 +       struct ci_isp_window wnd_pos_a;
777 +       /* position and size of measurement window B */
778 +       struct ci_isp_window wnd_pos_b;
779 +       /* position and size of measurement window C */
780 +       struct ci_isp_window wnd_pos_c;
781 +       /* AF measurment threshold */
782 +       u32 threshold;
783 +       /* measurement variable shift (before sum operation) */
784 +       u32 var_shift;
785 +};
786 +
787 +/* measurement results of autofocus measurement block */
788 +struct ci_isp_af_meas {
789 +       /* sharpness value of window A */
790 +       u32 afm_sum_a;
791 +       /* sharpness value of window B */
792 +       u32 afm_sum_b;
793 +       /* sharpness value of window C */
794 +       u32 afm_sum_c;
795 +       /* luminance value of window A */
796 +       u32 afm_lum_a;
797 +       /* luminance value of window B */
798 +       u32 afm_lum_b;
799 +       /* luminance value of window C */
800 +       u32 afm_lum_c;
801 +};
802 +
803 +/* configuration for correction of bad pixel block */
804 +struct ci_isp_bp_corr_config {
805 +       /* bad pixel correction type */
806 +       enum ci_isp_bp_corr_type bp_corr_type;
807 +       /* replace approach */
808 +       enum ci_isp_bp_corr_rep bp_corr_rep;
809 +       /* bad pixel correction mode */
810 +       enum ci_isp_bp_corr_mode bp_corr_mode;
811 +       /* Absolute hot pixel threshold */
812 +       u16 bp_abs_hot_thres;
813 +       /* Absolute dead pixel threshold */
814 +       u16 bp_abs_dead_thres;
815 +       /* Hot Pixel deviation Threshold */
816 +       u16 bp_dev_hot_thres;
817 +       /* Dead Pixel deviation Threshold */
818 +       u16 bp_dev_dead_thres;
819 +};
820 +
821 +/* configuration for correction of lens shading */
822 +struct ci_isp_ls_corr_config {
823 +       /* correction values of R color part */
824 +       u16 ls_rdata_tbl[CI_ISP_DATA_TBL_SIZE];
825 +       /* correction values of G color part */
826 +       u16 ls_gdata_tbl[CI_ISP_DATA_TBL_SIZE];
827 +       /* correction values of B color part */
828 +       u16 ls_bdata_tbl[CI_ISP_DATA_TBL_SIZE];
829 +       /* multiplication factors of x direction */
830 +       u16 ls_xgrad_tbl[CI_ISP_GRAD_TBL_SIZE];
831 +       /* multiplication factors of y direction */
832 +       u16 ls_ygrad_tbl[CI_ISP_GRAD_TBL_SIZE];
833 +       /* sector sizes of x direction */
834 +       u16 ls_xsize_tbl[CI_ISP_GRAD_TBL_SIZE];
835 +       /* sector sizes of y direction */
836 +       u16 ls_ysize_tbl[CI_ISP_GRAD_TBL_SIZE];
837 +
838 +};
839 +
840 +/* configuration for detection of bad pixel block */
841 +struct ci_isp_bp_det_config {
842 +       /* abs_dead_thres       Absolute dead pixel threshold */
843 +       u32 bp_dead_thres;
844 +};
845 +
846 +/* new table element */
847 +struct ci_isp_bp_new_table_elem {
848 +       /* Bad Pixel vertical address */
849 +       u16 bp_ver_addr;
850 +       /* Bad Pixel horizontal address */
851 +       u16 bp_hor_addr;
852 +       /* MSB value of fixed pixel (deceide if dead or hot) */
853 +       u8 bp_msb_value;
854 +};
855 +
856 +/* new Bad Pixel table */
857 +struct ci_isp_bp_new_table {
858 +       /* Number of possible new detected bad pixel */
859 +       u32 bp_number;
860 +       /* Array of Table element */
861 +       struct ci_isp_bp_new_table_elem bp_new_table_elem[8];
862 +};
863 +
864 +/* image effect modes */
865 +enum ci_isp_ie_mode {
866 +       /* no image effect (bypass) */
867 +       CI_ISP_IE_MODE_OFF,
868 +       /* Set a fixed chrominance of 128 (neutral grey) */
869 +       CI_ISP_IE_MODE_GRAYSCALE,
870 +       /* Luminance and chrominance data is being inverted */
871 +       CI_ISP_IE_MODE_NEGATIVE,
872 +       /*
873 +        * Chrominance is changed to produce a historical like brownish image
874 +        * color
875 +        */
876 +       CI_ISP_IE_MODE_SEPIA,
877 +       /*
878 +        * Converting picture to grayscale while maintaining one color
879 +        * component.
880 +        */
881 +       CI_ISP_IE_MODE_COLOR_SEL,
882 +       /* Edge detection, will look like an relief made of metal */
883 +       CI_ISP_IE_MODE_EMBOSS,
884 +       /* Edge detection, will look like a pencil drawing */
885 +       CI_ISP_IE_MODE_SKETCH
886 +};
887 +
888 +/* image effect color selection */
889 +enum ci_isp_ie_color_sel {
890 +       /* in CI_ISP_IE_MODE_COLOR_SEL mode, maintain the red color */
891 +       CI_ISP_IE_MAINTAIN_RED = 0x04,
892 +       /* in CI_ISP_IE_MODE_COLOR_SEL mode, maintain the green color */
893 +       CI_ISP_IE_MAINTAIN_GREEN = 0x02,
894 +       /* in CI_ISP_IE_MODE_COLOR_SEL mode, maintain the blue color */
895 +       CI_ISP_IE_MAINTAIN_BLUE = 0x01
896 +};
897 +
898 +/*
899 + * image effect 3x3 matrix coefficients (possible values are -8, -4, -2, -1,
900 + * 0, 1, 2, 4, 8)
901 + */
902 +struct ci_isp_ie_matrix {
903 +       s8 coeff_11;
904 +       s8 coeff_12;
905 +       s8 coeff_13;
906 +       s8 coeff_21;
907 +       s8 coeff_22;
908 +       s8 coeff_23;
909 +       s8 coeff_31;
910 +       s8 coeff_32;
911 +       s8 coeff_33;
912 +};
913 +
914 +/* image effect configuration struct */
915 +struct ci_isp_ie_config {
916 +       /* image effect mode */
917 +       enum ci_isp_ie_mode mode;
918 +       u8 color_sel;
919 +       /* threshold for color selection */
920 +       u8 color_thres;
921 +       /* Cb chroma component of 'tint' color for sepia effect */
922 +       u8 tint_cb;
923 +       /* Cr chroma component of 'tint' color for sepia effect */
924 +       u8 tint_cr;
925 +       /* coefficient maxrix for emboss effect */
926 +       struct ci_isp_ie_matrix mat_emboss;
927 +       /* coefficient maxrix for sketch effect */
928 +       struct ci_isp_ie_matrix mat_sketch;
929 +};
930 +
931 +/* super impose transparency modes */
932 +enum ci_isp_si_trans_mode {
933 +       /* SI transparency mode is unknown (module is switched off) */
934 +       CI_ISP_SI_TRANS_UNKNOWN = 0,
935 +       /* SI transparency mode enabled */
936 +       CI_ISP_SI_TRANS_ENABLE = 1,
937 +       /* SI transparency mode disabled */
938 +       CI_ISP_SI_TRANS_DISABLE = 2
939 +};
940 +
941 +/* super impose reference image */
942 +enum ci_isp_si_ref_image {
943 +       /* SI reference image is unknown (module is switched off) */
944 +       CI_ISP_SI_REF_IMG_UNKNOWN = 0,
945 +       /* SI reference image from sensor */
946 +       CI_ISP_SI_REF_IMG_SENSOR = 1,
947 +       /* SI reference image from memory */
948 +       CI_ISP_SI_REF_IMG_MEMORY = 2
949 +};
950 +
951 +/* super impose configuration struct */
952 +struct ci_isp_si_config {
953 +       /* transparency mode on/off */
954 +       enum ci_isp_si_trans_mode trans_mode;
955 +       /* reference image from sensor/memory */
956 +       enum ci_isp_si_ref_image ref_image;
957 +       /* x offset (coordinate system of the reference image) */
958 +       u16 offs_x;
959 +       /* y offset (coordinate system of the reference image) */
960 +       u16 offs_y;
961 +       /* Y component of transparent key color */
962 +       u8 trans_comp_y;
963 +       /* Cb component of transparent key color */
964 +       u8 trans_comp_cb;
965 +       /* Cr component of transparent key color */
966 +       u8 trans_comp_cr;
967 +};
968 +
969 +/* image stabilisation modes */
970 +enum ci_isp_is_mode {
971 +       /* IS  mode is unknown (module is switched off) */
972 +       CI_ISP_IS_MODE_UNKNOWN = 0,
973 +       /* IS  mode enabled */
974 +       CI_ISP_IS_MODE_ON = 1,
975 +       /* IS  mode disabled */
976 +       CI_ISP_IS_MODE_OFF = 2
977 +};
978 +
979 +/* image stabilisation configuration struct */
980 +struct ci_isp_is_config {
981 +       /* position and size of image stabilisation window */
982 +       struct ci_isp_window mrv_is_window;
983 +       /* maximal margin distance for X */
984 +       u16 max_dx;
985 +       /* maximal margin distance for Y */
986 +       u16 max_dy;
987 +};
988 +
989 +/* image stabilisation control struct */
990 +struct ci_isp_is_ctrl {
991 +       /* image stabilisation mode on/off */
992 +       enum ci_isp_is_mode is_mode;
993 +       /* recenter every frame by ((cur_v_offsxV_OFFS)/(2^RECENTER)) */
994 +       u8 recenter;
995 +};
996 +
997 +/* for data path switching */
998 +enum ci_isp_data_path {
999 +       CI_ISP_PATH_RAW816,
1000 +       CI_ISP_PATH_RAW8,
1001 +       CI_ISP_PATH_JPE,
1002 +       CI_ISP_PATH_OFF,
1003 +       CI_ISP_PATH_ON
1004 +};
1005 +
1006 +/* buffer for memory interface */
1007 +struct ci_isp_bufferOld {
1008 +       u8 *pucbuffer;
1009 +       u32 size;
1010 +       u32 offs;
1011 +       /* not used for Cb and Cr buffers, IRQ offset for */
1012 +       u32 irq_offs_llength;
1013 +       /* stores the malloc pointer address */
1014 +       u8 *pucmalloc_start;
1015 +       /* main buffer and line length for self buffer */
1016 +};
1017 +
1018 +/* buffer for DMA memory interface */
1019 +struct ci_isp_dma_buffer {
1020 +       /*
1021 +        * start of the buffer memory. Note that panning in an larger picture
1022 +        * memory is possible by altering the buffer start address (and
1023 +        * choosing pic_width  llength)
1024 +        */
1025 +       u8 *pucbuffer;
1026 +       /* size of the entire picture in bytes */
1027 +       u32 pic_size;
1028 +       /*
1029 +        * width of the picture area of interest (not necessaryly the entire
1030 +        * picture)
1031 +        */
1032 +       u32 pic_width;
1033 +       /* inter-line-increment. This is the amount of bytes between */
1034 +       u32 llength;
1035 +       /* pixels in the same column but on different lines. */
1036 +
1037 +};
1038 +
1039 +/* color format for self picture input/output and DMA input */
1040 +enum ci_isp_mif_col_format {
1041 +       /* YCbCr 4:2:2 format */
1042 +       CI_ISP_MIF_COL_FORMAT_YCBCR_422 = 0,
1043 +       /* YCbCr 4:4:4 format */
1044 +       CI_ISP_MIF_COL_FORMAT_YCBCR_444 = 1,
1045 +       /* YCbCr 4:2:0 format */
1046 +       CI_ISP_MIF_COL_FORMAT_YCBCR_420 = 2,
1047 +       /* YCbCr 4:0:0 format */
1048 +       CI_ISP_MIF_COL_FORMAT_YCBCR_400 = 3,
1049 +       /* RGB   565   format */
1050 +       CI_ISP_MIF_COL_FORMAT_RGB_565 = 4,
1051 +       /* RGB   666   format */
1052 +       CI_ISP_MIF_COL_FORMAT_RGB_666 = 5,
1053 +       /* RGB   888   format */
1054 +       CI_ISP_MIF_COL_FORMAT_RGB_888 = 6
1055 +};
1056 +
1057 +/* color range for self picture input of RGB m*/
1058 +enum ci_isp_mif_col_range {
1059 +    mrv_mif_col_range_std  = 0,
1060 +    mrv_mif_col_range_full = 1
1061 +};
1062 +
1063 +/* color phase for self picture input of RGB */
1064 +enum ci_isp_mif_col_phase {
1065 +    mrv_mif_col_phase_cosited     = 0,
1066 +    mrv_mif_col_phase_non_cosited = 1
1067 +};
1068 +
1069 +/*
1070 + * picture write/read format
1071 + * The following examples apply to YCbCr 4:2:2 images, as all modes
1072 + */
1073 + enum ci_isp_mif_pic_form {
1074 +       /* planar     : separated buffers for Y, Cb and Cr */
1075 +       CI_ISP_MIF_PIC_FORM_PLANAR = 0,
1076 +       /* semi-planar: one buffer for Y and a combined buffer for Cb and Cr */
1077 +       CI_ISP_MIF_PIC_FORM_SEMI_PLANAR = 1,
1078 +       /* interleaved: one buffer for all  */
1079 +       CI_ISP_MIF_PIC_FORM_INTERLEAVED = 2
1080 +};
1081 +
1082 +/* self picture operating modes */
1083 +enum ci_isp_mif_sp_mode {
1084 +       /* no rotation, no horizontal or vertical flipping */
1085 +       CI_ISP_MIF_SP_ORIGINAL = 0,
1086 +       /* vertical   flipping (no additional rotation) */
1087 +       CI_ISP_MIF_SP_VERTICAL_FLIP = 1,
1088 +       /* horizontal flipping (no additional rotation) */
1089 +       CI_ISP_MIF_SP_HORIZONTAL_FLIP = 2,
1090 +       /* rotation  90 degrees ccw (no additional flipping) */
1091 +       CI_ISP_MIF_SP_ROTATION_090_DEG = 3,
1092 +       /*
1093 +        * rotation 180 degrees ccw (equal to horizontal plus vertical
1094 +        * flipping)
1095 +        */
1096 +       CI_ISP_MIF_SP_ROTATION_180_DEG = 4,
1097 +       /* rotation 270 degrees ccw (no additional flipping) */
1098 +       CI_ISP_MIF_SP_ROTATION_270_DEG = 5,
1099 +       /* rotation  90 degrees ccw plus vertical flipping */
1100 +       CI_ISP_MIF_SP_ROT_090_V_FLIP = 6,
1101 +       /* rotation 270 degrees ccw plus vertical flipping */
1102 +       CI_ISP_MIF_SP_ROT_270_V_FLIP = 7
1103 +};
1104 +
1105 +/* MI burst length settings */
1106 +enum ci_isp_mif_burst_length {
1107 +       /* burst length = 4 */
1108 +       CI_ISP_MIF_BURST_LENGTH_4 = 0,
1109 +       /* burst length = 8 */
1110 +       CI_ISP_MIF_BURST_LENGTH_8 = 1,
1111 +       /* burst length = 16 */
1112 +       CI_ISP_MIF_BURST_LENGTH_16 = 2
1113 +};
1114 +
1115 +
1116 +/* MI apply initial values settings */
1117 +enum ci_isp_mif_init_vals {
1118 +       /* do not set initial values */
1119 +       CI_ISP_MIF_NO_INIT_VALS = 0,
1120 +       /* set initial values for offset registers */
1121 +       CI_ISP_MIF_INIT_OFFS = 1,
1122 +       /* set initial values for base address registers */
1123 +       CI_ISP_MIF_INIT_BASE = 2,
1124 +       /* set initial values for offset and base address registers */
1125 +       CI_ISP_MIF_INIT_OFFSAndBase = 3
1126 +};
1127 +
1128 +/* MI when to update configuration */
1129 +enum ci_isp_conf_update_time {
1130 +       CI_ISP_CFG_UPDATE_FRAME_SYNC = 0,
1131 +       CI_ISP_CFG_UPDATE_IMMEDIATE = 1,
1132 +       CI_ISP_CFG_UPDATE_LATER = 2
1133 +};
1134 +
1135 +/* control register of the MI */
1136 +struct ci_isp_mi_ctrl {
1137 +       /* self picture path output format */
1138 +       enum ci_isp_mif_col_format mrv_mif_sp_out_form;
1139 +       /* self picture path input format */
1140 +       enum ci_isp_mif_col_format mrv_mif_sp_in_form;
1141 +       enum ci_isp_mif_col_range mrv_mif_sp_in_range;
1142 +       enum ci_isp_mif_col_phase mrv_mif_sp_in_phase;
1143 +       /* self picture path write format */
1144 +       enum ci_isp_mif_pic_form mrv_mif_sp_pic_form;
1145 +       /* main picture path write format */
1146 +       enum ci_isp_mif_pic_form mrv_mif_mp_pic_form;
1147 +       /* burst length for chrominance for write port */
1148 +       enum ci_isp_mif_burst_length burst_length_chrom;
1149 +       /* burst length for luminance for write port */
1150 +       enum ci_isp_mif_burst_length burst_length_lum;
1151 +       /* enable updating of the shadow registers */
1152 +       enum ci_isp_mif_init_vals init_vals;
1153 +       /*
1154 +        * for main and self picture to their init      values
1155 +        */
1156 +       /* enable change of byte order for write port */
1157 +       int byte_swap_enable;
1158 +       /* enable the last pixel signalization */
1159 +       int last_pixel_enable;
1160 +       /* self picture path operating mode */
1161 +       enum ci_isp_mif_sp_mode mrv_mif_sp_mode;
1162 +       /* enable path */
1163 +       enum ci_isp_data_path main_path;
1164 +       /* enable path */
1165 +       enum ci_isp_data_path self_path;
1166 +       /*
1167 +        * offset counter interrupt generation for fill_mp_y (counted in
1168 +        * bytes)
1169 +        */
1170 +       u32 irq_offs_init;
1171 +
1172 +};
1173 +
1174 +/* buffer for memory interface */
1175 +struct ci_isp_buffer {
1176 +       /* buffer start address */
1177 +       u8 *pucbuffer;
1178 +       /* buffer size (counted in bytes) */
1179 +       u32 size;
1180 +       /* buffer offset count (counted in bytes) */
1181 +       u32 offs;
1182 +};
1183 +
1184 +/* main or self picture path, or DMA configuration */
1185 +struct ci_isp_mi_path_conf {
1186 +       /* Y  picture width  (counted in pixels) */
1187 +       u32 ypic_width;
1188 +       /* Y  picture height (counted in pixels) */
1189 +       u32 ypic_height;
1190 +       /*
1191 +        * line length means the distance from one pixel to the vertically
1192 +        * next
1193 +        */
1194 +       u32 llength;
1195 +       /*
1196 +        * pixel below including the not-used blanking area, etc.
1197 +        * (counted in pixels)
1198 +        */
1199 +       /* Y  buffer structure */
1200 +       struct ci_isp_buffer ybuffer;
1201 +       /* Cb buffer structure */
1202 +       struct ci_isp_buffer cb_buffer;
1203 +       /* Cr buffer structure */
1204 +       struct ci_isp_buffer cr_buffer;
1205 +};
1206 +
1207 +/* DMA configuration */
1208 +struct ci_isp_mi_dma_conf {
1209 +       /* start DMA immediately after configuration */
1210 +       int start_dma;
1211 +       /* suppress v_end so that no frame end can be */
1212 +       int frame_end_disable;
1213 +       /*
1214 +        * detected by the following instances
1215 +        * enable change of byte order for read port
1216 +        */
1217 +       int byte_swap_enable;
1218 +       /*
1219 +        * Enables continuous mode. If set the same frame is read back
1220 +        * over and over. A start pulse on dma_start is need only for the
1221 +        * first time. To stop continuous mode reset this bit (takes
1222 +        * effect after the next frame end) or execute a soft reset.
1223 +        */
1224 +       int continuous_enable;
1225 +       /* DMA input color format */
1226 +       enum ci_isp_mif_col_format mrv_mif_col_format;
1227 +       /* DMA read buffer format */
1228 +       enum ci_isp_mif_pic_form mrv_mif_pic_form;
1229 +       /* burst length for chrominance for read port */
1230 +       enum ci_isp_mif_burst_length burst_length_chrom;
1231 +       /* burst length for luminance for read port */
1232 +       enum ci_isp_mif_burst_length burst_length_lum;
1233 +       /*
1234 +        * Set this to TRUE if the DMA-read data is routed through
1235 +        * the path that is normally used for the live camera
1236 +        * data (e.g. through the image effects module).
1237 +        */
1238 +       int via_cam_path;
1239 +};
1240 +
1241 +/* Public CAC Defines and Typedefs */
1242 +
1243 +/*
1244 + * configuration of chromatic aberration correction block (given to the
1245 + * CAC driver)
1246 + */
1247 +struct ci_isp_cac_config {
1248 +       /* size of the input image in pixels */
1249 +       u16 hsize;
1250 +       u16 vsize;
1251 +       /* offset between image center and optical */
1252 +       s16 hcenter_offset;
1253 +       /* center of the input image in pixels */
1254 +       s16 vcenter_offset;
1255 +       /* maximum red/blue pixel shift in horizontal */
1256 +       u8 hclip_mode;
1257 +       /* and vertival direction, range 0..2 */
1258 +       u8 vclip_mode;
1259 +       /* parameters for radial shift calculation, */
1260 +       u16 ablue;
1261 +       /* 9 bit twos complement with 4 fractional */
1262 +       u16 ared;
1263 +       /* digits, valid range -16..15.9375 */
1264 +       u16 bblue;
1265 +       u16 bred;
1266 +       u16 cblue;
1267 +       u16 cred;
1268 +       /* 0 = square pixel sensor, all other = aspect */
1269 +       float aspect_ratio;
1270 +       /* ratio of non-square pixel sensor */
1271 +
1272 +};
1273 +
1274 +/*
1275 + * register values of chromatic aberration correction block (delivered by
1276 + * the CAC driver)
1277 + */
1278 +struct ci_isp_cac_reg_values {
1279 +       /* maximum red/blue pixel shift in horizontal */
1280 +       u8 hclip_mode;
1281 +       /* and vertival direction, range 0..2 */
1282 +       u8 vclip_mode;
1283 +       /* TRUE=enabled, FALSE=disabled */
1284 +       int cac_enabled;
1285 +       /*
1286 +        * preload value of the horizontal CAC pixel
1287 +        * counter, range 1..4095
1288 +        */
1289 +       u16 hcount_start;
1290 +       /*
1291 +        * preload value of the vertical CAC pixel
1292 +        * counter, range 1..4095
1293 +        */
1294 +       u16 vcount_start;
1295 +       /* parameters for radial shift calculation, */
1296 +       u16 ablue;
1297 +       /* 9 bit twos complement with 4 fractional */
1298 +       u16 ared;
1299 +       /* digits, valid range -16..15.9375 */
1300 +       u16 bblue;
1301 +       u16 bred;
1302 +       u16 cblue;
1303 +       u16 cred;
1304 +       /* horizontal normalization shift, range 0..7 */
1305 +       u8 xnorm_shift;
1306 +       /* horizontal normalization factor, range 16..31 */
1307 +       u8 xnorm_factor;
1308 +       /* vertical normalization shift, range 0..7 */
1309 +       u8 ynorm_shift;
1310 +       /* vertical normalization factor, range 16..31 */
1311 +       u8 ynorm_factor;
1312 +};
1313 +
1314 +struct ci_snapshot_config {
1315 +       /*  snapshot flags */
1316 +       u32 flags;
1317 +       /*  user zoom factor to use ( Zoomfactor = 1 + (<value>*1024) ) */
1318 +       int user_zoom;
1319 +       /*  user width (in pixel) */
1320 +       int user_w;
1321 +       /*  user height (in pixel) */
1322 +       int user_h;
1323 +       /*  compression ratio for JPEG snapshots */
1324 +       u8 compression_ratio;
1325 +};
1326 +
1327 +struct ci_isp_view_finder_config {
1328 +       /*  how to display the viewfinder */
1329 +       u32 flags;
1330 +       /*  zoom factor to use ( Zoomfactor = 1 + (<value>*1024) ) */
1331 +       int zoom;
1332 +       /*  contrast setting for LCD */
1333 +       int lcd_contrast;
1334 +       /*  following settings are only used in VFFLAG_MODE_USER mode */
1335 +
1336 +       /*  start pixel of upper left corner on LCD */
1337 +       int x;
1338 +       /*  start pixel of upper left corner on LCD */
1339 +       int y;
1340 +       /*  width (in pixel) */
1341 +       int w;
1342 +       /*  height (in pixel) */
1343 +       int h;
1344 +       /*  keeps the aspect ratio by cropping the input to match the output
1345 +        * aspect ratio. */
1346 +       int keep_aspect;
1347 +};
1348 +
1349 +/* ! Number of supported DIP-Switches */
1350 +#define FF_DIPSWITCH_COUNT    10
1351 +
1352 +
1353 +#define CI_ISP_HIST_DATA_BIN_ARR_SIZE 16
1354 +
1355 +struct ci_isp_hist_data_bin {
1356 +       u8 hist_bin[CI_ISP_HIST_DATA_BIN_ARR_SIZE];
1357 +};
1358 +
1359 +#define MRV_MEAN_LUMA_ARR_SIZE_COL 5
1360 +#define MRV_MEAN_LUMA_ARR_SIZE_ROW 5
1361 +#define MRV_MEAN_LUMA_ARR_SIZE     \
1362 +       (MRV_MEAN_LUMA_ARR_SIZE_COL*MRV_MEAN_LUMA_ARR_SIZE_ROW)
1363 +
1364 +/* Structure contains a 2-dim 5x5 array
1365 + * for mean luminance values from 5x5 MARVIN measurement grid.
1366 + */
1367 +struct ci_isp_mean_luma {
1368 +    u8 mean_luma_block[MRV_MEAN_LUMA_ARR_SIZE_COL][MRV_MEAN_LUMA_ARR_SIZE_ROW];
1369 +};
1370 +
1371 +/* Structure contains bits autostop and exp_meas_mode of isp_exp_ctrl */
1372 +struct ci_isp_exp_ctrl {
1373 +    int auto_stop;
1374 +    int exp_meas_mode;
1375 +    int exp_start;
1376 +} ;
1377 +
1378 +
1379 +struct ci_isp_cfg_flags {
1380 +       /*
1381 +        * following flag tripels controls the behaviour of the associated
1382 +        * marvin control loops.
1383 +        * For feature XXX, the 3 flags are totally independant and
1384 +        * have the following meaning:
1385 +        * fXXX:
1386 +        * If set, there is any kind of software interaction during runtime
1387 +        * thatmay lead to a modification of the feature-dependant settings.
1388 +        * For each frame, a feature specific loop control routine is called
1389 +        * may perform other actions based on feature specific configuration.
1390 +        * If not set, only base settings will be applied during setup, or the
1391 +        * reset values are left unchanged. No control routine will be called
1392 +        * inside the processing loop.
1393 +        * fXXXprint:
1394 +        * If set, some status informations will be printed out inside
1395 +        * the processing loop.  Status printing is independant of the
1396 +        * other flags regarding this feature.
1397 +        * fXXX_dis:
1398 +        * If set, the feature dependant submodule of the marvin is
1399 +        * disabled or is turned into bypass mode. Note that it is
1400 +        * still possible to set one or more of the other flags too,
1401 +        * but this wouldn't make much sense...
1402 +        * lens shading correction
1403 +        */
1404 +
1405 +       unsigned int lsc:1;
1406 +       unsigned int lscprint:1;
1407 +       unsigned int lsc_dis:1;
1408 +
1409 +       /*  bad pixel correction */
1410 +
1411 +       unsigned int bpc:1;
1412 +       unsigned int bpcprint:1;
1413 +       unsigned int bpc_dis:1;
1414 +
1415 +       /*  black level correction */
1416 +
1417 +       unsigned int bls:1;
1418 +       /*  only fixed values */
1419 +       unsigned int bls_man:1;
1420 +       /*  fixed value read from smia interface */
1421 +       unsigned int bls_smia:1;
1422 +       unsigned int blsprint:1;
1423 +       unsigned int bls_dis:1;
1424 +
1425 +       /*  (automatic) white balancing
1426 +        * (if automatic or manual can be configured elsewhere) */
1427 +
1428 +       unsigned int awb:1;
1429 +       unsigned int awbprint:1;
1430 +       unsigned int awbprint2:1;
1431 +       unsigned int awb_dis:1;
1432 +
1433 +       /*  automatic exposure (and gain) control */
1434 +
1435 +       unsigned int aec:1;
1436 +       unsigned int aecprint:1;
1437 +       unsigned int aec_dis:1;
1438 +       unsigned int aec_sceval:1;
1439 +
1440 +       /*  auto focus */
1441 +
1442 +       unsigned int af:1;
1443 +       unsigned int afprint:1;
1444 +       unsigned int af_dis:1;
1445 +
1446 +       /*  enable flags for various other components of the marvin */
1447 +
1448 +       /*  color processing (brightness, contrast, saturation, hue) */
1449 +       unsigned int cp:1;
1450 +       /*  input gamma block */
1451 +       unsigned int gamma:1;
1452 +       /*  color conversion matrix */
1453 +       unsigned int cconv:1;
1454 +       /*  demosaicing */
1455 +       unsigned int demosaic:1;
1456 +       /*  output gamma block */
1457 +       unsigned int gamma2:1;
1458 +       /*  Isp de-noise and sharpenize filters */
1459 +       unsigned int isp_filters:1;
1460 +       /*  Isp CAC */
1461 +       unsigned int cac:1;
1462 +
1463 +       /*  demo stuff */
1464 +
1465 +       /*  demo: saturation loop enable */
1466 +       unsigned int cp_sat_loop:1;
1467 +       /*  demo: contrast loop enable */
1468 +       unsigned int cp_contr_loop:1;
1469 +       /*  demo: brightness loop enable */
1470 +       unsigned int cp_bright_loop:1;
1471 +       /*  demo: scaler loop enable */
1472 +       unsigned int scaler_loop:1;
1473 +       /*  demo: use standard color conversion matrix */
1474 +       unsigned int cconv_basic:1;
1475 +
1476 +       /*  demo: use joystick to cycle through the image effect modes */
1477 +       unsigned int cycle_ie_mode:1;
1478 +
1479 +       /*  others */
1480 +
1481 +       /*  enable continous autofocus */
1482 +       unsigned int continous_af:1;
1483 +
1484 +       unsigned int bad_pixel_generation:1;
1485 +       /* enable YCbCr full range */
1486 +       unsigned int ycbcr_full_range:1;
1487 +       /* enable YCbCr color phase non cosited */
1488 +       unsigned int ycbcr_non_cosited:1;
1489 +
1490 +};
1491 +
1492 +struct ci_isp_config {
1493 +       struct ci_isp_cfg_flags flags;
1494 +       struct ci_sensor_ls_corr_config lsc_cfg;
1495 +       struct ci_isp_bp_corr_config bpc_cfg;
1496 +       struct ci_isp_bp_det_config bpd_cfg;
1497 +       struct ci_isp_wb_config wb_config;
1498 +       struct ci_isp_cac_config cac_config;
1499 +       struct ci_isp_aec_config aec_cfg;
1500 +       struct ci_isp_window aec_v2_wnd;
1501 +       struct ci_isp_bls_config bls_cfg;
1502 +       struct ci_isp_af_config af_cfg;
1503 +       struct ci_isp_color_settings color;
1504 +       struct ci_isp_ie_config img_eff_cfg;
1505 +       enum ci_isp_demosaic_mode demosaic_mode;
1506 +       u8 demosaic_th;
1507 +       u8 exposure;
1508 +       enum ci_isp_aec_mode advanced_aec_mode;
1509 +       /*  what to include in reports; */
1510 +       u32 report_details;
1511 +       /*  an or'ed combination of the FF_REPORT_xxx defines */
1512 +       struct ci_isp_view_finder_config view_finder;
1513 +       /*  primary snapshot */
1514 +       struct ci_snapshot_config snapshot_a;
1515 +       /*  secondary snapshot */
1516 +       struct ci_snapshot_config snapshot_b;
1517 +       /*  auto focus measurement mode */
1518 +       enum ci_isp_afm_mode afm_mode;
1519 +       /*  auto focus search strategy mode */
1520 +       enum ci_isp_afss_mode afss_mode;
1521 +       int wb_get_gains_from_sensor_driver;
1522 +       u8 filter_level_noise_reduc;
1523 +       u8 filter_level_sharp;
1524 +       u8 jpeg_enc_ratio;
1525 +};
1526 +
1527 +struct ci_isp_mem_info {
1528 +       u32 isp_bar0_pa;
1529 +       u32 isp_bar0_size;
1530 +       u32 isp_bar1_pa;
1531 +       u32 isp_bar1_size;
1532 +};
1533 +
1534 +struct ci_pl_system_config {
1535 +       /* to be removed */
1536 +       struct ci_sensor_config *isi_config;
1537 +       struct ci_sensor_caps *isi_caps;
1538 +       struct ci_sensor_awb_profile *sensor_awb_profile;
1539 +
1540 +       struct ci_isp_config isp_cfg;
1541 +       u32 focus_max;
1542 +       unsigned int isp_hal_enable;
1543 +       struct v4l2_jpg_review_buffer jpg_review;
1544 +       int jpg_review_enable;
1545 +};
1546 +
1547 +/* intel private ioctl code for ci isp hal interface */
1548 +#define BASE BASE_VIDIOC_PRIVATE
1549 +
1550 +#define VIDIOC_SET_SYS_CFG _IOWR('V', BASE + 1, struct ci_pl_system_config)
1551 +#define VIDIOC_SET_JPG_ENC_RATIO _IOWR('V', BASE + 2, int)
1552 +#define VIDIOC_GET_ISP_MEM_INFO _IOWR('V', BASE + 4, struct ci_isp_mem_info)
1553 +
1554 +#include "ci_va.h"
1555 +
1556 +/* support camera flash on CDK */
1557 +struct ci_isp_flash_cmd {
1558 +       int preflash_on;
1559 +       int flash_on;
1560 +       int prelight_on;
1561 +};
1562 +
1563 +struct ci_isp_flash_config {
1564 +       int prelight_off_at_end_of_flash;
1565 +       int vsync_edge_positive;
1566 +       int output_polarity_low_active;
1567 +       int use_external_trigger;
1568 +       u8 capture_delay;
1569 +};
1570 +
1571 +#endif
1572 --- /dev/null
1573 +++ b/drivers/media/video/mrstci/include/ci_isp_fmts_common.h
1574 @@ -0,0 +1,128 @@
1575 +/*
1576 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
1577 + *
1578 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
1579 + *
1580 + * This program is free software; you can redistribute it and/or
1581 + * modify it under the terms of the GNU General Public License version
1582 + * 2 as published by the Free Software Foundation.
1583 + *
1584 + * This program is distributed in the hope that it will be useful,
1585 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
1586 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1587 + * GNU General Public License for more details.
1588 + *
1589 + * You should have received a copy of the GNU General Public License
1590 + * along with this program; if not, write to the Free Software
1591 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
1592 + * 02110-1301, USA.
1593 + *
1594 + *
1595 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
1596 + */
1597 +
1598 +#ifndef _ISP_FMTS_COMMON_H
1599 +#define _ISP_FMTS_COMMON_H
1600 +
1601 +#define intel_fourcc(d, c, b, a) \
1602 +       (((__u32)(d)<<0)|((__u32)(c)<<8)|((__u32)(b)<<16)|((__u32)(a)<<24))
1603 +
1604 +/* more bayer pattern formats support by ISP */
1605 +
1606 +/* RAW 8-bit */
1607 +#define INTEL_PIX_FMT_RAW08  intel_fourcc('R', 'W', '0', '8')
1608 +/* RAW 10-bit */
1609 +#define INTEL_PIX_FMT_RAW10 intel_fourcc('R', 'W', '1', '0')
1610 +/* RAW 12-bit */
1611 +#define INTEL_PIX_FMT_RAW12  intel_fourcc('R', 'W', '1', '2')
1612 +
1613 +
1614 +/*
1615 + * various config and info structs concentrated into one struct
1616 + * for simplification
1617 + */
1618 +#define FORMAT_FLAGS_DITHER       0x01
1619 +#define FORMAT_FLAGS_PACKED       0x02
1620 +#define FORMAT_FLAGS_PLANAR       0x04
1621 +#define FORMAT_FLAGS_RAW          0x08
1622 +#define FORMAT_FLAGS_CrCb         0x10
1623 +
1624 +struct intel_fmt {
1625 +       char *name;
1626 +       unsigned long fourcc;           /* v4l2 format id */
1627 +       int depth;
1628 +       int flags;
1629 +};
1630 +
1631 +static struct intel_fmt fmts[] = {
1632 +       {
1633 +       .name = "565 bpp RGB",
1634 +       .fourcc = V4L2_PIX_FMT_RGB565,
1635 +       .depth = 16,
1636 +       .flags = FORMAT_FLAGS_PACKED,
1637 +       },
1638 +       {
1639 +       .name = "888 bpp BGR",
1640 +       .fourcc = V4L2_PIX_FMT_BGR32,
1641 +       .depth = 32,
1642 +       .flags = FORMAT_FLAGS_PLANAR,
1643 +       },
1644 +       {
1645 +       .name = "4:2:2, packed, YUYV",
1646 +       .fourcc = V4L2_PIX_FMT_YUYV,
1647 +       .depth = 16,
1648 +       .flags = FORMAT_FLAGS_PACKED,
1649 +       },
1650 +       {
1651 +       .name = "4:2:2 planar, YUV422P",
1652 +       .fourcc = V4L2_PIX_FMT_YUV422P,
1653 +       .depth = 16,
1654 +       .flags = FORMAT_FLAGS_PLANAR,
1655 +       },
1656 +       {
1657 +       .name = "4:2:0 planar, YUV420",
1658 +       .fourcc = V4L2_PIX_FMT_YUV420,
1659 +       .depth = 12,
1660 +       .flags = FORMAT_FLAGS_PLANAR,
1661 +       },
1662 +       {
1663 +       .name = "4:2:0 planar, YVU420",
1664 +       .fourcc = V4L2_PIX_FMT_YVU420,
1665 +       .depth = 12,
1666 +       .flags = FORMAT_FLAGS_PLANAR,
1667 +       },
1668 +       {
1669 +       .name = "4:2:0 semi planar, NV12",
1670 +       .fourcc = V4L2_PIX_FMT_NV12,
1671 +       .depth = 12,
1672 +       .flags = FORMAT_FLAGS_PLANAR,
1673 +       },
1674 +       {
1675 +       .name = "Compressed format, JPEG",
1676 +       .fourcc = V4L2_PIX_FMT_JPEG,
1677 +       .depth = 12,
1678 +       .flags = FORMAT_FLAGS_PLANAR,
1679 +       },
1680 +       {
1681 +       .name = "Sequential RGB",
1682 +       .fourcc = INTEL_PIX_FMT_RAW08,
1683 +       .depth = 8,
1684 +       .flags = FORMAT_FLAGS_RAW,
1685 +       },
1686 +       {
1687 +       .name = "Sequential RGB",
1688 +       .fourcc = INTEL_PIX_FMT_RAW10,
1689 +       .depth = 16,
1690 +       .flags = FORMAT_FLAGS_RAW,
1691 +       },
1692 +       {
1693 +       .name = "Sequential RGB",
1694 +       .fourcc = INTEL_PIX_FMT_RAW12,
1695 +       .depth = 16,
1696 +       .flags = FORMAT_FLAGS_RAW,
1697 +       },
1698 +};
1699 +
1700 +static int NUM_FORMATS = sizeof(fmts) / sizeof(struct intel_fmt);
1701 +#endif /* _ISP_FMTS_H */
1702 +
1703 --- /dev/null
1704 +++ b/drivers/media/video/mrstci/include/ci_sensor_common.h
1705 @@ -0,0 +1,1233 @@
1706 +/*
1707 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
1708 + *
1709 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
1710 + *
1711 + * This program is free software; you can redistribute it and/or
1712 + * modify it under the terms of the GNU General Public License version
1713 + * 2 as published by the Free Software Foundation.
1714 + *
1715 + * This program is distributed in the hope that it will be useful,
1716 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
1717 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1718 + * GNU General Public License for more details.
1719 + *
1720 + * You should have received a copy of the GNU General Public License
1721 + * along with this program; if not, write to the Free Software
1722 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
1723 + * 02110-1301, USA.
1724 + *
1725 + *
1726 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
1727 + */
1728 +
1729 +#ifndef _SENSOR_COMMON_H
1730 +#define _SENSOR_COMMON_H
1731 +
1732 +#include <media/v4l2-subdev.h>
1733 +
1734 +#define AEC_ALGO_V1    1
1735 +#define AEC_ALGO_V2    2
1736 +#define AEC_ALGO_V3    3
1737 +#define AEC_ALGO_V4    4
1738 +
1739 +#ifndef AEC_ALGO
1740 +#define AEC_ALGO       AEC_ALGO_V3 /*AEC_ALGO_V2*/
1741 +#endif
1742 +/*
1743 + * interface version
1744 + * please increment the version if you add something new to the interface.
1745 + * This helps upper layer software to deal with different interface versions.
1746 + */
1747 +#define SENSOR_INTERFACE_VERSION 4
1748 +#define SENSOR_TYPE_SOC        0
1749 +#define SENSOR_TYPE_RAW        1
1750 +/* Just for current use case */
1751 +#define SENSOR_TYPE_2M 0
1752 +#define SENSOR_TYPE_5M 1
1753 +
1754 +/*
1755 + * capabilities / configuration
1756 + */
1757 +
1758 +/* ulBusWidth; */
1759 +/*
1760 + * to expand to a (possibly higher) resolution in marvin, the LSBs will be set
1761 + * to zero
1762 + */
1763 +#define SENSOR_BUSWIDTH_8BIT_ZZ    0x00000001
1764 +/*
1765 + * to expand to a (possibly higher) resolution in marvin, the LSBs will be
1766 + * copied from the MSBs
1767 + */
1768 +#define SENSOR_BUSWIDTH_8BIT_EX    0x00000002
1769 +/*
1770 + * formerly known as SENSOR_BUSWIDTH_10BIT (at times no marvin derivative was
1771 + * able to process more than 10 bit)
1772 + */
1773 +#define SENSOR_BUSWIDTH_10BIT_EX   0x00000004
1774 +#define SENSOR_BUSWIDTH_10BIT_ZZ   0x00000008
1775 +#define SENSOR_BUSWIDTH_12BIT      0x00000010
1776 +
1777 +#define SENSOR_BUSWIDTH_10BIT      SENSOR_BUSWIDTH_10BIT_EX
1778 +
1779 +/*
1780 + * ulMode, operating mode of the image sensor in termns of output data format
1781 + * and
1782 + */
1783 +
1784 +/* timing data transmission */
1785 +
1786 +/* YUV-Data with separate h/v sync lines (ITU-R BT.601) */
1787 +#define SENSOR_MODE_BT601            0x00000001
1788 +/* YUV-Data with sync words inside the datastream (ITU-R BT.656) */
1789 +#define SENSOR_MODE_BT656            0x00000002
1790 +/* Bayer data with separate h/v sync lines */
1791 +#define SENSOR_MODE_BAYER            0x00000004
1792 +/*
1793 + * Any binary data without line/column-structure, (e.g. already JPEG encoded)
1794 + * h/v sync lines act as data valid signals
1795 + */
1796 +#define SENSOR_MODE_DATA             0x00000008
1797 +/* RAW picture data with separate h/v sync lines */
1798 +#define SENSOR_MODE_PICT             0x00000010
1799 +/* RGB565 data with separate h/v sync lines */
1800 +#define SENSOR_MODE_RGB565           0x00000020
1801 +/* SMIA conform data stream (see ulSmiaMode for details) */
1802 +#define SENSOR_MODE_SMIA             0x00000040
1803 +/* MIPI conform data stream (see ulMipiMode for details) */
1804 +#define SENSOR_MODE_MIPI             0x00000080
1805 +/*
1806 + * Bayer data with sync words inside the datastream (similar to ITU-R BT.656)
1807 + */
1808 +#define SENSOR_MODE_BAY_BT656        0x00000100
1809 +/*
1810 + * Raw picture data with sync words inside the datastream (similar to ITU-R
1811 + * BT.656)
1812 + */
1813 +#define SENSOR_MODE_RAW_BT656        0x00000200
1814 +
1815 +/* ulSmiaMode */
1816 +
1817 +/* compression mode */
1818 +#define SENSOR_SMIA_MODE_COMPRESSED           0x00000001
1819 +/* 8bit to 10 bit decompression */
1820 +#define SENSOR_SMIA_MODE_RAW_8_TO_10_DECOMP   0x00000002
1821 +/* 12 bit RAW Bayer Data */
1822 +#define SENSOR_SMIA_MODE_RAW_12               0x00000004
1823 +/* 10 bit RAW Bayer Data */
1824 +#define SENSOR_SMIA_MODE_RAW_10               0x00000008
1825 +/* 8 bit RAW Bayer Data */
1826 +#define SENSOR_SMIA_MODE_RAW_8                0x00000010
1827 +/* 7 bit RAW Bayer Data */
1828 +#define SENSOR_SMIA_MODE_RAW_7                0x00000020
1829 +/* 6 bit RAW Bayer Data */
1830 +#define SENSOR_SMIA_MODE_RAW_6                0x00000040
1831 +/* RGB 888 Display ready Data */
1832 +#define SENSOR_SMIA_MODE_RGB_888              0x00000080
1833 +/* RGB 565 Display ready Data */
1834 +#define SENSOR_SMIA_MODE_RGB_565              0x00000100
1835 +/* RGB 444 Display ready Data */
1836 +#define SENSOR_SMIA_MODE_RGB_444              0x00000200
1837 +/* YUV420 Data */
1838 +#define SENSOR_SMIA_MODE_YUV_420              0x00000400
1839 +/* YUV422 Data */
1840 +#define SENSOR_SMIA_MODE_YUV_422              0x00000800
1841 +/* SMIA is disabled */
1842 +#define SENSOR_SMIA_OFF                       0x80000000
1843 +
1844 +/* ulMipiMode */
1845 +
1846 +/* YUV 420  8-bit */
1847 +#define SENSOR_MIPI_MODE_YUV420_8             0x00000001
1848 +/* YUV 420 10-bit */
1849 +#define SENSOR_MIPI_MODE_YUV420_10            0x00000002
1850 +/* Legacy YUV 420 8-bit */
1851 +#define SENSOR_MIPI_MODE_LEGACY_YUV420_8      0x00000004
1852 +/* YUV 420 8-bit (CSPS) */
1853 +#define SENSOR_MIPI_MODE_YUV420_CSPS_8        0x00000008
1854 +/* YUV 420 10-bit (CSPS) */
1855 +#define SENSOR_MIPI_MODE_YUV420_CSPS_10       0x00000010
1856 +/* YUV 422 8-bit */
1857 +#define SENSOR_MIPI_MODE_YUV422_8             0x00000020
1858 +/* YUV 422 10-bit */
1859 +#define SENSOR_MIPI_MODE_YUV422_10            0x00000040
1860 +/* RGB 444 */
1861 +#define SENSOR_MIPI_MODE_RGB444               0x00000080
1862 +/* RGB 555 */
1863 +#define SENSOR_MIPI_MODE_RGB555               0x00000100
1864 +/* RGB 565 */
1865 +#define SENSOR_MIPI_MODE_RGB565               0x00000200
1866 +/* RGB 666 */
1867 +#define SENSOR_MIPI_MODE_RGB666               0x00000400
1868 +/* RGB 888 */
1869 +#define SENSOR_MIPI_MODE_RGB888               0x00000800
1870 +/* RAW_6 */
1871 +#define SENSOR_MIPI_MODE_RAW_6                0x00001000
1872 +/* RAW_7 */
1873 +#define SENSOR_MIPI_MODE_RAW_7                0x00002000
1874 +/* RAW_8 */
1875 +#define SENSOR_MIPI_MODE_RAW_8                0x00004000
1876 +/* RAW_10 */
1877 +#define SENSOR_MIPI_MODE_RAW_10               0x00008000
1878 +/* RAW_12 */
1879 +#define SENSOR_MIPI_MODE_RAW_12               0x00010000
1880 +/* MIPI is disabled */
1881 +#define SENSOR_MIPI_OFF                       0x80000000
1882 +
1883 +/* ulFieldInv; */
1884 +
1885 +#define SENSOR_FIELDINV_NOSWAP     0x00000001
1886 +#define SENSOR_FIELDINV_SWAP       0x00000002
1887 +
1888 +/* ulFieldSel; */
1889 +
1890 +#define SENSOR_FIELDSEL_BOTH       0x00000001
1891 +#define SENSOR_FIELDSEL_EVEN       0x00000002
1892 +#define SENSOR_FIELDSEL_ODD        0x00000004
1893 +
1894 +/* ulYCSeq; */
1895 +
1896 +#define SENSOR_YCSEQ_YCBYCR        0x00000001
1897 +#define SENSOR_YCSEQ_YCRYCB        0x00000002
1898 +#define SENSOR_YCSEQ_CBYCRY        0x00000004
1899 +#define SENSOR_YCSEQ_CRYCBY        0x00000008
1900 +
1901 +/* ulConv422; */
1902 +#if 0
1903 +#define SENSOR_CONV422_COSITED     0x00000001
1904 +#define SENSOR_CONV422_NOCOSITED   0x00000002
1905 +#define SENSOR_CONV422_COLORINT    0x00000004
1906 +#endif
1907 +#define SENSOR_CONV422_COSITED     0x00000001
1908 +#define SENSOR_CONV422_INTER       0x00000002
1909 +#define SENSOR_CONV422_NOCOSITED   0x00000004
1910 +
1911 +/* ulBPat; */
1912 +
1913 +#define SENSOR_BPAT_RGRGGBGB       0x00000001
1914 +#define SENSOR_BPAT_GRGRBGBG       0x00000002
1915 +#define SENSOR_BPAT_GBGBRGRG       0x00000004
1916 +#define SENSOR_BPAT_BGBGGRGR       0x00000008
1917 +
1918 +/* ulHPol; */
1919 +
1920 +/* sync signal pulses high between lines */
1921 +#define SENSOR_HPOL_SYNCPOS        0x00000001
1922 +/* sync signal pulses low between lines */
1923 +#define SENSOR_HPOL_SYNCNEG        0x00000002
1924 +/* reference signal is high as long as sensor puts out line data */
1925 +#define SENSOR_HPOL_REFPOS         0x00000004
1926 +/* reference signal is low as long as sensor puts out line data */
1927 +#define SENSOR_HPOL_REFNEG         0x00000008
1928 +
1929 +/* ulVPol; */
1930 +
1931 +#define SENSOR_VPOL_POS            0x00000001
1932 +#define SENSOR_VPOL_NEG            0x00000002
1933 +
1934 +/* ulEdge; */
1935 +
1936 +#define SENSOR_EDGE_RISING         0x00000001
1937 +#define SENSOR_EDGE_FALLING        0x00000002
1938 +
1939 +/* ulBls; */
1940 +
1941 +/* turns on/off additional black lines at frame start */
1942 +#define SENSOR_BLS_OFF             0x00000001
1943 +#define SENSOR_BLS_TWO_LINES       0x00000002
1944 +/* two lines top and two lines bottom */
1945 +#define SENSOR_BLS_FOUR_LINES      0x00000004
1946 +
1947 +/* ulGamma; */
1948 +
1949 +/* turns on/off gamma correction in the sensor ISP */
1950 +#define SENSOR_GAMMA_ON            0x00000001
1951 +#define SENSOR_GAMMA_OFF           0x00000002
1952 +
1953 +/* ulCConv; */
1954 +
1955 +/* turns on/off color conversion matrix in the sensor ISP */
1956 +#define SENSOR_CCONV_ON            0x00000001
1957 +#define SENSOR_CCONV_OFF           0x00000002
1958 +
1959 +/* ulRes; */
1960 +
1961 +/* 88x72 */
1962 +#define SENSOR_RES_QQCIF           0x00000001
1963 +/* 160x120 */
1964 +#define SENSOR_RES_QQVGA           0x00000002
1965 +/* 176x144 */
1966 +#define SENSOR_RES_QCIF            0x00000004
1967 +/* 320x240 */
1968 +#define SENSOR_RES_QVGA            0x00000008
1969 +/* 352x288 */
1970 +#define SENSOR_RES_CIF             0x00000010
1971 +/* 640x480 */
1972 +#define SENSOR_RES_VGA             0x00000020
1973 +/* 800x600 */
1974 +#define SENSOR_RES_SVGA            0x00000040
1975 +/* 1024x768 */
1976 +#define SENSOR_RES_XGA             0x00000080
1977 +/* 1280x960 max. resolution of OV9640 (QuadVGA) */
1978 +#define SENSOR_RES_XGA_PLUS        0x00000100
1979 +/* 1280x1024 */
1980 +#define SENSOR_RES_SXGA            0x00000200
1981 +/* 1600x1200 */
1982 +#define SENSOR_RES_UXGA            0x00000400
1983 +/* 2048x1536 */
1984 +#define SENSOR_RES_QXGA            0x00000800
1985 +#define SENSOR_RES_QXGA_PLUS       0x00001000
1986 +#define SENSOR_RES_RAWMAX          0x00002000
1987 +/* 4080x1024 */
1988 +#define SENSOR_RES_YUV_HMAX        0x00004000
1989 +/* 1024x4080 */
1990 +#define SENSOR_RES_YUV_VMAX        0x00008000
1991 +#ifdef _DEBUG
1992 +/* depends on further defines (TEST_SIZE_H and TEST_SIZE_V) */
1993 +#define SENSOR_RES_TEST        0x00010000
1994 +
1995 +#define TEST_SIZE_H         (2600)
1996 +#define TEST_SIZE_V         (2046)
1997 +/* #define TEST_SIZE_V         (1950) */
1998 +
1999 +/* #ifdef _DEBUG */
2000 +#endif
2001 +/* 720x480 */
2002 +#define SENSOR_RES_L_AFM           0x00020000
2003 +/* 128x96 */
2004 +#define SENSOR_RES_M_AFM           0x00040000
2005 +/* 64x32 */
2006 +#define SENSOR_RES_S_AFM           0x00080000
2007 +/* 352x240 */
2008 +#define SENSOR_RES_BP1             0x00100000
2009 +/* 2586x2048, quadruple SXGA, 5,3 Mpix */
2010 +#define SENSOR_RES_QSXGA           0x00200000
2011 +/* 2600x2048, max. resolution of M5, 5,32 Mpix */
2012 +#define SENSOR_RES_QSXGA_PLUS      0x00400000
2013 +/* 2600x1950 */
2014 +#define SENSOR_RES_QSXGA_PLUS2     0x00800000
2015 +/* 2686x2048,  5.30M */
2016 +#define SENSOR_RES_QSXGA_PLUS3     0x01000000
2017 +/* 3200x2048,  6.56M */
2018 +#define SENSOR_RES_WQSXGA          0x02000000
2019 +/* 3200x2400,  7.68M */
2020 +#define SENSOR_RES_QUXGA           0x04000000
2021 +/* 3840x2400,  9.22M */
2022 +#define SENSOR_RES_WQUXGA          0x08000000
2023 +/* 4096x3072, 12.59M */
2024 +#define SENSOR_RES_HXGA            0x10000000
2025 +
2026 +/* 2592x1044 replace with SENSOR_RES_QXGA_PLUS */
2027 +/*#define SENSOR_RES_QSXGA_PLUS4       0x10000000*/
2028 +/* 1920x1080 */
2029 +#define SENSOR_RES_1080P       0x20000000
2030 +/* 1280x720 */
2031 +#define SENSOR_RES_720P        0x40000000
2032 +
2033 +/* FIXME 1304x980*/
2034 +#define SENSOR_RES_VGA_PLUS    0x80000000
2035 +#define VGA_PLUS_SIZE_H                (1304)
2036 +#define VGA_PLUS_SIZE_V                (980)
2037 +
2038 +#define QSXGA_PLUS4_SIZE_H     (2592)
2039 +#define QSXGA_PLUS4_SIZE_V     (1944)
2040 +#define RES_1080P_SIZE_H       (1920)
2041 +#define RES_1080P_SIZE_V       (1080)
2042 +#define RES_720P_SIZE_H        (1280)
2043 +#define RES_720P_SIZE_V        (720)
2044 +#define QQCIF_SIZE_H              (88)
2045 +#define QQCIF_SIZE_V              (72)
2046 +#define QQVGA_SIZE_H             (160)
2047 +#define QQVGA_SIZE_V             (120)
2048 +#define QCIF_SIZE_H              (176)
2049 +#define QCIF_SIZE_V              (144)
2050 +#define QVGA_SIZE_H              (320)
2051 +#define QVGA_SIZE_V              (240)
2052 +#define CIF_SIZE_H               (352)
2053 +#define CIF_SIZE_V               (288)
2054 +#define VGA_SIZE_H               (640)
2055 +#define VGA_SIZE_V               (480)
2056 +#define SVGA_SIZE_H              (800)
2057 +#define SVGA_SIZE_V              (600)
2058 +#define XGA_SIZE_H              (1024)
2059 +#define XGA_SIZE_V               (768)
2060 +#define XGA_PLUS_SIZE_H         (1280)
2061 +#define XGA_PLUS_SIZE_V          (960)
2062 +#define SXGA_SIZE_H             (1280)
2063 +#define SXGA_SIZE_V             (1024)
2064 +/* will be removed soon */
2065 +#define QSVGA_SIZE_H            (1600)
2066 +/* will be removed soon */
2067 +#define QSVGA_SIZE_V            (1200)
2068 +#define UXGA_SIZE_H             (1600)
2069 +#define UXGA_SIZE_V             (1200)
2070 +#define QXGA_SIZE_H             (2048)
2071 +#define QXGA_SIZE_V             (1536)
2072 +#define QXGA_PLUS_SIZE_H        (2592)
2073 +#define QXGA_PLUS_SIZE_V        (1944)
2074 +#define RAWMAX_SIZE_H           (4096)
2075 +#define RAWMAX_SIZE_V           (2048)
2076 +#define YUV_HMAX_SIZE_H         (4080)
2077 +#define YUV_HMAX_SIZE_V         (1024)
2078 +#define YUV_VMAX_SIZE_H         (1024)
2079 +#define YUV_VMAX_SIZE_V         (4080)
2080 +#define BP1_SIZE_H               (352)
2081 +#define BP1_SIZE_V               (240)
2082 +#define L_AFM_SIZE_H             (720)
2083 +#define L_AFM_SIZE_V             (480)
2084 +#define M_AFM_SIZE_H             (128)
2085 +#define M_AFM_SIZE_V              (96)
2086 +#define S_AFM_SIZE_H              (64)
2087 +#define S_AFM_SIZE_V              (32)
2088 +#define QSXGA_SIZE_H            (2560)
2089 +#define QSXGA_SIZE_V            (2048)
2090 +#define QSXGA_MINUS_SIZE_V      (1920)
2091 +#define QSXGA_PLUS_SIZE_H       (2600)
2092 +#define QSXGA_PLUS_SIZE_V       (2048)
2093 +#define QSXGA_PLUS2_SIZE_H      (2600)
2094 +#define QSXGA_PLUS2_SIZE_V      (1950)
2095 +#define QUXGA_SIZE_H            (3200)
2096 +#define QUXGA_SIZE_V            (2400)
2097 +#define SIZE_H_2500             (2500)
2098 +#define QSXGA_PLUS3_SIZE_H      (2686)
2099 +#define QSXGA_PLUS3_SIZE_V      (2048)
2100 +#define QSXGA_PLUS4_SIZE_V      (1944)
2101 +#define WQSXGA_SIZE_H           (3200)
2102 +#define WQSXGA_SIZE_V           (2048)
2103 +#define WQUXGA_SIZE_H           (3200)
2104 +#define WQUXGA_SIZE_V           (2400)
2105 +#define HXGA_SIZE_H             (4096)
2106 +#define HXGA_SIZE_V             (3072)
2107 +
2108 +/* ulBLC; */
2109 +#define SENSOR_DWNSZ_SUBSMPL       0x00000001
2110 +#define SENSOR_DWNSZ_SCAL_BAY      0x00000002
2111 +#define SENSOR_DWNSZ_SCAL_COS      0x00000004
2112 +
2113 +/* Camera BlackLevelCorrection on */
2114 +#define SENSOR_BLC_AUTO            0x00000001
2115 +/* Camera BlackLevelCorrection off */
2116 +#define SENSOR_BLC_OFF             0x00000002
2117 +
2118 +/* ulAGC; */
2119 +
2120 +/* Camera AutoGainControl on */
2121 +#define SENSOR_AGC_AUTO            0x00000001
2122 +/* Camera AutoGainControl off */
2123 +#define SENSOR_AGC_OFF             0x00000002
2124 +
2125 +/* ulAWB; */
2126 +
2127 +/* Camera AutoWhiteBalance on */
2128 +#define SENSOR_AWB_AUTO            0x00000001
2129 +/* Camera AutoWhiteBalance off */
2130 +#define SENSOR_AWB_OFF             0x00000002
2131 +
2132 +/* ulAEC; */
2133 +
2134 +/* Camera AutoExposureControl on */
2135 +#define SENSOR_AEC_AUTO            0x00000001
2136 +/* Camera AutoExposureControl off */
2137 +#define SENSOR_AEC_OFF             0x00000002
2138 +
2139 +/* ulCieProfile; */
2140 +#define ISI_AEC_MODE_STAND      0x00000001
2141 +#define ISI_AEC_MODE_SLOW       0x00000002
2142 +#define ISI_AEC_MODE_FAST       0x00000004
2143 +#define ISI_AEC_MODE_NORMAL     0x00000008
2144 +#define SENSOR_CIEPROF_A           0x00000001
2145 +#define SENSOR_CIEPROF_B           0x00000002
2146 +#define SENSOR_CIEPROF_C           0x00000004
2147 +#define SENSOR_CIEPROF_D50         0x00000008
2148 +#define SENSOR_CIEPROF_D55         0x00000010
2149 +#define SENSOR_CIEPROF_D65         0x00000020
2150 +#define SENSOR_CIEPROF_D75         0x00000040
2151 +#define SENSOR_CIEPROF_E           0x00000080
2152 +#define SENSOR_CIEPROF_FLUOR       0x00000100
2153 +#define SENSOR_CIEPROF_FLUORH      0x00000200
2154 +#define SENSOR_CIEPROF_TUNG        0x00000400
2155 +#define SENSOR_CIEPROF_TWI         0x00000800
2156 +#define SENSOR_CIEPROF_SUN         0x00001000
2157 +#define SENSOR_CIEPROF_FLASH       0x00002000
2158 +#define SENSOR_CIEPROF_SHADE       0x00004000
2159 +#define SENSOR_CIEPROF_DAY         0x00008000
2160 +#define SENSOR_CIEPROF_F1          0x00010000
2161 +#define SENSOR_CIEPROF_F2          0x00020000
2162 +#define SENSOR_CIEPROF_F3          0x00040000
2163 +#define SENSOR_CIEPROF_F4          0x00080000
2164 +#define SENSOR_CIEPROF_F5          0x00100000
2165 +#define SENSOR_CIEPROF_F6          0x00200000
2166 +#define SENSOR_CIEPROF_F7          0x00400000
2167 +#define SENSOR_CIEPROF_F8          0x00800000
2168 +#define SENSOR_CIEPROF_F9          0x01000000
2169 +#define SENSOR_CIEPROF_F10         0x02000000
2170 +#define SENSOR_CIEPROF_F11         0x04000000
2171 +#define SENSOR_CIEPROF_F12         0x08000000
2172 +#define SENSOR_CIEPROF_CLOUDY      0x10000000
2173 +#define SENSOR_CIEPROF_SUNNY       0x20000000
2174 +#define SENSOR_CIEPROF_OLDISS      0x80000000
2175 +#define SENSOR_CIEPROF_DEFAULT     0x00000000
2176 +
2177 +/* ulFlickerFreq */
2178 +
2179 +/* no compensation for flickering environmental illumination */
2180 +#define SENSOR_FLICKER_OFF         0x00000001
2181 +/* compensation for 100Hz flicker frequency (at 50Hz mains frequency) */
2182 +#define SENSOR_FLICKER_100         0x00000002
2183 +/* compensation for 120Hz flicker frequency (at 60Hz mains frequency) */
2184 +#define SENSOR_FLICKER_120         0x00000004
2185 +
2186 +/*
2187 + * sensor capabilities struct: a struct member may have 0, 1 or several bits
2188 + * set according to the capabilities of the sensor. All struct members must be
2189 + * unsigned int and no padding is allowed. Thus, access to the fields is also
2190 + * possible by means of a field of unsigned int values. Indicees for the
2191 + * field-like access are given below.
2192 + */
2193 +struct ci_sensor_caps{
2194 +       unsigned int bus_width;
2195 +       unsigned int mode;
2196 +       unsigned int field_inv;
2197 +       unsigned int field_sel;
2198 +       unsigned int ycseq;
2199 +       unsigned int conv422;
2200 +       unsigned int bpat;
2201 +       unsigned int hpol;
2202 +       unsigned int vpol;
2203 +       unsigned int edge;
2204 +       unsigned int bls;
2205 +       unsigned int gamma;
2206 +       unsigned int cconv;
2207 +       unsigned int res;
2208 +       unsigned int dwn_sz;
2209 +       unsigned int blc;
2210 +       unsigned int agc;
2211 +       unsigned int awb;
2212 +       unsigned int aec;
2213 +       /* extention SENSOR version 2 */
2214 +       unsigned int cie_profile;
2215 +
2216 +       /* extention SENSOR version 3 */
2217 +       unsigned int flicker_freq;
2218 +
2219 +       /* extension SENSOR version 4 */
2220 +       unsigned int smia_mode;
2221 +       unsigned int mipi_mode;
2222 +
2223 +       /* Add name here to load shared library */
2224 +       unsigned int type;
2225 +       char name[32];
2226 +
2227 +       struct v4l2_subdev sd;
2228 +};
2229 +
2230 +#define SENSOR_CAP_BUSWIDTH         0
2231 +#define SENSOR_CAP_MODE             1
2232 +#define SENSOR_CAP_FIELDINV         2
2233 +#define SENSOR_CAP_FIELDSEL         3
2234 +#define SENSOR_CAP_YCSEQ            4
2235 +#define SENSOR_CAP_CONV422          5
2236 +#define SENSOR_CAP_BPAT             6
2237 +#define SENSOR_CAP_HPOL             7
2238 +#define SENSOR_CAP_VPOL             8
2239 +#define SENSOR_CAP_EDGE             9
2240 +#define SENSOR_CAP_BLS             10
2241 +#define SENSOR_CAP_GAMMA           11
2242 +#define SENSOR_CAP_CCONF           12
2243 +#define SENSOR_CAP_RES             13
2244 +#define SENSOR_CAP_DWNSZ           14
2245 +#define SENSOR_CAP_BLC             15
2246 +#define SENSOR_CAP_AGC             16
2247 +#define SENSOR_CAP_AWB             17
2248 +#define SENSOR_CAP_AEC             18
2249 +#define SENSOR_CAP_CIEPROFILE      19
2250 +#define SENSOR_CAP_FLICKERFREQ     20
2251 +#define SENSOR_CAP_SMIAMODE        21
2252 +#define SENSOR_CAP_MIPIMODE        22
2253 +#define SENSOR_CAP_AECMODE         23
2254 +
2255 +
2256 +/* size of capabilities array (in number of unsigned int fields) */
2257 +#define SENSOR_CAP_COUNT           24
2258 +
2259 +/*
2260 + * Sensor configuration struct: same layout as the capabilities struct, but to
2261 + * configure the sensor all struct members which are supported by the sensor
2262 + * must have only 1 bit set. Members which are not supported by the sensor
2263 + * must not have any bits set.
2264 + */
2265 +#define ci_sensor_config       ci_sensor_caps
2266 +
2267 +/* single parameter support */
2268 +
2269 +/* exposure time */
2270 +#define SENSOR_PARM_EXPOSURE      0
2271 +/* index in the AE control table */
2272 +#define SENSOR_PARM_EXPTBL_INDEX  1
2273 +
2274 +/* gain */
2275 +/* overall gain (all components) */
2276 +#define SENSOR_PARM_GAIN          2
2277 +/* component gain of the red pixels */
2278 +#define SENSOR_PARM_CGAIN_R       3
2279 +/* component gain of the green pixels */
2280 +#define SENSOR_PARM_CGAIN_G       4
2281 +/* component gain of the blue pixels */
2282 +#define SENSOR_PARM_CGAIN_B       5
2283 +/*
2284 + * component gain of the green pixels sharing a bayer line with the red ones
2285 + */
2286 +#define SENSOR_PARM_CGAINB_GR     6
2287 +/*
2288 + * component gain of the green pixels sharing a bayer line with the blue ones
2289 + */
2290 +#define SENSOR_PARM_CGAINB_GB     7
2291 +
2292 +/* blacklevel */
2293 +
2294 +/* black-level adjustment (all components) */
2295 +#define SENSOR_PARM_BLKL          8
2296 +/* component black-level of the red pixels */
2297 +#define SENSOR_PARM_CBLKL_R       9
2298 +/* component black-level of the green pixels */
2299 +#define SENSOR_PARM_CBLKL_G      10
2300 +/* component black-level of the blue pixels */
2301 +#define SENSOR_PARM_CBLKL_B      11
2302 +/*
2303 + * component black-level of the green pixels sharing a bayer line with the red
2304 + * ones
2305 + */
2306 +#define SENSOR_PARM_CBLKLB_GR    12
2307 +/*
2308 + * component black-level of the green pixels sharing a bayer line with the
2309 + * blue ones
2310 + */
2311 +#define SENSOR_PARM_CBLKLB_GB    13
2312 +
2313 +/* resolution & cropping */
2314 +
2315 +/* base resolution in pixel (X) */
2316 +#define SENSOR_PARM_BASERES_X    14
2317 +/* base resolution in pixel (Y) */
2318 +#define SENSOR_PARM_BASERES_Y    15
2319 +/* window top-left pixel (X) */
2320 +#define SENSOR_PARM_WINDOW_X     16
2321 +/* window top-left pixel (Y) */
2322 +#define SENSOR_PARM_WINDOW_Y     17
2323 +/* window width in pixel */
2324 +#define SENSOR_PARM_WINDOW_W     18
2325 +/* window height in pixel */
2326 +#define SENSOR_PARM_WINDOW_H     19
2327 +
2328 +/* frame rate / clock */
2329 +
2330 +/*
2331 + * frame rate in frames per second, fixed point format, 16 bit fractional part
2332 + */
2333 +#define SENSOR_PARM_FRAMERATE_FPS    20
2334 +/* frame rate fine adjustment */
2335 +#define SENSOR_PARM_FRAMERATE_PITCH  21
2336 +/* clock divider setting */
2337 +#define SENSOR_PARM_CLK_DIVIDER      22
2338 +/* input clock in Hz. */
2339 +#define SENSOR_PARM_CLK_INPUT        23
2340 +/*
2341 + * output (pixel-) clock in Hz. Note that for e.g. YUV422-formats, 2 pixel
2342 + * clock cycles are needed per pixel
2343 + */
2344 +#define SENSOR_PARM_CLK_PIXEL        24
2345 +
2346 +/* number of parameter IDs */
2347 +
2348 +#define SENSOR_PARM__COUNT       25
2349 +
2350 +/* bit description of the result of the IsiParmInfo routine */
2351 +
2352 +/* parameter can be retrieved from the sensor */
2353 +#define SENSOR_PARMINFO_GET       0x00000001
2354 +/* parameter can be set into the sensor */
2355 +#define SENSOR_PARMINFO_SET       0x00000002
2356 +/* parameter can change at any time during operation */
2357 +#define SENSOR_PARMINFO_VOLATILE  0x00000004
2358 +/* range information available for the parameter in question */
2359 +#define SENSOR_PARMINFO_RANGE     0x00000008
2360 +/* range of possible values is not continous. */
2361 +#define SENSOR_PARMINFO_DISCRETE  0x00000010
2362 +/* parameter may change after a configuration update. */
2363 +#define SENSOR_PARMINFO_CONFIG    0x00000020
2364 +/* range information may change after a configuration update. */
2365 +#define SENSOR_PARMINFO_RCONFIG   0x00000040
2366 +
2367 +/* multi-camera support */
2368 +#define SENSOR_UNKNOWN_SENSOR_ID       (0)
2369 +
2370 +/* structure / type definitions */
2371 +/*
2372 + * Input gamma correction curve for R, G or B of the sensor.  Since this gamma
2373 + * curve is sensor specific, it will be deliveres by the sensors specific code.
2374 + * This curve will be programmed into Marvin registers.
2375 + */
2376 +#define SENSOR_GAMMA_CURVE_ARR_SIZE (17)
2377 +
2378 +struct ci_sensor_gamma_curve{
2379 +       unsigned short isp_gamma_y[SENSOR_GAMMA_CURVE_ARR_SIZE];
2380 +
2381 +       /* if three curves are given separately for RGB */
2382 +       unsigned int gamma_dx0;
2383 +
2384 +       /* only the struct for R holds valid DX values */
2385 +       unsigned int gamma_dx1;
2386 +};
2387 +
2388 +/*
2389 + * SENSOR fixed point constant values They are represented as signed fixed point
2390 + * numbers with 12 bit integer and 20 bit fractional part, thus ranging from
2391 + * -2048.0000000 (0x80000000) to +2047.9999990 (0x7FFFFFFF).  In the following
2392 + *  some frequently used constant values are defined.
2393 + */
2394 +/* -   0.794944 */
2395 +#define SENSOR_FP_M0000_794944     (0xFFF347E9)
2396 +/* -   0.500000 */
2397 +#define SENSOR_FP_M0000_500000     (0xFFF80000)
2398 +/* -   0.404473 */
2399 +#define SENSOR_FP_M0000_404473     (0xFFF98748)
2400 +/* -   0.062227 */
2401 +#define SENSOR_FP_M0000_062227     (0xFFFF011F)
2402 +/* -   0.024891 */
2403 +#define SENSOR_FP_M0000_024891     (0xFFFF9A0C)
2404 +
2405 +/* 0.000000 */
2406 +#define SENSOR_FP_P0000_000000     (0x00000000)
2407 +
2408 +/* +   0.500000 */
2409 +#define SENSOR_FP_P0000_500000     (0x00080000)
2410 +/* +   1.000000 */
2411 +#define SENSOR_FP_P0001_000000     (0x00100000)
2412 +/* +   1.163636 */
2413 +#define SENSOR_FP_P0001_163636     (0x00129E40)
2414 +/* +   1.600778 */
2415 +#define SENSOR_FP_P0001_600778     (0x00199CC9)
2416 +/* +   1.991249 */
2417 +#define SENSOR_FP_P0001_991249     (0x001FDC27)
2418 +/* +  16.000000 */
2419 +#define SENSOR_FP_P0016_000000     (0x01000000)
2420 +/* + 128.000000 */
2421 +#define SENSOR_FP_P0128_000000     (0x08000000)
2422 +/* + 255.000000 */
2423 +#define SENSOR_FP_P0255_000000     (0x0FF00000)
2424 +/* + 256.000000 */
2425 +#define SENSOR_FP_P0256_000000     (0x10000000)
2426 +
2427 +/*
2428 + * Matrix coefficients used for CrossTalk and/or color conversion. The 9
2429 + * coefficients are laid out as follows (zero based index):
2430 + *    0 | 1 | 2
2431 + *    3 | 4 | 5
2432 + *    6 | 7 | 8
2433 + * They are represented as signed fixed point numbers with 12 bit integer and
2434 + * 20 bit fractional part, thus ranging from -2048.0000000 (0x80000000) to
2435 + * +2047.9999990 (0x7FFFFFFF).
2436 + */
2437 +struct ci_sensor_3x3_matrix{
2438 +       int coeff[9];
2439 +};
2440 +
2441 +/*
2442 + * Matrix coefficients used for CrossTalk and/or color conversion. The 9
2443 + * coefficients are laid out as follows (zero based index):
2444 + *    0 | 1 | 2
2445 + *    3 | 4 | 5
2446 + *    6 | 7 | 8
2447 + * They are represented as float numbers
2448 + */
2449 +struct ci_sensor_3x3_float_matrix{
2450 +       float coeff[9];
2451 +};
2452 +
2453 +struct ci_sensor_3x1_float_matrix{
2454 +       float coeff[3];
2455 +};
2456 +
2457 +struct ci_sensor_4x1_float_matrix{
2458 +       float coeff[4];
2459 +};
2460 +
2461 +struct ci_sensor_3x2_float_matrix{
2462 +       float coeff[6];
2463 +};
2464 +
2465 +struct ci_sensor_2x1_float_matrix{
2466 +       float coeff[2];
2467 +};
2468 +
2469 +struct ci_sensor_2x2_float_matrix{
2470 +       float coeff[4];
2471 +};
2472 +
2473 +struct ci_sensor_1x1_float_matrix{
2474 +       float coeff[1];
2475 +};
2476 +
2477 +struct ci_sensor_gauss_factor{
2478 +       float gauss_factor;
2479 +};
2480 +
2481 +struct isp_pca_values{
2482 +       float pcac1;
2483 +       float pcac2;
2484 +};
2485 +
2486 +/*
2487 + * CrossTalk offset. In addition to the matrix multiplication an offset can be
2488 + * added to the pixel values for R, G and B separately. This offset is applied
2489 + * after the matrix multiplication. The values are arranged as unified, see
2490 + * above.
2491 + */
2492 +struct ci_sensor_xtalk_offset{
2493 +       int ct_offset_red;
2494 +       int ct_offset_green;
2495 +       int ct_offset_blue;
2496 +};
2497 +
2498 +struct ci_sensor_xtalk_float_offset{
2499 +       float ct_offset_red;
2500 +       float ct_offset_green;
2501 +       float ct_offset_blue;
2502 +};
2503 +
2504 +/*
2505 + * white balancing gains There are two green gains: One for the green Bayer
2506 + * patterns in the red and one for the blue line. In the case the used MARVIN
2507 + * derivative is not able to apply separate green gains the mean value of both
2508 + * greens will be used for the green gain.  The component gains are represented
2509 + * as signed fixed point numbers with 12 bit integer and 20 bit fractional
2510 + * part, thus ranging from -2048.0000000 (0x80000000) to +2047.9999990
2511 + * (0x7FFFFFFF).  Example: +1.0 is represented by 0x00100000.
2512 + */
2513 +struct ci_sensor_component_gain{
2514 +       float red;
2515 +       float green_r;
2516 +       float green_b;
2517 +       float blue;
2518 +};
2519 +
2520 +/*
2521 + * white balance values, default is 0x80 for all components.  The struct can be
2522 + * used to provide linear scaling factors to achive a suitable white balance
2523 + * for certain lightning conditions.
2524 + */
2525 +struct ci_sensor_comp_gain{
2526 +       float red;
2527 +       float green;
2528 +       float blue;
2529 +};
2530 +
2531 +/*
2532 + * cross-talk matrix dependent minimum / maximum red and blue gains
2533 + */
2534 +struct ci_sensor_component_gain_limits{
2535 +       unsigned short red_lower_limit;
2536 +       unsigned short red_upper_limit;
2537 +       unsigned short blue_lower_limit;
2538 +       unsigned short blue_upper_limit;
2539 +       unsigned int next_cie_higher_temp;
2540 +       unsigned int next_cie_lower_temp;
2541 +};
2542 +
2543 +/*
2544 +* sensor characteristic struct. Is filled in by sensor specific code after
2545 +* main configuration. Features not supported by the sensor driver code
2546 +* will be initialized with default values (1x linear gamma, standard
2547 +* color conversion, cross talk and component gain settings).
2548 +*/
2549 +struct ci_sensor_awb_profile{
2550 +
2551 +       /*
2552 +        * In the case that all 3 gamma curves are identically, just
2553 +        * set all 3 pointers to the same address.
2554 +        */
2555 +
2556 +       /* input gammaR */
2557 +       const struct ci_sensor_gamma_curve *gamma_curve_r;
2558 +
2559 +       /* input gammaG */
2560 +       const struct ci_sensor_gamma_curve *gamma_curve_g;
2561 +
2562 +       /* input gammaB */
2563 +       const struct ci_sensor_gamma_curve *gamma_curve_b;
2564 +
2565 +       /* ColorConversion  matrix coefficients */
2566 +       const struct ci_sensor_3x3_float_matrix *color_conv_coeff;
2567 +
2568 +       /* CrossTalk matrix coefficients */
2569 +       const struct ci_sensor_3x3_float_matrix *cross_talk_coeff;
2570 +
2571 +       /* CrossTalk offsets */
2572 +       const struct ci_sensor_xtalk_float_offset *cross_talk_offset;
2573 +       const struct ci_sensor_3x1_float_matrix *svd_mean_value;
2574 +       const struct ci_sensor_3x2_float_matrix *pca_matrix;
2575 +       const struct ci_sensor_2x1_float_matrix *gauss_mean_value;
2576 +       const struct ci_sensor_2x2_float_matrix *covariance_matrix;
2577 +       const struct ci_sensor_gauss_factor *gauss_factor;
2578 +       const struct ci_sensor_2x1_float_matrix *threshold;
2579 +       const struct ci_sensor_1x1_float_matrix *k_factor;
2580 +       const struct ci_sensor_1x1_float_matrix *gexp_middle;
2581 +       const struct ci_sensor_1x1_float_matrix *var_distr_in;
2582 +       const struct ci_sensor_1x1_float_matrix *mean_distr_in;
2583 +       const struct ci_sensor_1x1_float_matrix *var_distr_out;
2584 +       const struct ci_sensor_1x1_float_matrix *mean_distr_out;
2585 +       const struct ci_sensor_component_gain *component_gain;
2586 +       const struct ci_sensor_loc_dist *loc_dist;
2587 +
2588 +};
2589 +
2590 +/*
2591 + *  General purpose window.  Normally it is used to describe a WOI (Window Of
2592 + *  Interest) inside the background area (e.g. image data area). The offset
2593 + *  values count from 0 of the background area. The defined point is the upper
2594 + *  left corner of the WOI with the specified width and height.
2595 + */
2596 +struct ci_sensor_window{
2597 +       unsigned short hoffs;
2598 +       unsigned short voffs;
2599 +       unsigned short hsize;
2600 +       unsigned short vsize;
2601 +};
2602 +
2603 +/*
2604 + *  Image data description.  The frame size describes the complete image data
2605 + *  area output of the sensor.  This includes dummy, black, dark, visible and
2606 + *  manufacturer specific pixels which could be combined in rows and / or in
2607 + *  columns.  The visible window describes the visible pixel area inside the
2608 + *  image data area. In the case the image data area does only contain visible
2609 + *  pixels, the offset values have to be 0 and the horizontal and vertical
2610 + *  sizes are equal to the frame size.
2611 + */
2612 +struct ci_sensor_image_data_info{
2613 +       unsigned short frame_h_size;
2614 +       unsigned short frame_v_size;
2615 +       struct ci_sensor_window visible_window;
2616 +};
2617 +
2618 +/* black level compensation mean values */
2619 +struct ci_sensor_blc_mean{
2620 +       unsigned char mean_a;
2621 +       unsigned char mean_b;
2622 +       unsigned char mean_c;
2623 +       unsigned char mean_d;
2624 +};
2625 +
2626 +/* autowhitebalance mean values */
2627 +
2628 +struct ci_sensor_awb_mean{
2629 +#if 0
2630 +       unsigned int white;
2631 +       unsigned char mean_y;
2632 +       unsigned char mean_cb;
2633 +       unsigned char mean_cr;
2634 +#else
2635 +       unsigned int white;
2636 +       unsigned char mean_Y__G;
2637 +       unsigned char mean_cb__B;
2638 +       unsigned char mean_cr__R;
2639 +#endif
2640 +};
2641 +
2642 +/* autowhitebalance mean values */
2643 +
2644 +struct ci_sensor_awb_float_mean{
2645 +       unsigned int white;
2646 +       float mean_y;
2647 +       float mean_cb;
2648 +       float mean_cr;
2649 +};
2650 +
2651 +/* autoexposure mean values */
2652 +
2653 +struct ci_sensor_aec_mean{
2654 +       unsigned char occ;
2655 +       unsigned char mean;
2656 +       unsigned char max;
2657 +       unsigned char min;
2658 +};
2659 +
2660 +/* bad pixel element attribute */
2661 +
2662 +enum ci_sensor_bp_corr_attr{
2663 +
2664 +       /* hot pixel */
2665 +       SENSOR_BP_HOT,
2666 +
2667 +       /* dead pixel */
2668 +       SENSOR_BP_DEAD
2669 +};
2670 +
2671 +/* table element */
2672 +
2673 +struct ci_sensor_bp_table_elem{
2674 +
2675 +       /* Bad Pixel vertical address */
2676 +       unsigned short bp_ver_addr;
2677 +
2678 +       /* Bad Pixel horizontal address */
2679 +       unsigned short bp_hor_addr;
2680 +
2681 +       /* Bad pixel type (dead or hot) */
2682 +       enum ci_sensor_bp_corr_attr bp_type;
2683 +};
2684 +
2685 +/* Bad Pixel table */
2686 +
2687 +struct ci_sensor_bp_table{
2688 +
2689 +       /* Number of detected bad pixel */
2690 +       unsigned int bp_number;
2691 +
2692 +       /* Pointer to BP Table */
2693 +       struct ci_sensor_bp_table_elem *bp_table_elem;
2694 +
2695 +       /* Number of Table elements */
2696 +       unsigned int bp_table_elem_num;
2697 +};
2698 +
2699 +#define        SENSOR_CTRL_TYPE_INTEGER        1
2700 +#define        SENSOR_CTRL_TYPE_BOOLEAN        2
2701 +#define        SENSOR_CTRL_TYPE_MENU           3
2702 +#define        SENSOR_CTRL_TYPE_BUTTON         4
2703 +#define        SENSOR_CTRL_TYPE_INTEGER64      5
2704 +#define        SENSOR_CTRL_TYPE_CTRL_CLASS     6
2705 +
2706 +#define SENSOR_CTRL_CLASS_USER 0x00980000
2707 +#define SENSOR_CID_BASE                        (SENSOR_CTRL_CLASS_USER | 0x900)
2708 +#define SENSOR_CID_USER_BASE           SENSOR_CID_BASE
2709 +/*  IDs reserved for driver specific controls */
2710 +#define SENSOR_CID_PRIVATE_BASE                0x08000000
2711 +
2712 +#define SENSOR_CID_USER_CLASS          (SENSOR_CTRL_CLASS_USER | 1)
2713 +#define SENSOR_CID_BRIGHTNESS          (SENSOR_CID_BASE+0)
2714 +#define SENSOR_CID_CONTRAST            (SENSOR_CID_BASE+1)
2715 +#define SENSOR_CID_SATURATION          (SENSOR_CID_BASE+2)
2716 +#define SENSOR_CID_HUE                 (SENSOR_CID_BASE+3)
2717 +#define SENSOR_CID_AUDIO_VOLUME                (SENSOR_CID_BASE+5)
2718 +#define SENSOR_CID_AUDIO_BALANCE       (SENSOR_CID_BASE+6)
2719 +#define SENSOR_CID_AUDIO_BASS          (SENSOR_CID_BASE+7)
2720 +#define SENSOR_CID_AUDIO_TREBLE                (SENSOR_CID_BASE+8)
2721 +#define SENSOR_CID_AUDIO_MUTE          (SENSOR_CID_BASE+9)
2722 +#define SENSOR_CID_AUDIO_LOUDNESS      (SENSOR_CID_BASE+10)
2723 +#define SENSOR_CID_BLACK_LEVEL         (SENSOR_CID_BASE+11)
2724 +#define SENSOR_CID_AUTO_WHITE_BALANCE  (SENSOR_CID_BASE+12)
2725 +#define SENSOR_CID_DO_WHITE_BALANCE    (SENSOR_CID_BASE+13)
2726 +#define SENSOR_CID_RED_BALANCE         (SENSOR_CID_BASE+14)
2727 +#define SENSOR_CID_BLUE_BALANCE                (SENSOR_CID_BASE+15)
2728 +#define SENSOR_CID_GAMMA               (SENSOR_CID_BASE+16)
2729 +#define SENSOR_CID_WHITENESS           (SENSOR_CID_GAMMA)
2730 +#define SENSOR_CID_EXPOSURE            (SENSOR_CID_BASE+17)
2731 +#define SENSOR_CID_AUTOGAIN            (SENSOR_CID_BASE+18)
2732 +#define SENSOR_CID_GAIN                        (SENSOR_CID_BASE+19)
2733 +#define SENSOR_CID_HFLIP               (SENSOR_CID_BASE+20)
2734 +#define SENSOR_CID_VFLIP               (SENSOR_CID_BASE+21)
2735 +#define SENSOR_CID_HCENTER             (SENSOR_CID_BASE+22)
2736 +#define SENSOR_CID_VCENTER             (SENSOR_CID_BASE+23)
2737 +#define SENSOR_CID_LASTP1              (SENSOR_CID_BASE+24)
2738 +
2739 +struct ci_sensor_parm{
2740 +       unsigned int index;
2741 +       int value;
2742 +       int max;
2743 +       int min;
2744 +       int info;
2745 +       int type;
2746 +       char name[32];
2747 +       int step;
2748 +       int def_value;
2749 +       int flags;
2750 +};
2751 +
2752 +#define MRV_GRAD_TBL_SIZE      8
2753 +#define MRV_DATA_TBL_SIZE      289
2754 +struct ci_sensor_ls_corr_config{
2755 +       /*  correction values of R color part */
2756 +       unsigned short ls_rdata_tbl[MRV_DATA_TBL_SIZE];
2757 +       /*  correction values of G color part */
2758 +       unsigned short ls_gdata_tbl[MRV_DATA_TBL_SIZE];
2759 +       /*  correction values of B color part */
2760 +       unsigned short ls_bdata_tbl[MRV_DATA_TBL_SIZE];
2761 +       /*  multiplication factors of x direction */
2762 +       unsigned short ls_xgrad_tbl[MRV_GRAD_TBL_SIZE];
2763 +       /*  multiplication factors of y direction */
2764 +       unsigned short ls_ygrad_tbl[MRV_GRAD_TBL_SIZE];
2765 +       /* sector sizes of x direction */
2766 +       unsigned short ls_xsize_tbl[MRV_GRAD_TBL_SIZE];
2767 +       /*  sector sizes of y direction */
2768 +       unsigned short ls_ysize_tbl[MRV_GRAD_TBL_SIZE];
2769 +};
2770 +
2771 +struct ci_sensor_reg{
2772 +       unsigned int addr;
2773 +       unsigned int value;
2774 +};
2775 +
2776 +struct ci_sensor_loc_dist{
2777 +       float pca1_low_temp;
2778 +       float pca1_high_temp;
2779 +       float locus_distance;
2780 +       float a2;
2781 +       float a1;
2782 +       float a0;
2783 +};
2784 +
2785 +static inline int ci_sensor_res2size(unsigned int res, unsigned short *h_size,
2786 +                      unsigned short *v_size)
2787 +{
2788 +       unsigned short hsize;
2789 +       unsigned short vsize;
2790 +       int err = 0;
2791 +
2792 +       switch (res) {
2793 +       case SENSOR_RES_QQCIF:
2794 +               hsize = QQCIF_SIZE_H;
2795 +               vsize = QQCIF_SIZE_V;
2796 +               break;
2797 +       case SENSOR_RES_QQVGA:
2798 +               hsize = QQVGA_SIZE_H;
2799 +               vsize = QQVGA_SIZE_V;
2800 +               break;
2801 +       case SENSOR_RES_QCIF:
2802 +               hsize = QCIF_SIZE_H;
2803 +               vsize = QCIF_SIZE_V;
2804 +               break;
2805 +       case SENSOR_RES_QVGA:
2806 +               hsize = QVGA_SIZE_H;
2807 +               vsize = QVGA_SIZE_V;
2808 +               break;
2809 +       case SENSOR_RES_CIF:
2810 +               hsize = CIF_SIZE_H;
2811 +               vsize = CIF_SIZE_V;
2812 +               break;
2813 +       case SENSOR_RES_VGA:
2814 +               hsize = VGA_SIZE_H;
2815 +               vsize = VGA_SIZE_V;
2816 +               break;
2817 +       case SENSOR_RES_SVGA:
2818 +               hsize = SVGA_SIZE_H;
2819 +               vsize = SVGA_SIZE_V;
2820 +               break;
2821 +       case SENSOR_RES_XGA:
2822 +               hsize = XGA_SIZE_H;
2823 +               vsize = XGA_SIZE_V;
2824 +               break;
2825 +       case SENSOR_RES_XGA_PLUS:
2826 +               hsize = XGA_PLUS_SIZE_H;
2827 +               vsize = XGA_PLUS_SIZE_V;
2828 +               break;
2829 +       case SENSOR_RES_SXGA:
2830 +               hsize = SXGA_SIZE_H;
2831 +               vsize = SXGA_SIZE_V;
2832 +               break;
2833 +       case SENSOR_RES_UXGA:
2834 +               hsize = UXGA_SIZE_H;
2835 +               vsize = UXGA_SIZE_V;
2836 +               break;
2837 +       case SENSOR_RES_QXGA:
2838 +               hsize = QXGA_SIZE_H;
2839 +               vsize = QXGA_SIZE_V;
2840 +               break;
2841 +       case SENSOR_RES_QSXGA:
2842 +               hsize = QSXGA_SIZE_H;
2843 +               vsize = QSXGA_SIZE_V;
2844 +               break;
2845 +       case SENSOR_RES_QSXGA_PLUS:
2846 +               hsize = QSXGA_PLUS_SIZE_H;
2847 +               vsize = QSXGA_PLUS_SIZE_V;
2848 +               break;
2849 +       case SENSOR_RES_QSXGA_PLUS2:
2850 +               hsize = QSXGA_PLUS2_SIZE_H;
2851 +               vsize = QSXGA_PLUS2_SIZE_V;
2852 +               break;
2853 +       case SENSOR_RES_QSXGA_PLUS3:
2854 +               hsize = QSXGA_PLUS3_SIZE_H;
2855 +               vsize = QSXGA_PLUS3_SIZE_V;
2856 +               break;
2857 +       case SENSOR_RES_WQSXGA:
2858 +               hsize = WQSXGA_SIZE_H;
2859 +               vsize = WQSXGA_SIZE_V;
2860 +               break;
2861 +       case SENSOR_RES_QUXGA:
2862 +               hsize = QUXGA_SIZE_H;
2863 +               vsize = QUXGA_SIZE_V;
2864 +               break;
2865 +       case SENSOR_RES_WQUXGA:
2866 +               hsize = WQUXGA_SIZE_H;
2867 +               vsize = WQUXGA_SIZE_V;
2868 +               break;
2869 +       case SENSOR_RES_HXGA:
2870 +               hsize = HXGA_SIZE_H;
2871 +               vsize = HXGA_SIZE_V;
2872 +               break;
2873 +       case SENSOR_RES_RAWMAX:
2874 +               hsize = RAWMAX_SIZE_H;
2875 +               vsize = RAWMAX_SIZE_V;
2876 +               break;
2877 +       case SENSOR_RES_YUV_HMAX:
2878 +               hsize = YUV_HMAX_SIZE_H;
2879 +               vsize = YUV_HMAX_SIZE_V;
2880 +               break;
2881 +       case SENSOR_RES_YUV_VMAX:
2882 +               hsize = YUV_VMAX_SIZE_H;
2883 +               vsize = YUV_VMAX_SIZE_V;
2884 +               break;
2885 +       case SENSOR_RES_BP1:
2886 +               hsize = BP1_SIZE_H;
2887 +               vsize = BP1_SIZE_V;
2888 +               break;
2889 +       case SENSOR_RES_L_AFM:
2890 +               hsize = L_AFM_SIZE_H;
2891 +               vsize = L_AFM_SIZE_V;
2892 +               break;
2893 +       case SENSOR_RES_M_AFM:
2894 +               hsize = M_AFM_SIZE_H;
2895 +               vsize = M_AFM_SIZE_V;
2896 +               break;
2897 +       case SENSOR_RES_S_AFM:
2898 +               hsize = S_AFM_SIZE_H;
2899 +               vsize = S_AFM_SIZE_V;
2900 +               break;
2901 +
2902 +       case SENSOR_RES_QXGA_PLUS:
2903 +               hsize = QXGA_PLUS_SIZE_H;
2904 +               vsize = QXGA_PLUS_SIZE_V;
2905 +               break;
2906 +
2907 +       case SENSOR_RES_1080P:
2908 +               hsize = RES_1080P_SIZE_H;
2909 +               vsize = 1080;
2910 +               break;
2911 +
2912 +       case SENSOR_RES_720P:
2913 +               hsize = RES_720P_SIZE_H;
2914 +               vsize = RES_720P_SIZE_V;
2915 +               break;
2916 +
2917 +       case SENSOR_RES_VGA_PLUS:
2918 +               hsize = VGA_PLUS_SIZE_H;
2919 +               vsize = VGA_PLUS_SIZE_V;
2920 +               break;
2921 +
2922 +       default:
2923 +               hsize = 0;
2924 +               vsize = 0;
2925 +               err = -1;
2926 +               printk(KERN_ERR "ci_sensor_res2size: Resolution 0x%08x"
2927 +                      "unknown\n", res);
2928 +               break;
2929 +       }
2930 +
2931 +       if (h_size != NULL)
2932 +               *h_size = hsize;
2933 +       if (v_size != NULL)
2934 +               *v_size = vsize;
2935 +
2936 +       return err;
2937 +}
2938 +#endif
2939 --- /dev/null
2940 +++ b/drivers/media/video/mrstci/include/ci_va.h
2941 @@ -0,0 +1,42 @@
2942 +/*
2943 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
2944 + *
2945 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
2946 + *
2947 + * Copyright (c) Silicon Image 2008  www.siliconimage.com
2948 + *
2949 + * This program is free software; you can redistribute it and/or
2950 + * modify it under the terms of the GNU General Public License version
2951 + * 2 as published by the Free Software Foundation.
2952 + *
2953 + * This program is distributed in the hope that it will be useful,
2954 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
2955 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2956 + * GNU General Public License for more details.
2957 + *
2958 + * You should have received a copy of the GNU General Public License
2959 + * along with this program; if not, write to the Free Software
2960 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
2961 + * 02110-1301, USA.
2962 + *
2963 + *
2964 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
2965 + */
2966 +
2967 +/* for buffer sharing between CI and VA */
2968 +#ifndef _CI_VA_H
2969 +#define _CI_VA_H
2970 +
2971 +struct ci_frame_info {
2972 +       unsigned long frame_id; /* in */
2973 +       unsigned int width; /* out */
2974 +       unsigned int height; /* out */
2975 +       unsigned int stride; /* out */
2976 +       unsigned int fourcc; /* out */
2977 +       unsigned int offset; /* out */
2978 +};
2979 +
2980 +#define ISP_IOCTL_GET_FRAME_INFO _IOWR('V', 192 + 5, struct ci_frame_info)
2981 +
2982 +#endif
2983 +
2984 --- /dev/null
2985 +++ b/drivers/media/video/mrstci/include/v4l2_jpg_review.h
2986 @@ -0,0 +1,48 @@
2987 +/*
2988 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
2989 + *
2990 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
2991 + *
2992 + * This program is free software; you can redistribute it and/or
2993 + * modify it under the terms of the GNU General Public License version
2994 + * 2 as published by the Free Software Foundation.
2995 + *
2996 + * This program is distributed in the hope that it will be useful,
2997 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
2998 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2999 + * GNU General Public License for more details.
3000 + *
3001 + * You should have received a copy of the GNU General Public License
3002 + * along with this program; if not, write to the Free Software
3003 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
3004 + * 02110-1301, USA.
3005 + *
3006 + *
3007 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
3008 + */
3009 +
3010 +#ifndef        __V4L2_JPG_REVIEW_EXT_H
3011 +#define        __V4L2_JPG_REVIEW_EXT_H
3012 +
3013 +#include <linux/videodev2.h>
3014 +
3015 +/*
3016 + * Moorestown JPG image auto review structure and IOCTL.
3017 + */
3018 +struct v4l2_jpg_review_buffer{
3019 +       __u32   width;          /* in: frame width */
3020 +       __u32   height;         /* in: frame height */
3021 +       __u32   pix_fmt;        /* in: frame fourcc */
3022 +       __u32   jpg_frame;      /* in: corresponding jpg frame id */
3023 +       __u32   bytesperline;   /* out: 0 if not used */
3024 +       __u32   frame_size;     /* out: frame size */
3025 +       __u32   offset;         /* out: mmap offset */
3026 +};
3027 +
3028 +#define        BASE_VIDIOC_PRIVATE_JPG_REVIEW  (BASE_VIDIOC_PRIVATE + 10)
3029 +
3030 +#define        VIDIOC_CREATE_JPG_REVIEW_BUF    _IOWR('V', \
3031 +               BASE_VIDIOC_PRIVATE_JPG_REVIEW + 1, \
3032 +               struct v4l2_jpg_review_buffer)
3033 +
3034 +#endif
3035 --- /dev/null
3036 +++ b/drivers/media/video/mrstci/mrstisp/include/def.h
3037 @@ -0,0 +1,122 @@
3038 +/*
3039 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
3040 + *
3041 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
3042 + *
3043 + * Copyright (c) Silicon Image 2008  www.siliconimage.com
3044 + *
3045 + * This program is free software; you can redistribute it and/or
3046 + * modify it under the terms of the GNU General Public License version
3047 + * 2 as published by the Free Software Foundation.
3048 + *
3049 + * This program is distributed in the hope that it will be useful,
3050 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
3051 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3052 + * GNU General Public License for more details.
3053 + *
3054 + * You should have received a copy of the GNU General Public License
3055 + * along with this program; if not, write to the Free Software
3056 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
3057 + * 02110-1301, USA.
3058 + *
3059 + *
3060 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
3061 + */
3062 +
3063 +#ifndef _DEF_H
3064 +#define _DEF_H
3065 +
3066 +#include <linux/stddef.h>
3067 +
3068 +#ifndef ON
3069 +/* all bits to '1' but prevent "shift overflow" warning */
3070 +#define ON   -1
3071 +#endif
3072 +#ifndef OFF
3073 +#define OFF  0
3074 +#endif
3075 +
3076 +#ifndef ENABLE
3077 +/* all bits to '1' but prevent "shift overflow" warning */
3078 +#define ENABLE   -1
3079 +#endif
3080 +#ifndef DISABLE
3081 +#define DISABLE  0
3082 +#endif
3083 +
3084 +/* this is crop flag, to enable crop, define it to be 1*/
3085 +#define crop_flag 0
3086 +
3087 +/* this has to be 0, if clauses rely on it */
3088 +#define CI_STATUS_SUCCESS         0
3089 +/* general failure */
3090 +#define CI_STATUS_FAILURE         1
3091 +/* feature not supported */
3092 +#define CI_STATUS_NOTSUPP         2
3093 +/* there's already something going on... */
3094 +#define CI_STATUS_BUSY            3
3095 +/* operation canceled */
3096 +#define CI_STATUS_CANCELED        4
3097 +/* out of memory */
3098 +#define CI_STATUS_OUTOFMEM        5
3099 +/* parameter/value out of range */
3100 +#define CI_STATUS_OUTOFRANGE      6
3101 +/* feature/subsystem is in idle state */
3102 +#define CI_STATUS_IDLE            7
3103 +/* handle is wrong */
3104 +#define CI_STATUS_WRONG_HANDLE    8
3105 +/* the/one/all parameter(s) is a(are) NULL pointer(s) */
3106 +#define CI_STATUS_NULL_POINTER    9
3107 +/* profile not available */
3108 +#define CI_STATUS_NOTAVAILABLE    10
3109 +
3110 +#ifndef UNUSED_PARAM
3111 +#define UNUSED_PARAM(x)   ((x) = (x))
3112 +#endif
3113 +
3114 +/* to avoid Lint warnings, use it within const context */
3115 +
3116 +#ifndef UNUSED_PARAM1
3117 +#define UNUSED_PARAM1(x)
3118 +#endif
3119 +
3120 +/*
3121 + * documentation keywords for pointer arguments, to tell the direction of the
3122 + * passing
3123 + */
3124 +
3125 +#ifndef OUT
3126 +/* pointer content is expected to be filled by called function */
3127 +#define OUT
3128 +#endif
3129 +#ifndef IN
3130 +/* pointer content contains parameters from the caller */
3131 +#define IN
3132 +#endif
3133 +#ifndef INOUT
3134 +/* content is expected to be read and changed */
3135 +#define INOUT
3136 +#endif
3137 +
3138 +/* some useful macros */
3139 +
3140 +#ifndef MIN
3141 +#define MIN(x, y)            ((x) < (y) ? (x) : (y))
3142 +#endif
3143 +
3144 +#ifndef MAX
3145 +#define MAX(x, y)            ((x) > (y) ? (x) : (y))
3146 +#endif
3147 +
3148 +#ifndef ABS
3149 +#define ABS(val)            ((val) < 0 ? -(val) : (val))
3150 +#endif
3151 +
3152 +/*
3153 + * converts a term to a string (two macros are required, never use _VAL2STR()
3154 + * directly)
3155 + */
3156 +#define _VAL2STR(x) #x
3157 +#define VAL2STR(x) _VAL2STR(x)
3158 +
3159 +#endif
3160 --- /dev/null
3161 +++ b/drivers/media/video/mrstci/mrstisp/include/mrstisp.h
3162 @@ -0,0 +1,279 @@
3163 +/*
3164 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
3165 + *
3166 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
3167 + *
3168 + * This program is free software; you can redistribute it and/or
3169 + * modify it under the terms of the GNU General Public License version
3170 + * 2 as published by the Free Software Foundation.
3171 + *
3172 + * This program is distributed in the hope that it will be useful,
3173 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
3174 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3175 + * GNU General Public License for more details.
3176 + *
3177 + * You should have received a copy of the GNU General Public License
3178 + * along with this program; if not, write to the Free Software
3179 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
3180 + * 02110-1301, USA.
3181 + *
3182 + *
3183 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
3184 + */
3185 +
3186 +#ifndef _MRSTISP_H
3187 +#define _MRSTISP_H
3188 +
3189 +#define INTEL_MAJ_VER   0
3190 +#define INTEL_MIN_VER   5
3191 +#define INTEL_PATCH_VER  0
3192 +#define DRIVER_NAME "lnw isp"
3193 +#define VID_HARDWARE_INTEL     100
3194 +
3195 +#define INTEL_VERSION(a, b, c) (((a) << 16) + ((b) << 8) + (c))
3196 +
3197 +#define MRST_ISP_REG_MEMORY_MAP 0xFF0E0000
3198 +
3199 +/* self path maximum width/height, VGA */
3200 +#define INTEL_MAX_WIDTH  640
3201 +#define INTEL_MAX_HEIGHT 480
3202 +
3203 +#define INTEL_MIN_WIDTH  32
3204 +#define INTEL_MIN_HEIGHT 16
3205 +
3206 +/* main path maximum widh/height, 5M */
3207 +#define INTEL_MAX_WIDTH_MP 2600
3208 +#define INTEL_MAX_HEIGHT_MP 2048
3209 +
3210 +/* image size returned by the driver */
3211 +#define INTEL_IMAGE_WIDTH  640
3212 +#define INTEL_IMAGE_HEIGHT 480
3213 +
3214 +/* Default capture queue buffers. */
3215 +#define INTEL_CAPTURE_BUFFERS 3
3216 +
3217 +/* Default capture buffer size.  */
3218 +#define INTEL_CAPTURE_BUFSIZE PAGE_ALIGN(INTEL_MAX_WIDTH * INTEL_MAX_HEIGHT * 2)
3219 +#define INTEL_IMAGE_BUFSIEZE (INTEL_IMAGE_WIDTH * INTEL_IMAGE_HEIGHT * 2)
3220 +
3221 +#define MAX_KMALLOC_MEM (4*1024*1024)
3222 +
3223 +#define MEM_SNAPSHOT_MAX_SIZE (1*1024*1024)
3224 +
3225 +#include <media/v4l2-device.h>
3226 +
3227 +enum frame_state {
3228 +       S_UNUSED = 0,   /* unused */
3229 +       S_QUEUED,       /* ready to capture */
3230 +       S_GRABBING,     /* in the process of being captured */
3231 +       S_DONE,         /* finished grabbing, but not been synced yet */
3232 +       S_ERROR,        /* something bad happened while capturing */
3233 +};
3234 +
3235 +struct frame_info {
3236 +       enum frame_state state;
3237 +       u32 flags;
3238 +};
3239 +
3240 +struct fifo {
3241 +       int front;
3242 +       int back;
3243 +       int data[INTEL_CAPTURE_BUFFERS + 1];
3244 +       struct frame_info info[INTEL_CAPTURE_BUFFERS + 1];
3245 +};
3246 +
3247 +enum mrst_isp_state {
3248 +       S_NOTREADY,     /* Not yet initialized */
3249 +       S_IDLE,         /* Just hanging around */
3250 +       S_FLAKED,       /* Some sort of problem */
3251 +       S_STREAMING     /* Streaming data */
3252 +};
3253 +
3254 +struct mrst_isp_buffer {
3255 +       struct videobuf_buffer vb;
3256 +       int fmt_useless;
3257 +};
3258 +
3259 +struct mrst_isp_device {
3260 +       struct v4l2_device v4l2_dev;
3261 +       /* v4l2 device handler */
3262 +       struct video_device *vdev;
3263 +
3264 +       /* locks this structure */
3265 +       struct mutex mutex;
3266 +
3267 +       /* if the port is open or not */
3268 +       int open;
3269 +
3270 +       /* pci information */
3271 +       struct pci_dev *pci_dev;
3272 +       unsigned long mb0;
3273 +       unsigned long mb0_size;
3274 +       unsigned char *regs;
3275 +       unsigned long mb1;
3276 +       unsigned long mb1_size;
3277 +       unsigned char *mb1_va;
3278 +       unsigned short vendorID;
3279 +       unsigned short deviceID;
3280 +       unsigned char revision;
3281 +
3282 +       /* subdev */
3283 +       struct v4l2_subdev *sensor_soc;
3284 +       int sensor_soc_index;
3285 +       struct v4l2_subdev *sensor_raw;
3286 +       int sensor_raw_index;
3287 +       struct v4l2_subdev *sensor_curr;
3288 +       struct v4l2_subdev *motor;
3289 +       struct v4l2_subdev *flash;
3290 +       struct i2c_adapter *adapter_sensor;
3291 +       struct i2c_adapter *adapter_flash;
3292 +
3293 +       int streaming;
3294 +       int buffer_required;
3295 +
3296 +       /* interrupt */
3297 +       unsigned char int_enable;
3298 +       unsigned long int_flag;
3299 +       unsigned long interrupt_count;
3300 +
3301 +       /* frame management */
3302 +
3303 +       /* allocated memory for km_mmap */
3304 +       char *fbuffer;
3305 +
3306 +       /* virtual address of cap buf */
3307 +       char *capbuf;
3308 +
3309 +       /* physcial address of cap buf */
3310 +       u32 capbuf_pa;
3311 +
3312 +       struct fifo frame_queue;
3313 +
3314 +       /* current capture frame number */
3315 +       int cap_frame;
3316 +       /* total frames */
3317 +       int num_frames;
3318 +
3319 +       u32 field_count;
3320 +       u32 pixelformat;
3321 +       u16 depth;
3322 +       u32 bufwidth;
3323 +       u32 bufheight;
3324 +       u32 frame_size;
3325 +       u32 frame_size_used;
3326 +
3327 +
3328 +       enum mrst_isp_state state;
3329 +
3330 +       /* active mappings*/
3331 +       int vmas;
3332 +
3333 +       /* isp system configuration */
3334 +       struct ci_pl_system_config sys_conf;
3335 +
3336 +       struct completion jpe_complete;
3337 +       struct completion mi_complete;
3338 +       int irq_stat;
3339 +
3340 +       spinlock_t lock;
3341 +       spinlock_t qlock;
3342 +       struct videobuf_buffer *active;
3343 +       struct videobuf_buffer *next;
3344 +       struct list_head capture;
3345 +       u32 streambufs;
3346 +       u32 stopbuf;
3347 +       u32 stopflag;
3348 +};
3349 +
3350 +struct mrst_isp_fh {
3351 +       struct mrst_isp_device *dev;
3352 +       struct videobuf_queue vb_q;
3353 +       u32 qbuf_flag;
3354 +};
3355 +
3356 +/* viewfinder mode mask */
3357 +#define VFFLAG_MODE_MASK           0x0000000F
3358 +/*
3359 + * play on complete LCD, but do not use upscaler
3360 + * or small camera resolutions, the picture will be
3361 + * played in the upper left corner)
3362 + */
3363 +#define VFFLAG_MODE_FULLLCD_DSONLY  0x00000000
3364 +/* display on complete LCD, use upscaler if necessary */
3365 +#define VFFLAG_MODE_FULLLCD_USDS    0x00000001
3366 +/* display full camera picture with black borders on top and bottom */
3367 +#define VFFLAG_MODE_LETTERBOX       0x00000002
3368 +/* use the values given by the user (x, y, w, h, keep_aspect) */
3369 +#define VFFLAG_MODE_USER            0x00000003
3370 +/* hardware RGB conversion */
3371 +#define VFFLAG_HWRGB                0x00000010
3372 +/* horizontal mirror */
3373 +#define VFFLAG_MIRROR               0x00000020
3374 +/* use the main path for viewfinding too. */
3375 +#define VFFLAG_USE_MAINPATH         0x00000040
3376 +/* vertical flipping (mirror) (MARVIN_FEATURE_MI_V3) */
3377 +#define VFFLAG_V_FLIP               0x00000100
3378 +/* rotation 90 degree counterclockwise (left) (MARVIN_FEATURE_MI_V3) */
3379 +#define VFFLAG_ROT90_CCW            0x00000200
3380 +
3381 +/* abbreviations for local debug control ( level | module ) */
3382 +#define DERR  (DBG_ERR  | DBG_MRV)
3383 +#define DWARN (DBG_WARN | DBG_MRV)
3384 +#define DINFO (DBG_INFO | DBG_MRV)
3385 +
3386 +struct ci_isp_rect {
3387 +       /* zero based x coordinate of the upper left edge of the
3388 +        * rectangle (in pixels)
3389 +        */
3390 +       int x;
3391 +       /* zero based y coordinate of the upper left edge of the
3392 +        * rectangle (in pixels)
3393 +        */
3394 +       int y;
3395 +       /* width of the rectangle in pixels */
3396 +       int w;
3397 +       /* height of the rectangle in pixels */
3398 +       int h;
3399 +};
3400 +
3401 +/* the address/size of one region */
3402 +struct ci_frame_region {
3403 +       unsigned char *phy_addr;
3404 +       unsigned int size;
3405 +};
3406 +
3407 +struct ci_frame_addr {
3408 +       /*
3409 +        * how many regions of the frame, a region is
3410 +        * pages with contiguous physical address
3411 +        */
3412 +       int num_of_regs;
3413 +       struct ci_frame_region *regs;
3414 +};
3415 +
3416 +/* type in mrst_camer*/
3417 +#define MRST_CAMERA_NONE       -1
3418 +#define MRST_CAMERA_SOC        0
3419 +#define MRST_CAMERA_RAW        1
3420 +
3421 +struct mrst_camera {
3422 +       int type;
3423 +       char *name;
3424 +       u8 sensor_addr;
3425 +       char *motor_name;
3426 +       u8 motor_addr;
3427 +};
3428 +
3429 +#define MRST_I2C_BUS_FLASH 0
3430 +#define MRST_I2C_BUS_SENSOR 1
3431 +
3432 +long mrst_isp_vidioc_default(struct file *file, void *fh,
3433 +                            int cmd, void *arg);
3434 +
3435 +void mrst_timer_start(void);
3436 +
3437 +void mrst_timer_stop(void);
3438 +
3439 +unsigned long mrst_get_micro_sec(void);
3440 +
3441 +#endif
3442 --- /dev/null
3443 +++ b/drivers/media/video/mrstci/mrstisp/include/mrstisp_dp.h
3444 @@ -0,0 +1,317 @@
3445 +/*
3446 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
3447 + *
3448 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
3449 + *
3450 + * Copyright (c) Silicon Image 2008  www.siliconimage.com
3451 + *
3452 + * This program is free software; you can redistribute it and/or
3453 + * modify it under the terms of the GNU General Public License version
3454 + * 2 as published by the Free Software Foundation.
3455 + *
3456 + * This program is distributed in the hope that it will be useful,
3457 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
3458 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3459 + * GNU General Public License for more details.
3460 + *
3461 + * You should have received a copy of the GNU General Public License
3462 + * along with this program; if not, write to the Free Software
3463 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
3464 + * 02110-1301, USA.
3465 + *
3466 + *
3467 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
3468 + */
3469 +
3470 +
3471 +#ifndef _MRV_SLS_H
3472 +#define _MRV_SLS_H
3473 +
3474 +/*
3475 + * simplified datapath and output formatter/resizer adjustment
3476 + * can be used to setup the main and self datapathes in a convenient way.
3477 + */
3478 +
3479 +/* data path descriptor */
3480 +struct ci_isp_datapath_desc {
3481 +       /* width of output picture (after scaling) in pixels */
3482 +       u16 out_w;
3483 +       /* height of output picture (after scaling) in pixels */
3484 +       u16 out_h;
3485 +       /* how to configure the datapath. An or'ed combination of the */
3486 +       u32 flags;
3487 +       /* MRV_DPD_xxx defines */
3488 +};
3489 +
3490 +/*
3491 + * possible Frags for the Datapath descriptor general features
3492 + */
3493 +
3494 +/* disables the datapath */
3495 +#define CI_ISP_DPD_DISABLE         0x00000000
3496 +/* enables the datapath in general */
3497 +#define CI_ISP_DPD_ENABLE          0x00000001
3498 +/*
3499 + * the out_w and out_h members will be ignored.  and the
3500 + * resize module of the datapath is switched off. Note that
3501 + * the resize module is also needed for croma subsampling
3502 + */
3503 +#define CI_ISP_DPD_NORESIZE        0x00000002
3504 +/*
3505 + * The input picture from ISP is being cropped to match the
3506 + * aspect ratio of the desired output. If this flag is not
3507 + * set, different scaling factors for X and Y axis
3508 + * may be used.
3509 + */
3510 +#define CI_ISP_DPD_KEEPRATIO       0x00000004
3511 +/* mirror the output picture (only applicable for self path) data path mode */
3512 +#define CI_ISP_DPD_MIRROR          0x00000008
3513 +/* mode mask (3 bits) */
3514 +#define CI_ISP_DPD_MODE_MASK          0x00000070
3515 +/* 16(12) bit raw data from ISP block (only applicable for main path) */
3516 +#define CI_ISP_DPD_MODE_ISPRAW_16B     0x00000000
3517 +/* separated Y, Cb and Cr data from ISP block */
3518 +#define CI_ISP_DPD_MODE_ISPYC          0x00000010
3519 +/* raw data from ISP block (only applicable for main path) */
3520 +#define CI_ISP_DPD_MODE_ISPRAW         0x00000020
3521 +/* Jpeg encoding with data from ISP block (only applicable for main path) */
3522 +#define CI_ISP_DPD_MODE_ISPJPEG        0x00000030
3523 +/*
3524 + * YCbCr data from system memory directly routed to the main/self
3525 + * path (DMA-read, only applicable for self path)
3526 + */
3527 +#define CI_ISP_DPD_MODE_DMAYC_DIRECT   0x00000040
3528 +/*
3529 + * YCbCr data from system memory routed through the main processing
3530 + * chain substituting ISP data (DMA-read)
3531 + */
3532 +#define CI_ISP_DPD_MODE_DMAYC_ISP      0x00000050
3533 +/*
3534 + * YCbCr data from system memory directly routed to the jpeg encoder
3535 + * (DMA-read, R2B-bufferless encoding, only applicable for main path)
3536 + */
3537 +#define CI_ISP_DPD_MODE_DMAJPEG_DIRECT 0x00000060
3538 +/*
3539 + * Jpeg encoding with YCbCr data from system memory routed through the
3540 + * main processing chain substituting ISP data (DMA-read, only applicable
3541 + * for main path) top blackline support
3542 + */
3543 +#define CI_ISP_DPD_MODE_DMAJPEG_ISP    0x00000070
3544 +
3545 +/*
3546 + * If set, blacklines at the top of the sensor are
3547 + * shown in the output (if there are any). Note that this
3548 + * will move the window of interest out of the center
3549 + * to the upper border, so especially at configurations
3550 + * with digital zoom, the field of sight is not centered
3551 + * on the optical axis anymore. If the sensor does not deliver
3552 + * blacklines, setting this bit has no effect.
3553 + * additional chroma subsampling (CSS) amount and sample position
3554 + */
3555 +#define CI_ISP_DPD_BLACKLINES_TOP  0x00000080
3556 +/* horizontal subsampling */
3557 +#define CI_ISP_DPD_CSS_H_MASK     0x00000700
3558 +/* no horizontal subsampling */
3559 +#define CI_ISP_DPD_CSS_H_OFF       0x00000000
3560 +/* horizontal subsampling by 2 */
3561 +#define CI_ISP_DPD_CSS_H2          0x00000100
3562 +/* horizontal subsampling by 4 */
3563 +#define CI_ISP_DPD_CSS_H4          0x00000200
3564 +/* 2 times horizontal upsampling */
3565 +#define CI_ISP_DPD_CSS_HUP2        0x00000500
3566 +/* 4 times horizontal upsampling */
3567 +#define CI_ISP_DPD_CSS_HUP4        0x00000600
3568 +/* vertical subsampling */
3569 +#define CI_ISP_DPD_CSS_V_MASK     0x00003800
3570 +/* no vertical subsampling */
3571 +#define CI_ISP_DPD_CSS_V_OFF       0x00000000
3572 +/* vertical subsampling by 2 */
3573 +#define CI_ISP_DPD_CSS_V2          0x00000800
3574 +/* vertical subsampling by 4 */
3575 +#define CI_ISP_DPD_CSS_V4          0x00001000
3576 +/* 2 times vertical upsampling */
3577 +#define CI_ISP_DPD_CSS_VUP2        0x00002800
3578 +/* 4 times vertical upsampling */
3579 +#define CI_ISP_DPD_CSS_VUP4        0x00003000
3580 +/* apply horizontal chroma phase shift by half the sample distance */
3581 +#define CI_ISP_DPD_CSS_HSHIFT      0x00004000
3582 +/* apply vertical chroma phase shift by half the sample distance */
3583 +#define CI_ISP_DPD_CSS_VSHIFT      0x00008000
3584 +
3585 +/*
3586 + * Hardware RGB conversion (currly, only supported for self path)
3587 + * output mode mask (3 bits, not all combination used yet)
3588 + */
3589 +#define CI_ISP_DPD_HWRGB_MASK     0x00070000
3590 +/* no rgb conversion */
3591 +#define CI_ISP_DPD_HWRGB_OFF       0x00000000
3592 +/* conversion to RGB565 */
3593 +#define CI_ISP_DPD_HWRGB_565       0x00010000
3594 +/* conversion to RGB666 */
3595 +#define CI_ISP_DPD_HWRGB_666       0x00020000
3596 +/* conversion to RGB888 */
3597 +#define CI_ISP_DPD_HWRGB_888       0x00030000
3598 +
3599 +#define CI_ISP_DPD_YUV_420     0x00040000
3600 +#define CI_ISP_DPD_YUV_422     0x00050000
3601 +#define CI_ISP_DPD_YUV_NV12    0x00060000
3602 +#define CI_ISP_DPD_YUV_YUYV    0x00070000
3603 +/*
3604 + * DMA-read feature input format. (depends on chip derivative if
3605 + * supported for both pathes, self or not at all)
3606 + */
3607 +
3608 +/* input mode mask (2 bits) */
3609 +#define CI_ISP_DPD_DMA_IN_MASK    0x00180000
3610 +/* input is YCbCr 422 */
3611 +#define CI_ISP_DPD_DMA_IN_422      0x00000000
3612 +/* input is YCbCr 444 */
3613 +#define CI_ISP_DPD_DMA_IN_444      0x00080000
3614 +/* input is YCbCr 420 */
3615 +#define CI_ISP_DPD_DMA_IN_420      0x00100000
3616 +/* input is YCbCr 411 */
3617 +#define CI_ISP_DPD_DMA_IN_411      0x00180000
3618 +
3619 +/*
3620 + * Upscaling interpolation mode (tells how newly created pixels
3621 + * will be interpolated from the existing ones)
3622 + * Upscaling interpolation mode mask (2 bits, not all combinations
3623 + * used yet)
3624 + */
3625 +#define CI_ISP_DPD_UPSCALE_MASK       0x00600000
3626 +/* smooth edges, linear interpolation */
3627 +#define CI_ISP_DPD_UPSCALE_SMOOTH_LIN  0x00000000
3628 +/*
3629 + * sharp edges, no interpolation, just duplicate pixels, creates
3630 + * the typical 'blocky' effect.
3631 + */
3632 +#define CI_ISP_DPD_UPSCALE_SHARP       0x00200000
3633 +
3634 +/*
3635 + * additional luminance phase shift
3636 + * apply horizontal luminance phase shift by half the sample distance
3637 + */
3638 +#define CI_ISP_DPD_LUMA_HSHIFT     0x00800000
3639 +/* apply vertical luminance phase shift by half the sample distance */
3640 +#define CI_ISP_DPD_LUMA_VSHIFT     0x01000000
3641 +
3642 +/*
3643 + * picture flipping and rotation
3644 + * Note that when combining the flags, the rotation is applied first.
3645 + * This enables to configure all 8 possible orientations
3646 + */
3647 +
3648 +/* horizontal flipping - same as mirroring */
3649 +#define CI_ISP_DPD_H_FLIP          CI_ISP_DPD_MIRROR
3650 +/* vertical flipping */
3651 +#define CI_ISP_DPD_V_FLIP          0x02000000
3652 +/* rotation 90 degrees counter-clockwise */
3653 +#define CI_ISP_DPD_90DEG_CCW       0x04000000
3654 +
3655 +/*
3656 + * switch to differentiate between full range of values for YCbCr (0-255)
3657 + * and restricted range (16-235 for Y) (16-240 for CbCr)'
3658 + * if set leads to unrestricted range (0-255) for YCbCr
3659 + * package length of a system interface transfer
3660 + */
3661 +#define CI_ISP_DPD_YCBCREXT        0x10000000
3662 +/* burst mask (2 bits) */
3663 +#define CI_ISP_DPD_BURST_MASK      0x60000000
3664 +/* AHB 4 beat burst */
3665 +#define CI_ISP_DPD_BURST_4          0x00000000
3666 +/* AHB 8 beat burst */
3667 +#define CI_ISP_DPD_BURST_8          0x20000000
3668 +/* AHB 16 beat burst */
3669 +#define CI_ISP_DPD_BURST_16         0x40000000
3670 +
3671 +/* configures main and self datapathes and scaler for data coming from the
3672 + * ISP */
3673 +
3674 +
3675 +int ci_datapath_isp(const struct ci_pl_system_config *sys_conf,
3676 +                   const struct ci_sensor_config *isi_config,
3677 +                   const struct ci_isp_datapath_desc *main,
3678 +                   const struct ci_isp_datapath_desc *self, int zoom);
3679 +
3680 +
3681 +/*
3682 + * Coordinate transformations: The pixel data coming from the sensor passes
3683 + * through the ISP output formatter where they may be cropped and through
3684 + * the main path scaler where they may be stretched and/or squeezed. Thus,
3685 + * the coordinate systems of input and output are different, but somewhat
3686 + * related. Further, we can do digital zoom, which adds a third coordinate
3687 + * system: the virtual input (e.g. a cropped sensor frame zoomed in to the
3688 + * full sensor frame size. Following routines are intended to transform
3689 + * pixel resp. window positions from one coordinate systen to another.
3690 + * Folloin coordinate systems exist: Cam  : original frame coming from the
3691 + * camera VCam : virtual camera; a system in which a cropped original
3692 + * camera frame is up-scaled to the camera frame size. If no digital zoom
3693 + * is to be done, Cam and VCam are identical.  Main : output of main path
3694 + * Self : output of self path
3695 + */
3696 +/* coordinate transformation from (real) camera coordinate system to main
3697 + * path output */
3698 +int ci_transform_cam2_main(
3699 +       const struct ci_isp_window *wnd_in,
3700 +       struct ci_isp_window *wnd_out
3701 +);
3702 +/* coordinate transformation from (real) camera coordinate system to self
3703 + * path output */
3704 +int ci_transform_cam2_self(
3705 +       const struct ci_isp_window *wnd_in,
3706 +       struct ci_isp_window *wnd_out
3707 +);
3708 +/* coordinate transformation from virtual camera to real camera coordinate
3709 + * system */
3710 +void ci_transform_vcam2_cam(
3711 +       const struct ci_sensor_config *isi_sensor_config,
3712 +       const struct ci_isp_window *wnd_in,
3713 +       struct ci_isp_window *wnd_out
3714 +);
3715 +
3716 +/*
3717 + * Still image snapshot support
3718 + * The routine re-configures the main path for taking the snapshot. On
3719 + * successful return, the snapshot has been stored in the given memory
3720 + * location. Note that the settings of MARVIN will not be restored.
3721 + */
3722 +
3723 +/*
3724 + * take the desired snapshot. The type of snapshot (YUV, RAW or JPEG) is
3725 + * determined by the datapath selection bits in ci_isp_datapath_desc::flags.
3726 + * Note that the MARVIN configuration may be changed but will not be
3727 + * restored after the snapshot.
3728 + */
3729 +int ci_do_snapshot(
3730 +       const struct ci_sensor_config *isi_sensor_config,
3731 +       const struct ci_isp_datapath_desc *main,
3732 +       int zoom,
3733 +       u8 jpeg_compression,
3734 +       struct ci_isp_mi_path_conf *isp_mi_path_conf
3735 +);
3736 +
3737 +
3738 +/* Initialization of the Bad Pixel Detection and Correction */
3739 +int ci_bp_init(
3740 +       const struct ci_isp_bp_corr_config *bp_corr_config,
3741 +       const struct ci_isp_bp_det_config *bp_det_config
3742 +);
3743 +/* Bad Pixel Correction */
3744 +int ci_bp_correction(void);
3745 +/* Disable Bad Pixel Correction and dectection */
3746 +int ci_bp_end(const struct ci_isp_bp_corr_config *bp_corr_config);
3747 +
3748 +/* Capture a whole JPEG snapshot */
3749 +u32 ci_jpe_capture(struct mrst_isp_device *intel,
3750 +                  enum ci_isp_conf_update_time update_time);
3751 +int ci_jpe_encode(struct mrst_isp_device *intel,
3752 +                 enum ci_isp_conf_update_time update_time,
3753 +                 enum ci_isp_jpe_enc_mode mrv_jpe_encMode);
3754 +/* Encode motion JPEG */
3755 +int ci_isp_jpe_enc_motion(enum ci_isp_jpe_enc_mode jpe_enc_mode,
3756 +                          u16 frames_num, u32 *byte_count);
3757 +
3758 +void ci_isp_set_yc_mode(void);
3759 +
3760 +/* _MRV_SLS_H */
3761 +#endif
3762 --- /dev/null
3763 +++ b/drivers/media/video/mrstci/mrstisp/include/mrstisp_hw.h
3764 @@ -0,0 +1,245 @@
3765 +/*
3766 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
3767 + *
3768 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
3769 + *
3770 + * Copyright (c) Silicon Image 2008  www.siliconimage.com
3771 + *
3772 + * This program is free software; you can redistribute it and/or
3773 + * modify it under the terms of the GNU General Public License version
3774 + * 2 as published by the Free Software Foundation.
3775 + *
3776 + * This program is distributed in the hope that it will be useful,
3777 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
3778 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3779 + * GNU General Public License for more details.
3780 + *
3781 + * You should have received a copy of the GNU General Public License
3782 + * along with this program; if not, write to the Free Software
3783 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
3784 + * 02110-1301, USA.
3785 + *
3786 + *
3787 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
3788 + */
3789 +
3790 +
3791 +#ifndef _MRV_H
3792 +#define _MRV_H
3793 +
3794 +/* move structure definination to ci_isp_common.h */
3795 +#include "ci_isp_common.h"
3796 +
3797 +/*
3798 + * FUNCTIONS
3799 + */
3800 +
3801 +/* sensor struct related functions */
3802 +int ci_isp_bp_write_table(
3803 +       const struct ci_sensor_bp_table *bp_table
3804 +);
3805 +
3806 +int ci_isp_bp_read_table(struct ci_sensor_bp_table *bp_table);
3807 +
3808 +enum ci_isp_path ci_isp_select_path(
3809 +       const struct ci_sensor_config *isi_cfg,
3810 +       u8 *words_per_pixel
3811 +);
3812 +
3813 +int ci_isp_set_input_aquisition(
3814 +       const struct ci_sensor_config *isi_cfg
3815 +);
3816 +
3817 +void ci_isp_set_gamma(
3818 +       const struct ci_sensor_gamma_curve *r,
3819 +       const struct ci_sensor_gamma_curve *g,
3820 +       const struct ci_sensor_gamma_curve *b
3821 +);
3822 +
3823 +int ci_isp_get_wb_meas(struct ci_sensor_awb_mean *awb_mean);
3824 +
3825 +int ci_isp_set_bp_correction(
3826 +       const struct ci_isp_bp_corr_config *bp_corr_config
3827 +);
3828 +
3829 +int ci_isp_set_bp_detection(
3830 +       const struct ci_isp_bp_det_config *bp_det_config
3831 +);
3832 +
3833 +
3834 +int ci_isp_clear_bp_int(void);
3835 +
3836 +u32 ci_isp_get_frame_end_irq_mask_dma(void);
3837 +
3838 +u32 ci_isp_get_frame_end_irq_mask_isp(void);
3839 +int ci_isp_wait_for_frame_end(struct mrst_isp_device *intel);
3840 +
3841 +void ci_isp_set_output_formatter(
3842 +       const struct ci_isp_window *window,
3843 +       enum ci_isp_conf_update_time update_time
3844 +);
3845 +
3846 +int ci_isp_is_set_config(const struct ci_isp_is_config *is_config);
3847 +
3848 +int ci_isp_set_data_path(
3849 +       enum ci_isp_ycs_chn_mode ycs_chn_mode,
3850 +       enum ci_isp_dp_switch dp_switch
3851 +);
3852 +
3853 +void ci_isp_res_set_main_resize(const struct ci_isp_scale *scale,
3854 +       enum ci_isp_conf_update_time update_time,
3855 +       const struct ci_isp_rsz_lut *rsz_lut
3856 +);
3857 +
3858 +void ci_isp_res_get_main_resize(struct ci_isp_scale *scale);
3859 +
3860 +void ci_isp_res_set_self_resize(const struct ci_isp_scale *scale,
3861 +       enum ci_isp_conf_update_time update_time,
3862 +       const struct ci_isp_rsz_lut *rsz_lut
3863 +);
3864 +
3865 +void ci_isp_res_get_self_resize(struct ci_isp_scale *scale);
3866 +
3867 +int ci_isp_mif_set_main_buffer(
3868 +       const struct ci_isp_mi_path_conf *mrv_mi_path_conf,
3869 +       enum ci_isp_conf_update_time update_time
3870 +);
3871 +
3872 +int ci_isp_mif_set_self_buffer(
3873 +       const struct ci_isp_mi_path_conf *mrv_mi_path_conf,
3874 +       enum ci_isp_conf_update_time update_time
3875 +);
3876 +
3877 +int ci_isp_mif_set_dma_buffer(
3878 +       const struct ci_isp_mi_path_conf *mrv_mi_path_conf
3879 +);
3880 +
3881 +void ci_isp_mif_disable_all_paths(int perform_wait_for_frame_end);
3882 +
3883 +int ci_isp_mif_get_main_buffer(
3884 +       struct ci_isp_mi_path_conf *mrv_mi_path_conf
3885 +);
3886 +
3887 +int ci_isp_mif_get_self_buffer(
3888 +       struct ci_isp_mi_path_conf *mrv_mi_path_conf
3889 +);
3890 +
3891 +int ci_isp_mif_set_path_and_orientation(
3892 +       const struct ci_isp_mi_ctrl *mrv_mi_ctrl
3893 +);
3894 +
3895 +int ci_isp_mif_get_path_and_orientation(
3896 +       struct ci_isp_mi_ctrl *mrv_mi_ctrl
3897 +);
3898 +
3899 +int ci_isp_mif_set_configuration(
3900 +       const struct ci_isp_mi_ctrl *mrv_mi_ctrl,
3901 +       const struct ci_isp_mi_path_conf *mrv_mi_mp_path_conf,
3902 +       const struct ci_isp_mi_path_conf *mrv_mi_sp_path_conf,
3903 +       const struct ci_isp_mi_dma_conf *mrv_mi_dma_conf
3904 +);
3905 +
3906 +int ci_isp_mif_set_dma_config(
3907 +       const struct ci_isp_mi_dma_conf *mrv_mi_dma_conf
3908 +);
3909 +
3910 +int ci_isp_mif_get_pixel_per32_bit_of_line(
3911 +       u8 *pixel_per32_bit,
3912 +       enum ci_isp_mif_col_format mrv_mif_sp_format,
3913 +       enum ci_isp_mif_pic_form mrv_mif_pic_form,
3914 +       int luminance_buffer
3915 +);
3916 +
3917 +void ci_isp_set_ext_ycmode(void);
3918 +
3919 +int ci_isp_set_mipi_smia(u32 mode);
3920 +
3921 +void ci_isp_sml_out_set_path(enum ci_isp_data_path main_path);
3922 +
3923 +void ci_isp_set_dma_read_mode(
3924 +       enum ci_isp_dma_read_mode mode,
3925 +       enum ci_isp_conf_update_time update_time
3926 +);
3927 +
3928 +u32 ci_isp_mif_get_byte_cnt(void);
3929 +
3930 +void ci_isp_start(
3931 +       u16 number_of_frames,
3932 +       enum ci_isp_conf_update_time update_time
3933 +);
3934 +
3935 +int ci_isp_jpe_init_ex(
3936 +       u16 hsize,
3937 +       u16 vsize,
3938 +       u8 compression_ratio,
3939 +       u8 jpe_scale
3940 +);
3941 +
3942 +void ci_isp_reset_interrupt_status(void);
3943 +
3944 +void ci_isp_get_output_formatter(struct ci_isp_window *window);
3945 +
3946 +int ci_isp_set_auto_focus(const struct ci_isp_af_config *af_config);
3947 +
3948 +void ci_isp_get_auto_focus_meas(struct ci_isp_af_meas *af_meas);
3949 +
3950 +int ci_isp_chk_bp_int_stat(void);
3951 +
3952 +int ci_isp_bls_get_measured_values(
3953 +       struct ci_isp_bls_measured *bls_measured
3954 +);
3955 +
3956 +int ci_isp_get_wb_measConfig(
3957 +       struct ci_isp_wb_meas_config *wb_meas_config
3958 +);
3959 +
3960 +void ci_isp_col_set_color_processing(
3961 +       const struct ci_isp_color_settings *col
3962 +);
3963 +
3964 +int ci_isp_ie_set_config(const struct ci_isp_ie_config *ie_config);
3965 +
3966 +int ci_isp_set_ls_correction(struct ci_sensor_ls_corr_config *ls_corr_config);
3967 +
3968 +int ci_isp_ls_correction_on_off(int ls_corr_on_off);
3969 +
3970 +int ci_isp_activate_filter(int activate_filter);
3971 +
3972 +int ci_isp_set_filter_params(u8 noise_reduc_level, u8 sharp_level);
3973 +
3974 +int ci_isp_bls_set_config(const struct ci_isp_bls_config *bls_config);
3975 +
3976 +int ci_isp_set_wb_mode(enum ci_isp_awb_mode wb_mode);
3977 +
3978 +int ci_isp_set_wb_meas_config(
3979 +       const struct ci_isp_wb_meas_config *wb_meas_config
3980 +);
3981 +
3982 +int ci_isp_set_wb_auto_hw_config(
3983 +       const struct ci_isp_wb_auto_hw_config *wb_auto_hw_config
3984 +);
3985 +
3986 +void ci_isp_init(void);
3987 +void ci_isp_off(void);
3988 +
3989 +void ci_isp_stop(enum ci_isp_conf_update_time update_time);
3990 +
3991 +void ci_isp_mif_reset_offsets(enum ci_isp_conf_update_time update_time);
3992 +
3993 +int ci_isp_get_wb_measConfig(
3994 +       struct ci_isp_wb_meas_config *wb_meas_config
3995 +);
3996 +
3997 +void ci_isp_set_gamma2(const struct ci_isp_gamma_out_curve *gamma);
3998 +
3999 +void ci_isp_set_demosaic(
4000 +       enum ci_isp_demosaic_mode demosaic_mode,
4001 +       u8 demosaic_th
4002 +);
4003 +
4004 +void mrst_isp_disable_interrupt(struct mrst_isp_device *isp);
4005 +
4006 +void mrst_isp_enable_interrupt(struct mrst_isp_device *isp);
4007 +
4008 +/* #ifndef _MRV_H */
4009 +#endif
4010 --- /dev/null
4011 +++ b/drivers/media/video/mrstci/mrstisp/include/mrstisp_isp.h
4012 @@ -0,0 +1,42 @@
4013 +/*
4014 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
4015 + *
4016 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
4017 + *
4018 + * Copyright (c) Silicon Image 2008  www.siliconimage.com
4019 + *
4020 + * This program is free software; you can redistribute it and/or
4021 + * modify it under the terms of the GNU General Public License version
4022 + * 2 as published by the Free Software Foundation.
4023 + *
4024 + * This program is distributed in the hope that it will be useful,
4025 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
4026 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4027 + * GNU General Public License for more details.
4028 + *
4029 + * You should have received a copy of the GNU General Public License
4030 + * along with this program; if not, write to the Free Software
4031 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
4032 + * 02110-1301, USA.
4033 + *
4034 + *
4035 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
4036 + */
4037 +#define MRV_MEAN_LUMA_ARR_SIZE_COL 5
4038 +#define MRV_MEAN_LUMA_ARR_SIZE_ROW 5
4039 +#define MRV_MEAN_LUMA_ARR_SIZE     \
4040 +       (MRV_MEAN_LUMA_ARR_SIZE_COL*MRV_MEAN_LUMA_ARR_SIZE_ROW)
4041 +int ci_isp_meas_exposure_initialize_module(void);
4042 +
4043 +int ci_isp_meas_exposure_set_config(const struct ci_isp_window *wnd,
4044 +       const struct ci_isp_exp_ctrl *isp_exp_ctrl);
4045 +int ci_isp_meas_exposure_get_config(struct ci_isp_window *wnd,
4046 +       struct ci_isp_exp_ctrl *isp_exp_ctrl);
4047 +
4048 +int ci_isp_meas_exposure_get_mean_luma_values(
4049 +       struct ci_isp_mean_luma *mrv_mean_luma);
4050 +int ci_isp_meas_exposure_get_mean_luma_by_num(
4051 +       u8 BlockNum, u8 *luma);
4052 +int ci_isp_meas_exposure_get_mean_luma_by_pos(
4053 +       u8 XPos, u8 YPos, u8 *luma);
4054 +int mrst_isp_set_color_conversion_ex(void);
4055 --- /dev/null
4056 +++ b/drivers/media/video/mrstci/mrstisp/include/mrstisp_jpe.h
4057 @@ -0,0 +1,426 @@
4058 +/*
4059 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
4060 + *
4061 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
4062 + *
4063 + * Copyright (c) Silicon Image 2008  www.siliconimage.com
4064 + *
4065 + * This program is free software; you can redistribute it and/or
4066 + * modify it under the terms of the GNU General Public License version
4067 + * 2 as published by the Free Software Foundation.
4068 + *
4069 + * This program is distributed in the hope that it will be useful,
4070 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
4071 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4072 + * GNU General Public License for more details.
4073 + *
4074 + * You should have received a copy of the GNU General Public License
4075 + * along with this program; if not, write to the Free Software
4076 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
4077 + * 02110-1301, USA.
4078 + *
4079 + *
4080 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
4081 + */
4082 +
4083 +#include "mrstisp.h"
4084 +
4085 +/* DC luma table according to ISO/IEC 10918-1 annex K */
4086 +static const u8 ci_isp_dc_luma_table_annex_k[] = {
4087 +       0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01,
4088 +       0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4089 +       0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4090 +       0x08, 0x09, 0x0a, 0x0b
4091 +};
4092 +
4093 +/* DC chroma table according to ISO/IEC 10918-1 annex K */
4094 +static const u8 ci_isp_dc_chroma_table_annex_k[] = {
4095 +       0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
4096 +       0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
4097 +       0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4098 +       0x08, 0x09, 0x0a, 0x0b
4099 +};
4100 +
4101 +/* AC luma table according to ISO/IEC 10918-1 annex K */
4102 +static const u8 ci_isp_ac_luma_table_annex_k[] = {
4103 +       0x00, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03,
4104 +       0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7d,
4105 +       0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
4106 +       0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
4107 +       0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08,
4108 +       0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,
4109 +       0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,
4110 +       0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,
4111 +       0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
4112 +       0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
4113 +       0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
4114 +       0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
4115 +       0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
4116 +       0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
4117 +       0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
4118 +       0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
4119 +       0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
4120 +       0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
4121 +       0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
4122 +       0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,
4123 +       0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
4124 +       0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
4125 +       0xf9, 0xfa
4126 +};
4127 +
4128 +/* AC Chroma table according to ISO/IEC 10918-1 annex K */
4129 +static const u8 ci_isp_ac_chroma_table_annex_k[] = {
4130 +       0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04,
4131 +       0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77,
4132 +       0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21,
4133 +       0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
4134 +       0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
4135 +       0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0,
4136 +       0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34,
4137 +       0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26,
4138 +       0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38,
4139 +       0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
4140 +       0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
4141 +       0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
4142 +       0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
4143 +       0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
4144 +       0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96,
4145 +       0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,
4146 +       0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4,
4147 +       0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3,
4148 +       0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2,
4149 +       0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
4150 +       0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
4151 +       0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
4152 +       0xf9, 0xfa
4153 +};
4154 +
4155 +/* luma quantization table 75% quality setting */
4156 +static const u8 ci_isp_yq_table75_per_cent[] = {
4157 +       0x08, 0x06, 0x06, 0x07, 0x06, 0x05, 0x08, 0x07,
4158 +       0x07, 0x07, 0x09, 0x09, 0x08, 0x0a, 0x0c, 0x14,
4159 +       0x0d, 0x0c, 0x0b, 0x0b, 0x0c, 0x19, 0x12, 0x13,
4160 +       0x0f, 0x14, 0x1d, 0x1a, 0x1f, 0x1e, 0x1d, 0x1a,
4161 +       0x1c, 0x1c, 0x20, 0x24, 0x2e, 0x27, 0x20, 0x22,
4162 +       0x2c, 0x23, 0x1c, 0x1c, 0x28, 0x37, 0x29, 0x2c,
4163 +       0x30, 0x31, 0x34, 0x34, 0x34, 0x1f, 0x27, 0x39,
4164 +       0x3d, 0x38, 0x32, 0x3c, 0x2e, 0x33, 0x34, 0x32
4165 +};
4166 +
4167 +/* chroma quantization table 75% quality setting */
4168 +static const u8 ci_isp_uv_qtable75_per_cent[] = {
4169 +       0x09, 0x09, 0x09, 0x0c, 0x0b, 0x0c, 0x18, 0x0d,
4170 +       0x0d, 0x18, 0x32, 0x21, 0x1c, 0x21, 0x32, 0x32,
4171 +       0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
4172 +       0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
4173 +       0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
4174 +       0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
4175 +       0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
4176 +       0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32
4177 +};
4178 +
4179 +/*
4180 + * luma quantization table very low compression(about factor 2)
4181 + */
4182 +static const u8 ci_isp_yq_table_low_comp1[] = {
4183 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4184 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4185 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4186 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4187 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4188 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4189 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4190 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02
4191 +};
4192 +
4193 +/*
4194 + * chroma quantization table very low compression
4195 + * (about factor 2)
4196 + */
4197 +static const u8 ci_isp_uv_qtable_low_comp1[] = {
4198 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4199 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4200 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4201 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4202 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4203 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4204 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4205 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02
4206 +};
4207 +
4208 +/*
4209 + * The jpg Quantization Tables were parsed by jpeg_parser from
4210 + * jpg images generated by Jasc PaintShopPro.
4211 + *
4212 + */
4213 +
4214 +/* 01% */
4215 +
4216 +/* luma quantization table */
4217 +static const u8 ci_isp_yq_table01_per_cent[] = {
4218 +       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
4219 +       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
4220 +       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
4221 +       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
4222 +       0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01,
4223 +       0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02,
4224 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02,
4225 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02
4226 +};
4227 +
4228 +/* chroma quantization table */
4229 +static const u8 ci_isp_uv_qtable01_per_cent[] = {
4230 +       0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
4231 +       0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02,
4232 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4233 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4234 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4235 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4236 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
4237 +       0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02
4238 +};
4239 +
4240 +/* 20% */
4241 +
4242 +/* luma quantization table */
4243 +static const u8 ci_isp_yq_table20_per_cent[] = {
4244 +       0x06, 0x04, 0x05, 0x06, 0x05, 0x04, 0x06, 0x06,
4245 +       0x05, 0x06, 0x07, 0x07, 0x06, 0x08, 0x0a, 0x10,
4246 +       0x0a, 0x0a, 0x09, 0x09, 0x0a, 0x14, 0x0e, 0x0f,
4247 +       0x0c, 0x10, 0x17, 0x14, 0x18, 0x18, 0x17, 0x14,
4248 +       0x16, 0x16, 0x1a, 0x1d, 0x25, 0x1f, 0x1a, 0x1b,
4249 +       0x23, 0x1c, 0x16, 0x16, 0x20, 0x2c, 0x20, 0x23,
4250 +       0x26, 0x27, 0x29, 0x2a, 0x29, 0x19, 0x1f, 0x2d,
4251 +       0x30, 0x2d, 0x28, 0x30, 0x25, 0x28, 0x29, 0x28
4252 +};
4253 +
4254 +/* chroma quantization table */
4255 +static const u8 ci_isp_uv_qtable20_per_cent[] = {
4256 +       0x07, 0x07, 0x07, 0x0a, 0x08, 0x0a, 0x13, 0x0a,
4257 +       0x0a, 0x13, 0x28, 0x1a, 0x16, 0x1a, 0x28, 0x28,
4258 +       0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
4259 +       0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
4260 +       0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
4261 +       0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
4262 +       0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
4263 +       0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28
4264 +};
4265 +
4266 +/* 30% */
4267 +
4268 +/* luma quantization table */
4269 +static const u8 ci_isp_yq_table30_per_cent[] = {
4270 +       0x0a, 0x07, 0x07, 0x08, 0x07, 0x06, 0x0a, 0x08,
4271 +       0x08, 0x08, 0x0b, 0x0a, 0x0a, 0x0b, 0x0e, 0x18,
4272 +       0x10, 0x0e, 0x0d, 0x0d, 0x0e, 0x1d, 0x15, 0x16,
4273 +       0x11, 0x18, 0x23, 0x1f, 0x25, 0x24, 0x22, 0x1f,
4274 +       0x22, 0x21, 0x26, 0x2b, 0x37, 0x2f, 0x26, 0x29,
4275 +       0x34, 0x29, 0x21, 0x22, 0x30, 0x41, 0x31, 0x34,
4276 +       0x39, 0x3b, 0x3e, 0x3e, 0x3e, 0x25, 0x2e, 0x44,
4277 +       0x49, 0x43, 0x3c, 0x48, 0x37, 0x3d, 0x3e, 0x3b
4278 +};
4279 +
4280 +/* chroma quantization table */
4281 +static const u8 ci_isp_uv_qtable30_per_cent[] = {
4282 +       0x0a, 0x0b, 0x0b, 0x0e, 0x0d, 0x0e, 0x1c, 0x10,
4283 +       0x10, 0x1c, 0x3b, 0x28, 0x22, 0x28, 0x3b, 0x3b,
4284 +       0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
4285 +       0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
4286 +       0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
4287 +       0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
4288 +       0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
4289 +       0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b
4290 +};
4291 +
4292 +
4293 +/* 40% */
4294 +
4295 +/* luma quantization table */
4296 +static const u8 ci_isp_yq_table40_per_cent[] = {
4297 +       0x0d, 0x09, 0x0a, 0x0b, 0x0a, 0x08, 0x0d, 0x0b,
4298 +       0x0a, 0x0b, 0x0e, 0x0e, 0x0d, 0x0f, 0x13, 0x20,
4299 +       0x15, 0x13, 0x12, 0x12, 0x13, 0x27, 0x1c, 0x1e,
4300 +       0x17, 0x20, 0x2e, 0x29, 0x31, 0x30, 0x2e, 0x29,
4301 +       0x2d, 0x2c, 0x33, 0x3a, 0x4a, 0x3e, 0x33, 0x36,
4302 +       0x46, 0x37, 0x2c, 0x2d, 0x40, 0x57, 0x41, 0x46,
4303 +       0x4c, 0x4e, 0x52, 0x53, 0x52, 0x32, 0x3e, 0x5a,
4304 +       0x61, 0x5a, 0x50, 0x60, 0x4a, 0x51, 0x52, 0x4f
4305 +};
4306 +
4307 +/* chroma quantization table */
4308 +static const u8 ci_isp_uv_qtable40_per_cent[] = {
4309 +       0x0e, 0x0e, 0x0e, 0x13, 0x11, 0x13, 0x26, 0x15,
4310 +       0x15, 0x26, 0x4f, 0x35, 0x2d, 0x35, 0x4f, 0x4f,
4311 +       0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f,
4312 +       0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f,
4313 +       0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f,
4314 +       0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f,
4315 +       0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f,
4316 +       0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f
4317 +};
4318 +
4319 +/* 50% */
4320 +
4321 +/* luma quantization table */
4322 +static const u8 ci_isp_yq_table50_per_cent[] = {
4323 +       0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
4324 +       0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
4325 +       0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
4326 +       0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
4327 +       0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
4328 +       0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
4329 +       0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
4330 +       0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63
4331 +};
4332 +
4333 +/* chroma quantization table */
4334 +static const u8 ci_isp_uv_qtable50_per_cent[] = {
4335 +       0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
4336 +       0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
4337 +       0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
4338 +       0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
4339 +       0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
4340 +       0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
4341 +       0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
4342 +       0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63
4343 +};
4344 +
4345 +/* 60% */
4346 +
4347 +/* luma quantization table */
4348 +static const u8 ci_isp_yq_table60_per_cent[] = {
4349 +       0x14, 0x0e, 0x0f, 0x12, 0x0f, 0x0d, 0x14, 0x12,
4350 +       0x10, 0x12, 0x17, 0x15, 0x14, 0x18, 0x1e, 0x32,
4351 +       0x21, 0x1e, 0x1c, 0x1c, 0x1e, 0x3d, 0x2c, 0x2e,
4352 +       0x24, 0x32, 0x49, 0x40, 0x4c, 0x4b, 0x47, 0x40,
4353 +       0x46, 0x45, 0x50, 0x5a, 0x73, 0x62, 0x50, 0x55,
4354 +       0x6d, 0x56, 0x45, 0x46, 0x64, 0x88, 0x65, 0x6d,
4355 +       0x77, 0x7b, 0x81, 0x82, 0x81, 0x4e, 0x60, 0x8d,
4356 +       0x97, 0x8c, 0x7d, 0x96, 0x73, 0x7e, 0x81, 0x7c
4357 +};
4358 +
4359 +/* chroma quantization table */
4360 +static const u8 ci_isp_uv_qtable60_per_cent[] = {
4361 +       0x15, 0x17, 0x17, 0x1e, 0x1a, 0x1e, 0x3b, 0x21,
4362 +       0x21, 0x3b, 0x7c, 0x53, 0x46, 0x53, 0x7c, 0x7c,
4363 +       0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
4364 +       0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
4365 +       0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
4366 +       0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
4367 +       0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
4368 +       0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c
4369 +};
4370 +
4371 +/* 70% */
4372 +
4373 +/* luma quantization table */
4374 +static const u8 ci_isp_yq_table70_per_cent[] = {
4375 +       0x1b, 0x12, 0x14, 0x17, 0x14, 0x11, 0x1b, 0x17,
4376 +       0x16, 0x17, 0x1e, 0x1c, 0x1b, 0x20, 0x28, 0x42,
4377 +       0x2b, 0x28, 0x25, 0x25, 0x28, 0x51, 0x3a, 0x3d,
4378 +       0x30, 0x42, 0x60, 0x55, 0x65, 0x64, 0x5f, 0x55,
4379 +       0x5d, 0x5b, 0x6a, 0x78, 0x99, 0x81, 0x6a, 0x71,
4380 +       0x90, 0x73, 0x5b, 0x5d, 0x85, 0xb5, 0x86, 0x90,
4381 +       0x9e, 0xa3, 0xab, 0xad, 0xab, 0x67, 0x80, 0xbc,
4382 +       0xc9, 0xba, 0xa6, 0xc7, 0x99, 0xa8, 0xab, 0xa4
4383 +};
4384 +
4385 +/* chroma quantization table */
4386 +static const u8 ci_isp_uv_qtable70_per_cent[] = {
4387 +       0x1c, 0x1e, 0x1e, 0x28, 0x23, 0x28, 0x4e, 0x2b,
4388 +       0x2b, 0x4e, 0xa4, 0x6e, 0x5d, 0x6e, 0xa4, 0xa4,
4389 +       0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
4390 +       0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
4391 +       0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
4392 +       0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
4393 +       0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
4394 +       0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4
4395 +};
4396 +
4397 +/* 80% */
4398 +
4399 +/* luma quantization table */
4400 +static const u8 ci_isp_yq_table80_per_cent[] = {
4401 +       0x28, 0x1c, 0x1e, 0x23, 0x1e, 0x19, 0x28, 0x23,
4402 +       0x21, 0x23, 0x2d, 0x2b, 0x28, 0x30, 0x3c, 0x64,
4403 +       0x41, 0x3c, 0x37, 0x37, 0x3c, 0x7b, 0x58, 0x5d,
4404 +       0x49, 0x64, 0x91, 0x80, 0x99, 0x96, 0x8f, 0x80,
4405 +       0x8c, 0x8a, 0xa0, 0xb4, 0xe6, 0xc3, 0xa0, 0xaa,
4406 +       0xda, 0xad, 0x8a, 0x8c, 0xc8, 0xff, 0xcb, 0xda,
4407 +       0xee, 0xf5, 0xff, 0xff, 0xff, 0x9b, 0xc1, 0xff,
4408 +       0xff, 0xff, 0xfa, 0xff, 0xe6, 0xfd, 0xff, 0xf8
4409 +};
4410 +
4411 +/* chroma quantization table */
4412 +static const u8 ci_isp_uv_qtable80_per_cent[] = {
4413 +       0x2b, 0x2d, 0x2d, 0x3c, 0x35, 0x3c, 0x76, 0x41,
4414 +       0x41, 0x76, 0xf8, 0xa5, 0x8c, 0xa5, 0xf8, 0xf8,
4415 +       0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
4416 +       0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
4417 +       0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
4418 +       0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
4419 +       0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
4420 +       0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8
4421 +};
4422 +
4423 +/* 90% */
4424 +
4425 +/* luma quantization table */
4426 +static const u8 ci_isp_yq_table90_per_cent[] = {
4427 +       0x50, 0x37, 0x3c, 0x46, 0x3c, 0x32, 0x50, 0x46,
4428 +       0x41, 0x46, 0x5a, 0x55, 0x50, 0x5f, 0x78, 0xc8,
4429 +       0x82, 0x78, 0x6e, 0x6e, 0x78, 0xf5, 0xaf, 0xb9,
4430 +       0x91, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4431 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4432 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4433 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4434 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
4435 +};
4436 +
4437 +/* chroma quantization table */
4438 +static const u8 ci_isp_uv_qtable90_per_cent[] = {
4439 +       0x55, 0x5a, 0x5a, 0x78, 0x69, 0x78, 0xeb, 0x82,
4440 +       0x82, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4441 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4442 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4443 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4444 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4445 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4446 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
4447 +};
4448 +
4449 +/* 99% */
4450 +
4451 +/* luma quantization table */
4452 +static const u8 ci_isp_yq_table99_per_cent[] = {
4453 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4454 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4455 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4456 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4457 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4458 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4459 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4460 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
4461 +};
4462 +
4463 +/* chroma quantization table */
4464 +static const u8 ci_isp_uv_qtable99_per_cent[] = {
4465 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4466 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4467 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4468 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4469 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4470 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4471 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
4472 +       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
4473 +};
4474 +
4475 +int ci_isp_wait_for_vsyncHelper(void);
4476 +void ci_isp_jpe_set_tables(u8 compression_ratio);
4477 +void ci_isp_jpe_select_tables(void);
4478 +void ci_isp_jpe_set_config(u16 hsize, u16 vsize, int jpe_scale);
4479 +int ci_isp_jpe_generate_header(struct mrst_isp_device *intel, u8 header_mode);
4480 +void ci_isp_jpe_prep_enc(enum ci_isp_jpe_enc_mode jpe_enc_mode);
4481 +int ci_isp_jpe_wait_for_header_gen_done(struct mrst_isp_device *intel);
4482 +int ci_isp_jpe_wait_for_encode_done(struct mrst_isp_device *intel);
4483 +
4484 --- /dev/null
4485 +++ b/drivers/media/video/mrstci/mrstisp/include/mrstisp_reg.h
4486 @@ -0,0 +1,4698 @@
4487 +/*
4488 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
4489 + *
4490 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
4491 + *
4492 + * Copyright (c) Silicon Image 2008  www.siliconimage.com
4493 + *
4494 + * This program is free software; you can redistribute it and/or
4495 + * modify it under the terms of the GNU General Public License version
4496 + * 2 as published by the Free Software Foundation.
4497 + *
4498 + * This program is distributed in the hope that it will be useful,
4499 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
4500 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4501 + * GNU General Public License for more details.
4502 + *
4503 + * You should have received a copy of the GNU General Public License
4504 + * along with this program; if not, write to the Free Software
4505 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
4506 + * 02110-1301, USA.
4507 + *
4508 + *
4509 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
4510 + */
4511 +
4512 +#ifndef _MRV_PRIV_H
4513 +#define _MRV_PRIV_H
4514 +
4515 +
4516 +#define MRV_ISP_GAMMA_R_Y_ARR_SIZE 17
4517 +#define MRV_ISP_GAMMA_G_Y_ARR_SIZE 17
4518 +#define MRV_ISP_GAMMA_B_Y_ARR_SIZE 17
4519 +#define MRV_ISP_CT_COEFF_ARR_SIZE 9
4520 +#define MRV_ISP_GAMMA_OUT_Y_ARR_SIZE 17
4521 +#define MRV_ISP_BP_NEW_TABLE_ARR_SIZE 8
4522 +#define MRV_ISP_HIST_BIN_ARR_SIZE 16
4523 +
4524 +struct isp_register {
4525 +       u32 vi_ccl;
4526 +       u32 vi_custom_reg1;
4527 +       u32 vi_id;
4528 +       u32 vi_custom_reg2;
4529 +       u32 vi_iccl;
4530 +       u32 vi_ircl;
4531 +       u32 vi_dpcl;
4532 +
4533 +       u32 notused_mrvbase1;
4534 +
4535 +
4536 +       u32 notused_mrvbase2[(0x200 - 0x20) / 4];
4537 +
4538 +       u32 img_eff_ctrl;
4539 +       u32 img_eff_color_sel;
4540 +       u32 img_eff_mat_1;
4541 +       u32 img_eff_mat_2;
4542 +       u32 img_eff_mat_3;
4543 +       u32 img_eff_mat_4;
4544 +       u32 img_eff_mat_5;
4545 +       u32 img_eff_tint;
4546 +       u32 img_eff_ctrl_shd;
4547 +       u32 notused_imgeff[(0x300 - 0x224) / 4];
4548 +
4549 +
4550 +       u32 super_imp_ctrl;
4551 +       u32 super_imp_offset_x;
4552 +       u32 super_imp_offset_y;
4553 +       u32 super_imp_color_y;
4554 +       u32 super_imp_color_cb;
4555 +       u32 super_imp_color_cr;
4556 +       u32 notused_simp[(0x400 - 0x318) / 4];
4557 +
4558 +       u32 isp_ctrl;
4559 +       u32 isp_acq_prop;
4560 +       u32 isp_acq_h_offs;
4561 +       u32 isp_acq_v_offs;
4562 +       u32 isp_acq_h_size;
4563 +       u32 isp_acq_v_size;
4564 +       u32 isp_acq_nr_frames;
4565 +       u32 isp_gamma_dx_lo;
4566 +       u32 isp_gamma_dx_hi;
4567 +       u32 isp_gamma_r_y[MRV_ISP_GAMMA_R_Y_ARR_SIZE];
4568 +       u32 isp_gamma_g_y[MRV_ISP_GAMMA_G_Y_ARR_SIZE];
4569 +       u32 isp_gamma_b_y[MRV_ISP_GAMMA_B_Y_ARR_SIZE];
4570 +
4571 +
4572 +       u32 notused_ispbls1[(0x510 - 0x4F0) / 4];
4573 +
4574 +       u32 isp_awb_prop;
4575 +       u32 isp_awb_h_offs;
4576 +       u32 isp_awb_v_offs;
4577 +       u32 isp_awb_h_size;
4578 +       u32 isp_awb_v_size;
4579 +       u32 isp_awb_frames;
4580 +       u32 isp_awb_ref;
4581 +       u32 isp_awb_thresh;
4582 +
4583 +    u32 notused_ispawb2[(0x538-0x530)/4];
4584 +
4585 +    u32 isp_awb_gain_g;
4586 +    u32 isp_awb_gain_rb;
4587 +
4588 +       u32 isp_awb_white_cnt;
4589 +       u32 isp_awb_mean;
4590 +
4591 +       u32 notused_ispae[(0x570 - 0x548) / 4];
4592 +       u32 isp_cc_coeff_0;
4593 +       u32 isp_cc_coeff_1;
4594 +       u32 isp_cc_coeff_2;
4595 +       u32 isp_cc_coeff_3;
4596 +       u32 isp_cc_coeff_4;
4597 +       u32 isp_cc_coeff_5;
4598 +       u32 isp_cc_coeff_6;
4599 +       u32 isp_cc_coeff_7;
4600 +       u32 isp_cc_coeff_8;
4601 +
4602 +       u32 isp_out_h_offs;
4603 +       u32 isp_out_v_offs;
4604 +       u32 isp_out_h_size;
4605 +       u32 isp_out_v_size;
4606 +
4607 +
4608 +       u32 isp_demosaic;
4609 +       u32 isp_flags_shd;
4610 +
4611 +       u32 isp_out_h_offs_shd;
4612 +       u32 isp_out_v_offs_shd;
4613 +       u32 isp_out_h_size_shd;
4614 +       u32 isp_out_v_size_shd;
4615 +
4616 +
4617 +       u32 isp_imsc;
4618 +       u32 isp_ris;
4619 +       u32 isp_mis;
4620 +       u32 isp_icr;
4621 +       u32 isp_isr;
4622 +
4623 +       u32 isp_ct_coeff[MRV_ISP_CT_COEFF_ARR_SIZE];
4624 +
4625 +       u32 isp_gamma_out_mode;
4626 +       u32 isp_gamma_out_y[MRV_ISP_GAMMA_OUT_Y_ARR_SIZE];
4627 +
4628 +
4629 +       u32 isp_err;
4630 +       u32 isp_err_clr;
4631 +
4632 +
4633 +       u32 isp_frame_count;
4634 +
4635 +       u32 isp_ct_offset_r;
4636 +       u32 isp_ct_offset_g;
4637 +       u32 isp_ct_offset_b;
4638 +       u32 notused_ispctoffs[(0x660 - 0x654) / 4];
4639 +
4640 +
4641 +       u32 isp_flash_cmd;
4642 +       u32 isp_flash_config;
4643 +       u32 isp_flash_prediv;
4644 +       u32 isp_flash_delay;
4645 +       u32 isp_flash_time;
4646 +       u32 isp_flash_maxp;
4647 +       u32 notused_ispflash[(0x680 - 0x678) / 4];
4648 +
4649 +
4650 +       u32 isp_sh_ctrl;
4651 +       u32 isp_sh_prediv;
4652 +       u32 isp_sh_delay;
4653 +       u32 isp_sh_time;
4654 +       u32 notused_ispsh[(0x800 - 0x690) / 4];
4655 +
4656 +       u32 c_proc_ctrl;
4657 +       u32 c_proc_contrast;
4658 +       u32 c_proc_brightness;
4659 +       u32 c_proc_saturation;
4660 +       u32 c_proc_hue;
4661 +       u32 notused_cproc[(0xC00 - 0x814) / 4];
4662 +
4663 +       u32 mrsz_ctrl;
4664 +       u32 mrsz_scale_hy;
4665 +       u32 mrsz_scale_hcb;
4666 +       u32 mrsz_scale_hcr;
4667 +       u32 mrsz_scale_vy;
4668 +       u32 mrsz_scale_vc;
4669 +       u32 mrsz_phase_hy;
4670 +       u32 mrsz_phase_hc;
4671 +       u32 mrsz_phase_vy;
4672 +       u32 mrsz_phase_vc;
4673 +       u32 mrsz_scale_lut_addr;
4674 +       u32 mrsz_scale_lut;
4675 +       u32 mrsz_ctrl_shd;
4676 +       u32 mrsz_scale_hy_shd;
4677 +       u32 mrsz_scale_hcb_shd;
4678 +       u32 mrsz_scale_hcr_shd;
4679 +       u32 mrsz_scale_vy_shd;
4680 +       u32 mrsz_scale_vc_shd;
4681 +       u32 mrsz_phase_hy_shd;
4682 +       u32 mrsz_phase_hc_shd;
4683 +       u32 mrsz_phase_vy_shd;
4684 +       u32 mrsz_phase_vc_shd;
4685 +       u32 notused_mrsz[(0x1000 - 0x0C58) / 4];
4686 +
4687 +       u32 srsz_ctrl;
4688 +       u32 srsz_scale_hy;
4689 +       u32 srsz_scale_hcb;
4690 +       u32 srsz_scale_hcr;
4691 +       u32 srsz_scale_vy;
4692 +       u32 srsz_scale_vc;
4693 +       u32 srsz_phase_hy;
4694 +       u32 srsz_phase_hc;
4695 +       u32 srsz_phase_vy;
4696 +       u32 srsz_phase_vc;
4697 +       u32 srsz_scale_lut_addr;
4698 +       u32 srsz_scale_lut;
4699 +       u32 srsz_ctrl_shd;
4700 +       u32 srsz_scale_hy_shd;
4701 +       u32 srsz_scale_hcb_shd;
4702 +       u32 srsz_scale_hcr_shd;
4703 +       u32 srsz_scale_vy_shd;
4704 +       u32 srsz_scale_vc_shd;
4705 +       u32 srsz_phase_hy_shd;
4706 +       u32 srsz_phase_hc_shd;
4707 +       u32 srsz_phase_vy_shd;
4708 +       u32 srsz_phase_vc_shd;
4709 +       u32 notused_srsz[(0x1400 - 0x1058) / 4];
4710 +
4711 +    u32 mi_ctrl;
4712 +    u32 mi_init;
4713 +    u32 mi_mp_y_base_ad_init;
4714 +    u32 mi_mp_y_size_init;
4715 +    u32 mi_mp_y_offs_cnt_init;
4716 +    u32 mi_mp_y_offs_cnt_start;
4717 +    u32 mi_mp_y_irq_offs_init;
4718 +    u32 mi_mp_cb_base_ad_init;
4719 +    u32 mi_mp_cb_size_init;
4720 +    u32 mi_mp_cb_offs_cnt_init;
4721 +    u32 mi_mp_cb_offs_cnt_start;
4722 +    u32 mi_mp_cr_base_ad_init;
4723 +    u32 mi_mp_cr_size_init;
4724 +    u32 mi_mp_cr_offs_cnt_init;
4725 +    u32 mi_mp_cr_offs_cnt_start;
4726 +    u32 mi_sp_y_base_ad_init;
4727 +    u32 mi_sp_y_size_init;
4728 +    u32 mi_sp_y_offs_cnt_init;
4729 +    u32 mi_sp_y_offs_cnt_start;
4730 +    u32 mi_sp_y_llength;
4731 +    u32 mi_sp_cb_base_ad_init;
4732 +    u32 mi_sp_cb_size_init;
4733 +    u32 mi_sp_cb_offs_cnt_init;
4734 +    u32 mi_sp_cb_offs_cnt_start;
4735 +    u32 mi_sp_cr_base_ad_init;
4736 +    u32 mi_sp_cr_size_init;
4737 +    u32 mi_sp_cr_offs_cnt_init;
4738 +    u32 mi_sp_cr_offs_cnt_start;
4739 +    u32 mi_byte_cnt;
4740 +    u32 mi_ctrl_shd;
4741 +    u32 mi_mp_y_base_ad_shd;
4742 +    u32 mi_mp_y_size_shd;
4743 +    u32 mi_mp_y_offs_cnt_shd;
4744 +    u32 mi_mp_y_irq_offs_shd;
4745 +    u32 mi_mp_cb_base_ad_shd;
4746 +    u32 mi_mp_cb_size_shd;
4747 +    u32 mi_mp_cb_offs_cnt_shd;
4748 +    u32 mi_mp_cr_base_ad_shd;
4749 +    u32 mi_mp_cr_size_shd;
4750 +    u32 mi_mp_cr_offs_cnt_shd;
4751 +    u32 mi_sp_y_base_ad_shd;
4752 +    u32 mi_sp_y_size_shd;
4753 +    u32 mi_sp_y_offs_cnt_shd;
4754 +
4755 +       u32 notused_mi1;
4756 +
4757 +       u32 mi_sp_cb_base_ad_shd;
4758 +       u32 mi_sp_cb_size_shd;
4759 +       u32 mi_sp_cb_offs_cnt_shd;
4760 +       u32 mi_sp_cr_base_ad_shd;
4761 +       u32 mi_sp_cr_size_shd;
4762 +       u32 mi_sp_cr_offs_cnt_shd;
4763 +       u32 mi_dma_y_pic_start_ad;
4764 +       u32 mi_dma_y_pic_width;
4765 +       u32 mi_dma_y_llength;
4766 +       u32 mi_dma_y_pic_size;
4767 +       u32 mi_dma_cb_pic_start_ad;
4768 +       u32 notused_mi2[(0x14E8 - 0x14DC) / 4];
4769 +       u32 mi_dma_cr_pic_start_ad;
4770 +       u32 notused_mi3[(0x14F8 - 0x14EC) / 4];
4771 +       u32 mi_imsc;
4772 +       u32 mi_ris;
4773 +       u32 mi_mis;
4774 +       u32 mi_icr;
4775 +       u32 mi_isr;
4776 +       u32 mi_status;
4777 +       u32 mi_status_clr;
4778 +       u32 mi_sp_y_pic_width;
4779 +       u32 mi_sp_y_pic_height;
4780 +       u32 mi_sp_y_pic_size;
4781 +       u32 mi_dma_ctrl;
4782 +       u32 mi_dma_start;
4783 +       u32 mi_dma_status;
4784 +       u32 notused_mi6[(0x1800 - 0x152C) / 4];
4785 +       u32 jpe_gen_header;
4786 +       u32 jpe_encode;
4787 +
4788 +       u32 jpe_init;
4789 +
4790 +       u32 jpe_y_scale_en;
4791 +       u32 jpe_cbcr_scale_en;
4792 +       u32 jpe_table_flush;
4793 +       u32 jpe_enc_hsize;
4794 +       u32 jpe_enc_vsize;
4795 +       u32 jpe_pic_format;
4796 +       u32 jpe_restart_interval;
4797 +       u32 jpe_tq_y_select;
4798 +       u32 jpe_tq_u_select;
4799 +       u32 jpe_tq_v_select;
4800 +       u32 jpe_dc_table_select;
4801 +       u32 jpe_ac_table_select;
4802 +       u32 jpe_table_data;
4803 +       u32 jpe_table_id;
4804 +       u32 jpe_tac0_len;
4805 +       u32 jpe_tdc0_len;
4806 +       u32 jpe_tac1_len;
4807 +       u32 jpe_tdc1_len;
4808 +       u32 notused_jpe2;
4809 +       u32 jpe_encoder_busy;
4810 +       u32 jpe_header_mode;
4811 +       u32 jpe_encode_mode;
4812 +       u32 jpe_debug;
4813 +       u32 jpe_error_imr;
4814 +       u32 jpe_error_ris;
4815 +       u32 jpe_error_mis;
4816 +       u32 jpe_error_icr;
4817 +       u32 jpe_error_isr;
4818 +       u32 jpe_status_imr;
4819 +       u32 jpe_status_ris;
4820 +       u32 jpe_status_mis;
4821 +       u32 jpe_status_icr;
4822 +       u32 jpe_status_isr;
4823 +       u32 notused_jpe3[(0x1A00 - 0x1890) / 4];
4824 +
4825 +       u32 smia_ctrl;
4826 +       u32 smia_status;
4827 +       u32 smia_imsc;
4828 +       u32 smia_ris;
4829 +       u32 smia_mis;
4830 +       u32 smia_icr;
4831 +       u32 smia_isr;
4832 +       u32 smia_data_format_sel;
4833 +       u32 smia_sof_emb_data_lines;
4834 +
4835 +       u32 smia_emb_hstart;
4836 +       u32 smia_emb_hsize;
4837 +       u32 smia_emb_vstart;
4838 +
4839 +       u32 smia_num_lines;
4840 +       u32 smia_emb_data_fifo;
4841 +
4842 +       u32 smia_fifo_fill_level;
4843 +       u32 notused_smia2[(0x1A40 - 0x1A3C) / 4];
4844 +
4845 +       u32 notused_smia3[(0x1A60 - 0x1A40) / 4];
4846 +       u32 notused_smia4[(0x1C00 - 0x1A60) / 4];
4847 +
4848 +
4849 +       u32 mipi_ctrl;
4850 +       u32 mipi_status;
4851 +       u32 mipi_imsc;
4852 +       u32 mipi_ris;
4853 +       u32 mipi_mis;
4854 +       u32 mipi_icr;
4855 +       u32 mipi_isr;
4856 +       u32 mipi_cur_data_id;
4857 +       u32 mipi_img_data_sel;
4858 +       u32 mipi_add_data_sel_1;
4859 +       u32 mipi_add_data_sel_2;
4860 +       u32 mipi_add_data_sel_3;
4861 +       u32 mipi_add_data_sel_4;
4862 +       u32 mipi_add_data_fifo;
4863 +       u32 mipi_add_data_fill_level;
4864 +       u32 notused_mipi[(0x2000 - 0x1C3C) / 4];
4865 +
4866 +
4867 +       u32 isp_afm_ctrl;
4868 +       u32 isp_afm_lt_a;
4869 +       u32 isp_afm_rb_a;
4870 +       u32 isp_afm_lt_b;
4871 +       u32 isp_afm_rb_b;
4872 +       u32 isp_afm_lt_c;
4873 +       u32 isp_afm_rb_c;
4874 +       u32 isp_afm_thres;
4875 +       u32 isp_afm_var_shift;
4876 +       u32 isp_afm_sum_a;
4877 +       u32 isp_afm_sum_b;
4878 +       u32 isp_afm_sum_c;
4879 +       u32 isp_afm_lum_a;
4880 +       u32 isp_afm_lum_b;
4881 +       u32 isp_afm_lum_c;
4882 +       u32 notused_ispafm[(0x2100 - 0x203C) / 4];
4883 +
4884 +
4885 +       u32 isp_bp_ctrl;
4886 +       u32 isp_bp_cfg1;
4887 +       u32 isp_bp_cfg2;
4888 +       u32 isp_bp_number;
4889 +       u32 isp_bp_table_addr;
4890 +       u32 isp_bp_table_data;
4891 +       u32 isp_bp_new_number;
4892 +       u32 isp_bp_new_table[MRV_ISP_BP_NEW_TABLE_ARR_SIZE];
4893 +
4894 +       u32 notused_ispbp[(0x2200 - 0x213C) / 4];
4895 +
4896 +
4897 +       u32 isp_lsc_ctrl;
4898 +       u32 isp_lsc_r_table_addr;
4899 +       u32 isp_lsc_g_table_addr;
4900 +       u32 isp_lsc_b_table_addr;
4901 +       u32 isp_lsc_r_table_data;
4902 +       u32 isp_lsc_g_table_data;
4903 +       u32 isp_lsc_b_table_data;
4904 +       u32 notused_isplsc1;
4905 +       u32 isp_lsc_xgrad_01;
4906 +       u32 isp_lsc_xgrad_23;
4907 +       u32 isp_lsc_xgrad_45;
4908 +       u32 isp_lsc_xgrad_67;
4909 +       u32 isp_lsc_ygrad_01;
4910 +       u32 isp_lsc_ygrad_23;
4911 +       u32 isp_lsc_ygrad_45;
4912 +       u32 isp_lsc_ygrad_67;
4913 +       u32 isp_lsc_xsize_01;
4914 +       u32 isp_lsc_xsize_23;
4915 +       u32 isp_lsc_xsize_45;
4916 +       u32 isp_lsc_xsize_67;
4917 +       u32 isp_lsc_ysize_01;
4918 +       u32 isp_lsc_ysize_23;
4919 +       u32 isp_lsc_ysize_45;
4920 +       u32 isp_lsc_ysize_67;
4921 +       u32 notused_isplsc2[(0x2300 - 0x2260) / 4];
4922 +
4923 +
4924 +       u32 isp_is_ctrl;
4925 +       u32 isp_is_recenter;
4926 +
4927 +       u32 isp_is_h_offs;
4928 +       u32 isp_is_v_offs;
4929 +       u32 isp_is_h_size;
4930 +       u32 isp_is_v_size;
4931 +
4932 +       u32 isp_is_max_dx;
4933 +       u32 isp_is_max_dy;
4934 +       u32 isp_is_displace;
4935 +
4936 +       u32 isp_is_h_offs_shd;
4937 +       u32 isp_is_v_offs_shd;
4938 +       u32 isp_is_h_size_shd;
4939 +       u32 isp_is_v_size_shd;
4940 +       u32 notused_ispis4[(0x2400 - 0x2334) / 4];
4941 +
4942 +       u32 isp_hist_prop;
4943 +       u32 isp_hist_h_offs;
4944 +       u32 isp_hist_v_offs;
4945 +       u32 isp_hist_h_size;
4946 +       u32 isp_hist_v_size;
4947 +       u32 isp_hist_bin[MRV_ISP_HIST_BIN_ARR_SIZE];
4948 +    u32 notused_isphist[(0x2500-0x2454)/4];
4949 +
4950 +       u32 isp_filt_mode;
4951 +       u32 _notused_28[(0x2528 - 0x2504) / 4];
4952 +       u32 isp_filt_thresh_bl0;
4953 +       u32 isp_filt_thresh_bl1;
4954 +       u32 isp_filt_thresh_sh0;
4955 +       u32 isp_filt_thresh_sh1;
4956 +       u32 isp_filt_lum_weight;
4957 +       u32 isp_filt_fac_sh1;
4958 +       u32 isp_filt_fac_sh0;
4959 +       u32 isp_filt_fac_mid;
4960 +       u32 isp_filt_fac_bl0;
4961 +       u32 isp_filt_fac_bl1;
4962 +       u32 notused_ispfilt[(0x2580 - 0x2550) / 4];
4963 +
4964 +       u32 notused_ispcac[(0x2600 - 0x2580) / 4];
4965 +
4966 +       u32 isp_exp_ctrl;
4967 +       u32 isp_exp_h_offset;
4968 +       u32 isp_exp_v_offset;
4969 +       u32 isp_exp_h_size;
4970 +       u32 isp_exp_v_size;
4971 +       u32 isp_exp_mean_00;
4972 +       u32 isp_exp_mean_10;
4973 +       u32 isp_exp_mean_20;
4974 +       u32 isp_exp_mean_30;
4975 +       u32 isp_exp_mean_40;
4976 +       u32 isp_exp_mean_01;
4977 +       u32 isp_exp_mean_11;
4978 +       u32 isp_exp_mean_21;
4979 +       u32 isp_exp_mean_31;
4980 +       u32 isp_exp_mean_41;
4981 +       u32 isp_exp_mean_02;
4982 +       u32 isp_exp_mean_12;
4983 +       u32 isp_exp_mean_22;
4984 +       u32 isp_exp_mean_32;
4985 +       u32 isp_exp_mean_42;
4986 +       u32 isp_exp_mean_03;
4987 +       u32 isp_exp_mean_13;
4988 +       u32 isp_exp_mean_23;
4989 +       u32 isp_exp_mean_33;
4990 +       u32 isp_exp_mean_43;
4991 +       u32 isp_exp_mean_04;
4992 +       u32 isp_exp_mean_14;
4993 +       u32 isp_exp_mean_24;
4994 +       u32 isp_exp_mean_34;
4995 +       u32 isp_exp_mean_44;
4996 +       u32 notused_ispexp[(0x2700 - 0x2678) / 4];
4997 +
4998 +       u32 isp_bls_ctrl;
4999 +       u32 isp_bls_samples;
5000 +       u32 isp_bls_h1_start;
5001 +       u32 isp_bls_h1_stop;
5002 +       u32 isp_bls_v1_start;
5003 +       u32 isp_bls_v1_stop;
5004 +       u32 isp_bls_h2_start;
5005 +       u32 isp_bls_h2_stop;
5006 +       u32 isp_bls_v2_start;
5007 +       u32 isp_bls_v2_stop;
5008 +       u32 isp_bls_a_fixed;
5009 +       u32 isp_bls_b_fixed;
5010 +       u32 isp_bls_c_fixed;
5011 +       u32 isp_bls_d_fixed;
5012 +       u32 isp_bls_a_measured;
5013 +       u32 isp_bls_b_measured;
5014 +       u32 isp_bls_c_measured;
5015 +       u32 isp_bls_d_measured;
5016 +       u32 notused_ispbls2[(0x2800 - 0x2748) / 4];
5017 +
5018 +
5019 +};
5020 +
5021 +
5022 +
5023 +
5024 +
5025 +
5026 +
5027 +#define MRV_VI_CCLFDIS
5028 +#define MRV_VI_CCLFDIS_MASK 0x00000004
5029 +#define MRV_VI_CCLFDIS_SHIFT 2
5030 +#define MRV_VI_CCLFDIS_ENABLE  0
5031 +#define MRV_VI_CCLFDIS_DISABLE 1
5032 +
5033 +#define MRV_VI_CCLDISS
5034 +#define MRV_VI_CCLDISS_MASK 0x00000002
5035 +#define MRV_VI_CCLDISS_SHIFT 1
5036 +
5037 +#define MRV_REV_ID
5038 +#define MRV_REV_ID_MASK 0xFFFFFFFF
5039 +#define MRV_REV_ID_SHIFT 0
5040 +
5041 +#define MRV_VI_MIPI_CLK_ENABLE
5042 +#define MRV_VI_MIPI_CLK_ENABLE_MASK 0x00000800
5043 +#define MRV_VI_MIPI_CLK_ENABLE_SHIFT 11
5044 +
5045 +
5046 +#define MRV_VI_SMIA_CLK_ENABLE
5047 +#define MRV_VI_SMIA_CLK_ENABLE_MASK 0x00000400
5048 +#define MRV_VI_SMIA_CLK_ENABLE_SHIFT 10
5049 +#define MRV_VI_SIMP_CLK_ENABLE
5050 +#define MRV_VI_SIMP_CLK_ENABLE_MASK 0x00000200
5051 +#define MRV_VI_SIMP_CLK_ENABLE_SHIFT 9
5052 +
5053 +#define MRV_VI_IE_CLK_ENABLE
5054 +#define MRV_VI_IE_CLK_ENABLE_MASK 0x00000100
5055 +#define MRV_VI_IE_CLK_ENABLE_SHIFT 8
5056 +
5057 +#define MRV_VI_EMP_CLK_ENABLE_MASK 0
5058 +#define MRV_VI_MI_CLK_ENABLE
5059 +#define MRV_VI_MI_CLK_ENABLE_MASK 0x00000040
5060 +#define MRV_VI_MI_CLK_ENABLE_SHIFT 6
5061 +
5062 +#define MRV_VI_JPEG_CLK_ENABLE
5063 +#define MRV_VI_JPEG_CLK_ENABLE_MASK 0x00000020
5064 +#define MRV_VI_JPEG_CLK_ENABLE_SHIFT 5
5065 +#define MRV_VI_SRSZ_CLK_ENABLE
5066 +#define MRV_VI_SRSZ_CLK_ENABLE_MASK 0x00000010
5067 +#define MRV_VI_SRSZ_CLK_ENABLE_SHIFT 4
5068 +
5069 +#define MRV_VI_MRSZ_CLK_ENABLE
5070 +#define MRV_VI_MRSZ_CLK_ENABLE_MASK 0x00000008
5071 +#define MRV_VI_MRSZ_CLK_ENABLE_SHIFT 3
5072 +#define MRV_VI_CP_CLK_ENABLE
5073 +#define MRV_VI_CP_CLK_ENABLE_MASK 0x00000002
5074 +#define MRV_VI_CP_CLK_ENABLE_SHIFT 1
5075 +#define MRV_VI_ISP_CLK_ENABLE
5076 +#define MRV_VI_ISP_CLK_ENABLE_MASK 0x00000001
5077 +#define MRV_VI_ISP_CLK_ENABLE_SHIFT 0
5078 +
5079 +
5080 +#define MRV_VI_ALL_CLK_ENABLE
5081 +#define MRV_VI_ALL_CLK_ENABLE_MASK \
5082 +(0 \
5083 +| MRV_VI_MIPI_CLK_ENABLE_MASK \
5084 +| MRV_VI_SMIA_CLK_ENABLE_MASK \
5085 +| MRV_VI_SIMP_CLK_ENABLE_MASK \
5086 +| MRV_VI_IE_CLK_ENABLE_MASK \
5087 +| MRV_VI_EMP_CLK_ENABLE_MASK \
5088 +| MRV_VI_MI_CLK_ENABLE_MASK \
5089 +| MRV_VI_JPEG_CLK_ENABLE_MASK \
5090 +| MRV_VI_SRSZ_CLK_ENABLE_MASK \
5091 +| MRV_VI_MRSZ_CLK_ENABLE_MASK \
5092 +| MRV_VI_CP_CLK_ENABLE_MASK \
5093 +| MRV_VI_ISP_CLK_ENABLE_MASK \
5094 +)
5095 +#define MRV_VI_ALL_CLK_ENABLE_SHIFT 0
5096 +
5097 +#define MRV_VI_MIPI_SOFT_RST
5098 +#define MRV_VI_MIPI_SOFT_RST_MASK 0x00000800
5099 +#define MRV_VI_MIPI_SOFT_RST_SHIFT 11
5100 +
5101 +#define MRV_VI_SMIA_SOFT_RST
5102 +#define MRV_VI_SMIA_SOFT_RST_MASK 0x00000400
5103 +#define MRV_VI_SMIA_SOFT_RST_SHIFT 10
5104 +#define MRV_VI_SIMP_SOFT_RST
5105 +#define MRV_VI_SIMP_SOFT_RST_MASK 0x00000200
5106 +#define MRV_VI_SIMP_SOFT_RST_SHIFT 9
5107 +
5108 +#define MRV_VI_IE_SOFT_RST
5109 +#define MRV_VI_IE_SOFT_RST_MASK 0x00000100
5110 +#define MRV_VI_IE_SOFT_RST_SHIFT 8
5111 +#define MRV_VI_MARVIN_RST
5112 +#define MRV_VI_MARVIN_RST_MASK 0x00000080
5113 +#define MRV_VI_MARVIN_RST_SHIFT 7
5114 +
5115 +#define MRV_VI_EMP_SOFT_RST_MASK 0
5116 +#define MRV_VI_MI_SOFT_RST
5117 +#define MRV_VI_MI_SOFT_RST_MASK 0x00000040
5118 +#define MRV_VI_MI_SOFT_RST_SHIFT 6
5119 +
5120 +#define MRV_VI_JPEG_SOFT_RST
5121 +#define MRV_VI_JPEG_SOFT_RST_MASK 0x00000020
5122 +#define MRV_VI_JPEG_SOFT_RST_SHIFT 5
5123 +#define MRV_VI_SRSZ_SOFT_RST
5124 +#define MRV_VI_SRSZ_SOFT_RST_MASK 0x00000010
5125 +#define MRV_VI_SRSZ_SOFT_RST_SHIFT 4
5126 +
5127 +#define MRV_VI_MRSZ_SOFT_RST
5128 +#define MRV_VI_MRSZ_SOFT_RST_MASK 0x00000008
5129 +#define MRV_VI_MRSZ_SOFT_RST_SHIFT 3
5130 +#define MRV_VI_YCS_SOFT_RST
5131 +#define MRV_VI_YCS_SOFT_RST_MASK 0x00000004
5132 +#define MRV_VI_YCS_SOFT_RST_SHIFT 2
5133 +#define MRV_VI_CP_SOFT_RST
5134 +#define MRV_VI_CP_SOFT_RST_MASK 0x00000002
5135 +#define MRV_VI_CP_SOFT_RST_SHIFT 1
5136 +#define MRV_VI_ISP_SOFT_RST
5137 +#define MRV_VI_ISP_SOFT_RST_MASK 0x00000001
5138 +#define MRV_VI_ISP_SOFT_RST_SHIFT 0
5139 +
5140 +#define MRV_VI_ALL_SOFT_RST
5141 +#define MRV_VI_ALL_SOFT_RST_MASK \
5142 +(0 \
5143 +| MRV_VI_MIPI_SOFT_RST_MASK \
5144 +| MRV_VI_SMIA_SOFT_RST_MASK \
5145 +| MRV_VI_SIMP_SOFT_RST_MASK \
5146 +| MRV_VI_IE_SOFT_RST_MASK \
5147 +| MRV_VI_EMP_SOFT_RST_MASK \
5148 +| MRV_VI_MI_SOFT_RST_MASK \
5149 +| MRV_VI_JPEG_SOFT_RST_MASK \
5150 +| MRV_VI_SRSZ_SOFT_RST_MASK \
5151 +| MRV_VI_MRSZ_SOFT_RST_MASK \
5152 +| MRV_VI_YCS_SOFT_RST_MASK \
5153 +| MRV_VI_CP_SOFT_RST_MASK \
5154 +| MRV_VI_ISP_SOFT_RST_MASK \
5155 +)
5156 +#define MRV_VI_ALL_SOFT_RST_SHIFT 0
5157 +
5158 +
5159 +#define MRV_VI_DMA_SPMUX
5160 +#define MRV_VI_DMA_SPMUX_MASK 0x00000800
5161 +#define MRV_VI_DMA_SPMUX_SHIFT 11
5162 +#define MRV_VI_DMA_SPMUX_CAM    0
5163 +#define MRV_VI_DMA_SPMUX_DMA    1
5164 +#define MRV_VI_DMA_IEMUX
5165 +#define MRV_VI_DMA_IEMUX_MASK 0x00000400
5166 +#define MRV_VI_DMA_IEMUX_SHIFT 10
5167 +#define MRV_VI_DMA_IEMUX_CAM    0
5168 +#define MRV_VI_DMA_IEMUX_DMA    1
5169 +#define MRV_IF_SELECT
5170 +#define MRV_IF_SELECT_MASK 0x00000300
5171 +#define MRV_IF_SELECT_SHIFT 8
5172 +#define MRV_IF_SELECT_PAR   0
5173 +#define MRV_IF_SELECT_SMIA  1
5174 +#define MRV_IF_SELECT_MIPI  2
5175 +#define MRV_VI_DMA_SWITCH
5176 +#define MRV_VI_DMA_SWITCH_MASK 0x00000070
5177 +#define MRV_VI_DMA_SWITCH_SHIFT 4
5178 +#define MRV_VI_DMA_SWITCH_SELF  0
5179 +#define MRV_VI_DMA_SWITCH_SI    1
5180 +#define MRV_VI_DMA_SWITCH_IE    2
5181 +#define MRV_VI_DMA_SWITCH_JPG   3
5182 +#define MRV_VI_CHAN_MODE
5183 +#define MRV_VI_CHAN_MODE_MASK 0x0000000C
5184 +#define MRV_VI_CHAN_MODE_SHIFT 2
5185 +
5186 +#define MRV_VI_CHAN_MODE_OFF     0x00
5187 +#define MRV_VI_CHAN_MODE_Y       0xFF
5188 +#define MRV_VI_CHAN_MODE_MP_RAW  0x01
5189 +#define MRV_VI_CHAN_MODE_MP      0x01
5190 +#define MRV_VI_CHAN_MODE_SP      0x02
5191 +#define MRV_VI_CHAN_MODE_MP_SP   0x03
5192 +
5193 +#define MRV_VI_MP_MUX
5194 +#define MRV_VI_MP_MUX_MASK 0x00000003
5195 +#define MRV_VI_MP_MUX_SHIFT 0
5196 +
5197 +#define MRV_VI_MP_MUX_JPGDIRECT  0x00
5198 +#define MRV_VI_MP_MUX_MP         0x01
5199 +#define MRV_VI_MP_MUX_RAW        0x01
5200 +#define MRV_VI_MP_MUX_JPEG       0x02
5201 +
5202 +
5203 +
5204 +
5205 +#define MRV_IMGEFF_CFG_UPD
5206 +#define MRV_IMGEFF_CFG_UPD_MASK 0x00000010
5207 +#define MRV_IMGEFF_CFG_UPD_SHIFT 4
5208 +#define MRV_IMGEFF_EFFECT_MODE
5209 +#define MRV_IMGEFF_EFFECT_MODE_MASK 0x0000000E
5210 +#define MRV_IMGEFF_EFFECT_MODE_SHIFT 1
5211 +#define MRV_IMGEFF_EFFECT_MODE_GRAY      0
5212 +#define MRV_IMGEFF_EFFECT_MODE_NEGATIVE  1
5213 +#define MRV_IMGEFF_EFFECT_MODE_SEPIA     2
5214 +#define MRV_IMGEFF_EFFECT_MODE_COLOR_SEL 3
5215 +#define MRV_IMGEFF_EFFECT_MODE_EMBOSS    4
5216 +#define MRV_IMGEFF_EFFECT_MODE_SKETCH    5
5217 +#define MRV_IMGEFF_BYPASS_MODE
5218 +#define MRV_IMGEFF_BYPASS_MODE_MASK 0x00000001
5219 +#define MRV_IMGEFF_BYPASS_MODE_SHIFT 0
5220 +#define MRV_IMGEFF_BYPASS_MODE_PROCESS  1
5221 +#define MRV_IMGEFF_BYPASS_MODE_BYPASS   0
5222 +
5223 +#define MRV_IMGEFF_COLOR_THRESHOLD
5224 +#define MRV_IMGEFF_COLOR_THRESHOLD_MASK 0x0000FF00
5225 +#define MRV_IMGEFF_COLOR_THRESHOLD_SHIFT 8
5226 +#define MRV_IMGEFF_COLOR_SELECTION
5227 +#define MRV_IMGEFF_COLOR_SELECTION_MASK 0x00000007
5228 +#define MRV_IMGEFF_COLOR_SELECTION_SHIFT 0
5229 +#define MRV_IMGEFF_COLOR_SELECTION_RGB  0
5230 +#define MRV_IMGEFF_COLOR_SELECTION_B    1
5231 +#define MRV_IMGEFF_COLOR_SELECTION_G    2
5232 +#define MRV_IMGEFF_COLOR_SELECTION_BG   3
5233 +#define MRV_IMGEFF_COLOR_SELECTION_R    4
5234 +#define MRV_IMGEFF_COLOR_SELECTION_BR   5
5235 +#define MRV_IMGEFF_COLOR_SELECTION_GR   6
5236 +#define MRV_IMGEFF_COLOR_SELECTION_BGR  7
5237 +
5238 +#define MRV_IMGEFF_EMB_COEF_21_EN
5239 +#define MRV_IMGEFF_EMB_COEF_21_EN_MASK 0x00008000
5240 +#define MRV_IMGEFF_EMB_COEF_21_EN_SHIFT 15
5241 +#define MRV_IMGEFF_EMB_COEF_21
5242 +#define MRV_IMGEFF_EMB_COEF_21_MASK 0x00007000
5243 +#define MRV_IMGEFF_EMB_COEF_21_SHIFT 12
5244 +
5245 +#define MRV_IMGEFF_EMB_COEF_21_4
5246 +#define MRV_IMGEFF_EMB_COEF_21_4_MASK 0x0000F000
5247 +#define MRV_IMGEFF_EMB_COEF_21_4_SHIFT 12
5248 +#define MRV_IMGEFF_EMB_COEF_13_EN
5249 +#define MRV_IMGEFF_EMB_COEF_13_EN_MASK 0x00000800
5250 +#define MRV_IMGEFF_EMB_COEF_13_EN_SHIFT 11
5251 +#define MRV_IMGEFF_EMB_COEF_13
5252 +#define MRV_IMGEFF_EMB_COEF_13_MASK 0x00000700
5253 +#define MRV_IMGEFF_EMB_COEF_13_SHIFT 8
5254 +
5255 +#define MRV_IMGEFF_EMB_COEF_13_4
5256 +#define MRV_IMGEFF_EMB_COEF_13_4_MASK 0x00000F00
5257 +#define MRV_IMGEFF_EMB_COEF_13_4_SHIFT 8
5258 +#define MRV_IMGEFF_EMB_COEF_12_EN
5259 +#define MRV_IMGEFF_EMB_COEF_12_EN_MASK 0x00000080
5260 +#define MRV_IMGEFF_EMB_COEF_12_EN_SHIFT 7
5261 +#define MRV_IMGEFF_EMB_COEF_12
5262 +#define MRV_IMGEFF_EMB_COEF_12_MASK 0x00000070
5263 +#define MRV_IMGEFF_EMB_COEF_12_SHIFT 4
5264 +
5265 +#define MRV_IMGEFF_EMB_COEF_12_4
5266 +#define MRV_IMGEFF_EMB_COEF_12_4_MASK 0x000000F0
5267 +#define MRV_IMGEFF_EMB_COEF_12_4_SHIFT 4
5268 +#define MRV_IMGEFF_EMB_COEF_11_EN
5269 +#define MRV_IMGEFF_EMB_COEF_11_EN_MASK 0x00000008
5270 +#define MRV_IMGEFF_EMB_COEF_11_EN_SHIFT 3
5271 +#define MRV_IMGEFF_EMB_COEF_11
5272 +#define MRV_IMGEFF_EMB_COEF_11_MASK 0x00000007
5273 +#define MRV_IMGEFF_EMB_COEF_11_SHIFT 0
5274 +
5275 +#define MRV_IMGEFF_EMB_COEF_11_4
5276 +#define MRV_IMGEFF_EMB_COEF_11_4_MASK 0x0000000F
5277 +#define MRV_IMGEFF_EMB_COEF_11_4_SHIFT 0
5278 +
5279 +#define MRV_IMGEFF_EMB_COEF_32_EN
5280 +#define MRV_IMGEFF_EMB_COEF_32_EN_MASK 0x00008000
5281 +#define MRV_IMGEFF_EMB_COEF_32_EN_SHIFT 15
5282 +#define MRV_IMGEFF_EMB_COEF_32
5283 +#define MRV_IMGEFF_EMB_COEF_32_MASK 0x00007000
5284 +#define MRV_IMGEFF_EMB_COEF_32_SHIFT 12
5285 +
5286 +#define MRV_IMGEFF_EMB_COEF_32_4
5287 +#define MRV_IMGEFF_EMB_COEF_32_4_MASK 0x0000F000
5288 +#define MRV_IMGEFF_EMB_COEF_32_4_SHIFT 12
5289 +#define MRV_IMGEFF_EMB_COEF_31_EN
5290 +#define MRV_IMGEFF_EMB_COEF_31_EN_MASK 0x00000800
5291 +#define MRV_IMGEFF_EMB_COEF_31_EN_SHIFT 11
5292 +#define MRV_IMGEFF_EMB_COEF_31
5293 +#define MRV_IMGEFF_EMB_COEF_31_MASK 0x00000700
5294 +#define MRV_IMGEFF_EMB_COEF_31_SHIFT 8
5295 +
5296 +#define MRV_IMGEFF_EMB_COEF_31_4
5297 +#define MRV_IMGEFF_EMB_COEF_31_4_MASK 0x00000F00
5298 +#define MRV_IMGEFF_EMB_COEF_31_4_SHIFT 8
5299 +#define MRV_IMGEFF_EMB_COEF_23_EN
5300 +#define MRV_IMGEFF_EMB_COEF_23_EN_MASK 0x00000080
5301 +#define MRV_IMGEFF_EMB_COEF_23_EN_SHIFT 7
5302 +#define MRV_IMGEFF_EMB_COEF_23
5303 +#define MRV_IMGEFF_EMB_COEF_23_MASK 0x00000070
5304 +#define MRV_IMGEFF_EMB_COEF_23_SHIFT 4
5305 +
5306 +#define MRV_IMGEFF_EMB_COEF_23_4
5307 +#define MRV_IMGEFF_EMB_COEF_23_4_MASK 0x000000F0
5308 +#define MRV_IMGEFF_EMB_COEF_23_4_SHIFT 4
5309 +
5310 +#define MRV_IMGEFF_EMB_COEF_22_EN
5311 +#define MRV_IMGEFF_EMB_COEF_22_EN_MASK 0x00000008
5312 +#define MRV_IMGEFF_EMB_COEF_22_EN_SHIFT 3
5313 +#define MRV_IMGEFF_EMB_COEF_22
5314 +#define MRV_IMGEFF_EMB_COEF_22_MASK 0x00000007
5315 +#define MRV_IMGEFF_EMB_COEF_22_SHIFT 0
5316 +
5317 +#define MRV_IMGEFF_EMB_COEF_22_4
5318 +#define MRV_IMGEFF_EMB_COEF_22_4_MASK 0x0000000F
5319 +#define MRV_IMGEFF_EMB_COEF_22_4_SHIFT 0
5320 +
5321 +#define MRV_IMGEFF_SKET_COEF_13_EN
5322 +#define MRV_IMGEFF_SKET_COEF_13_EN_MASK 0x00008000
5323 +#define MRV_IMGEFF_SKET_COEF_13_EN_SHIFT 15
5324 +#define MRV_IMGEFF_SKET_COEF_13
5325 +#define MRV_IMGEFF_SKET_COEF_13_MASK 0x00007000
5326 +#define MRV_IMGEFF_SKET_COEF_13_SHIFT 12
5327 +
5328 +#define MRV_IMGEFF_SKET_COEF_13_4
5329 +#define MRV_IMGEFF_SKET_COEF_13_4_MASK 0x0000F000
5330 +#define MRV_IMGEFF_SKET_COEF_13_4_SHIFT 12
5331 +#define MRV_IMGEFF_SKET_COEF_12_EN
5332 +#define MRV_IMGEFF_SKET_COEF_12_EN_MASK 0x00000800
5333 +#define MRV_IMGEFF_SKET_COEF_12_EN_SHIFT 11
5334 +#define MRV_IMGEFF_SKET_COEF_12
5335 +#define MRV_IMGEFF_SKET_COEF_12_MASK 0x00000700
5336 +#define MRV_IMGEFF_SKET_COEF_12_SHIFT 8
5337 +
5338 +#define MRV_IMGEFF_SKET_COEF_12_4
5339 +#define MRV_IMGEFF_SKET_COEF_12_4_MASK 0x00000F00
5340 +#define MRV_IMGEFF_SKET_COEF_12_4_SHIFT 8
5341 +#define MRV_IMGEFF_SKET_COEF_11_EN
5342 +#define MRV_IMGEFF_SKET_COEF_11_EN_MASK 0x00000080
5343 +#define MRV_IMGEFF_SKET_COEF_11_EN_SHIFT 7
5344 +#define MRV_IMGEFF_SKET_COEF_11
5345 +#define MRV_IMGEFF_SKET_COEF_11_MASK 0x00000070
5346 +#define MRV_IMGEFF_SKET_COEF_11_SHIFT 4
5347 +
5348 +#define MRV_IMGEFF_SKET_COEF_11_4
5349 +#define MRV_IMGEFF_SKET_COEF_11_4_MASK 0x000000F0
5350 +#define MRV_IMGEFF_SKET_COEF_11_4_SHIFT 4
5351 +#define MRV_IMGEFF_EMB_COEF_33_EN
5352 +#define MRV_IMGEFF_EMB_COEF_33_EN_MASK 0x00000008
5353 +#define MRV_IMGEFF_EMB_COEF_33_EN_SHIFT 3
5354 +#define MRV_IMGEFF_EMB_COEF_33
5355 +#define MRV_IMGEFF_EMB_COEF_33_MASK 0x00000007
5356 +#define MRV_IMGEFF_EMB_COEF_33_SHIFT 0
5357 +
5358 +#define MRV_IMGEFF_EMB_COEF_33_4
5359 +#define MRV_IMGEFF_EMB_COEF_33_4_MASK 0x0000000F
5360 +#define MRV_IMGEFF_EMB_COEF_33_4_SHIFT 0
5361 +
5362 +#define MRV_IMGEFF_SKET_COEF_31_EN
5363 +#define MRV_IMGEFF_SKET_COEF_31_EN_MASK 0x00008000
5364 +#define MRV_IMGEFF_SKET_COEF_31_EN_SHIFT 15
5365 +#define MRV_IMGEFF_SKET_COEF_31
5366 +#define MRV_IMGEFF_SKET_COEF_31_MASK 0x00007000
5367 +#define MRV_IMGEFF_SKET_COEF_31_SHIFT 12
5368 +
5369 +#define MRV_IMGEFF_SKET_COEF_31_4
5370 +#define MRV_IMGEFF_SKET_COEF_31_4_MASK 0x0000F000
5371 +#define MRV_IMGEFF_SKET_COEF_31_4_SHIFT 12
5372 +#define MRV_IMGEFF_SKET_COEF_23_EN
5373 +#define MRV_IMGEFF_SKET_COEF_23_EN_MASK 0x00000800
5374 +#define MRV_IMGEFF_SKET_COEF_23_EN_SHIFT 11
5375 +#define MRV_IMGEFF_SKET_COEF_23
5376 +#define MRV_IMGEFF_SKET_COEF_23_MASK 0x00000700
5377 +#define MRV_IMGEFF_SKET_COEF_23_SHIFT 8
5378 +
5379 +#define MRV_IMGEFF_SKET_COEF_23_4
5380 +#define MRV_IMGEFF_SKET_COEF_23_4_MASK 0x00000F00
5381 +#define MRV_IMGEFF_SKET_COEF_23_4_SHIFT 8
5382 +#define MRV_IMGEFF_SKET_COEF_22_EN
5383 +#define MRV_IMGEFF_SKET_COEF_22_EN_MASK 0x00000080
5384 +#define MRV_IMGEFF_SKET_COEF_22_EN_SHIFT 7
5385 +#define MRV_IMGEFF_SKET_COEF_22
5386 +#define MRV_IMGEFF_SKET_COEF_22_MASK 0x00000070
5387 +#define MRV_IMGEFF_SKET_COEF_22_SHIFT 4
5388 +
5389 +#define MRV_IMGEFF_SKET_COEF_22_4
5390 +#define MRV_IMGEFF_SKET_COEF_22_4_MASK 0x000000F0
5391 +#define MRV_IMGEFF_SKET_COEF_22_4_SHIFT 4
5392 +#define MRV_IMGEFF_SKET_COEF_21_EN
5393 +#define MRV_IMGEFF_SKET_COEF_21_EN_MASK 0x00000008
5394 +#define MRV_IMGEFF_SKET_COEF_21_EN_SHIFT 3
5395 +#define MRV_IMGEFF_SKET_COEF_21
5396 +#define MRV_IMGEFF_SKET_COEF_21_MASK 0x00000007
5397 +#define MRV_IMGEFF_SKET_COEF_21_SHIFT 0
5398 +
5399 +#define MRV_IMGEFF_SKET_COEF_21_4
5400 +#define MRV_IMGEFF_SKET_COEF_21_4_MASK 0x0000000F
5401 +#define MRV_IMGEFF_SKET_COEF_21_4_SHIFT 0
5402 +
5403 +#define MRV_IMGEFF_SKET_COEF_33_EN
5404 +#define MRV_IMGEFF_SKET_COEF_33_EN_MASK 0x00000080
5405 +#define MRV_IMGEFF_SKET_COEF_33_EN_SHIFT 7
5406 +#define MRV_IMGEFF_SKET_COEF_33
5407 +#define MRV_IMGEFF_SKET_COEF_33_MASK 0x00000070
5408 +#define MRV_IMGEFF_SKET_COEF_33_SHIFT 4
5409 +
5410 +#define MRV_IMGEFF_SKET_COEF_33_4
5411 +#define MRV_IMGEFF_SKET_COEF_33_4_MASK 0x000000F0
5412 +#define MRV_IMGEFF_SKET_COEF_33_4_SHIFT 4
5413 +#define MRV_IMGEFF_SKET_COEF_32_EN
5414 +#define MRV_IMGEFF_SKET_COEF_32_EN_MASK 0x00000008
5415 +#define MRV_IMGEFF_SKET_COEF_32_EN_SHIFT 3
5416 +#define MRV_IMGEFF_SKET_COEF_32
5417 +#define MRV_IMGEFF_SKET_COEF_32_MASK 0x00000007
5418 +#define MRV_IMGEFF_SKET_COEF_32_SHIFT 0
5419 +
5420 +#define MRV_IMGEFF_SKET_COEF_32_4
5421 +#define MRV_IMGEFF_SKET_COEF_32_4_MASK 0x0000000F
5422 +#define MRV_IMGEFF_SKET_COEF_32_4_SHIFT 0
5423 +
5424 +#define MRV_IMGEFF_INCR_CR
5425 +#define MRV_IMGEFF_INCR_CR_MASK 0x0000FF00
5426 +#define MRV_IMGEFF_INCR_CR_SHIFT 8
5427 +#define MRV_IMGEFF_INCR_CB
5428 +#define MRV_IMGEFF_INCR_CB_MASK 0x000000FF
5429 +#define MRV_IMGEFF_INCR_CB_SHIFT 0
5430 +
5431 +#define MRV_IMGEFF_EFFECT_MODE_SHD
5432 +#define MRV_IMGEFF_EFFECT_MODE_SHD_MASK 0x0000000E
5433 +#define MRV_IMGEFF_EFFECT_MODE_SHD_SHIFT 1
5434 +
5435 +
5436 +#define MRV_SI_TRANSPARENCY_MODE
5437 +#define MRV_SI_TRANSPARENCY_MODE_MASK 0x00000004
5438 +#define MRV_SI_TRANSPARENCY_MODE_SHIFT 2
5439 +#define MRV_SI_TRANSPARENCY_MODE_DISABLED 1
5440 +#define MRV_SI_TRANSPARENCY_MODE_ENABLED  0
5441 +#define MRV_SI_REF_IMAGE
5442 +#define MRV_SI_REF_IMAGE_MASK 0x00000002
5443 +#define MRV_SI_REF_IMAGE_SHIFT 1
5444 +#define MRV_SI_REF_IMAGE_MEM   1
5445 +#define MRV_SI_REF_IMAGE_IE    0
5446 +#define MRV_SI_BYPASS_MODE
5447 +#define MRV_SI_BYPASS_MODE_MASK 0x00000001
5448 +#define MRV_SI_BYPASS_MODE_SHIFT 0
5449 +#define MRV_SI_BYPASS_MODE_BYPASS  0
5450 +#define MRV_SI_BYPASS_MODE_PROCESS 1
5451 +
5452 +#define MRV_SI_OFFSET_X
5453 +#define MRV_SI_OFFSET_X_MASK 0x00001FFE
5454 +#define MRV_SI_OFFSET_X_SHIFT 0
5455 +#define MRV_SI_OFFSET_X_MAX  0x00001FFE
5456 +
5457 +#define MRV_SI_OFFSET_Y
5458 +#define MRV_SI_OFFSET_Y_MASK 0x00000FFF
5459 +#define MRV_SI_OFFSET_Y_SHIFT 0
5460 +#define MRV_SI_OFFSET_Y_MAX  0x00000FFF
5461 +
5462 +#define MRV_SI_Y_COMP
5463 +#define MRV_SI_Y_COMP_MASK 0x000000FF
5464 +#define MRV_SI_Y_COMP_SHIFT 0
5465 +
5466 +#define MRV_SI_CB_COMP
5467 +#define MRV_SI_CB_COMP_MASK 0x000000FF
5468 +#define MRV_SI_CB_COMP_SHIFT 0
5469 +
5470 +#define MRV_SI_CR_COMP
5471 +#define MRV_SI_CR_COMP_MASK 0x000000FF
5472 +#define MRV_SI_CR_COMP_SHIFT 0
5473 +
5474 +#define MRV_ISP_ISP_CSM_C_RANGE
5475 +#define MRV_ISP_ISP_CSM_C_RANGE_MASK 0x00004000
5476 +#define MRV_ISP_ISP_CSM_C_RANGE_SHIFT 14
5477 +#define MRV_ISP_ISP_CSM_C_RANGE_BT601  0
5478 +#define MRV_ISP_ISP_CSM_C_RANGE_FULL   1
5479 +
5480 +#define MRV_ISP_ISP_CSM_Y_RANGE
5481 +#define MRV_ISP_ISP_CSM_Y_RANGE_MASK 0x00002000
5482 +#define MRV_ISP_ISP_CSM_Y_RANGE_SHIFT 13
5483 +#define MRV_ISP_ISP_CSM_Y_RANGE_BT601  0
5484 +#define MRV_ISP_ISP_CSM_Y_RANGE_FULL   1
5485 +#define MRV_ISP_ISP_FLASH_MODE
5486 +#define MRV_ISP_ISP_FLASH_MODE_MASK 0x00001000
5487 +#define MRV_ISP_ISP_FLASH_MODE_SHIFT 12
5488 +#define MRV_ISP_ISP_FLASH_MODE_INDEP  0
5489 +#define MRV_ISP_ISP_FLASH_MODE_SYNC   1
5490 +#define MRV_ISP_ISP_GAMMA_OUT_ENABLE
5491 +#define MRV_ISP_ISP_GAMMA_OUT_ENABLE_MASK 0x00000800
5492 +#define MRV_ISP_ISP_GAMMA_OUT_ENABLE_SHIFT 11
5493 +
5494 +#define MRV_ISP_ISP_GEN_CFG_UPD
5495 +#define MRV_ISP_ISP_GEN_CFG_UPD_MASK 0x00000400
5496 +#define MRV_ISP_ISP_GEN_CFG_UPD_SHIFT 10
5497 +
5498 +#define MRV_ISP_ISP_CFG_UPD
5499 +#define MRV_ISP_ISP_CFG_UPD_MASK 0x00000200
5500 +#define MRV_ISP_ISP_CFG_UPD_SHIFT 9
5501 +
5502 +
5503 +#define MRV_ISP_ISP_AWB_ENABLE
5504 +#define MRV_ISP_ISP_AWB_ENABLE_MASK 0x00000080
5505 +#define MRV_ISP_ISP_AWB_ENABLE_SHIFT 7
5506 +#define MRV_ISP_ISP_GAMMA_IN_ENABLE
5507 +#define MRV_ISP_ISP_GAMMA_IN_ENABLE_MASK 0x00000040
5508 +#define MRV_ISP_ISP_GAMMA_IN_ENABLE_SHIFT 6
5509 +
5510 +#define MRV_ISP_ISP_INFORM_ENABLE
5511 +#define MRV_ISP_ISP_INFORM_ENABLE_MASK 0x00000010
5512 +#define MRV_ISP_ISP_INFORM_ENABLE_SHIFT 4
5513 +#define MRV_ISP_ISP_MODE
5514 +#define MRV_ISP_ISP_MODE_MASK 0x0000000E
5515 +#define MRV_ISP_ISP_MODE_SHIFT 1
5516 +#define MRV_ISP_ISP_MODE_RAW    0
5517 +#define MRV_ISP_ISP_MODE_656    1
5518 +#define MRV_ISP_ISP_MODE_601    2
5519 +#define MRV_ISP_ISP_MODE_RGB    3
5520 +#define MRV_ISP_ISP_MODE_DATA   4
5521 +#define MRV_ISP_ISP_MODE_RGB656 5
5522 +#define MRV_ISP_ISP_MODE_RAW656 6
5523 +#define MRV_ISP_ISP_ENABLE
5524 +#define MRV_ISP_ISP_ENABLE_MASK 0x00000001
5525 +#define MRV_ISP_ISP_ENABLE_SHIFT 0
5526 +
5527 +#define MRV_ISP_INPUT_SELECTION
5528 +#define MRV_ISP_INPUT_SELECTION_MASK 0x00007000
5529 +#define MRV_ISP_INPUT_SELECTION_SHIFT 12
5530 +#define MRV_ISP_INPUT_SELECTION_12EXT  0
5531 +#define MRV_ISP_INPUT_SELECTION_10ZERO 1
5532 +#define MRV_ISP_INPUT_SELECTION_10MSB  2
5533 +#define MRV_ISP_INPUT_SELECTION_8ZERO  3
5534 +#define MRV_ISP_INPUT_SELECTION_8MSB   4
5535 +#define MRV_ISP_FIELD_SELECTION
5536 +#define MRV_ISP_FIELD_SELECTION_MASK 0x00000600
5537 +#define MRV_ISP_FIELD_SELECTION_SHIFT 9
5538 +#define MRV_ISP_FIELD_SELECTION_BOTH  0
5539 +#define MRV_ISP_FIELD_SELECTION_EVEN  1
5540 +#define MRV_ISP_FIELD_SELECTION_ODD   2
5541 +#define MRV_ISP_CCIR_SEQ
5542 +#define MRV_ISP_CCIR_SEQ_MASK 0x00000180
5543 +#define MRV_ISP_CCIR_SEQ_SHIFT 7
5544 +#define MRV_ISP_CCIR_SEQ_YCBYCR 0
5545 +#define MRV_ISP_CCIR_SEQ_YCRYCB 1
5546 +#define MRV_ISP_CCIR_SEQ_CBYCRY 2
5547 +#define MRV_ISP_CCIR_SEQ_CRYCBY 3
5548 +#define MRV_ISP_CONV_422
5549 +#define MRV_ISP_CONV_422_MASK 0x00000060
5550 +#define MRV_ISP_CONV_422_SHIFT  5
5551 +#define MRV_ISP_CONV_422_CO     0
5552 +#define MRV_ISP_CONV_422_INTER  1
5553 +#define MRV_ISP_CONV_422_NONCO  2
5554 +#define MRV_ISP_BAYER_PAT
5555 +#define MRV_ISP_BAYER_PAT_MASK 0x00000018
5556 +#define MRV_ISP_BAYER_PAT_SHIFT 3
5557 +#define MRV_ISP_BAYER_PAT_RG    0
5558 +#define MRV_ISP_BAYER_PAT_GR    1
5559 +#define MRV_ISP_BAYER_PAT_GB    2
5560 +#define MRV_ISP_BAYER_PAT_BG    3
5561 +#define MRV_ISP_VSYNC_POL
5562 +#define MRV_ISP_VSYNC_POL_MASK 0x00000004
5563 +#define MRV_ISP_VSYNC_POL_SHIFT 2
5564 +#define MRV_ISP_HSYNC_POL
5565 +#define MRV_ISP_HSYNC_POL_MASK 0x00000002
5566 +#define MRV_ISP_HSYNC_POL_SHIFT 1
5567 +#define MRV_ISP_SAMPLE_EDGE
5568 +#define MRV_ISP_SAMPLE_EDGE_MASK 0x00000001
5569 +#define MRV_ISP_SAMPLE_EDGE_SHIFT 0
5570 +
5571 +#define MRV_ISP_ACQ_H_OFFS
5572 +#define MRV_ISP_ACQ_H_OFFS_MASK 0x00003FFF
5573 +#define MRV_ISP_ACQ_H_OFFS_SHIFT 0
5574 +
5575 +#define MRV_ISP_ACQ_V_OFFS
5576 +#define MRV_ISP_ACQ_V_OFFS_MASK 0x00000FFF
5577 +#define MRV_ISP_ACQ_V_OFFS_SHIFT 0
5578 +
5579 +#define MRV_ISP_ACQ_H_SIZE
5580 +#define MRV_ISP_ACQ_H_SIZE_MASK 0x00003FFF
5581 +#define MRV_ISP_ACQ_H_SIZE_SHIFT 0
5582 +
5583 +#define MRV_ISP_ACQ_V_SIZE
5584 +#define MRV_ISP_ACQ_V_SIZE_MASK 0x00000FFF
5585 +#define MRV_ISP_ACQ_V_SIZE_SHIFT 0
5586 +
5587 +
5588 +#define MRV_ISP_ACQ_NR_FRAMES
5589 +#define MRV_ISP_ACQ_NR_FRAMES_MASK 0x000003FF
5590 +#define MRV_ISP_ACQ_NR_FRAMES_SHIFT 0
5591 +#define MRV_ISP_ACQ_NR_FRAMES_MAX \
5592 +       (MRV_ISP_ACQ_NR_FRAMES_MASK >> MRV_ISP_ACQ_NR_FRAMES_SHIFT)
5593 +
5594 +#define MRV_ISP_GAMMA_DX_8
5595 +#define MRV_ISP_GAMMA_DX_8_MASK 0x70000000
5596 +#define MRV_ISP_GAMMA_DX_8_SHIFT 28
5597 +
5598 +#define MRV_ISP_GAMMA_DX_7
5599 +#define MRV_ISP_GAMMA_DX_7_MASK 0x07000000
5600 +#define MRV_ISP_GAMMA_DX_7_SHIFT 24
5601 +
5602 +#define MRV_ISP_GAMMA_DX_6
5603 +#define MRV_ISP_GAMMA_DX_6_MASK 0x00700000
5604 +#define MRV_ISP_GAMMA_DX_6_SHIFT 20
5605 +
5606 +#define MRV_ISP_GAMMA_DX_5
5607 +#define MRV_ISP_GAMMA_DX_5_MASK 0x00070000
5608 +#define MRV_ISP_GAMMA_DX_5_SHIFT 16
5609 +
5610 +#define MRV_ISP_GAMMA_DX_4
5611 +#define MRV_ISP_GAMMA_DX_4_MASK 0x00007000
5612 +#define MRV_ISP_GAMMA_DX_4_SHIFT 12
5613 +
5614 +#define MRV_ISP_GAMMA_DX_3
5615 +#define MRV_ISP_GAMMA_DX_3_MASK 0x00000700
5616 +#define MRV_ISP_GAMMA_DX_3_SHIFT 8
5617 +
5618 +#define MRV_ISP_GAMMA_DX_2
5619 +#define MRV_ISP_GAMMA_DX_2_MASK 0x00000070
5620 +#define MRV_ISP_GAMMA_DX_2_SHIFT 4
5621 +
5622 +#define MRV_ISP_GAMMA_DX_1
5623 +#define MRV_ISP_GAMMA_DX_1_MASK 0x00000007
5624 +#define MRV_ISP_GAMMA_DX_1_SHIFT 0
5625 +
5626 +#define MRV_ISP_GAMMA_DX_16
5627 +#define MRV_ISP_GAMMA_DX_16_MASK 0x70000000
5628 +#define MRV_ISP_GAMMA_DX_16_SHIFT 28
5629 +
5630 +#define MRV_ISP_GAMMA_DX_15
5631 +#define MRV_ISP_GAMMA_DX_15_MASK 0x07000000
5632 +#define MRV_ISP_GAMMA_DX_15_SHIFT 24
5633 +
5634 +#define MRV_ISP_GAMMA_DX_14
5635 +#define MRV_ISP_GAMMA_DX_14_MASK 0x00700000
5636 +#define MRV_ISP_GAMMA_DX_14_SHIFT 20
5637 +
5638 +#define MRV_ISP_GAMMA_DX_13
5639 +#define MRV_ISP_GAMMA_DX_13_MASK 0x00070000
5640 +#define MRV_ISP_GAMMA_DX_13_SHIFT 16
5641 +
5642 +#define MRV_ISP_GAMMA_DX_12
5643 +#define MRV_ISP_GAMMA_DX_12_MASK 0x00007000
5644 +#define MRV_ISP_GAMMA_DX_12_SHIFT 12
5645 +
5646 +#define MRV_ISP_GAMMA_DX_11
5647 +#define MRV_ISP_GAMMA_DX_11_MASK 0x00000700
5648 +#define MRV_ISP_GAMMA_DX_11_SHIFT 8
5649 +
5650 +#define MRV_ISP_GAMMA_DX_10
5651 +#define MRV_ISP_GAMMA_DX_10_MASK 0x00000070
5652 +#define MRV_ISP_GAMMA_DX_10_SHIFT 4
5653 +
5654 +#define MRV_ISP_GAMMA_DX_9
5655 +#define MRV_ISP_GAMMA_DX_9_MASK 0x00000007
5656 +#define MRV_ISP_GAMMA_DX_9_SHIFT 0
5657 +
5658 +#define MRV_ISP_GAMMA_Y
5659 +
5660 +#define MRV_ISP_GAMMA_Y_MASK 0x00000FFF
5661 +
5662 +#define MRV_ISP_GAMMA_Y_SHIFT 0
5663 +#define MRV_ISP_GAMMA_Y_MAX (MRV_ISP_GAMMA_Y_MASK >> MRV_ISP_GAMMA_Y_SHIFT)
5664 +
5665 +#define MRV_ISP_GAMMA_R_Y
5666 +#define MRV_ISP_GAMMA_R_Y_MASK  MRV_ISP_GAMMA_Y_MASK
5667 +#define MRV_ISP_GAMMA_R_Y_SHIFT MRV_ISP_GAMMA_Y_SHIFT
5668 +
5669 +#define MRV_ISP_GAMMA_G_Y
5670 +#define MRV_ISP_GAMMA_G_Y_MASK  MRV_ISP_GAMMA_Y_MASK
5671 +#define MRV_ISP_GAMMA_G_Y_SHIFT MRV_ISP_GAMMA_Y_SHIFT
5672 +
5673 +#define MRV_ISP_GAMMA_B_Y
5674 +#define MRV_ISP_GAMMA_B_Y_MASK  MRV_ISP_GAMMA_Y_MASK
5675 +#define MRV_ISP_GAMMA_B_Y_SHIFT MRV_ISP_GAMMA_Y_SHIFT
5676 +
5677 +    #define MRV_ISP_AWB_MEAS_MODE
5678 +    #define MRV_ISP_AWB_MEAS_MODE_MASK 0x80000000
5679 +    #define MRV_ISP_AWB_MEAS_MODE_SHIFT 31
5680 +#define MRV_ISP_AWB_MAX_EN
5681 +#define MRV_ISP_AWB_MAX_EN_MASK 0x00000004
5682 +#define MRV_ISP_AWB_MAX_EN_SHIFT 2
5683 +#define MRV_ISP_AWB_MODE
5684 +#define MRV_ISP_AWB_MODE_MASK 0x00000003
5685 +#define MRV_ISP_AWB_MODE_SHIFT 0
5686 +#define MRV_ISP_AWB_MODE_MEAS   2
5687 +#define MRV_ISP_AWB_MODE_NOMEAS 0
5688 +
5689 +#define MRV_ISP_AWB_H_OFFS
5690 +#define MRV_ISP_AWB_H_OFFS_MASK 0x00000FFF
5691 +#define MRV_ISP_AWB_H_OFFS_SHIFT 0
5692 +
5693 +#define MRV_ISP_AWB_V_OFFS
5694 +#define MRV_ISP_AWB_V_OFFS_MASK 0x00000FFF
5695 +#define MRV_ISP_AWB_V_OFFS_SHIFT 0
5696 +
5697 +#define MRV_ISP_AWB_H_SIZE
5698 +#define MRV_ISP_AWB_H_SIZE_MASK 0x00001FFF
5699 +#define MRV_ISP_AWB_H_SIZE_SHIFT 0
5700 +
5701 +#define MRV_ISP_AWB_V_SIZE
5702 +#define MRV_ISP_AWB_V_SIZE_MASK 0x00000FFF
5703 +#define MRV_ISP_AWB_V_SIZE_SHIFT 0
5704 +
5705 +
5706 +#define MRV_ISP_AWB_FRAMES
5707 +#define MRV_ISP_AWB_FRAMES_MASK 0x00000007
5708 +#define MRV_ISP_AWB_FRAMES_SHIFT 0
5709 +
5710 +#define MRV_ISP_AWB_REF_CR__MAX_R
5711 +#define MRV_ISP_AWB_REF_CR__MAX_R_MASK 0x0000FF00
5712 +#define MRV_ISP_AWB_REF_CR__MAX_R_SHIFT 8
5713 +#define MRV_ISP_AWB_REF_CB__MAX_B
5714 +#define MRV_ISP_AWB_REF_CB__MAX_B_MASK 0x000000FF
5715 +#define MRV_ISP_AWB_REF_CB__MAX_B_SHIFT 0
5716 +
5717 +#define MRV_ISP_AWB_MAX_Y
5718 +#define MRV_ISP_AWB_MAX_Y_MASK 0xFF000000
5719 +#define MRV_ISP_AWB_MAX_Y_SHIFT 24
5720 +
5721 +#define MRV_ISP_AWB_MIN_Y__MAX_G
5722 +#define MRV_ISP_AWB_MIN_Y__MAX_G_MASK 0x00FF0000
5723 +#define MRV_ISP_AWB_MIN_Y__MAX_G_SHIFT 16
5724 +
5725 +#define MRV_ISP_AWB_MAX_CSUM
5726 +#define MRV_ISP_AWB_MAX_CSUM_MASK 0x0000FF00
5727 +#define MRV_ISP_AWB_MAX_CSUM_SHIFT 8
5728 +#define MRV_ISP_AWB_MIN_C
5729 +#define MRV_ISP_AWB_MIN_C_MASK 0x000000FF
5730 +#define MRV_ISP_AWB_MIN_C_SHIFT 0
5731 +
5732 +#define MRV_ISP_AWB_GAIN_GR
5733 +#define MRV_ISP_AWB_GAIN_GR_MASK 0x03FF0000
5734 +#define MRV_ISP_AWB_GAIN_GR_SHIFT 16
5735 +#define MRV_ISP_AWB_GAIN_GR_MAX  (MRV_ISP_AWB_GAIN_GR_MASK >> \
5736 +                                 MRV_ISP_AWB_GAIN_GR_SHIFT)
5737 +#define MRV_ISP_AWB_GAIN_GB
5738 +#define MRV_ISP_AWB_GAIN_GB_MASK 0x000003FF
5739 +#define MRV_ISP_AWB_GAIN_GB_SHIFT 0
5740 +#define MRV_ISP_AWB_GAIN_GB_MAX  (MRV_ISP_AWB_GAIN_GB_MASK >> \
5741 +                                 MRV_ISP_AWB_GAIN_GB_SHIFT)
5742 +
5743 +#define MRV_ISP_AWB_GAIN_R
5744 +#define MRV_ISP_AWB_GAIN_R_MASK 0x03FF0000
5745 +#define MRV_ISP_AWB_GAIN_R_SHIFT 16
5746 +#define MRV_ISP_AWB_GAIN_R_MAX  (MRV_ISP_AWB_GAIN_R_MASK >> \
5747 +                                MRV_ISP_AWB_GAIN_R_SHIFT)
5748 +#define MRV_ISP_AWB_GAIN_B
5749 +#define MRV_ISP_AWB_GAIN_B_MASK 0x000003FF
5750 +#define MRV_ISP_AWB_GAIN_B_SHIFT 0
5751 +#define MRV_ISP_AWB_GAIN_B_MAX  (MRV_ISP_AWB_GAIN_B_MASK >> \
5752 +                                MRV_ISP_AWB_GAIN_B_SHIFT)
5753 +
5754 +#define MRV_ISP_AWB_WHITE_CNT
5755 +#define MRV_ISP_AWB_WHITE_CNT_MASK 0x03FFFFFF
5756 +#define MRV_ISP_AWB_WHITE_CNT_SHIFT 0
5757 +
5758 +#define MRV_ISP_AWB_MEAN_Y__G
5759 +#define MRV_ISP_AWB_MEAN_Y__G_MASK 0x00FF0000
5760 +#define MRV_ISP_AWB_MEAN_Y__G_SHIFT 16
5761 +#define MRV_ISP_AWB_MEAN_CB__B
5762 +#define MRV_ISP_AWB_MEAN_CB__B_MASK 0x0000FF00
5763 +#define MRV_ISP_AWB_MEAN_CB__B_SHIFT 8
5764 +#define MRV_ISP_AWB_MEAN_CR__R
5765 +#define MRV_ISP_AWB_MEAN_CR__R_MASK 0x000000FF
5766 +#define MRV_ISP_AWB_MEAN_CR__R_SHIFT 0
5767 +
5768 +
5769 +
5770 +#define MRV_ISP_CC_COEFF_0
5771 +#define MRV_ISP_CC_COEFF_0_MASK 0x000001FF
5772 +#define MRV_ISP_CC_COEFF_0_SHIFT 0
5773 +
5774 +#define MRV_ISP_CC_COEFF_1
5775 +#define MRV_ISP_CC_COEFF_1_MASK 0x000001FF
5776 +#define MRV_ISP_CC_COEFF_1_SHIFT 0
5777 +
5778 +#define MRV_ISP_CC_COEFF_2
5779 +#define MRV_ISP_CC_COEFF_2_MASK 0x000001FF
5780 +#define MRV_ISP_CC_COEFF_2_SHIFT 0
5781 +
5782 +#define MRV_ISP_CC_COEFF_3
5783 +#define MRV_ISP_CC_COEFF_3_MASK 0x000001FF
5784 +#define MRV_ISP_CC_COEFF_3_SHIFT 0
5785 +
5786 +#define MRV_ISP_CC_COEFF_4
5787 +#define MRV_ISP_CC_COEFF_4_MASK 0x000001FF
5788 +#define MRV_ISP_CC_COEFF_4_SHIFT 0
5789 +
5790 +#define MRV_ISP_CC_COEFF_5
5791 +#define MRV_ISP_CC_COEFF_5_MASK 0x000001FF
5792 +#define MRV_ISP_CC_COEFF_5_SHIFT 0
5793 +
5794 +#define MRV_ISP_CC_COEFF_6
5795 +#define MRV_ISP_CC_COEFF_6_MASK 0x000001FF
5796 +#define MRV_ISP_CC_COEFF_6_SHIFT 0
5797 +
5798 +#define MRV_ISP_CC_COEFF_7
5799 +#define MRV_ISP_CC_COEFF_7_MASK 0x000001FF
5800 +#define MRV_ISP_CC_COEFF_7_SHIFT 0
5801 +
5802 +#define MRV_ISP_CC_COEFF_8
5803 +#define MRV_ISP_CC_COEFF_8_MASK 0x000001FF
5804 +#define MRV_ISP_CC_COEFF_8_SHIFT 0
5805 +
5806 +#define MRV_ISP_ISP_OUT_H_OFFS
5807 +#define MRV_ISP_ISP_OUT_H_OFFS_MASK 0x00000FFF
5808 +#define MRV_ISP_ISP_OUT_H_OFFS_SHIFT 0
5809 +
5810 +#define MRV_ISP_ISP_OUT_V_OFFS
5811 +#define MRV_ISP_ISP_OUT_V_OFFS_MASK 0x00000FFF
5812 +#define MRV_ISP_ISP_OUT_V_OFFS_SHIFT 0
5813 +
5814 +#define MRV_ISP_ISP_OUT_H_SIZE
5815 +#define MRV_ISP_ISP_OUT_H_SIZE_MASK 0x00003FFF
5816 +#define MRV_ISP_ISP_OUT_H_SIZE_SHIFT 0
5817 +
5818 +#define MRV_ISP_ISP_OUT_V_SIZE
5819 +#define MRV_ISP_ISP_OUT_V_SIZE_MASK 0x00000FFF
5820 +#define MRV_ISP_ISP_OUT_V_SIZE_SHIFT 0
5821 +
5822 +#define MRV_ISP_DEMOSAIC_BYPASS
5823 +#define MRV_ISP_DEMOSAIC_BYPASS_MASK 0x00000400
5824 +#define MRV_ISP_DEMOSAIC_BYPASS_SHIFT 10
5825 +
5826 +#define MRV_ISP_DEMOSAIC_MODE
5827 +#define MRV_ISP_DEMOSAIC_MODE_MASK  0x00000300
5828 +#define MRV_ISP_DEMOSAIC_MODE_SHIFT 8
5829 +#define MRV_ISP_DEMOSAIC_MODE_STD   0
5830 +#define MRV_ISP_DEMOSAIC_MODE_ENH   1
5831 +#define MRV_ISP_DEMOSAIC_TH
5832 +#define MRV_ISP_DEMOSAIC_TH_MASK 0x000000FF
5833 +#define MRV_ISP_DEMOSAIC_TH_SHIFT 0
5834 +
5835 +#define MRV_ISP_S_HSYNC
5836 +
5837 +#define MRV_ISP_S_HSYNC_MASK 0x80000000
5838 +#define MRV_ISP_S_HSYNC_SHIFT 31
5839 +
5840 +#define MRV_ISP_S_VSYNC
5841 +
5842 +#define MRV_ISP_S_VSYNC_MASK 0x40000000
5843 +#define MRV_ISP_S_VSYNC_SHIFT 30
5844 +
5845 +#define MRV_ISP_S_DATA
5846 +
5847 +#define MRV_ISP_S_DATA_MASK 0x0FFF0000
5848 +
5849 +#define MRV_ISP_S_DATA_SHIFT 16
5850 +#define MRV_ISP_INFORM_FIELD
5851 +#define MRV_ISP_INFORM_FIELD_MASK 0x00000004
5852 +#define MRV_ISP_INFORM_FIELD_SHIFT 2
5853 +#define MRV_ISP_INFORM_FIELD_ODD   0
5854 +#define MRV_ISP_INFORM_FIELD_EVEN  1
5855 +#define MRV_ISP_INFORM_EN_SHD
5856 +#define MRV_ISP_INFORM_EN_SHD_MASK 0x00000002
5857 +#define MRV_ISP_INFORM_EN_SHD_SHIFT 1
5858 +#define MRV_ISP_ISP_ON_SHD
5859 +#define MRV_ISP_ISP_ON_SHD_MASK 0x00000001
5860 +#define MRV_ISP_ISP_ON_SHD_SHIFT 0
5861 +
5862 +
5863 +#define MRV_ISP_ISP_OUT_H_OFFS_SHD
5864 +#define MRV_ISP_ISP_OUT_H_OFFS_SHD_MASK 0x00000FFF
5865 +#define MRV_ISP_ISP_OUT_H_OFFS_SHD_SHIFT 0
5866 +
5867 +#define MRV_ISP_ISP_OUT_V_OFFS_SHD
5868 +#define MRV_ISP_ISP_OUT_V_OFFS_SHD_MASK 0x00000FFF
5869 +#define MRV_ISP_ISP_OUT_V_OFFS_SHD_SHIFT 0
5870 +
5871 +
5872 +#define MRV_ISP_ISP_OUT_H_SIZE_SHD
5873 +#define MRV_ISP_ISP_OUT_H_SIZE_SHD_MASK 0x00003FFF
5874 +#define MRV_ISP_ISP_OUT_H_SIZE_SHD_SHIFT 0
5875 +
5876 +
5877 +#define MRV_ISP_ISP_OUT_V_SIZE_SHD
5878 +#define MRV_ISP_ISP_OUT_V_SIZE_SHD_MASK 0x00000FFF
5879 +#define MRV_ISP_ISP_OUT_V_SIZE_SHD_SHIFT 0
5880 +
5881 +#define MRV_ISP_IMSC_EXP_END
5882 +#define MRV_ISP_IMSC_EXP_END_MASK 0x00040000
5883 +#define MRV_ISP_IMSC_EXP_END_SHIFT 18
5884 +
5885 +#define MRV_ISP_IMSC_FLASH_CAP
5886 +#define MRV_ISP_IMSC_FLASH_CAP_MASK 0x00020000
5887 +#define MRV_ISP_IMSC_FLASH_CAP_SHIFT 17
5888 +
5889 +#define MRV_ISP_IMSC_BP_DET
5890 +#define MRV_ISP_IMSC_BP_DET_MASK 0x00010000
5891 +#define MRV_ISP_IMSC_BP_DET_SHIFT 16
5892 +#define MRV_ISP_IMSC_BP_NEW_TAB_FUL
5893 +#define MRV_ISP_IMSC_BP_NEW_TAB_FUL_MASK 0x00008000
5894 +#define MRV_ISP_IMSC_BP_NEW_TAB_FUL_SHIFT 15
5895 +#define MRV_ISP_IMSC_AFM_FIN
5896 +#define MRV_ISP_IMSC_AFM_FIN_MASK 0x00004000
5897 +#define MRV_ISP_IMSC_AFM_FIN_SHIFT 14
5898 +#define MRV_ISP_IMSC_AFM_LUM_OF
5899 +#define MRV_ISP_IMSC_AFM_LUM_OF_MASK 0x00002000
5900 +#define MRV_ISP_IMSC_AFM_LUM_OF_SHIFT 13
5901 +#define MRV_ISP_IMSC_AFM_SUM_OF
5902 +#define MRV_ISP_IMSC_AFM_SUM_OF_MASK 0x00001000
5903 +#define MRV_ISP_IMSC_AFM_SUM_OF_SHIFT 12
5904 +#define MRV_ISP_IMSC_SHUTTER_OFF
5905 +#define MRV_ISP_IMSC_SHUTTER_OFF_MASK 0x00000800
5906 +#define MRV_ISP_IMSC_SHUTTER_OFF_SHIFT 11
5907 +#define MRV_ISP_IMSC_SHUTTER_ON
5908 +#define MRV_ISP_IMSC_SHUTTER_ON_MASK 0x00000400
5909 +#define MRV_ISP_IMSC_SHUTTER_ON_SHIFT 10
5910 +#define MRV_ISP_IMSC_FLASH_OFF
5911 +#define MRV_ISP_IMSC_FLASH_OFF_MASK 0x00000200
5912 +#define MRV_ISP_IMSC_FLASH_OFF_SHIFT 9
5913 +#define MRV_ISP_IMSC_FLASH_ON
5914 +#define MRV_ISP_IMSC_FLASH_ON_MASK 0x00000100
5915 +#define MRV_ISP_IMSC_FLASH_ON_SHIFT 8
5916 +
5917 +#define MRV_ISP_IMSC_H_START
5918 +#define MRV_ISP_IMSC_H_START_MASK 0x00000080
5919 +#define MRV_ISP_IMSC_H_START_SHIFT 7
5920 +#define MRV_ISP_IMSC_V_START
5921 +#define MRV_ISP_IMSC_V_START_MASK 0x00000040
5922 +#define MRV_ISP_IMSC_V_START_SHIFT 6
5923 +#define MRV_ISP_IMSC_FRAME_IN
5924 +#define MRV_ISP_IMSC_FRAME_IN_MASK 0x00000020
5925 +#define MRV_ISP_IMSC_FRAME_IN_SHIFT 5
5926 +#define MRV_ISP_IMSC_AWB_DONE
5927 +#define MRV_ISP_IMSC_AWB_DONE_MASK 0x00000010
5928 +#define MRV_ISP_IMSC_AWB_DONE_SHIFT 4
5929 +#define MRV_ISP_IMSC_PIC_SIZE_ERR
5930 +#define MRV_ISP_IMSC_PIC_SIZE_ERR_MASK 0x00000008
5931 +#define MRV_ISP_IMSC_PIC_SIZE_ERR_SHIFT 3
5932 +#define MRV_ISP_IMSC_DATA_LOSS
5933 +#define MRV_ISP_IMSC_DATA_LOSS_MASK 0x00000004
5934 +#define MRV_ISP_IMSC_DATA_LOSS_SHIFT 2
5935 +#define MRV_ISP_IMSC_FRAME
5936 +#define MRV_ISP_IMSC_FRAME_MASK 0x00000002
5937 +#define MRV_ISP_IMSC_FRAME_SHIFT 1
5938 +#define MRV_ISP_IMSC_ISP_OFF
5939 +#define MRV_ISP_IMSC_ISP_OFF_MASK 0x00000001
5940 +#define MRV_ISP_IMSC_ISP_OFF_SHIFT 0
5941 +
5942 +#define MRV_ISP_IMSC_ALL
5943 +#define MRV_ISP_IMSC_ALL_MASK \
5944 +(0 \
5945 +| MRV_ISP_IMSC_EXP_END_MASK \
5946 +| MRV_ISP_IMSC_FLASH_CAP_MASK \
5947 +| MRV_ISP_IMSC_BP_DET_MASK \
5948 +| MRV_ISP_IMSC_BP_NEW_TAB_FUL_MASK \
5949 +| MRV_ISP_IMSC_AFM_FIN_MASK \
5950 +| MRV_ISP_IMSC_AFM_LUM_OF_MASK \
5951 +| MRV_ISP_IMSC_AFM_SUM_OF_MASK \
5952 +| MRV_ISP_IMSC_SHUTTER_OFF_MASK \
5953 +| MRV_ISP_IMSC_SHUTTER_ON_MASK \
5954 +| MRV_ISP_IMSC_FLASH_OFF_MASK \
5955 +| MRV_ISP_IMSC_FLASH_ON_MASK \
5956 +| MRV_ISP_IMSC_H_START_MASK \
5957 +| MRV_ISP_IMSC_V_START_MASK \
5958 +| MRV_ISP_IMSC_FRAME_IN_MASK \
5959 +| MRV_ISP_IMSC_AWB_DONE_MASK \
5960 +| MRV_ISP_IMSC_PIC_SIZE_ERR_MASK \
5961 +| MRV_ISP_IMSC_DATA_LOSS_MASK \
5962 +| MRV_ISP_IMSC_FRAME_MASK \
5963 +| MRV_ISP_IMSC_ISP_OFF_MASK \
5964 +)
5965 +#define MRV_ISP_IMSC_ALL_SHIFT 0
5966 +
5967 +#define MRV_ISP_RIS_EXP_END
5968 +#define MRV_ISP_RIS_EXP_END_MASK 0x00040000
5969 +#define MRV_ISP_RIS_EXP_END_SHIFT 18
5970 +
5971 +#define MRV_ISP_RIS_FLASH_CAP
5972 +#define MRV_ISP_RIS_FLASH_CAP_MASK 0x00020000
5973 +#define MRV_ISP_RIS_FLASH_CAP_SHIFT 17
5974 +
5975 +#define MRV_ISP_RIS_BP_DET
5976 +#define MRV_ISP_RIS_BP_DET_MASK 0x00010000
5977 +#define MRV_ISP_RIS_BP_DET_SHIFT 16
5978 +#define MRV_ISP_RIS_BP_NEW_TAB_FUL
5979 +#define MRV_ISP_RIS_BP_NEW_TAB_FUL_MASK 0x00008000
5980 +#define MRV_ISP_RIS_BP_NEW_TAB_FUL_SHIFT 15
5981 +#define MRV_ISP_RIS_AFM_FIN
5982 +#define MRV_ISP_RIS_AFM_FIN_MASK 0x00004000
5983 +#define MRV_ISP_RIS_AFM_FIN_SHIFT 14
5984 +#define MRV_ISP_RIS_AFM_LUM_OF
5985 +#define MRV_ISP_RIS_AFM_LUM_OF_MASK 0x00002000
5986 +#define MRV_ISP_RIS_AFM_LUM_OF_SHIFT 13
5987 +#define MRV_ISP_RIS_AFM_SUM_OF
5988 +#define MRV_ISP_RIS_AFM_SUM_OF_MASK 0x00001000
5989 +#define MRV_ISP_RIS_AFM_SUM_OF_SHIFT 12
5990 +#define MRV_ISP_RIS_SHUTTER_OFF
5991 +#define MRV_ISP_RIS_SHUTTER_OFF_MASK 0x00000800
5992 +#define MRV_ISP_RIS_SHUTTER_OFF_SHIFT 11
5993 +#define MRV_ISP_RIS_SHUTTER_ON
5994 +#define MRV_ISP_RIS_SHUTTER_ON_MASK 0x00000400
5995 +#define MRV_ISP_RIS_SHUTTER_ON_SHIFT 10
5996 +#define MRV_ISP_RIS_FLASH_OFF
5997 +#define MRV_ISP_RIS_FLASH_OFF_MASK 0x00000200
5998 +#define MRV_ISP_RIS_FLASH_OFF_SHIFT 9
5999 +#define MRV_ISP_RIS_FLASH_ON
6000 +#define MRV_ISP_RIS_FLASH_ON_MASK 0x00000100
6001 +#define MRV_ISP_RIS_FLASH_ON_SHIFT 8
6002 +
6003 +#define MRV_ISP_RIS_H_START
6004 +#define MRV_ISP_RIS_H_START_MASK 0x00000080
6005 +#define MRV_ISP_RIS_H_START_SHIFT 7
6006 +#define MRV_ISP_RIS_V_START
6007 +#define MRV_ISP_RIS_V_START_MASK 0x00000040
6008 +#define MRV_ISP_RIS_V_START_SHIFT 6
6009 +#define MRV_ISP_RIS_FRAME_IN
6010 +#define MRV_ISP_RIS_FRAME_IN_MASK 0x00000020
6011 +#define MRV_ISP_RIS_FRAME_IN_SHIFT 5
6012 +#define MRV_ISP_RIS_AWB_DONE
6013 +#define MRV_ISP_RIS_AWB_DONE_MASK 0x00000010
6014 +#define MRV_ISP_RIS_AWB_DONE_SHIFT 4
6015 +#define MRV_ISP_RIS_PIC_SIZE_ERR
6016 +#define MRV_ISP_RIS_PIC_SIZE_ERR_MASK 0x00000008
6017 +#define MRV_ISP_RIS_PIC_SIZE_ERR_SHIFT 3
6018 +#define MRV_ISP_RIS_DATA_LOSS
6019 +#define MRV_ISP_RIS_DATA_LOSS_MASK 0x00000004
6020 +#define MRV_ISP_RIS_DATA_LOSS_SHIFT 2
6021 +#define MRV_ISP_RIS_FRAME
6022 +#define MRV_ISP_RIS_FRAME_MASK 0x00000002
6023 +#define MRV_ISP_RIS_FRAME_SHIFT 1
6024 +#define MRV_ISP_RIS_ISP_OFF
6025 +#define MRV_ISP_RIS_ISP_OFF_MASK 0x00000001
6026 +#define MRV_ISP_RIS_ISP_OFF_SHIFT 0
6027 +
6028 +#define MRV_ISP_RIS_ALL
6029 +#define MRV_ISP_RIS_ALL_MASK \
6030 +(0 \
6031 +| MRV_ISP_RIS_EXP_END_MASK \
6032 +| MRV_ISP_RIS_FLASH_CAP_MASK \
6033 +| MRV_ISP_RIS_BP_DET_MASK \
6034 +| MRV_ISP_RIS_BP_NEW_TAB_FUL_MASK \
6035 +| MRV_ISP_RIS_AFM_FIN_MASK \
6036 +| MRV_ISP_RIS_AFM_LUM_OF_MASK \
6037 +| MRV_ISP_RIS_AFM_SUM_OF_MASK \
6038 +| MRV_ISP_RIS_SHUTTER_OFF_MASK \
6039 +| MRV_ISP_RIS_SHUTTER_ON_MASK \
6040 +| MRV_ISP_RIS_FLASH_OFF_MASK \
6041 +| MRV_ISP_RIS_FLASH_ON_MASK \
6042 +| MRV_ISP_RIS_H_START_MASK \
6043 +| MRV_ISP_RIS_V_START_MASK \
6044 +| MRV_ISP_RIS_FRAME_IN_MASK \
6045 +| MRV_ISP_RIS_AWB_DONE_MASK \
6046 +| MRV_ISP_RIS_PIC_SIZE_ERR_MASK \
6047 +| MRV_ISP_RIS_DATA_LOSS_MASK \
6048 +| MRV_ISP_RIS_FRAME_MASK \
6049 +| MRV_ISP_RIS_ISP_OFF_MASK \
6050 +)
6051 +#define MRV_ISP_RIS_ALL_SHIFT 0
6052 +
6053 +#define MRV_ISP_MIS_EXP_END
6054 +#define MRV_ISP_MIS_EXP_END_MASK 0x00040000
6055 +#define MRV_ISP_MIS_EXP_END_SHIFT 18
6056 +
6057 +#define MRV_ISP_MIS_FLASH_CAP
6058 +#define MRV_ISP_MIS_FLASH_CAP_MASK 0x00020000
6059 +#define MRV_ISP_MIS_FLASH_CAP_SHIFT 17
6060 +
6061 +#define MRV_ISP_MIS_BP_DET
6062 +#define MRV_ISP_MIS_BP_DET_MASK 0x00010000
6063 +#define MRV_ISP_MIS_BP_DET_SHIFT 16
6064 +#define MRV_ISP_MIS_BP_NEW_TAB_FUL
6065 +#define MRV_ISP_MIS_BP_NEW_TAB_FUL_MASK 0x00008000
6066 +#define MRV_ISP_MIS_BP_NEW_TAB_FUL_SHIFT 15
6067 +#define MRV_ISP_MIS_AFM_FIN
6068 +#define MRV_ISP_MIS_AFM_FIN_MASK 0x00004000
6069 +#define MRV_ISP_MIS_AFM_FIN_SHIFT 14
6070 +#define MRV_ISP_MIS_AFM_LUM_OF
6071 +#define MRV_ISP_MIS_AFM_LUM_OF_MASK 0x00002000
6072 +#define MRV_ISP_MIS_AFM_LUM_OF_SHIFT 13
6073 +#define MRV_ISP_MIS_AFM_SUM_OF
6074 +#define MRV_ISP_MIS_AFM_SUM_OF_MASK 0x00001000
6075 +#define MRV_ISP_MIS_AFM_SUM_OF_SHIFT 12
6076 +#define MRV_ISP_MIS_SHUTTER_OFF
6077 +#define MRV_ISP_MIS_SHUTTER_OFF_MASK 0x00000800
6078 +#define MRV_ISP_MIS_SHUTTER_OFF_SHIFT 11
6079 +#define MRV_ISP_MIS_SHUTTER_ON
6080 +#define MRV_ISP_MIS_SHUTTER_ON_MASK 0x00000400
6081 +#define MRV_ISP_MIS_SHUTTER_ON_SHIFT 10
6082 +#define MRV_ISP_MIS_FLASH_OFF
6083 +#define MRV_ISP_MIS_FLASH_OFF_MASK 0x00000200
6084 +#define MRV_ISP_MIS_FLASH_OFF_SHIFT 9
6085 +#define MRV_ISP_MIS_FLASH_ON
6086 +#define MRV_ISP_MIS_FLASH_ON_MASK 0x00000100
6087 +#define MRV_ISP_MIS_FLASH_ON_SHIFT 8
6088 +
6089 +#define MRV_ISP_MIS_H_START
6090 +#define MRV_ISP_MIS_H_START_MASK 0x00000080
6091 +#define MRV_ISP_MIS_H_START_SHIFT 7
6092 +#define MRV_ISP_MIS_V_START
6093 +#define MRV_ISP_MIS_V_START_MASK 0x00000040
6094 +#define MRV_ISP_MIS_V_START_SHIFT 6
6095 +#define MRV_ISP_MIS_FRAME_IN
6096 +#define MRV_ISP_MIS_FRAME_IN_MASK 0x00000020
6097 +#define MRV_ISP_MIS_FRAME_IN_SHIFT 5
6098 +#define MRV_ISP_MIS_AWB_DONE
6099 +#define MRV_ISP_MIS_AWB_DONE_MASK 0x00000010
6100 +#define MRV_ISP_MIS_AWB_DONE_SHIFT 4
6101 +#define MRV_ISP_MIS_PIC_SIZE_ERR
6102 +#define MRV_ISP_MIS_PIC_SIZE_ERR_MASK 0x00000008
6103 +#define MRV_ISP_MIS_PIC_SIZE_ERR_SHIFT 3
6104 +#define MRV_ISP_MIS_DATA_LOSS
6105 +#define MRV_ISP_MIS_DATA_LOSS_MASK 0x00000004
6106 +#define MRV_ISP_MIS_DATA_LOSS_SHIFT 2
6107 +#define MRV_ISP_MIS_FRAME
6108 +#define MRV_ISP_MIS_FRAME_MASK 0x00000002
6109 +#define MRV_ISP_MIS_FRAME_SHIFT 1
6110 +#define MRV_ISP_MIS_ISP_OFF
6111 +#define MRV_ISP_MIS_ISP_OFF_MASK 0x00000001
6112 +#define MRV_ISP_MIS_ISP_OFF_SHIFT 0
6113 +
6114 +#define MRV_ISP_MIS_ALL
6115 +#define MRV_ISP_MIS_ALL_MASK \
6116 +(0 \
6117 +| MRV_ISP_MIS_EXP_END_MASK \
6118 +| MRV_ISP_MIS_FLASH_CAP_MASK \
6119 +| MRV_ISP_MIS_BP_DET_MASK \
6120 +| MRV_ISP_MIS_BP_NEW_TAB_FUL_MASK \
6121 +| MRV_ISP_MIS_AFM_FIN_MASK \
6122 +| MRV_ISP_MIS_AFM_LUM_OF_MASK \
6123 +| MRV_ISP_MIS_AFM_SUM_OF_MASK \
6124 +| MRV_ISP_MIS_SHUTTER_OFF_MASK \
6125 +| MRV_ISP_MIS_SHUTTER_ON_MASK \
6126 +| MRV_ISP_MIS_FLASH_OFF_MASK \
6127 +| MRV_ISP_MIS_FLASH_ON_MASK \
6128 +| MRV_ISP_MIS_H_START_MASK \
6129 +| MRV_ISP_MIS_V_START_MASK \
6130 +| MRV_ISP_MIS_FRAME_IN_MASK \
6131 +| MRV_ISP_MIS_AWB_DONE_MASK \
6132 +| MRV_ISP_MIS_PIC_SIZE_ERR_MASK \
6133 +| MRV_ISP_MIS_DATA_LOSS_MASK \
6134 +| MRV_ISP_MIS_FRAME_MASK \
6135 +| MRV_ISP_MIS_ISP_OFF_MASK \
6136 +)
6137 +#define MRV_ISP_MIS_ALL_SHIFT 0
6138 +
6139 +#define MRV_ISP_ICR_EXP_END
6140 +#define MRV_ISP_ICR_EXP_END_MASK 0x00040000
6141 +#define MRV_ISP_ICR_EXP_END_SHIFT 18
6142 +#define MRV_ISP_ICR_FLASH_CAP
6143 +#define MRV_ISP_ICR_FLASH_CAP_MASK 0x00020000
6144 +#define MRV_ISP_ICR_FLASH_CAP_SHIFT 17
6145 +
6146 +#define MRV_ISP_ICR_BP_DET
6147 +#define MRV_ISP_ICR_BP_DET_MASK 0x00010000
6148 +#define MRV_ISP_ICR_BP_DET_SHIFT 16
6149 +#define MRV_ISP_ICR_BP_NEW_TAB_FUL
6150 +#define MRV_ISP_ICR_BP_NEW_TAB_FUL_MASK 0x00008000
6151 +#define MRV_ISP_ICR_BP_NEW_TAB_FUL_SHIFT 15
6152 +#define MRV_ISP_ICR_AFM_FIN
6153 +#define MRV_ISP_ICR_AFM_FIN_MASK 0x00004000
6154 +#define MRV_ISP_ICR_AFM_FIN_SHIFT 14
6155 +#define MRV_ISP_ICR_AFM_LUM_OF
6156 +#define MRV_ISP_ICR_AFM_LUM_OF_MASK 0x00002000
6157 +#define MRV_ISP_ICR_AFM_LUM_OF_SHIFT 13
6158 +#define MRV_ISP_ICR_AFM_SUM_OF
6159 +#define MRV_ISP_ICR_AFM_SUM_OF_MASK 0x00001000
6160 +#define MRV_ISP_ICR_AFM_SUM_OF_SHIFT 12
6161 +#define MRV_ISP_ICR_SHUTTER_OFF
6162 +#define MRV_ISP_ICR_SHUTTER_OFF_MASK 0x00000800
6163 +#define MRV_ISP_ICR_SHUTTER_OFF_SHIFT 11
6164 +#define MRV_ISP_ICR_SHUTTER_ON
6165 +#define MRV_ISP_ICR_SHUTTER_ON_MASK 0x00000400
6166 +#define MRV_ISP_ICR_SHUTTER_ON_SHIFT 10
6167 +#define MRV_ISP_ICR_FLASH_OFF
6168 +#define MRV_ISP_ICR_FLASH_OFF_MASK 0x00000200
6169 +#define MRV_ISP_ICR_FLASH_OFF_SHIFT 9
6170 +#define MRV_ISP_ICR_FLASH_ON
6171 +#define MRV_ISP_ICR_FLASH_ON_MASK 0x00000100
6172 +#define MRV_ISP_ICR_FLASH_ON_SHIFT 8
6173 +
6174 +#define MRV_ISP_ICR_H_START
6175 +#define MRV_ISP_ICR_H_START_MASK 0x00000080
6176 +#define MRV_ISP_ICR_H_START_SHIFT 7
6177 +#define MRV_ISP_ICR_V_START
6178 +#define MRV_ISP_ICR_V_START_MASK 0x00000040
6179 +#define MRV_ISP_ICR_V_START_SHIFT 6
6180 +#define MRV_ISP_ICR_FRAME_IN
6181 +#define MRV_ISP_ICR_FRAME_IN_MASK 0x00000020
6182 +#define MRV_ISP_ICR_FRAME_IN_SHIFT 5
6183 +#define MRV_ISP_ICR_AWB_DONE
6184 +#define MRV_ISP_ICR_AWB_DONE_MASK 0x00000010
6185 +#define MRV_ISP_ICR_AWB_DONE_SHIFT 4
6186 +#define MRV_ISP_ICR_PIC_SIZE_ERR
6187 +#define MRV_ISP_ICR_PIC_SIZE_ERR_MASK 0x00000008
6188 +#define MRV_ISP_ICR_PIC_SIZE_ERR_SHIFT 3
6189 +#define MRV_ISP_ICR_DATA_LOSS
6190 +#define MRV_ISP_ICR_DATA_LOSS_MASK 0x00000004
6191 +#define MRV_ISP_ICR_DATA_LOSS_SHIFT 2
6192 +#define MRV_ISP_ICR_FRAME
6193 +#define MRV_ISP_ICR_FRAME_MASK 0x00000002
6194 +#define MRV_ISP_ICR_FRAME_SHIFT 1
6195 +#define MRV_ISP_ICR_ISP_OFF
6196 +#define MRV_ISP_ICR_ISP_OFF_MASK 0x00000001
6197 +#define MRV_ISP_ICR_ISP_OFF_SHIFT 0
6198 +
6199 +#define MRV_ISP_ICR_ALL
6200 +#define MRV_ISP_ICR_ALL_MASK \
6201 +(0 \
6202 +| MRV_ISP_ICR_EXP_END_MASK \
6203 +| MRV_ISP_ICR_FLASH_CAP_MASK \
6204 +| MRV_ISP_ICR_BP_DET_MASK \
6205 +| MRV_ISP_ICR_BP_NEW_TAB_FUL_MASK \
6206 +| MRV_ISP_ICR_AFM_FIN_MASK \
6207 +| MRV_ISP_ICR_AFM_LUM_OF_MASK \
6208 +| MRV_ISP_ICR_AFM_SUM_OF_MASK \
6209 +| MRV_ISP_ICR_SHUTTER_OFF_MASK \
6210 +| MRV_ISP_ICR_SHUTTER_ON_MASK \
6211 +| MRV_ISP_ICR_FLASH_OFF_MASK \
6212 +| MRV_ISP_ICR_FLASH_ON_MASK \
6213 +| MRV_ISP_ICR_H_START_MASK \
6214 +| MRV_ISP_ICR_V_START_MASK \
6215 +| MRV_ISP_ICR_FRAME_IN_MASK \
6216 +| MRV_ISP_ICR_AWB_DONE_MASK \
6217 +| MRV_ISP_ICR_PIC_SIZE_ERR_MASK \
6218 +| MRV_ISP_ICR_DATA_LOSS_MASK \
6219 +| MRV_ISP_ICR_FRAME_MASK \
6220 +| MRV_ISP_ICR_ISP_OFF_MASK \
6221 +)
6222 +#define MRV_ISP_ICR_ALL_SHIFT 0
6223 +
6224 +#define MRV_ISP_ISR_EXP_END
6225 +#define MRV_ISP_ISR_EXP_END_MASK 0x00040000
6226 +#define MRV_ISP_ISR_EXP_END_SHIFT 18
6227 +#define MRV_ISP_ISR_FLASH_CAP
6228 +#define MRV_ISP_ISR_FLASH_CAP_MASK 0x00020000
6229 +#define MRV_ISP_ISR_FLASH_CAP_SHIFT 17
6230 +
6231 +#define MRV_ISP_ISR_BP_DET
6232 +#define MRV_ISP_ISR_BP_DET_MASK 0x00010000
6233 +#define MRV_ISP_ISR_BP_DET_SHIFT 16
6234 +#define MRV_ISP_ISR_BP_NEW_TAB_FUL
6235 +#define MRV_ISP_ISR_BP_NEW_TAB_FUL_MASK 0x00008000
6236 +#define MRV_ISP_ISR_BP_NEW_TAB_FUL_SHIFT 15
6237 +#define MRV_ISP_ISR_AFM_FIN
6238 +#define MRV_ISP_ISR_AFM_FIN_MASK 0x00004000
6239 +#define MRV_ISP_ISR_AFM_FIN_SHIFT 14
6240 +#define MRV_ISP_ISR_AFM_LUM_OF
6241 +#define MRV_ISP_ISR_AFM_LUM_OF_MASK 0x00002000
6242 +#define MRV_ISP_ISR_AFM_LUM_OF_SHIFT 13
6243 +#define MRV_ISP_ISR_AFM_SUM_OF
6244 +#define MRV_ISP_ISR_AFM_SUM_OF_MASK 0x00001000
6245 +#define MRV_ISP_ISR_AFM_SUM_OF_SHIFT 12
6246 +#define MRV_ISP_ISR_SHUTTER_OFF
6247 +#define MRV_ISP_ISR_SHUTTER_OFF_MASK 0x00000800
6248 +#define MRV_ISP_ISR_SHUTTER_OFF_SHIFT 11
6249 +#define MRV_ISP_ISR_SHUTTER_ON
6250 +#define MRV_ISP_ISR_SHUTTER_ON_MASK 0x00000400
6251 +#define MRV_ISP_ISR_SHUTTER_ON_SHIFT 10
6252 +#define MRV_ISP_ISR_FLASH_OFF
6253 +#define MRV_ISP_ISR_FLASH_OFF_MASK 0x00000200
6254 +#define MRV_ISP_ISR_FLASH_OFF_SHIFT 9
6255 +#define MRV_ISP_ISR_FLASH_ON
6256 +#define MRV_ISP_ISR_FLASH_ON_MASK 0x00000100
6257 +#define MRV_ISP_ISR_FLASH_ON_SHIFT 8
6258 +
6259 +#define MRV_ISP_ISR_H_START
6260 +#define MRV_ISP_ISR_H_START_MASK 0x00000080
6261 +#define MRV_ISP_ISR_H_START_SHIFT 7
6262 +#define MRV_ISP_ISR_V_START
6263 +#define MRV_ISP_ISR_V_START_MASK 0x00000040
6264 +#define MRV_ISP_ISR_V_START_SHIFT 6
6265 +#define MRV_ISP_ISR_FRAME_IN
6266 +#define MRV_ISP_ISR_FRAME_IN_MASK 0x00000020
6267 +#define MRV_ISP_ISR_FRAME_IN_SHIFT 5
6268 +#define MRV_ISP_ISR_AWB_DONE
6269 +#define MRV_ISP_ISR_AWB_DONE_MASK 0x00000010
6270 +#define MRV_ISP_ISR_AWB_DONE_SHIFT 4
6271 +#define MRV_ISP_ISR_PIC_SIZE_ERR
6272 +#define MRV_ISP_ISR_PIC_SIZE_ERR_MASK 0x00000008
6273 +#define MRV_ISP_ISR_PIC_SIZE_ERR_SHIFT 3
6274 +#define MRV_ISP_ISR_DATA_LOSS
6275 +#define MRV_ISP_ISR_DATA_LOSS_MASK 0x00000004
6276 +#define MRV_ISP_ISR_DATA_LOSS_SHIFT 2
6277 +#define MRV_ISP_ISR_FRAME
6278 +#define MRV_ISP_ISR_FRAME_MASK 0x00000002
6279 +#define MRV_ISP_ISR_FRAME_SHIFT 1
6280 +#define MRV_ISP_ISR_ISP_OFF
6281 +#define MRV_ISP_ISR_ISP_OFF_MASK 0x00000001
6282 +#define MRV_ISP_ISR_ISP_OFF_SHIFT 0
6283 +
6284 +#define MRV_ISP_ISR_ALL
6285 +#define MRV_ISP_ISR_ALL_MASK \
6286 +(0 \
6287 +| MRV_ISP_ISR_EXP_END_MASK \
6288 +| MRV_ISP_ISR_FLASH_CAP_MASK \
6289 +| MRV_ISP_ISR_BP_DET_MASK \
6290 +| MRV_ISP_ISR_BP_NEW_TAB_FUL_MASK \
6291 +| MRV_ISP_ISR_AFM_FIN_MASK \
6292 +| MRV_ISP_ISR_AFM_LUM_OF_MASK \
6293 +| MRV_ISP_ISR_AFM_SUM_OF_MASK \
6294 +| MRV_ISP_ISR_SHUTTER_OFF_MASK \
6295 +| MRV_ISP_ISR_SHUTTER_ON_MASK \
6296 +| MRV_ISP_ISR_FLASH_OFF_MASK \
6297 +| MRV_ISP_ISR_FLASH_ON_MASK \
6298 +| MRV_ISP_ISR_H_START_MASK \
6299 +| MRV_ISP_ISR_V_START_MASK \
6300 +| MRV_ISP_ISR_FRAME_IN_MASK \
6301 +| MRV_ISP_ISR_AWB_DONE_MASK \
6302 +| MRV_ISP_ISR_PIC_SIZE_ERR_MASK \
6303 +| MRV_ISP_ISR_DATA_LOSS_MASK \
6304 +| MRV_ISP_ISR_FRAME_MASK \
6305 +| MRV_ISP_ISR_ISP_OFF_MASK \
6306 +)
6307 +#define MRV_ISP_ISR_ALL_SHIFT 0
6308 +
6309 +#define MRV_ISP_CT_COEFF
6310 +#define MRV_ISP_CT_COEFF_MASK 0x000007FF
6311 +#define MRV_ISP_CT_COEFF_SHIFT 0
6312 +#define MRV_ISP_CT_COEFF_MAX   (MRV_ISP_CT_COEFF_MASK >> MRV_ISP_CT_COEFF_SHIFT)
6313 +
6314 +#define MRV_ISP_EQU_SEGM
6315 +#define MRV_ISP_EQU_SEGM_MASK 0x00000001
6316 +#define MRV_ISP_EQU_SEGM_SHIFT 0
6317 +#define MRV_ISP_EQU_SEGM_LOG   0
6318 +#define MRV_ISP_EQU_SEGM_EQU   1
6319 +
6320 +#define MRV_ISP_ISP_GAMMA_OUT_Y
6321 +#define MRV_ISP_ISP_GAMMA_OUT_Y_MASK 0x000003FF
6322 +#define MRV_ISP_ISP_GAMMA_OUT_Y_SHIFT 0
6323 +
6324 +#define MRV_ISP_OUTFORM_SIZE_ERR
6325 +#define MRV_ISP_OUTFORM_SIZE_ERR_MASK 0x00000004
6326 +#define MRV_ISP_OUTFORM_SIZE_ERR_SHIFT 2
6327 +#define MRV_ISP_IS_SIZE_ERR
6328 +#define MRV_ISP_IS_SIZE_ERR_MASK 0x00000002
6329 +#define MRV_ISP_IS_SIZE_ERR_SHIFT 1
6330 +#define MRV_ISP_INFORM_SIZE_ERR
6331 +#define MRV_ISP_INFORM_SIZE_ERR_MASK 0x00000001
6332 +#define MRV_ISP_INFORM_SIZE_ERR_SHIFT 0
6333 +
6334 +#define MRV_ISP_ALL_ERR
6335 +#define MRV_ISP_ALL_ERR_MASK \
6336 +(0 \
6337 +| MRV_ISP_OUTFORM_SIZE_ERR_MASK \
6338 +| MRV_ISP_IS_SIZE_ERR_MASK      \
6339 +| MRV_ISP_INFORM_SIZE_ERR_MASK  \
6340 +)
6341 +#define MRV_ISP_ALL_ERR_SHIFT 0
6342 +
6343 +#define MRV_ISP_OUTFORM_SIZE_ERR_CLR
6344 +#define MRV_ISP_OUTFORM_SIZE_ERR_CLR_MASK 0x00000004
6345 +#define MRV_ISP_OUTFORM_SIZE_ERR_CLR_SHIFT 2
6346 +#define MRV_ISP_IS_SIZE_ERR_CLR
6347 +#define MRV_ISP_IS_SIZE_ERR_CLR_MASK 0x00000002
6348 +#define MRV_ISP_IS_SIZE_ERR_CLR_SHIFT 1
6349 +#define MRV_ISP_INFORM_SIZE_ERR_CLR
6350 +#define MRV_ISP_INFORM_SIZE_ERR_CLR_MASK 0x00000001
6351 +#define MRV_ISP_INFORM_SIZE_ERR_CLR_SHIFT 0
6352 +
6353 +
6354 +#define MRV_ISP_FRAME_COUNTER
6355 +#define MRV_ISP_FRAME_COUNTER_MASK 0x000003FF
6356 +#define MRV_ISP_FRAME_COUNTER_SHIFT 0
6357 +
6358 +#define MRV_ISP_CT_OFFSET_R
6359 +#define MRV_ISP_CT_OFFSET_R_MASK 0x00000FFF
6360 +#define MRV_ISP_CT_OFFSET_R_SHIFT 0
6361 +
6362 +#define MRV_ISP_CT_OFFSET_G
6363 +#define MRV_ISP_CT_OFFSET_G_MASK 0x00000FFF
6364 +#define MRV_ISP_CT_OFFSET_G_SHIFT 0
6365 +
6366 +#define MRV_ISP_CT_OFFSET_B
6367 +#define MRV_ISP_CT_OFFSET_B_MASK 0x00000FFF
6368 +#define MRV_ISP_CT_OFFSET_B_SHIFT 0
6369 +
6370 +
6371 +#define MRV_FLASH_PREFLASH_ON
6372 +#define MRV_FLASH_PREFLASH_ON_MASK 0x00000004
6373 +#define MRV_FLASH_PREFLASH_ON_SHIFT 2
6374 +#define MRV_FLASH_FLASH_ON
6375 +#define MRV_FLASH_FLASH_ON_MASK 0x00000002
6376 +#define MRV_FLASH_FLASH_ON_SHIFT 1
6377 +#define MRV_FLASH_PRELIGHT_ON
6378 +#define MRV_FLASH_PRELIGHT_ON_MASK 0x00000001
6379 +#define MRV_FLASH_PRELIGHT_ON_SHIFT 0
6380 +
6381 +#define MRV_FLASH_FL_CAP_DEL
6382 +#define MRV_FLASH_FL_CAP_DEL_MASK 0x000000F0
6383 +#define MRV_FLASH_FL_CAP_DEL_SHIFT 4
6384 +#define MRV_FLASH_FL_CAP_DEL_MAX \
6385 +       (MRV_FLASH_FL_CAP_DEL_MASK >> MRV_FLASH_FL_CAP_DEL_SHIFT)
6386 +#define MRV_FLASH_FL_TRIG_SRC
6387 +#define MRV_FLASH_FL_TRIG_SRC_MASK 0x00000008
6388 +#define MRV_FLASH_FL_TRIG_SRC_SHIFT 3
6389 +#define MRV_FLASH_FL_TRIG_SRC_VDS   0
6390 +#define MRV_FLASH_FL_TRIG_SRC_FL    1
6391 +#define MRV_FLASH_FL_POL
6392 +#define MRV_FLASH_FL_POL_MASK 0x00000004
6393 +#define MRV_FLASH_FL_POL_SHIFT 2
6394 +#define MRV_FLASH_FL_POL_HIGH  0
6395 +#define MRV_FLASH_FL_POL_LOW   1
6396 +#define MRV_FLASH_VS_IN_EDGE
6397 +#define MRV_FLASH_VS_IN_EDGE_MASK 0x00000002
6398 +#define MRV_FLASH_VS_IN_EDGE_SHIFT 1
6399 +#define MRV_FLASH_VS_IN_EDGE_NEG   0
6400 +#define MRV_FLASH_VS_IN_EDGE_POS   1
6401 +#define MRV_FLASH_PRELIGHT_MODE
6402 +#define MRV_FLASH_PRELIGHT_MODE_MASK 0x00000001
6403 +#define MRV_FLASH_PRELIGHT_MODE_SHIFT 0
6404 +#define MRV_FLASH_PRELIGHT_MODE_OASF  0
6405 +#define MRV_FLASH_PRELIGHT_MODE_OAEF  1
6406 +
6407 +#define MRV_FLASH_FL_PRE_DIV
6408 +#define MRV_FLASH_FL_PRE_DIV_MASK 0x000003FF
6409 +#define MRV_FLASH_FL_PRE_DIV_SHIFT 0
6410 +#define MRV_FLASH_FL_PRE_DIV_MAX \
6411 +       (MRV_FLASH_FL_PRE_DIV_MASK >> MRV_FLASH_FL_PRE_DIV_SHIFT)
6412 +
6413 +#define MRV_FLASH_FL_DELAY
6414 +#define MRV_FLASH_FL_DELAY_MASK 0x0003FFFF
6415 +#define MRV_FLASH_FL_DELAY_SHIFT 0
6416 +#define MRV_FLASH_FL_DELAY_MAX \
6417 +       (MRV_FLASH_FL_DELAY_MASK >> MRV_FLASH_FL_DELAY_SHIFT)
6418 +
6419 +#define MRV_FLASH_FL_TIME
6420 +#define MRV_FLASH_FL_TIME_MASK 0x0003FFFF
6421 +#define MRV_FLASH_FL_TIME_SHIFT 0
6422 +#define MRV_FLASH_FL_TIME_MAX \
6423 +       (MRV_FLASH_FL_TIME_MASK >> MRV_FLASH_FL_TIME_SHIFT)
6424 +
6425 +#define MRV_FLASH_FL_MAXP
6426 +#define MRV_FLASH_FL_MAXP_MASK 0x0000FFFF
6427 +#define MRV_FLASH_FL_MAXP_SHIFT 0
6428 +#define MRV_FLASH_FL_MAXP_MAX \
6429 +       (MRV_FLASH_FL_MAXP_MASK >> MRV_FLASH_FL_MAXP_SHIFT)
6430 +
6431 +#define MRV_SHUT_SH_OPEN_POL
6432 +#define MRV_SHUT_SH_OPEN_POL_MASK 0x00000010
6433 +#define MRV_SHUT_SH_OPEN_POL_SHIFT 4
6434 +#define MRV_SHUT_SH_OPEN_POL_HIGH  0
6435 +#define MRV_SHUT_SH_OPEN_POL_LOW   1
6436 +#define MRV_SHUT_SH_TRIG_EN
6437 +#define MRV_SHUT_SH_TRIG_EN_MASK 0x00000008
6438 +#define MRV_SHUT_SH_TRIG_EN_SHIFT 3
6439 +#define MRV_SHUT_SH_TRIG_EN_NEG   0
6440 +#define MRV_SHUT_SH_TRIG_EN_POS   1
6441 +#define MRV_SHUT_SH_TRIG_SRC
6442 +#define MRV_SHUT_SH_TRIG_SRC_MASK 0x00000004
6443 +#define MRV_SHUT_SH_TRIG_SRC_SHIFT 2
6444 +#define MRV_SHUT_SH_TRIG_SRC_VDS   0
6445 +#define MRV_SHUT_SH_TRIG_SRC_SHUT  1
6446 +#define MRV_SHUT_SH_REP_EN
6447 +#define MRV_SHUT_SH_REP_EN_MASK 0x00000002
6448 +#define MRV_SHUT_SH_REP_EN_SHIFT 1
6449 +#define MRV_SHUT_SH_REP_EN_ONCE  0
6450 +#define MRV_SHUT_SH_REP_EN_REP   1
6451 +#define MRV_SHUT_SH_EN
6452 +#define MRV_SHUT_SH_EN_MASK 0x00000001
6453 +#define MRV_SHUT_SH_EN_SHIFT 0
6454 +
6455 +#define MRV_SHUT_SH_PRE_DIV
6456 +#define MRV_SHUT_SH_PRE_DIV_MASK 0x000003FF
6457 +#define MRV_SHUT_SH_PRE_DIV_SHIFT 0
6458 +#define MRV_SHUT_SH_PRE_DIV_MAX \
6459 +       (MRV_SHUT_SH_PRE_DIV_MASK >> MRV_SHUT_SH_PRE_DIV_SHIFT)
6460 +
6461 +#define MRV_SHUT_SH_DELAY
6462 +#define MRV_SHUT_SH_DELAY_MASK 0x000FFFFF
6463 +#define MRV_SHUT_SH_DELAY_SHIFT 0
6464 +#define MRV_SHUT_SH_DELAY_MAX \
6465 +       (MRV_SHUT_SH_DELAY_MASK >> MRV_SHUT_SH_DELAY_SHIFT)
6466 +
6467 +#define MRV_SHUT_SH_TIME
6468 +#define MRV_SHUT_SH_TIME_MASK 0x000FFFFF
6469 +#define MRV_SHUT_SH_TIME_SHIFT 0
6470 +#define MRV_SHUT_SH_TIME_MAX (MRV_SHUT_SH_TIME_MASK >> MRV_SHUT_SH_TIME_SHIFT)
6471 +
6472 +#define MRV_CPROC_CPROC_C_OUT_RANGE
6473 +#define MRV_CPROC_CPROC_C_OUT_RANGE_MASK 0x00000008
6474 +#define MRV_CPROC_CPROC_C_OUT_RANGE_SHIFT 3
6475 +#define MRV_CPROC_CPROC_C_OUT_RANGE_BT601 0
6476 +#define MRV_CPROC_CPROC_C_OUT_RANGE_FULL  1
6477 +#define MRV_CPROC_CPROC_Y_IN_RANGE
6478 +#define MRV_CPROC_CPROC_Y_IN_RANGE_MASK 0x00000004
6479 +#define MRV_CPROC_CPROC_Y_IN_RANGE_SHIFT 2
6480 +#define MRV_CPROC_CPROC_Y_IN_RANGE_BT601 0
6481 +#define MRV_CPROC_CPROC_Y_IN_RANGE_FULL  1
6482 +#define MRV_CPROC_CPROC_Y_OUT_RANGE
6483 +#define MRV_CPROC_CPROC_Y_OUT_RANGE_MASK 0x00000002
6484 +#define MRV_CPROC_CPROC_Y_OUT_RANGE_SHIFT 1
6485 +#define MRV_CPROC_CPROC_Y_OUT_RANGE_BT601 0
6486 +#define MRV_CPROC_CPROC_Y_OUT_RANGE_FULL  1
6487 +#define MRV_CPROC_CPROC_ENABLE
6488 +#define MRV_CPROC_CPROC_ENABLE_MASK 0x00000001
6489 +#define MRV_CPROC_CPROC_ENABLE_SHIFT 0
6490 +
6491 +#define MRV_CPROC_CPROC_CONTRAST
6492 +#define MRV_CPROC_CPROC_CONTRAST_MASK 0x000000FF
6493 +#define MRV_CPROC_CPROC_CONTRAST_SHIFT 0
6494 +
6495 +#define MRV_CPROC_CPROC_BRIGHTNESS
6496 +#define MRV_CPROC_CPROC_BRIGHTNESS_MASK 0x000000FF
6497 +#define MRV_CPROC_CPROC_BRIGHTNESS_SHIFT 0
6498 +
6499 +#define MRV_CPROC_CPROC_SATURATION
6500 +#define MRV_CPROC_CPROC_SATURATION_MASK 0x000000FF
6501 +#define MRV_CPROC_CPROC_SATURATION_SHIFT 0
6502 +
6503 +#define MRV_CPROC_CPROC_HUE
6504 +#define MRV_CPROC_CPROC_HUE_MASK 0x000000FF
6505 +#define MRV_CPROC_CPROC_HUE_SHIFT 0
6506 +
6507 +#define MRV_RSZ_SCALE
6508 +
6509 +#define MRV_RSZ_SCALE_MASK 0x00003FFF
6510 +
6511 +#define MRV_RSZ_SCALE_SHIFT 0
6512 +#define MRV_RSZ_SCALE_MAX (MRV_RSZ_SCALE_MASK >> MRV_RSZ_SCALE_SHIFT)
6513 +
6514 +
6515 +
6516 +#define MRV_MRSZ_CFG_UPD
6517 +#define MRV_MRSZ_CFG_UPD_MASK 0x00000100
6518 +#define MRV_MRSZ_CFG_UPD_SHIFT 8
6519 +#define MRV_MRSZ_SCALE_VC_UP
6520 +#define MRV_MRSZ_SCALE_VC_UP_MASK 0x00000080
6521 +#define MRV_MRSZ_SCALE_VC_UP_SHIFT 7
6522 +#define MRV_MRSZ_SCALE_VC_UP_UPSCALE   1
6523 +#define MRV_MRSZ_SCALE_VC_UP_DOWNSCALE 0
6524 +#define MRV_MRSZ_SCALE_VY_UP
6525 +#define MRV_MRSZ_SCALE_VY_UP_MASK 0x00000040
6526 +#define MRV_MRSZ_SCALE_VY_UP_SHIFT 6
6527 +#define MRV_MRSZ_SCALE_VY_UP_UPSCALE   1
6528 +#define MRV_MRSZ_SCALE_VY_UP_DOWNSCALE 0
6529 +#define MRV_MRSZ_SCALE_HC_UP
6530 +#define MRV_MRSZ_SCALE_HC_UP_MASK 0x00000020
6531 +#define MRV_MRSZ_SCALE_HC_UP_SHIFT 5
6532 +#define MRV_MRSZ_SCALE_HC_UP_UPSCALE   1
6533 +#define MRV_MRSZ_SCALE_HC_UP_DOWNSCALE 0
6534 +#define MRV_MRSZ_SCALE_HY_UP
6535 +#define MRV_MRSZ_SCALE_HY_UP_MASK 0x00000010
6536 +#define MRV_MRSZ_SCALE_HY_UP_SHIFT 4
6537 +#define MRV_MRSZ_SCALE_HY_UP_UPSCALE   1
6538 +#define MRV_MRSZ_SCALE_HY_UP_DOWNSCALE 0
6539 +#define MRV_MRSZ_SCALE_VC_ENABLE
6540 +#define MRV_MRSZ_SCALE_VC_ENABLE_MASK 0x00000008
6541 +#define MRV_MRSZ_SCALE_VC_ENABLE_SHIFT 3
6542 +#define MRV_MRSZ_SCALE_VY_ENABLE
6543 +#define MRV_MRSZ_SCALE_VY_ENABLE_MASK 0x00000004
6544 +#define MRV_MRSZ_SCALE_VY_ENABLE_SHIFT 2
6545 +#define MRV_MRSZ_SCALE_HC_ENABLE
6546 +#define MRV_MRSZ_SCALE_HC_ENABLE_MASK 0x00000002
6547 +#define MRV_MRSZ_SCALE_HC_ENABLE_SHIFT 1
6548 +#define MRV_MRSZ_SCALE_HY_ENABLE
6549 +#define MRV_MRSZ_SCALE_HY_ENABLE_MASK 0x00000001
6550 +#define MRV_MRSZ_SCALE_HY_ENABLE_SHIFT 0
6551 +
6552 +#define MRV_MRSZ_SCALE_HY
6553 +#define MRV_MRSZ_SCALE_HY_MASK  MRV_RSZ_SCALE_MASK
6554 +#define MRV_MRSZ_SCALE_HY_SHIFT MRV_RSZ_SCALE_SHIFT
6555 +
6556 +#define MRV_MRSZ_SCALE_HCB
6557 +#define MRV_MRSZ_SCALE_HCB_MASK  MRV_RSZ_SCALE_MASK
6558 +#define MRV_MRSZ_SCALE_HCB_SHIFT MRV_RSZ_SCALE_SHIFT
6559 +
6560 +#define MRV_MRSZ_SCALE_HCR
6561 +#define MRV_MRSZ_SCALE_HCR_MASK  MRV_RSZ_SCALE_MASK
6562 +#define MRV_MRSZ_SCALE_HCR_SHIFT MRV_RSZ_SCALE_SHIFT
6563 +
6564 +#define MRV_MRSZ_SCALE_VY
6565 +#define MRV_MRSZ_SCALE_VY_MASK  MRV_RSZ_SCALE_MASK
6566 +#define MRV_MRSZ_SCALE_VY_SHIFT MRV_RSZ_SCALE_SHIFT
6567 +
6568 +#define MRV_MRSZ_SCALE_VC
6569 +#define MRV_MRSZ_SCALE_VC_MASK  MRV_RSZ_SCALE_MASK
6570 +#define MRV_MRSZ_SCALE_VC_SHIFT MRV_RSZ_SCALE_SHIFT
6571 +
6572 +
6573 +#define MRV_MRSZ_PHASE_HY
6574 +#define MRV_MRSZ_PHASE_HY_MASK  MRV_RSZ_SCALE_MASK
6575 +#define MRV_MRSZ_PHASE_HY_SHIFT MRV_RSZ_SCALE_SHIFT
6576 +
6577 +
6578 +#define MRV_MRSZ_PHASE_HC
6579 +#define MRV_MRSZ_PHASE_HC_MASK  MRV_RSZ_SCALE_MASK
6580 +#define MRV_MRSZ_PHASE_HC_SHIFT MRV_RSZ_SCALE_SHIFT
6581 +
6582 +
6583 +#define MRV_MRSZ_PHASE_VY
6584 +#define MRV_MRSZ_PHASE_VY_MASK  MRV_RSZ_SCALE_MASK
6585 +#define MRV_MRSZ_PHASE_VY_SHIFT MRV_RSZ_SCALE_SHIFT
6586 +
6587 +
6588 +#define MRV_MRSZ_PHASE_VC
6589 +#define MRV_MRSZ_PHASE_VC_MASK  MRV_RSZ_SCALE_MASK
6590 +#define MRV_MRSZ_PHASE_VC_SHIFT MRV_RSZ_SCALE_SHIFT
6591 +
6592 +
6593 +#define MRV_MRSZ_SCALE_LUT_ADDR
6594 +#define MRV_MRSZ_SCALE_LUT_ADDR_MASK 0x0000003F
6595 +#define MRV_MRSZ_SCALE_LUT_ADDR_SHIFT 0
6596 +
6597 +
6598 +#define MRV_MRSZ_SCALE_LUT
6599 +#define MRV_MRSZ_SCALE_LUT_MASK 0x0000003F
6600 +#define MRV_MRSZ_SCALE_LUT_SHIFT 0
6601 +
6602 +
6603 +#define MRV_MRSZ_SCALE_VC_UP_SHD
6604 +#define MRV_MRSZ_SCALE_VC_UP_SHD_MASK 0x00000080
6605 +#define MRV_MRSZ_SCALE_VC_UP_SHD_SHIFT 7
6606 +#define MRV_MRSZ_SCALE_VC_UP_SHD_UPSCALE   1
6607 +#define MRV_MRSZ_SCALE_VC_UP_SHD_DOWNSCALE 0
6608 +#define MRV_MRSZ_SCALE_VY_UP_SHD
6609 +#define MRV_MRSZ_SCALE_VY_UP_SHD_MASK 0x00000040
6610 +#define MRV_MRSZ_SCALE_VY_UP_SHD_SHIFT 6
6611 +#define MRV_MRSZ_SCALE_VY_UP_SHD_UPSCALE   1
6612 +#define MRV_MRSZ_SCALE_VY_UP_SHD_DOWNSCALE 0
6613 +#define MRV_MRSZ_SCALE_HC_UP_SHD
6614 +#define MRV_MRSZ_SCALE_HC_UP_SHD_MASK 0x00000020
6615 +#define MRV_MRSZ_SCALE_HC_UP_SHD_SHIFT 5
6616 +#define MRV_MRSZ_SCALE_HC_UP_SHD_UPSCALE   1
6617 +#define MRV_MRSZ_SCALE_HC_UP_SHD_DOWNSCALE 0
6618 +#define MRV_MRSZ_SCALE_HY_UP_SHD
6619 +#define MRV_MRSZ_SCALE_HY_UP_SHD_MASK 0x00000010
6620 +#define MRV_MRSZ_SCALE_HY_UP_SHD_SHIFT 4
6621 +#define MRV_MRSZ_SCALE_HY_UP_SHD_UPSCALE   1
6622 +#define MRV_MRSZ_SCALE_HY_UP_SHD_DOWNSCALE 0
6623 +#define MRV_MRSZ_SCALE_VC_ENABLE_SHD
6624 +#define MRV_MRSZ_SCALE_VC_ENABLE_SHD_MASK 0x00000008
6625 +#define MRV_MRSZ_SCALE_VC_ENABLE_SHD_SHIFT 3
6626 +#define MRV_MRSZ_SCALE_VY_ENABLE_SHD
6627 +#define MRV_MRSZ_SCALE_VY_ENABLE_SHD_MASK 0x00000004
6628 +#define MRV_MRSZ_SCALE_VY_ENABLE_SHD_SHIFT 2
6629 +#define MRV_MRSZ_SCALE_HC_ENABLE_SHD
6630 +#define MRV_MRSZ_SCALE_HC_ENABLE_SHD_MASK 0x00000002
6631 +#define MRV_MRSZ_SCALE_HC_ENABLE_SHD_SHIFT 1
6632 +#define MRV_MRSZ_SCALE_HY_ENABLE_SHD
6633 +#define MRV_MRSZ_SCALE_HY_ENABLE_SHD_MASK 0x00000001
6634 +#define MRV_MRSZ_SCALE_HY_ENABLE_SHD_SHIFT 0
6635 +
6636 +#define MRV_MRSZ_SCALE_HY_SHD
6637 +#define MRV_MRSZ_SCALE_HY_SHD_MASK  MRV_RSZ_SCALE_MASK
6638 +#define MRV_MRSZ_SCALE_HY_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6639 +
6640 +#define MRV_MRSZ_SCALE_HCB_SHD
6641 +#define MRV_MRSZ_SCALE_HCB_SHD_MASK  MRV_RSZ_SCALE_MASK
6642 +#define MRV_MRSZ_SCALE_HCB_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6643 +
6644 +#define MRV_MRSZ_SCALE_HCR_SHD
6645 +#define MRV_MRSZ_SCALE_HCR_SHD_MASK  MRV_RSZ_SCALE_MASK
6646 +#define MRV_MRSZ_SCALE_HCR_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6647 +
6648 +
6649 +#define MRV_MRSZ_SCALE_VY_SHD
6650 +#define MRV_MRSZ_SCALE_VY_SHD_MASK  MRV_RSZ_SCALE_MASK
6651 +#define MRV_MRSZ_SCALE_VY_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6652 +
6653 +#define MRV_MRSZ_SCALE_VC_SHD
6654 +#define MRV_MRSZ_SCALE_VC_SHD_MASK  MRV_RSZ_SCALE_MASK
6655 +#define MRV_MRSZ_SCALE_VC_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6656 +
6657 +#define MRV_MRSZ_PHASE_HY_SHD
6658 +#define MRV_MRSZ_PHASE_HY_SHD_MASK  MRV_RSZ_SCALE_MASK
6659 +#define MRV_MRSZ_PHASE_HY_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6660 +
6661 +#define MRV_MRSZ_PHASE_HC_SHD
6662 +#define MRV_MRSZ_PHASE_HC_SHD_MASK  MRV_RSZ_SCALE_MASK
6663 +#define MRV_MRSZ_PHASE_HC_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6664 +
6665 +#define MRV_MRSZ_PHASE_VY_SHD
6666 +#define MRV_MRSZ_PHASE_VY_SHD_MASK  MRV_RSZ_SCALE_MASK
6667 +#define MRV_MRSZ_PHASE_VY_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6668 +
6669 +#define MRV_MRSZ_PHASE_VC_SHD
6670 +#define MRV_MRSZ_PHASE_VC_SHD_MASK  MRV_RSZ_SCALE_MASK
6671 +#define MRV_MRSZ_PHASE_VC_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6672 +
6673 +#define MRV_SRSZ_CFG_UPD
6674 +#define MRV_SRSZ_CFG_UPD_MASK 0x00000100
6675 +#define MRV_SRSZ_CFG_UPD_SHIFT 8
6676 +#define MRV_SRSZ_SCALE_VC_UP
6677 +#define MRV_SRSZ_SCALE_VC_UP_MASK 0x00000080
6678 +#define MRV_SRSZ_SCALE_VC_UP_SHIFT 7
6679 +#define MRV_SRSZ_SCALE_VC_UP_UPSCALE   1
6680 +#define MRV_SRSZ_SCALE_VC_UP_DOWNSCALE 0
6681 +#define MRV_SRSZ_SCALE_VY_UP
6682 +#define MRV_SRSZ_SCALE_VY_UP_MASK 0x00000040
6683 +#define MRV_SRSZ_SCALE_VY_UP_SHIFT 6
6684 +#define MRV_SRSZ_SCALE_VY_UP_UPSCALE   1
6685 +#define MRV_SRSZ_SCALE_VY_UP_DOWNSCALE 0
6686 +#define MRV_SRSZ_SCALE_HC_UP
6687 +#define MRV_SRSZ_SCALE_HC_UP_MASK 0x00000020
6688 +#define MRV_SRSZ_SCALE_HC_UP_SHIFT 5
6689 +#define MRV_SRSZ_SCALE_HC_UP_UPSCALE   1
6690 +#define MRV_SRSZ_SCALE_HC_UP_DOWNSCALE 0
6691 +#define MRV_SRSZ_SCALE_HY_UP
6692 +#define MRV_SRSZ_SCALE_HY_UP_MASK 0x00000010
6693 +#define MRV_SRSZ_SCALE_HY_UP_SHIFT 4
6694 +#define MRV_SRSZ_SCALE_HY_UP_UPSCALE   1
6695 +#define MRV_SRSZ_SCALE_HY_UP_DOWNSCALE 0
6696 +
6697 +#define MRV_SRSZ_SCALE_VC_ENABLE
6698 +#define MRV_SRSZ_SCALE_VC_ENABLE_MASK 0x00000008
6699 +#define MRV_SRSZ_SCALE_VC_ENABLE_SHIFT 3
6700 +#define MRV_SRSZ_SCALE_VY_ENABLE
6701 +#define MRV_SRSZ_SCALE_VY_ENABLE_MASK 0x00000004
6702 +#define MRV_SRSZ_SCALE_VY_ENABLE_SHIFT 2
6703 +#define MRV_SRSZ_SCALE_HC_ENABLE
6704 +#define MRV_SRSZ_SCALE_HC_ENABLE_MASK 0x00000002
6705 +#define MRV_SRSZ_SCALE_HC_ENABLE_SHIFT 1
6706 +#define MRV_SRSZ_SCALE_HY_ENABLE
6707 +#define MRV_SRSZ_SCALE_HY_ENABLE_MASK 0x00000001
6708 +#define MRV_SRSZ_SCALE_HY_ENABLE_SHIFT 0
6709 +
6710 +#define MRV_SRSZ_SCALE_HY
6711 +#define MRV_SRSZ_SCALE_HY_MASK  MRV_RSZ_SCALE_MASK
6712 +#define MRV_SRSZ_SCALE_HY_SHIFT MRV_RSZ_SCALE_SHIFT
6713 +
6714 +#define MRV_SRSZ_SCALE_HCB
6715 +#define MRV_SRSZ_SCALE_HCB_MASK  MRV_RSZ_SCALE_MASK
6716 +#define MRV_SRSZ_SCALE_HCB_SHIFT MRV_RSZ_SCALE_SHIFT
6717 +
6718 +#define MRV_SRSZ_SCALE_HCR
6719 +#define MRV_SRSZ_SCALE_HCR_MASK  MRV_RSZ_SCALE_MASK
6720 +#define MRV_SRSZ_SCALE_HCR_SHIFT MRV_RSZ_SCALE_SHIFT
6721 +
6722 +
6723 +#define MRV_SRSZ_SCALE_VY
6724 +#define MRV_SRSZ_SCALE_VY_MASK  MRV_RSZ_SCALE_MASK
6725 +#define MRV_SRSZ_SCALE_VY_SHIFT MRV_RSZ_SCALE_SHIFT
6726 +
6727 +#define MRV_SRSZ_SCALE_VC
6728 +#define MRV_SRSZ_SCALE_VC_MASK  MRV_RSZ_SCALE_MASK
6729 +#define MRV_SRSZ_SCALE_VC_SHIFT MRV_RSZ_SCALE_SHIFT
6730 +
6731 +#define MRV_SRSZ_PHASE_HY
6732 +#define MRV_SRSZ_PHASE_HY_MASK  MRV_RSZ_SCALE_MASK
6733 +#define MRV_SRSZ_PHASE_HY_SHIFT MRV_RSZ_SCALE_SHIFT
6734 +
6735 +#define MRV_SRSZ_PHASE_HC
6736 +#define MRV_SRSZ_PHASE_HC_MASK  MRV_RSZ_SCALE_MASK
6737 +#define MRV_SRSZ_PHASE_HC_SHIFT MRV_RSZ_SCALE_SHIFT
6738 +
6739 +#define MRV_SRSZ_PHASE_VY
6740 +#define MRV_SRSZ_PHASE_VY_MASK  MRV_RSZ_SCALE_MASK
6741 +#define MRV_SRSZ_PHASE_VY_SHIFT MRV_RSZ_SCALE_SHIFT
6742 +
6743 +#define MRV_SRSZ_PHASE_VC
6744 +#define MRV_SRSZ_PHASE_VC_MASK  MRV_RSZ_SCALE_MASK
6745 +#define MRV_SRSZ_PHASE_VC_SHIFT MRV_RSZ_SCALE_SHIFT
6746 +
6747 +#define MRV_SRSZ_SCALE_LUT_ADDR
6748 +#define MRV_SRSZ_SCALE_LUT_ADDR_MASK 0x0000003F
6749 +#define MRV_SRSZ_SCALE_LUT_ADDR_SHIFT 0
6750 +
6751 +
6752 +#define MRV_SRSZ_SCALE_LUT
6753 +#define MRV_SRSZ_SCALE_LUT_MASK 0x0000003F
6754 +#define MRV_SRSZ_SCALE_LUT_SHIFT 0
6755 +
6756 +
6757 +#define MRV_SRSZ_SCALE_VC_UP_SHD
6758 +#define MRV_SRSZ_SCALE_VC_UP_SHD_MASK 0x00000080
6759 +#define MRV_SRSZ_SCALE_VC_UP_SHD_SHIFT 7
6760 +#define MRV_SRSZ_SCALE_VC_UP_SHD_UPSCALE   1
6761 +#define MRV_SRSZ_SCALE_VC_UP_SHD_DOWNSCALE 0
6762 +#define MRV_SRSZ_SCALE_VY_UP_SHD
6763 +#define MRV_SRSZ_SCALE_VY_UP_SHD_MASK 0x00000040
6764 +#define MRV_SRSZ_SCALE_VY_UP_SHD_SHIFT 6
6765 +#define MRV_SRSZ_SCALE_VY_UP_SHD_UPSCALE   1
6766 +#define MRV_SRSZ_SCALE_VY_UP_SHD_DOWNSCALE 0
6767 +#define MRV_SRSZ_SCALE_HC_UP_SHD
6768 +#define MRV_SRSZ_SCALE_HC_UP_SHD_MASK 0x00000020
6769 +#define MRV_SRSZ_SCALE_HC_UP_SHD_SHIFT 5
6770 +#define MRV_SRSZ_SCALE_HC_UP_SHD_UPSCALE   1
6771 +#define MRV_SRSZ_SCALE_HC_UP_SHD_DOWNSCALE 0
6772 +#define MRV_SRSZ_SCALE_HY_UP_SHD
6773 +#define MRV_SRSZ_SCALE_HY_UP_SHD_MASK 0x00000010
6774 +#define MRV_SRSZ_SCALE_HY_UP_SHD_SHIFT 4
6775 +#define MRV_SRSZ_SCALE_HY_UP_SHD_UPSCALE   1
6776 +#define MRV_SRSZ_SCALE_HY_UP_SHD_DOWNSCALE 0
6777 +#define MRV_SRSZ_SCALE_VC_ENABLE_SHD
6778 +#define MRV_SRSZ_SCALE_VC_ENABLE_SHD_MASK 0x00000008
6779 +#define MRV_SRSZ_SCALE_VC_ENABLE_SHD_SHIFT 3
6780 +#define MRV_SRSZ_SCALE_VY_ENABLE_SHD
6781 +#define MRV_SRSZ_SCALE_VY_ENABLE_SHD_MASK 0x00000004
6782 +#define MRV_SRSZ_SCALE_VY_ENABLE_SHD_SHIFT 2
6783 +#define MRV_SRSZ_SCALE_HC_ENABLE_SHD
6784 +#define MRV_SRSZ_SCALE_HC_ENABLE_SHD_MASK 0x00000002
6785 +#define MRV_SRSZ_SCALE_HC_ENABLE_SHD_SHIFT 1
6786 +#define MRV_SRSZ_SCALE_HY_ENABLE_SHD
6787 +#define MRV_SRSZ_SCALE_HY_ENABLE_SHD_MASK 0x00000001
6788 +#define MRV_SRSZ_SCALE_HY_ENABLE_SHD_SHIFT 0
6789 +
6790 +#define MRV_SRSZ_SCALE_HY_SHD
6791 +#define MRV_SRSZ_SCALE_HY_SHD_MASK  MRV_RSZ_SCALE_MASK
6792 +#define MRV_SRSZ_SCALE_HY_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6793 +
6794 +#define MRV_SRSZ_SCALE_HCB_SHD
6795 +#define MRV_SRSZ_SCALE_HCB_SHD_MASK  MRV_RSZ_SCALE_MASK
6796 +#define MRV_SRSZ_SCALE_HCB_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6797 +
6798 +#define MRV_SRSZ_SCALE_HCR_SHD
6799 +#define MRV_SRSZ_SCALE_HCR_SHD_MASK  MRV_RSZ_SCALE_MASK
6800 +#define MRV_SRSZ_SCALE_HCR_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6801 +
6802 +
6803 +#define MRV_SRSZ_SCALE_VY_SHD
6804 +#define MRV_SRSZ_SCALE_VY_SHD_MASK  MRV_RSZ_SCALE_MASK
6805 +#define MRV_SRSZ_SCALE_VY_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6806 +
6807 +#define MRV_SRSZ_SCALE_VC_SHD
6808 +#define MRV_SRSZ_SCALE_VC_SHD_MASK  MRV_RSZ_SCALE_MASK
6809 +#define MRV_SRSZ_SCALE_VC_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6810 +
6811 +#define MRV_SRSZ_PHASE_HY_SHD
6812 +#define MRV_SRSZ_PHASE_HY_SHD_MASK  MRV_RSZ_SCALE_MASK
6813 +#define MRV_SRSZ_PHASE_HY_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6814 +
6815 +#define MRV_SRSZ_PHASE_HC_SHD
6816 +#define MRV_SRSZ_PHASE_HC_SHD_MASK  MRV_RSZ_SCALE_MASK
6817 +#define MRV_SRSZ_PHASE_HC_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6818 +
6819 +#define MRV_SRSZ_PHASE_VY_SHD
6820 +#define MRV_SRSZ_PHASE_VY_SHD_MASK  MRV_RSZ_SCALE_MASK
6821 +#define MRV_SRSZ_PHASE_VY_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6822 +
6823 +#define MRV_SRSZ_PHASE_VC_SHD
6824 +#define MRV_SRSZ_PHASE_VC_SHD_MASK  MRV_RSZ_SCALE_MASK
6825 +#define MRV_SRSZ_PHASE_VC_SHD_SHIFT MRV_RSZ_SCALE_SHIFT
6826 +
6827 +#define MRV_MI_SP_OUTPUT_FORMAT
6828 +#define MRV_MI_SP_OUTPUT_FORMAT_MASK 0x70000000
6829 +#define MRV_MI_SP_OUTPUT_FORMAT_SHIFT 28
6830 +#define MRV_MI_SP_OUTPUT_FORMAT_RGB888 6
6831 +#define MRV_MI_SP_OUTPUT_FORMAT_RGB666 5
6832 +#define MRV_MI_SP_OUTPUT_FORMAT_RGB565 4
6833 +#define MRV_MI_SP_OUTPUT_FORMAT_YUV444 3
6834 +#define MRV_MI_SP_OUTPUT_FORMAT_YUV422 2
6835 +#define MRV_MI_SP_OUTPUT_FORMAT_YUV420 1
6836 +#define MRV_MI_SP_OUTPUT_FORMAT_YUV400 0
6837 +#define MRV_MI_SP_INPUT_FORMAT
6838 +#define MRV_MI_SP_INPUT_FORMAT_MASK 0x0C000000
6839 +#define MRV_MI_SP_INPUT_FORMAT_SHIFT 26
6840 +#define MRV_MI_SP_INPUT_FORMAT_YUV444 3
6841 +#define MRV_MI_SP_INPUT_FORMAT_YUV422 2
6842 +#define MRV_MI_SP_INPUT_FORMAT_YUV420 1
6843 +#define MRV_MI_SP_INPUT_FORMAT_YUV400 0
6844 +#define MRV_MI_SP_WRITE_FORMAT
6845 +#define MRV_MI_SP_WRITE_FORMAT_MASK 0x03000000
6846 +#define MRV_MI_SP_WRITE_FORMAT_SHIFT 24
6847 +#define MRV_MI_SP_WRITE_FORMAT_PLANAR      0
6848 +#define MRV_MI_SP_WRITE_FORMAT_SEMIPLANAR  1
6849 +#define MRV_MI_SP_WRITE_FORMAT_INTERLEAVED 2
6850 +#define MRV_MI_MP_WRITE_FORMAT
6851 +#define MRV_MI_MP_WRITE_FORMAT_MASK 0x00C00000
6852 +#define MRV_MI_MP_WRITE_FORMAT_SHIFT 22
6853 +#define MRV_MI_MP_WRITE_FORMAT_PLANAR      0
6854 +#define MRV_MI_MP_WRITE_FORMAT_SEMIPLANAR  1
6855 +#define MRV_MI_MP_WRITE_FORMAT_INTERLEAVED 2
6856 +#define MRV_MI_MP_WRITE_FORMAT_RAW_8       0
6857 +#define MRV_MI_MP_WRITE_FORMAT_RAW_12      2
6858 +#define MRV_MI_INIT_OFFSET_EN
6859 +#define MRV_MI_INIT_OFFSET_EN_MASK 0x00200000
6860 +#define MRV_MI_INIT_OFFSET_EN_SHIFT 21
6861 +
6862 +#define MRV_MI_INIT_BASE_EN
6863 +#define MRV_MI_INIT_BASE_EN_MASK 0x00100000
6864 +#define MRV_MI_INIT_BASE_EN_SHIFT 20
6865 +#define MRV_MI_BURST_LEN_CHROM
6866 +#define MRV_MI_BURST_LEN_CHROM_MASK 0x000C0000
6867 +#define MRV_MI_BURST_LEN_CHROM_SHIFT 18
6868 +#define MRV_MI_BURST_LEN_CHROM_4      0
6869 +#define MRV_MI_BURST_LEN_CHROM_8      1
6870 +#define MRV_MI_BURST_LEN_CHROM_16     2
6871 +
6872 +#define MRV_MI_BURST_LEN_LUM
6873 +#define MRV_MI_BURST_LEN_LUM_MASK 0x00030000
6874 +#define MRV_MI_BURST_LEN_LUM_SHIFT 16
6875 +#define MRV_MI_BURST_LEN_LUM_4      0
6876 +#define MRV_MI_BURST_LEN_LUM_8      1
6877 +#define MRV_MI_BURST_LEN_LUM_16     2
6878 +
6879 +#define MRV_MI_LAST_PIXEL_SIG_EN
6880 +#define MRV_MI_LAST_PIXEL_SIG_EN_MASK 0x00008000
6881 +#define MRV_MI_LAST_PIXEL_SIG_EN_SHIFT 15
6882 +
6883 +    #define MRV_MI_422NONCOSITED
6884 +    #define MRV_MI_422NONCOSITED_MASK 0x00000400
6885 +    #define MRV_MI_422NONCOSITED_SHIFT 10
6886 +    #define MRV_MI_CBCR_FULL_RANGE
6887 +    #define MRV_MI_CBCR_FULL_RANGE_MASK 0x00000200
6888 +    #define MRV_MI_CBCR_FULL_RANGE_SHIFT 9
6889 +    #define MRV_MI_Y_FULL_RANGE
6890 +    #define MRV_MI_Y_FULL_RANGE_MASK 0x00000100
6891 +    #define MRV_MI_Y_FULL_RANGE_SHIFT 8
6892 +#define MRV_MI_BYTE_SWAP
6893 +#define MRV_MI_BYTE_SWAP_MASK 0x00000080
6894 +#define MRV_MI_BYTE_SWAP_SHIFT 7
6895 +#define MRV_MI_ROT
6896 +#define MRV_MI_ROT_MASK 0x00000040
6897 +#define MRV_MI_ROT_SHIFT 6
6898 +#define MRV_MI_V_FLIP
6899 +#define MRV_MI_V_FLIP_MASK 0x00000020
6900 +#define MRV_MI_V_FLIP_SHIFT 5
6901 +
6902 +#define MRV_MI_H_FLIP
6903 +#define MRV_MI_H_FLIP_MASK 0x00000010
6904 +#define MRV_MI_H_FLIP_SHIFT 4
6905 +#define MRV_MI_RAW_ENABLE
6906 +#define MRV_MI_RAW_ENABLE_MASK 0x00000008
6907 +#define MRV_MI_RAW_ENABLE_SHIFT 3
6908 +#define MRV_MI_JPEG_ENABLE
6909 +#define MRV_MI_JPEG_ENABLE_MASK 0x00000004
6910 +#define MRV_MI_JPEG_ENABLE_SHIFT 2
6911 +#define MRV_MI_SP_ENABLE
6912 +#define MRV_MI_SP_ENABLE_MASK 0x00000002
6913 +#define MRV_MI_SP_ENABLE_SHIFT 1
6914 +#define MRV_MI_MP_ENABLE
6915 +#define MRV_MI_MP_ENABLE_MASK 0x00000001
6916 +#define MRV_MI_MP_ENABLE_SHIFT 0
6917 +
6918 +
6919 +#define MRV_MI_ROT_AND_FLIP
6920 +#define MRV_MI_ROT_AND_FLIP_MASK   \
6921 +       (MRV_MI_H_FLIP_MASK | MRV_MI_V_FLIP_MASK | MRV_MI_ROT_MASK)
6922 +#define MRV_MI_ROT_AND_FLIP_SHIFT  \
6923 +       (MRV_MI_H_FLIP_SHIFT)
6924 +#define MRV_MI_ROT_AND_FLIP_H_FLIP \
6925 +       (MRV_MI_H_FLIP_MASK >> MRV_MI_ROT_AND_FLIP_SHIFT)
6926 +#define MRV_MI_ROT_AND_FLIP_V_FLIP \
6927 +       (MRV_MI_V_FLIP_MASK >> MRV_MI_ROT_AND_FLIP_SHIFT)
6928 +#define MRV_MI_ROT_AND_FLIP_ROTATE \
6929 +       (MRV_MI_ROT_MASK    >> MRV_MI_ROT_AND_FLIP_SHIFT)
6930 +
6931 +#define MRV_MI_MI_CFG_UPD
6932 +#define MRV_MI_MI_CFG_UPD_MASK 0x00000010
6933 +#define MRV_MI_MI_CFG_UPD_SHIFT 4
6934 +#define MRV_MI_MI_SKIP
6935 +#define MRV_MI_MI_SKIP_MASK 0x00000004
6936 +#define MRV_MI_MI_SKIP_SHIFT 2
6937 +
6938 +#define MRV_MI_MP_Y_BASE_AD_INIT
6939 +#define MRV_MI_MP_Y_BASE_AD_INIT_MASK 0xFFFFFFFC
6940 +#define MRV_MI_MP_Y_BASE_AD_INIT_SHIFT 0
6941 +#define MRV_MI_MP_Y_BASE_AD_INIT_VALID_MASK (MRV_MI_MP_Y_BASE_AD_INIT_MASK &\
6942 +                                            ~0x00000003)
6943 +#define MRV_MI_MP_Y_SIZE_INIT
6944 +#define MRV_MI_MP_Y_SIZE_INIT_MASK 0x01FFFFFC
6945 +#define MRV_MI_MP_Y_SIZE_INIT_SHIFT 0
6946 +#define MRV_MI_MP_Y_SIZE_INIT_VALID_MASK (MRV_MI_MP_Y_SIZE_INIT_MASK &\
6947 +                                         ~0x00000003)
6948 +#define MRV_MI_MP_Y_OFFS_CNT_INIT
6949 +#define MRV_MI_MP_Y_OFFS_CNT_INIT_MASK 0x01FFFFFC
6950 +#define MRV_MI_MP_Y_OFFS_CNT_INIT_SHIFT 0
6951 +#define MRV_MI_MP_Y_OFFS_CNT_INIT_VALID_MASK \
6952 +       (MRV_MI_MP_Y_OFFS_CNT_INIT_MASK & ~0x00000003)
6953 +
6954 +#define MRV_MI_MP_Y_OFFS_CNT_START
6955 +#define MRV_MI_MP_Y_OFFS_CNT_START_MASK 0x01FFFFFC
6956 +#define MRV_MI_MP_Y_OFFS_CNT_START_SHIFT 0
6957 +#define MRV_MI_MP_Y_OFFS_CNT_START_VALID_MASK \
6958 +       (MRV_MI_MP_Y_OFFS_CNT_START_MASK & ~0x00000003)
6959 +
6960 +#define MRV_MI_MP_Y_IRQ_OFFS_INIT
6961 +#define MRV_MI_MP_Y_IRQ_OFFS_INIT_MASK 0x01FFFFFC
6962 +#define MRV_MI_MP_Y_IRQ_OFFS_INIT_SHIFT 0
6963 +#define MRV_MI_MP_Y_IRQ_OFFS_INIT_VALID_MASK \
6964 +       (MRV_MI_MP_Y_IRQ_OFFS_INIT_MASK & ~0x00000003)
6965 +#define MRV_MI_MP_CB_BASE_AD_INIT
6966 +#define MRV_MI_MP_CB_BASE_AD_INIT_MASK 0xFFFFFFFC
6967 +#define MRV_MI_MP_CB_BASE_AD_INIT_SHIFT 0
6968 +#define MRV_MI_MP_CB_BASE_AD_INIT_VALID_MASK \
6969 +       (MRV_MI_MP_CB_BASE_AD_INIT_MASK & ~0x00000003)
6970 +
6971 +#define MRV_MI_MP_CB_SIZE_INIT
6972 +#define MRV_MI_MP_CB_SIZE_INIT_MASK 0x00FFFFFC
6973 +#define MRV_MI_MP_CB_SIZE_INIT_SHIFT 0
6974 +#define MRV_MI_MP_CB_SIZE_INIT_VALID_MASK \
6975 +       (MRV_MI_MP_CB_SIZE_INIT_MASK & ~0x00000003)
6976 +
6977 +#define MRV_MI_MP_CB_OFFS_CNT_INIT
6978 +#define MRV_MI_MP_CB_OFFS_CNT_INIT_MASK 0x00FFFFFC
6979 +#define MRV_MI_MP_CB_OFFS_CNT_INIT_SHIFT 0
6980 +#define MRV_MI_MP_CB_OFFS_CNT_INIT_VALID_MASK \
6981 +       (MRV_MI_MP_CB_OFFS_CNT_INIT_MASK & ~0x00000003)
6982 +
6983 +#define MRV_MI_MP_CB_OFFS_CNT_START
6984 +#define MRV_MI_MP_CB_OFFS_CNT_START_MASK 0x00FFFFFC
6985 +#define MRV_MI_MP_CB_OFFS_CNT_START_SHIFT 0
6986 +#define MRV_MI_MP_CB_OFFS_CNT_START_VALID_MASK \
6987 +       (MRV_MI_MP_CB_OFFS_CNT_START_MASK & ~0x00000003)
6988 +
6989 +#define MRV_MI_MP_CR_BASE_AD_INIT
6990 +#define MRV_MI_MP_CR_BASE_AD_INIT_MASK 0xFFFFFFFC
6991 +#define MRV_MI_MP_CR_BASE_AD_INIT_SHIFT 0
6992 +#define MRV_MI_MP_CR_BASE_AD_INIT_VALID_MASK \
6993 +       (MRV_MI_MP_CR_BASE_AD_INIT_MASK & ~0x00000003)
6994 +
6995 +#define MRV_MI_MP_CR_SIZE_INIT
6996 +#define MRV_MI_MP_CR_SIZE_INIT_MASK 0x00FFFFFC
6997 +#define MRV_MI_MP_CR_SIZE_INIT_SHIFT 0
6998 +#define MRV_MI_MP_CR_SIZE_INIT_VALID_MASK \
6999 +       (MRV_MI_MP_CR_SIZE_INIT_MASK & ~0x00000003)
7000 +
7001 +#define MRV_MI_MP_CR_OFFS_CNT_INIT
7002 +#define MRV_MI_MP_CR_OFFS_CNT_INIT_MASK 0x00FFFFFC
7003 +#define MRV_MI_MP_CR_OFFS_CNT_INIT_SHIFT 0
7004 +#define MRV_MI_MP_CR_OFFS_CNT_INIT_VALID_MASK \
7005 +       (MRV_MI_MP_CR_OFFS_CNT_INIT_MASK & ~0x00000003)
7006 +
7007 +#define MRV_MI_MP_CR_OFFS_CNT_START
7008 +#define MRV_MI_MP_CR_OFFS_CNT_START_MASK 0x00FFFFFC
7009 +#define MRV_MI_MP_CR_OFFS_CNT_START_SHIFT 0
7010 +#define MRV_MI_MP_CR_OFFS_CNT_START_VALID_MASK \
7011 +       (MRV_MI_MP_CR_OFFS_CNT_START_MASK & ~0x00000003)
7012 +
7013 +#define MRV_MI_SP_Y_BASE_AD_INIT
7014 +#define MRV_MI_SP_Y_BASE_AD_INIT_MASK 0xFFFFFFFC
7015 +#define MRV_MI_SP_Y_BASE_AD_INIT_SHIFT 0
7016 +#define MRV_MI_SP_Y_BASE_AD_INIT_VALID_MASK \
7017 +       (MRV_MI_SP_Y_BASE_AD_INIT_MASK & ~0x00000003)
7018 +
7019 +#define MRV_MI_SP_Y_SIZE_INIT
7020 +#define MRV_MI_SP_Y_SIZE_INIT_MASK 0x01FFFFFC
7021 +#define MRV_MI_SP_Y_SIZE_INIT_SHIFT 0
7022 +#define MRV_MI_SP_Y_SIZE_INIT_VALID_MASK \
7023 +       (MRV_MI_SP_Y_SIZE_INIT_MASK & ~0x00000003)
7024 +
7025 +#define MRV_MI_SP_Y_OFFS_CNT_INIT
7026 +#define MRV_MI_SP_Y_OFFS_CNT_INIT_MASK 0x01FFFFFC
7027 +#define MRV_MI_SP_Y_OFFS_CNT_INIT_SHIFT 0
7028 +#define MRV_MI_SP_Y_OFFS_CNT_INIT_VALID_MASK \
7029 +       (MRV_MI_SP_Y_OFFS_CNT_INIT_MASK & ~0x00000003)
7030 +
7031 +#define MRV_MI_SP_Y_OFFS_CNT_START
7032 +#define MRV_MI_SP_Y_OFFS_CNT_START_MASK 0x01FFFFFC
7033 +#define MRV_MI_SP_Y_OFFS_CNT_START_SHIFT 0
7034 +#define MRV_MI_SP_Y_OFFS_CNT_START_VALID_MASK \
7035 +       (MRV_MI_SP_Y_OFFS_CNT_START_MASK & ~0x00000003)
7036 +
7037 +#define MRV_MI_SP_Y_LLENGTH
7038 +#define MRV_MI_SP_Y_LLENGTH_MASK 0x00001FFF
7039 +#define MRV_MI_SP_Y_LLENGTH_SHIFT 0
7040 +#define MRV_MI_SP_Y_LLENGTH_VALID_MASK \
7041 +       (MRV_MI_SP_Y_LLENGTH_MASK & ~0x00000000)
7042 +
7043 +#define MRV_MI_SP_CB_BASE_AD_INIT
7044 +#define MRV_MI_SP_CB_BASE_AD_INIT_MASK 0xFFFFFFFF
7045 +#define MRV_MI_SP_CB_BASE_AD_INIT_SHIFT 0
7046 +#define MRV_MI_SP_CB_BASE_AD_INIT_VALID_MASK \
7047 +       (MRV_MI_SP_CB_BASE_AD_INIT_MASK & ~0x00000003)
7048 +
7049 +#define MRV_MI_SP_CB_SIZE_INIT
7050 +#define MRV_MI_SP_CB_SIZE_INIT_MASK 0x00FFFFFF
7051 +#define MRV_MI_SP_CB_SIZE_INIT_SHIFT 0
7052 +#define MRV_MI_SP_CB_SIZE_INIT_VALID_MASK \
7053 +       (MRV_MI_SP_CB_SIZE_INIT_MASK & ~0x00000003)
7054 +
7055 +#define MRV_MI_SP_CB_OFFS_CNT_INIT
7056 +#define MRV_MI_SP_CB_OFFS_CNT_INIT_MASK 0x00FFFFFF
7057 +#define MRV_MI_SP_CB_OFFS_CNT_INIT_SHIFT 0
7058 +#define MRV_MI_SP_CB_OFFS_CNT_INIT_VALID_MASK \
7059 +       (MRV_MI_SP_CB_OFFS_CNT_INIT_MASK & ~0x00000003)
7060 +
7061 +#define MRV_MI_SP_CB_OFFS_CNT_START
7062 +#define MRV_MI_SP_CB_OFFS_CNT_START_MASK 0x00FFFFFF
7063 +#define MRV_MI_SP_CB_OFFS_CNT_START_SHIFT 0
7064 +#define MRV_MI_SP_CB_OFFS_CNT_START_VALID_MASK \
7065 +       (MRV_MI_SP_CB_OFFS_CNT_START_MASK & ~0x00000003)
7066 +
7067 +#define MRV_MI_SP_CR_BASE_AD_INIT
7068 +#define MRV_MI_SP_CR_BASE_AD_INIT_MASK 0xFFFFFFFF
7069 +#define MRV_MI_SP_CR_BASE_AD_INIT_SHIFT 0
7070 +#define MRV_MI_SP_CR_BASE_AD_INIT_VALID_MASK \
7071 +       (MRV_MI_SP_CR_BASE_AD_INIT_MASK & ~0x00000003)
7072 +
7073 +#define MRV_MI_SP_CR_SIZE_INIT
7074 +#define MRV_MI_SP_CR_SIZE_INIT_MASK 0x00FFFFFF
7075 +#define MRV_MI_SP_CR_SIZE_INIT_SHIFT 0
7076 +#define MRV_MI_SP_CR_SIZE_INIT_VALID_MASK \
7077 +       (MRV_MI_SP_CR_SIZE_INIT_MASK & ~0x00000003)
7078 +
7079 +#define MRV_MI_SP_CR_OFFS_CNT_INIT
7080 +#define MRV_MI_SP_CR_OFFS_CNT_INIT_MASK 0x00FFFFFF
7081 +#define MRV_MI_SP_CR_OFFS_CNT_INIT_SHIFT 0
7082 +#define MRV_MI_SP_CR_OFFS_CNT_INIT_VALID_MASK \
7083 +       (MRV_MI_SP_CR_OFFS_CNT_INIT_MASK & ~0x00000003)
7084 +
7085 +#define MRV_MI_SP_CR_OFFS_CNT_START
7086 +#define MRV_MI_SP_CR_OFFS_CNT_START_MASK 0x00FFFFFF
7087 +#define MRV_MI_SP_CR_OFFS_CNT_START_SHIFT 0
7088 +#define MRV_MI_SP_CR_OFFS_CNT_START_VALID_MASK \
7089 +       (MRV_MI_SP_CR_OFFS_CNT_START_MASK & ~0x00000003)
7090 +
7091 +#define MRV_MI_BYTE_CNT
7092 +#define MRV_MI_BYTE_CNT_MASK 0x01FFFFFF
7093 +#define MRV_MI_BYTE_CNT_SHIFT 0
7094 +
7095 +#define MRV_MI_RAW_ENABLE_OUT
7096 +#define MRV_MI_RAW_ENABLE_OUT_MASK 0x00080000
7097 +#define MRV_MI_RAW_ENABLE_OUT_SHIFT 19
7098 +#define MRV_MI_JPEG_ENABLE_OUT
7099 +#define MRV_MI_JPEG_ENABLE_OUT_MASK 0x00040000
7100 +#define MRV_MI_JPEG_ENABLE_OUT_SHIFT 18
7101 +#define MRV_MI_SP_ENABLE_OUT
7102 +#define MRV_MI_SP_ENABLE_OUT_MASK 0x00020000
7103 +#define MRV_MI_SP_ENABLE_OUT_SHIFT 17
7104 +#define MRV_MI_MP_ENABLE_OUT
7105 +#define MRV_MI_MP_ENABLE_OUT_MASK 0x00010000
7106 +#define MRV_MI_MP_ENABLE_OUT_SHIFT 16
7107 +#define MRV_MI_RAW_ENABLE_IN
7108 +#define MRV_MI_RAW_ENABLE_IN_MASK 0x00000020
7109 +#define MRV_MI_RAW_ENABLE_IN_SHIFT 5
7110 +#define MRV_MI_JPEG_ENABLE_IN
7111 +#define MRV_MI_JPEG_ENABLE_IN_MASK 0x00000010
7112 +#define MRV_MI_JPEG_ENABLE_IN_SHIFT 4
7113 +#define MRV_MI_SP_ENABLE_IN
7114 +#define MRV_MI_SP_ENABLE_IN_MASK 0x00000004
7115 +#define MRV_MI_SP_ENABLE_IN_SHIFT 2
7116 +#define MRV_MI_MP_ENABLE_IN
7117 +#define MRV_MI_MP_ENABLE_IN_MASK 0x00000001
7118 +#define MRV_MI_MP_ENABLE_IN_SHIFT 0
7119 +
7120 +#define MRV_MI_MP_Y_BASE_AD
7121 +#define MRV_MI_MP_Y_BASE_AD_MASK 0xFFFFFFFC
7122 +#define MRV_MI_MP_Y_BASE_AD_SHIFT 0
7123 +#define MRV_MI_MP_Y_BASE_AD_VALID_MASK \
7124 +       (MRV_MI_MP_Y_BASE_AD_MASK & ~0x00000003)
7125 +
7126 +#define MRV_MI_MP_Y_SIZE
7127 +#define MRV_MI_MP_Y_SIZE_MASK 0x01FFFFFC
7128 +#define MRV_MI_MP_Y_SIZE_SHIFT 0
7129 +#define MRV_MI_MP_Y_SIZE_VALID_MASK (MRV_MI_MP_Y_SIZE_MASK & ~0x00000003)
7130 +
7131 +#define MRV_MI_MP_Y_OFFS_CNT
7132 +#define MRV_MI_MP_Y_OFFS_CNT_MASK 0x01FFFFFC
7133 +#define MRV_MI_MP_Y_OFFS_CNT_SHIFT 0
7134 +#define MRV_MI_MP_Y_OFFS_CNT_VALID_MASK \
7135 +       (MRV_MI_MP_Y_OFFS_CNT_MASK & ~0x00000003)
7136 +
7137 +#define MRV_MI_MP_Y_IRQ_OFFS
7138 +#define MRV_MI_MP_Y_IRQ_OFFS_MASK 0x01FFFFFC
7139 +#define MRV_MI_MP_Y_IRQ_OFFS_SHIFT 0
7140 +#define MRV_MI_MP_Y_IRQ_OFFS_VALID_MASK \
7141 +       (MRV_MI_MP_Y_IRQ_OFFS_MASK & ~0x00000003)
7142 +
7143 +#define MRV_MI_MP_CB_BASE_AD
7144 +#define MRV_MI_MP_CB_BASE_AD_MASK 0xFFFFFFFF
7145 +#define MRV_MI_MP_CB_BASE_AD_SHIFT 0
7146 +#define MRV_MI_MP_CB_BASE_AD_VALID_MASK \
7147 +       (MRV_MI_MP_CB_BASE_AD_MASK & ~0x00000003)
7148 +
7149 +#define MRV_MI_MP_CB_SIZE
7150 +#define MRV_MI_MP_CB_SIZE_MASK 0x00FFFFFF
7151 +#define MRV_MI_MP_CB_SIZE_SHIFT 0
7152 +#define MRV_MI_MP_CB_SIZE_VALID_MASK (MRV_MI_MP_CB_SIZE_MASK & ~0x00000003)
7153 +
7154 +#define MRV_MI_MP_CB_OFFS_CNT
7155 +#define MRV_MI_MP_CB_OFFS_CNT_MASK 0x00FFFFFF
7156 +#define MRV_MI_MP_CB_OFFS_CNT_SHIFT 0
7157 +#define MRV_MI_MP_CB_OFFS_CNT_VALID_MASK \
7158 +       (MRV_MI_MP_CB_OFFS_CNT_MASK & ~0x00000003)
7159 +
7160 +#define MRV_MI_MP_CR_BASE_AD
7161 +#define MRV_MI_MP_CR_BASE_AD_MASK 0xFFFFFFFF
7162 +#define MRV_MI_MP_CR_BASE_AD_SHIFT 0
7163 +#define MRV_MI_MP_CR_BASE_AD_VALID_MASK \
7164 +       (MRV_MI_MP_CR_BASE_AD_MASK & ~0x00000003)
7165 +
7166 +#define MRV_MI_MP_CR_SIZE
7167 +#define MRV_MI_MP_CR_SIZE_MASK 0x00FFFFFF
7168 +#define MRV_MI_MP_CR_SIZE_SHIFT 0
7169 +#define MRV_MI_MP_CR_SIZE_VALID_MASK (MRV_MI_MP_CR_SIZE_MASK & ~0x00000003)
7170 +
7171 +#define MRV_MI_MP_CR_OFFS_CNT
7172 +#define MRV_MI_MP_CR_OFFS_CNT_MASK 0x00FFFFFF
7173 +#define MRV_MI_MP_CR_OFFS_CNT_SHIFT 0
7174 +#define MRV_MI_MP_CR_OFFS_CNT_VALID_MASK \
7175 +       (MRV_MI_MP_CR_OFFS_CNT_MASK & ~0x00000003)
7176 +
7177 +#define MRV_MI_SP_Y_BASE_AD
7178 +#define MRV_MI_SP_Y_BASE_AD_MASK 0xFFFFFFFF
7179 +#define MRV_MI_SP_Y_BASE_AD_SHIFT 0
7180 +#define MRV_MI_SP_Y_BASE_AD_VALID_MASK \
7181 +       (MRV_MI_SP_Y_BASE_AD_MASK & ~0x00000003)
7182 +
7183 +#define MRV_MI_SP_Y_SIZE
7184 +#define MRV_MI_SP_Y_SIZE_MASK 0x01FFFFFC
7185 +#define MRV_MI_SP_Y_SIZE_SHIFT 0
7186 +#define MRV_MI_SP_Y_SIZE_VALID_MASK (MRV_MI_SP_Y_SIZE_MASK & ~0x00000003)
7187 +
7188 +#define MRV_MI_SP_Y_OFFS_CNT
7189 +#define MRV_MI_SP_Y_OFFS_CNT_MASK 0x01FFFFFC
7190 +#define MRV_MI_SP_Y_OFFS_CNT_SHIFT 0
7191 +#define MRV_MI_SP_Y_OFFS_CNT_VALID_MASK \
7192 +       (MRV_MI_SP_Y_OFFS_CNT_MASK & ~0x00000003)
7193 +
7194 +#define MRV_MI_SP_CB_BASE_AD
7195 +#define MRV_MI_SP_CB_BASE_AD_MASK 0xFFFFFFFF
7196 +#define MRV_MI_SP_CB_BASE_AD_SHIFT 0
7197 +#define MRV_MI_SP_CB_BASE_AD_VALID_MASK \
7198 +       (MRV_MI_SP_CB_BASE_AD_MASK & ~0x00000003)
7199 +
7200 +#define MRV_MI_SP_CB_SIZE
7201 +#define MRV_MI_SP_CB_SIZE_MASK 0x00FFFFFF
7202 +#define MRV_MI_SP_CB_SIZE_SHIFT 0
7203 +#define MRV_MI_SP_CB_SIZE_VALID_MASK (MRV_MI_SP_CB_SIZE_MASK & ~0x00000003)
7204 +
7205 +#define MRV_MI_SP_CB_OFFS_CNT
7206 +#define MRV_MI_SP_CB_OFFS_CNT_MASK 0x00FFFFFF
7207 +#define MRV_MI_SP_CB_OFFS_CNT_SHIFT 0
7208 +#define MRV_MI_SP_CB_OFFS_CNT_VALID_MASK \
7209 +       (MRV_MI_SP_CB_OFFS_CNT_MASK & ~0x00000003)
7210 +
7211 +#define MRV_MI_SP_CR_BASE_AD
7212 +#define MRV_MI_SP_CR_BASE_AD_MASK 0xFFFFFFFF
7213 +#define MRV_MI_SP_CR_BASE_AD_SHIFT 0
7214 +#define MRV_MI_SP_CR_BASE_AD_VALID_MASK \
7215 +       (MRV_MI_SP_CR_BASE_AD_MASK & ~0x00000003)
7216 +
7217 +#define MRV_MI_SP_CR_SIZE
7218 +#define MRV_MI_SP_CR_SIZE_MASK 0x00FFFFFF
7219 +#define MRV_MI_SP_CR_SIZE_SHIFT 0
7220 +#define MRV_MI_SP_CR_SIZE_VALID_MASK (MRV_MI_SP_CR_SIZE_MASK & ~0x00000003)
7221 +
7222 +#define MRV_MI_SP_CR_OFFS_CNT
7223 +#define MRV_MI_SP_CR_OFFS_CNT_MASK 0x00FFFFFF
7224 +#define MRV_MI_SP_CR_OFFS_CNT_SHIFT 0
7225 +#define MRV_MI_SP_CR_OFFS_CNT_VALID_MASK \
7226 +       (MRV_MI_SP_CR_OFFS_CNT_MASK & ~0x00000003)
7227 +
7228 +
7229 +#define MRV_MI_DMA_Y_PIC_START_AD
7230 +#define MRV_MI_DMA_Y_PIC_START_AD_MASK 0xFFFFFFFF
7231 +#define MRV_MI_DMA_Y_PIC_START_AD_SHIFT 0
7232 +
7233 +#define MRV_MI_DMA_Y_PIC_WIDTH
7234 +#define MRV_MI_DMA_Y_PIC_WIDTH_MASK 0x00001FFF
7235 +#define MRV_MI_DMA_Y_PIC_WIDTH_SHIFT 0
7236 +
7237 +#define MRV_MI_DMA_Y_LLENGTH
7238 +#define MRV_MI_DMA_Y_LLENGTH_MASK 0x00001FFF
7239 +#define MRV_MI_DMA_Y_LLENGTH_SHIFT 0
7240 +
7241 +#define MRV_MI_DMA_Y_PIC_SIZE
7242 +#define MRV_MI_DMA_Y_PIC_SIZE_MASK 0x00FFFFFF
7243 +#define MRV_MI_DMA_Y_PIC_SIZE_SHIFT 0
7244 +
7245 +#define MRV_MI_DMA_CB_PIC_START_AD
7246 +#define MRV_MI_DMA_CB_PIC_START_AD_MASK 0xFFFFFFFF
7247 +#define MRV_MI_DMA_CB_PIC_START_AD_SHIFT 0
7248 +
7249 +
7250 +#define MRV_MI_DMA_CR_PIC_START_AD
7251 +#define MRV_MI_DMA_CR_PIC_START_AD_MASK 0xFFFFFFFF
7252 +#define MRV_MI_DMA_CR_PIC_START_AD_SHIFT 0
7253 +
7254 +
7255 +#define MRV_MI_DMA_READY
7256 +#define MRV_MI_DMA_READY_MASK 0x00000800
7257 +#define MRV_MI_DMA_READY_SHIFT 11
7258 +
7259 +#define MRV_MI_AHB_ERROR
7260 +
7261 +#define MRV_MI_AHB_ERROR_MASK 0x00000400
7262 +#define MRV_MI_AHB_ERROR_SHIFT 10
7263 +#define MRV_MI_WRAP_SP_CR
7264 +
7265 +#define MRV_MI_WRAP_SP_CR_MASK 0x00000200
7266 +#define MRV_MI_WRAP_SP_CR_SHIFT 9
7267 +#define MRV_MI_WRAP_SP_CB
7268 +
7269 +#define MRV_MI_WRAP_SP_CB_MASK 0x00000100
7270 +#define MRV_MI_WRAP_SP_CB_SHIFT 8
7271 +#define MRV_MI_WRAP_SP_Y
7272 +
7273 +#define MRV_MI_WRAP_SP_Y_MASK 0x00000080
7274 +#define MRV_MI_WRAP_SP_Y_SHIFT 7
7275 +#define MRV_MI_WRAP_MP_CR
7276 +
7277 +#define MRV_MI_WRAP_MP_CR_MASK 0x00000040
7278 +#define MRV_MI_WRAP_MP_CR_SHIFT 6
7279 +#define MRV_MI_WRAP_MP_CB
7280 +
7281 +#define MRV_MI_WRAP_MP_CB_MASK 0x00000020
7282 +#define MRV_MI_WRAP_MP_CB_SHIFT 5
7283 +#define MRV_MI_WRAP_MP_Y
7284 +
7285 +#define MRV_MI_WRAP_MP_Y_MASK 0x00000010
7286 +#define MRV_MI_WRAP_MP_Y_SHIFT 4
7287 +#define MRV_MI_FILL_MP_Y
7288 +
7289 +#define MRV_MI_FILL_MP_Y_MASK 0x00000008
7290 +#define MRV_MI_FILL_MP_Y_SHIFT 3
7291 +#define MRV_MI_MBLK_LINE
7292 +
7293 +#define MRV_MI_MBLK_LINE_MASK 0x00000004
7294 +#define MRV_MI_MBLK_LINE_SHIFT 2
7295 +#define MRV_MI_SP_FRAME_END
7296 +#define MRV_MI_SP_FRAME_END_MASK 0x00000002
7297 +#define MRV_MI_SP_FRAME_END_SHIFT 1
7298 +
7299 +#define MRV_MI_MP_FRAME_END
7300 +#define MRV_MI_MP_FRAME_END_MASK 0x00000001
7301 +#define MRV_MI_MP_FRAME_END_SHIFT 0
7302 +
7303 +#ifndef MRV_MI_SP_FRAME_END
7304 +#define MRV_MI_SP_FRAME_END_MASK 0
7305 +#endif
7306 +#ifndef MRV_MI_DMA_FRAME_END
7307 +#define MRV_MI_DMA_FRAME_END_MASK 0
7308 +#endif
7309 +
7310 +
7311 +#define MRV_MI_ALLIRQS
7312 +#define MRV_MI_ALLIRQS_MASK \
7313 +(0 \
7314 +| MRV_MI_DMA_READY_MASK \
7315 +| MRV_MI_AHB_ERROR_MASK \
7316 +| MRV_MI_WRAP_SP_CR_MASK \
7317 +| MRV_MI_WRAP_SP_CB_MASK \
7318 +| MRV_MI_WRAP_SP_Y_MASK \
7319 +| MRV_MI_WRAP_MP_CR_MASK \
7320 +| MRV_MI_WRAP_MP_CB_MASK \
7321 +| MRV_MI_WRAP_MP_Y_MASK \
7322 +| MRV_MI_FILL_MP_Y_MASK \
7323 +| MRV_MI_MBLK_LINE_MASK \
7324 +| MRV_MI_SP_FRAME_END_MASK \
7325 +| MRV_MI_DMA_FRAME_END_MASK \
7326 +| MRV_MI_MP_FRAME_END_MASK \
7327 +)
7328 +#define MRV_MI_ALLIRQS_SHIFT 0
7329 +
7330 +#define MRV_MI_AHB_READ_ERROR
7331 +#define MRV_MI_AHB_READ_ERROR_MASK 0x00000200
7332 +#define MRV_MI_AHB_READ_ERROR_SHIFT 9
7333 +#define MRV_MI_AHB_WRITE_ERROR
7334 +#define MRV_MI_AHB_WRITE_ERROR_MASK 0x00000100
7335 +#define MRV_MI_AHB_WRITE_ERROR_SHIFT 8
7336 +#define MRV_MI_SP_CR_FIFO_FULL
7337 +#define MRV_MI_SP_CR_FIFO_FULL_MASK 0x00000040
7338 +#define MRV_MI_SP_CR_FIFO_FULL_SHIFT 6
7339 +#define MRV_MI_SP_CB_FIFO_FULL
7340 +#define MRV_MI_SP_CB_FIFO_FULL_MASK 0x00000020
7341 +#define MRV_MI_SP_CB_FIFO_FULL_SHIFT 5
7342 +#define MRV_MI_SP_Y_FIFO_FULL
7343 +#define MRV_MI_SP_Y_FIFO_FULL_MASK 0x00000010
7344 +#define MRV_MI_SP_Y_FIFO_FULL_SHIFT 4
7345 +#define MRV_MI_MP_CR_FIFO_FULL
7346 +#define MRV_MI_MP_CR_FIFO_FULL_MASK 0x00000004
7347 +#define MRV_MI_MP_CR_FIFO_FULL_SHIFT 2
7348 +#define MRV_MI_MP_CB_FIFO_FULL
7349 +#define MRV_MI_MP_CB_FIFO_FULL_MASK 0x00000002
7350 +#define MRV_MI_MP_CB_FIFO_FULL_SHIFT 1
7351 +#define MRV_MI_MP_Y_FIFO_FULL
7352 +#define MRV_MI_MP_Y_FIFO_FULL_MASK 0x00000001
7353 +#define MRV_MI_MP_Y_FIFO_FULL_SHIFT 0
7354 +
7355 +
7356 +#define MRV_MI_ALL_STAT
7357 +#define MRV_MI_ALL_STAT_MASK \
7358 +(0 \
7359 +| MRV_MI_AHB_READ_ERROR_MASK  \
7360 +| MRV_MI_AHB_WRITE_ERROR_MASK \
7361 +| MRV_MI_SP_CR_FIFO_FULL_MASK \
7362 +| MRV_MI_SP_CB_FIFO_FULL_MASK \
7363 +| MRV_MI_SP_Y_FIFO_FULL_MASK  \
7364 +| MRV_MI_MP_CR_FIFO_FULL_MASK \
7365 +| MRV_MI_MP_CB_FIFO_FULL_MASK \
7366 +| MRV_MI_MP_Y_FIFO_FULL_MASK  \
7367 +)
7368 +#define MRV_MI_ALL_STAT_SHIFT 0
7369 +
7370 +
7371 +
7372 +#define MRV_MI_SP_Y_PIC_WIDTH
7373 +#define MRV_MI_SP_Y_PIC_WIDTH_MASK 0x00000FFF
7374 +#define MRV_MI_SP_Y_PIC_WIDTH_SHIFT 0
7375 +
7376 +#define MRV_MI_SP_Y_PIC_HEIGHT
7377 +#define MRV_MI_SP_Y_PIC_HEIGHT_MASK 0x00000FFF
7378 +#define MRV_MI_SP_Y_PIC_HEIGHT_SHIFT 0
7379 +
7380 +#define MRV_MI_SP_Y_PIC_SIZE
7381 +#define MRV_MI_SP_Y_PIC_SIZE_MASK 0x01FFFFFF
7382 +#define MRV_MI_SP_Y_PIC_SIZE_SHIFT 0
7383 +
7384 +
7385 +
7386 +
7387 +#define MRV_MI_DMA_FRAME_END_DISABLE
7388 +#define MRV_MI_DMA_FRAME_END_DISABLE_MASK 0x00000400
7389 +#define MRV_MI_DMA_FRAME_END_DISABLE_SHIFT 10
7390 +#define MRV_MI_DMA_CONTINUOUS_EN
7391 +#define MRV_MI_DMA_CONTINUOUS_EN_MASK 0x00000200
7392 +#define MRV_MI_DMA_CONTINUOUS_EN_SHIFT 9
7393 +#define MRV_MI_DMA_BYTE_SWAP
7394 +#define MRV_MI_DMA_BYTE_SWAP_MASK 0x00000100
7395 +#define MRV_MI_DMA_BYTE_SWAP_SHIFT 8
7396 +#define MRV_MI_DMA_INOUT_FORMAT
7397 +#define MRV_MI_DMA_INOUT_FORMAT_MASK 0x000000C0
7398 +#define MRV_MI_DMA_INOUT_FORMAT_SHIFT 6
7399 +#define MRV_MI_DMA_INOUT_FORMAT_YUV444 3
7400 +#define MRV_MI_DMA_INOUT_FORMAT_YUV422 2
7401 +#define MRV_MI_DMA_INOUT_FORMAT_YUV420 1
7402 +#define MRV_MI_DMA_INOUT_FORMAT_YUV400 0
7403 +#define MRV_MI_DMA_READ_FORMAT
7404 +#define MRV_MI_DMA_READ_FORMAT_MASK 0x00000030
7405 +#define MRV_MI_DMA_READ_FORMAT_SHIFT 4
7406 +#define MRV_MI_DMA_READ_FORMAT_PLANAR      0
7407 +#define MRV_MI_DMA_READ_FORMAT_SEMIPLANAR  1
7408 +#define MRV_MI_DMA_READ_FORMAT_INTERLEAVED 2
7409 +#define MRV_MI_DMA_BURST_LEN_CHROM
7410 +#define MRV_MI_DMA_BURST_LEN_CHROM_MASK 0x0000000C
7411 +#define MRV_MI_DMA_BURST_LEN_CHROM_SHIFT 2
7412 +#define MRV_MI_DMA_BURST_LEN_CHROM_4  0
7413 +#define MRV_MI_DMA_BURST_LEN_CHROM_8  1
7414 +#define MRV_MI_DMA_BURST_LEN_CHROM_16 2
7415 +#define MRV_MI_DMA_BURST_LEN_LUM
7416 +#define MRV_MI_DMA_BURST_LEN_LUM_MASK 0x00000003
7417 +#define MRV_MI_DMA_BURST_LEN_LUM_SHIFT 0
7418 +#define MRV_MI_DMA_BURST_LEN_LUM_4  0
7419 +#define MRV_MI_DMA_BURST_LEN_LUM_8  1
7420 +#define MRV_MI_DMA_BURST_LEN_LUM_16 2
7421 +
7422 +
7423 +
7424 +#define MRV_MI_DMA_START
7425 +#define MRV_MI_DMA_START_MASK 0x00000001
7426 +#define MRV_MI_DMA_START_SHIFT 0
7427 +
7428 +
7429 +#define MRV_MI_DMA_ACTIVE
7430 +#define MRV_MI_DMA_ACTIVE_MASK 0x00000001
7431 +#define MRV_MI_DMA_ACTIVE_SHIFT 0
7432 +
7433 +
7434 +
7435 +#define MRV_JPE_GEN_HEADER
7436 +#define MRV_JPE_GEN_HEADER_MASK 0x00000001
7437 +#define MRV_JPE_GEN_HEADER_SHIFT 0
7438 +
7439 +
7440 +#define MRV_JPE_CONT_MODE
7441 +#define MRV_JPE_CONT_MODE_MASK 0x00000030
7442 +#define MRV_JPE_CONT_MODE_SHIFT 4
7443 +#define MRV_JPE_CONT_MODE_STOP   0
7444 +#define MRV_JPE_CONT_MODE_NEXT   1
7445 +#define MRV_JPE_CONT_MODE_HEADER 3
7446 +#define MRV_JPE_ENCODE
7447 +#define MRV_JPE_ENCODE_MASK 0x00000001
7448 +#define MRV_JPE_ENCODE_SHIFT 0
7449 +
7450 +
7451 +#define MRV_JPE_JP_INIT
7452 +#define MRV_JPE_JP_INIT_MASK 0x00000001
7453 +#define MRV_JPE_JP_INIT_SHIFT 0
7454 +
7455 +
7456 +#define MRV_JPE_Y_SCALE_EN
7457 +#define MRV_JPE_Y_SCALE_EN_MASK 0x00000001
7458 +#define MRV_JPE_Y_SCALE_EN_SHIFT 0
7459 +
7460 +
7461 +#define MRV_JPE_CBCR_SCALE_EN
7462 +#define MRV_JPE_CBCR_SCALE_EN_MASK 0x00000001
7463 +#define MRV_JPE_CBCR_SCALE_EN_SHIFT 0
7464 +
7465 +#define MRV_JPE_TABLE_FLUSH
7466 +#define MRV_JPE_TABLE_FLUSH_MASK 0x00000001
7467 +#define MRV_JPE_TABLE_FLUSH_SHIFT 0
7468 +
7469 +
7470 +#define MRV_JPE_ENC_HSIZE
7471 +
7472 +#define MRV_JPE_ENC_HSIZE_MASK 0x00001FFF
7473 +
7474 +#define MRV_JPE_ENC_HSIZE_SHIFT 0
7475 +
7476 +#define MRV_JPE_ENC_VSIZE
7477 +
7478 +#define MRV_JPE_ENC_VSIZE_MASK 0x00000FFF
7479 +
7480 +#define MRV_JPE_ENC_VSIZE_SHIFT 0
7481 +
7482 +
7483 +#define MRV_JPE_ENC_PIC_FORMAT
7484 +#define MRV_JPE_ENC_PIC_FORMAT_MASK 0x00000007
7485 +#define MRV_JPE_ENC_PIC_FORMAT_SHIFT 0
7486 +#define MRV_JPE_ENC_PIC_FORMAT_422 1
7487 +#define MRV_JPE_ENC_PIC_FORMAT_400 4
7488 +
7489 +#define MRV_JPE_RESTART_INTERVAL
7490 +#define MRV_JPE_RESTART_INTERVAL_MASK 0x0000FFFF
7491 +#define MRV_JPE_RESTART_INTERVAL_SHIFT 0
7492 +
7493 +#define MRV_JPE_TQ0_SELECT
7494 +#define MRV_JPE_TQ0_SELECT_MASK 0x00000003
7495 +#define MRV_JPE_TQ0_SELECT_SHIFT 0
7496 +#define MRV_JPE_TQ1_SELECT
7497 +#define MRV_JPE_TQ1_SELECT_MASK 0x00000003
7498 +#define MRV_JPE_TQ1_SELECT_SHIFT 0
7499 +
7500 +
7501 +#define MRV_JPE_TQ2_SELECT
7502 +#define MRV_JPE_TQ2_SELECT_MASK 0x00000003
7503 +#define MRV_JPE_TQ2_SELECT_SHIFT 0
7504 +
7505 +#define MRV_JPE_TQ_SELECT_TAB3 3
7506 +#define MRV_JPE_TQ_SELECT_TAB2 2
7507 +#define MRV_JPE_TQ_SELECT_TAB1 1
7508 +#define MRV_JPE_TQ_SELECT_TAB0 0
7509 +
7510 +
7511 +#define MRV_JPE_DC_TABLE_SELECT_Y
7512 +#define MRV_JPE_DC_TABLE_SELECT_Y_MASK 0x00000001
7513 +#define MRV_JPE_DC_TABLE_SELECT_Y_SHIFT 0
7514 +#define MRV_JPE_DC_TABLE_SELECT_U
7515 +#define MRV_JPE_DC_TABLE_SELECT_U_MASK 0x00000002
7516 +#define MRV_JPE_DC_TABLE_SELECT_U_SHIFT 1
7517 +#define MRV_JPE_DC_TABLE_SELECT_V
7518 +#define MRV_JPE_DC_TABLE_SELECT_V_MASK 0x00000004
7519 +#define MRV_JPE_DC_TABLE_SELECT_V_SHIFT 2
7520 +
7521 +
7522 +#define MRV_JPE_AC_TABLE_SELECT_Y
7523 +#define MRV_JPE_AC_TABLE_SELECT_Y_MASK 0x00000001
7524 +#define MRV_JPE_AC_TABLE_SELECT_Y_SHIFT 0
7525 +#define MRV_JPE_AC_TABLE_SELECT_U
7526 +#define MRV_JPE_AC_TABLE_SELECT_U_MASK 0x00000002
7527 +#define MRV_JPE_AC_TABLE_SELECT_U_SHIFT 1
7528 +#define MRV_JPE_AC_TABLE_SELECT_V
7529 +#define MRV_JPE_AC_TABLE_SELECT_V_MASK 0x00000004
7530 +#define MRV_JPE_AC_TABLE_SELECT_V_SHIFT 2
7531 +
7532 +
7533 +#define MRV_JPE_TABLE_WDATA_H
7534 +#define MRV_JPE_TABLE_WDATA_H_MASK 0x0000FF00
7535 +#define MRV_JPE_TABLE_WDATA_H_SHIFT 8
7536 +#define MRV_JPE_TABLE_WDATA_L
7537 +#define MRV_JPE_TABLE_WDATA_L_MASK 0x000000FF
7538 +#define MRV_JPE_TABLE_WDATA_L_SHIFT 0
7539 +
7540 +
7541 +#define MRV_JPE_TABLE_ID
7542 +#define MRV_JPE_TABLE_ID_MASK 0x0000000F
7543 +#define MRV_JPE_TABLE_ID_SHIFT 0
7544 +#define MRV_JPE_TABLE_ID_QUANT0  0
7545 +#define MRV_JPE_TABLE_ID_QUANT1  1
7546 +#define MRV_JPE_TABLE_ID_QUANT2  2
7547 +#define MRV_JPE_TABLE_ID_QUANT3  3
7548 +#define MRV_JPE_TABLE_ID_VLC_DC0 4
7549 +#define MRV_JPE_TABLE_ID_VLC_AC0 5
7550 +#define MRV_JPE_TABLE_ID_VLC_DC1 6
7551 +#define MRV_JPE_TABLE_ID_VLC_AC1 7
7552 +
7553 +#define MRV_JPE_TAC0_LEN
7554 +#define MRV_JPE_TAC0_LEN_MASK 0x000000FF
7555 +#define MRV_JPE_TAC0_LEN_SHIFT 0
7556 +
7557 +#define MRV_JPE_TDC0_LEN
7558 +#define MRV_JPE_TDC0_LEN_MASK 0x000000FF
7559 +#define MRV_JPE_TDC0_LEN_SHIFT 0
7560 +
7561 +#define MRV_JPE_TAC1_LEN
7562 +#define MRV_JPE_TAC1_LEN_MASK 0x000000FF
7563 +#define MRV_JPE_TAC1_LEN_SHIFT 0
7564 +
7565 +#define MRV_JPE_TDC1_LEN
7566 +#define MRV_JPE_TDC1_LEN_MASK 0x000000FF
7567 +#define MRV_JPE_TDC1_LEN_SHIFT 0
7568 +
7569 +
7570 +#define MRV_JPE_CODEC_BUSY
7571 +#define MRV_JPE_CODEC_BUSY_MASK 0x00000001
7572 +#define MRV_JPE_CODEC_BUSY_SHIFT 0
7573 +
7574 +
7575 +#define MRV_JPE_HEADER_MODE
7576 +#define MRV_JPE_HEADER_MODE_MASK 0x00000003
7577 +#define MRV_JPE_HEADER_MODE_SHIFT 0
7578 +#define MRV_JPE_HEADER_MODE_NO    0
7579 +#define MRV_JPE_HEADER_MODE_JFIF  2
7580 +
7581 +#define MRV_JPE_ENCODE_MODE
7582 +#define MRV_JPE_ENCODE_MODE_MASK 0x00000001
7583 +#define MRV_JPE_ENCODE_MODE_SHIFT 0
7584 +
7585 +#define MRV_JPE_DEB_BAD_TABLE_ACCESS
7586 +#define MRV_JPE_DEB_BAD_TABLE_ACCESS_MASK 0x00000100
7587 +#define MRV_JPE_DEB_BAD_TABLE_ACCESS_SHIFT 8
7588 +#define MRV_JPE_DEB_VLC_TABLE_BUSY
7589 +#define MRV_JPE_DEB_VLC_TABLE_BUSY_MASK 0x00000020
7590 +#define MRV_JPE_DEB_VLC_TABLE_BUSY_SHIFT 5
7591 +#define MRV_JPE_DEB_R2B_MEMORY_FULL
7592 +#define MRV_JPE_DEB_R2B_MEMORY_FULL_MASK 0x00000010
7593 +#define MRV_JPE_DEB_R2B_MEMORY_FULL_SHIFT 4
7594 +#define MRV_JPE_DEB_VLC_ENCODE_BUSY
7595 +#define MRV_JPE_DEB_VLC_ENCODE_BUSY_MASK 0x00000008
7596 +#define MRV_JPE_DEB_VLC_ENCODE_BUSY_SHIFT 3
7597 +#define MRV_JPE_DEB_QIQ_TABLE_ACC
7598 +#define MRV_JPE_DEB_QIQ_TABLE_ACC_MASK 0x00000004
7599 +#define MRV_JPE_DEB_QIQ_TABLE_ACC_SHIFT 2
7600 +
7601 +#define MRV_JPE_VLC_TABLE_ERR
7602 +#define MRV_JPE_VLC_TABLE_ERR_MASK 0x00000400
7603 +#define MRV_JPE_VLC_TABLE_ERR_SHIFT 10
7604 +#define MRV_JPE_R2B_IMG_SIZE_ERR
7605 +#define MRV_JPE_R2B_IMG_SIZE_ERR_MASK 0x00000200
7606 +#define MRV_JPE_R2B_IMG_SIZE_ERR_SHIFT 9
7607 +#define MRV_JPE_DCT_ERR
7608 +#define MRV_JPE_DCT_ERR_MASK 0x00000080
7609 +#define MRV_JPE_DCT_ERR_SHIFT 7
7610 +#define MRV_JPE_VLC_SYMBOL_ERR
7611 +#define MRV_JPE_VLC_SYMBOL_ERR_MASK 0x00000010
7612 +#define MRV_JPE_VLC_SYMBOL_ERR_SHIFT 4
7613 +
7614 +
7615 +#define MRV_JPE_ALL_ERR
7616 +#define MRV_JPE_ALL_ERR_MASK \
7617 +(0 \
7618 +| MRV_JPE_VLC_TABLE_ERR_MASK \
7619 +| MRV_JPE_R2B_IMG_SIZE_ERR_MASK \
7620 +| MRV_JPE_DCT_ERR_MASK \
7621 +| MRV_JPE_VLC_SYMBOL_ERR_MASK \
7622 +)
7623 +#define MRV_JPE_ALL_ERR_SHIFT 0
7624 +
7625 +#define MRV_JPE_GEN_HEADER_DONE
7626 +#define MRV_JPE_GEN_HEADER_DONE_MASK 0x00000020
7627 +#define MRV_JPE_GEN_HEADER_DONE_SHIFT 5
7628 +#define MRV_JPE_ENCODE_DONE
7629 +#define MRV_JPE_ENCODE_DONE_MASK 0x00000010
7630 +#define MRV_JPE_ENCODE_DONE_SHIFT 4
7631 +
7632 +/* FIXME | MRV_JPE_GEN_HEADER_DONE_MASK \ */
7633 +
7634 +#define MRV_JPE_ALL_STAT
7635 +#define MRV_JPE_ALL_STAT_MASK \
7636 +(0 \
7637 +| MRV_JPE_ENCODE_DONE_MASK \
7638 +)
7639 +#define MRV_JPE_ALL_STAT_SHIFT 0
7640 +
7641 +
7642 +#define MRV_SMIA_DMA_CHANNEL_SEL
7643 +#define MRV_SMIA_DMA_CHANNEL_SEL_MASK 0x00000700
7644 +#define MRV_SMIA_DMA_CHANNEL_SEL_SHIFT 8
7645 +#define MRV_SMIA_SHUTDOWN_LANE
7646 +#define MRV_SMIA_SHUTDOWN_LANE_MASK 0x00000008
7647 +#define MRV_SMIA_SHUTDOWN_LANE_SHIFT 3
7648 +
7649 +#define MRV_SMIA_FLUSH_FIFO
7650 +#define MRV_SMIA_FLUSH_FIFO_MASK 0x00000002
7651 +#define MRV_SMIA_FLUSH_FIFO_SHIFT 1
7652 +
7653 +#define MRV_SMIA_OUTPUT_ENA
7654 +#define MRV_SMIA_OUTPUT_ENA_MASK 0x00000001
7655 +#define MRV_SMIA_OUTPUT_ENA_SHIFT 0
7656 +
7657 +#define MRV_SMIA_DMA_CHANNEL
7658 +#define MRV_SMIA_DMA_CHANNEL_MASK 0x00000700
7659 +#define MRV_SMIA_DMA_CHANNEL_SHIFT 8
7660 +#define MRV_SMIA_EMB_DATA_AVAIL
7661 +#define MRV_SMIA_EMB_DATA_AVAIL_MASK 0x00000001
7662 +#define MRV_SMIA_EMB_DATA_AVAIL_SHIFT 0
7663 +
7664 +#define MRV_SMIA_IMSC_FIFO_FILL_LEVEL
7665 +#define MRV_SMIA_IMSC_FIFO_FILL_LEVEL_MASK 0x00000020
7666 +#define MRV_SMIA_IMSC_FIFO_FILL_LEVEL_SHIFT 5
7667 +
7668 +#define MRV_SMIA_IMSC_SYNC_FIFO_OVFLW
7669 +#define MRV_SMIA_IMSC_SYNC_FIFO_OVFLW_MASK 0x00000010
7670 +#define MRV_SMIA_IMSC_SYNC_FIFO_OVFLW_SHIFT 4
7671 +#define MRV_SMIA_IMSC_ERR_CS
7672 +#define MRV_SMIA_IMSC_ERR_CS_MASK 0x00000008
7673 +#define MRV_SMIA_IMSC_ERR_CS_SHIFT 3
7674 +#define MRV_SMIA_IMSC_ERR_PROTOCOL
7675 +#define MRV_SMIA_IMSC_ERR_PROTOCOL_MASK 0x00000004
7676 +#define MRV_SMIA_IMSC_ERR_PROTOCOL_SHIFT 2
7677 +
7678 +#define MRV_SMIA_IMSC_EMB_DATA_OVFLW
7679 +#define MRV_SMIA_IMSC_EMB_DATA_OVFLW_MASK 0x00000002
7680 +#define MRV_SMIA_IMSC_EMB_DATA_OVFLW_SHIFT 1
7681 +#define MRV_SMIA_IMSC_FRAME_END
7682 +#define MRV_SMIA_IMSC_FRAME_END_MASK 0x00000001
7683 +#define MRV_SMIA_IMSC_FRAME_END_SHIFT 0
7684 +
7685 +#define MRV_SMIA_IMSC_ALL_IRQS
7686 +#define MRV_SMIA_IMSC_ALL_IRQS_MASK \
7687 +(0 \
7688 +| MRV_SMIA_IMSC_FIFO_FILL_LEVEL_MASK \
7689 +| MRV_SMIA_IMSC_SYNC_FIFO_OVFLW_MASK \
7690 +| MRV_SMIA_IMSC_ERR_CS_MASK \
7691 +| MRV_SMIA_IMSC_ERR_PROTOCOL_MASK \
7692 +| MRV_SMIA_IMSC_EMB_DATA_OVFLW_MASK \
7693 +| MRV_SMIA_IMSC_FRAME_END_MASK \
7694 +)
7695 +#define MRV_SMIA_IMSC_ALL_IRQS_SHIFT 0
7696 +
7697 +#define MRV_SMIA_RIS_FIFO_FILL_LEVEL
7698 +#define MRV_SMIA_RIS_FIFO_FILL_LEVEL_MASK 0x00000020
7699 +#define MRV_SMIA_RIS_FIFO_FILL_LEVEL_SHIFT 5
7700 +#define MRV_SMIA_RIS_SYNC_FIFO_OVFLW
7701 +#define MRV_SMIA_RIS_SYNC_FIFO_OVFLW_MASK 0x00000010
7702 +#define MRV_SMIA_RIS_SYNC_FIFO_OVFLW_SHIFT 4
7703 +#define MRV_SMIA_RIS_ERR_CS
7704 +#define MRV_SMIA_RIS_ERR_CS_MASK 0x00000008
7705 +#define MRV_SMIA_RIS_ERR_CS_SHIFT 3
7706 +#define MRV_SMIA_RIS_ERR_PROTOCOL
7707 +#define MRV_SMIA_RIS_ERR_PROTOCOL_MASK 0x00000004
7708 +#define MRV_SMIA_RIS_ERR_PROTOCOL_SHIFT 2
7709 +
7710 +#define MRV_SMIA_RIS_EMB_DATA_OVFLW
7711 +#define MRV_SMIA_RIS_EMB_DATA_OVFLW_MASK 0x00000002
7712 +#define MRV_SMIA_RIS_EMB_DATA_OVFLW_SHIFT 1
7713 +#define MRV_SMIA_RIS_FRAME_END
7714 +#define MRV_SMIA_RIS_FRAME_END_MASK 0x00000001
7715 +#define MRV_SMIA_RIS_FRAME_END_SHIFT 0
7716 +
7717 +#define MRV_SMIA_RIS_ALL_IRQS
7718 +#define MRV_SMIA_RIS_ALL_IRQS_MASK \
7719 +(0 \
7720 +| MRV_SMIA_RIS_FIFO_FILL_LEVEL_MASK \
7721 +| MRV_SMIA_RIS_SYNC_FIFO_OVFLW_MASK \
7722 +| MRV_SMIA_RIS_ERR_CS_MASK \
7723 +| MRV_SMIA_RIS_ERR_PROTOCOL_MASK \
7724 +| MRV_SMIA_RIS_EMB_DATA_OVFLW_MASK \
7725 +| MRV_SMIA_RIS_FRAME_END_MASK \
7726 +)
7727 +#define MRV_SMIA_RIS_ALL_IRQS_SHIFT 0
7728 +
7729 +#define MRV_SMIA_MIS_FIFO_FILL_LEVEL
7730 +#define MRV_SMIA_MIS_FIFO_FILL_LEVEL_MASK 0x00000020
7731 +#define MRV_SMIA_MIS_FIFO_FILL_LEVEL_SHIFT 5
7732 +#define MRV_SMIA_MIS_SYNC_FIFO_OVFLW
7733 +#define MRV_SMIA_MIS_SYNC_FIFO_OVFLW_MASK 0x00000010
7734 +#define MRV_SMIA_MIS_SYNC_FIFO_OVFLW_SHIFT 4
7735 +#define MRV_SMIA_MIS_ERR_CS
7736 +#define MRV_SMIA_MIS_ERR_CS_MASK 0x00000008
7737 +#define MRV_SMIA_MIS_ERR_CS_SHIFT 3
7738 +#define MRV_SMIA_MIS_ERR_PROTOCOL
7739 +#define MRV_SMIA_MIS_ERR_PROTOCOL_MASK 0x00000004
7740 +#define MRV_SMIA_MIS_ERR_PROTOCOL_SHIFT 2
7741 +
7742 +#define MRV_SMIA_MIS_EMB_DATA_OVFLW
7743 +#define MRV_SMIA_MIS_EMB_DATA_OVFLW_MASK 0x00000002
7744 +#define MRV_SMIA_MIS_EMB_DATA_OVFLW_SHIFT 1
7745 +#define MRV_SMIA_MIS_FRAME_END
7746 +#define MRV_SMIA_MIS_FRAME_END_MASK 0x00000001
7747 +#define MRV_SMIA_MIS_FRAME_END_SHIFT 0
7748 +
7749 +#define MRV_SMIA_MIS_ALL_IRQS
7750 +#define MRV_SMIA_MIS_ALL_IRQS_MASK \
7751 +(0 \
7752 +| MRV_SMIA_MIS_FIFO_FILL_LEVEL_MASK \
7753 +| MRV_SMIA_MIS_SYNC_FIFO_OVFLW_MASK \
7754 +| MRV_SMIA_MIS_ERR_CS_MASK \
7755 +| MRV_SMIA_MIS_ERR_PROTOCOL_MASK \
7756 +| MRV_SMIA_MIS_EMB_DATA_OVFLW_MASK \
7757 +| MRV_SMIA_MIS_FRAME_END_MASK \
7758 +)
7759 +#define MRV_SMIA_MIS_ALL_IRQS_SHIFT 0
7760 +
7761 +
7762 +#define MRV_SMIA_ICR_FIFO_FILL_LEVEL
7763 +#define MRV_SMIA_ICR_FIFO_FILL_LEVEL_MASK 0x00000020
7764 +#define MRV_SMIA_ICR_FIFO_FILL_LEVEL_SHIFT 5
7765 +#define MRV_SMIA_ICR_SYNC_FIFO_OVFLW
7766 +#define MRV_SMIA_ICR_SYNC_FIFO_OVFLW_MASK 0x00000010
7767 +#define MRV_SMIA_ICR_SYNC_FIFO_OVFLW_SHIFT 4
7768 +#define MRV_SMIA_ICR_ERR_CS
7769 +#define MRV_SMIA_ICR_ERR_CS_MASK 0x00000008
7770 +#define MRV_SMIA_ICR_ERR_CS_SHIFT 3
7771 +#define MRV_SMIA_ICR_ERR_PROTOCOL
7772 +#define MRV_SMIA_ICR_ERR_PROTOCOL_MASK 0x00000004
7773 +#define MRV_SMIA_ICR_ERR_PROTOCOL_SHIFT 2
7774 +
7775 +#define MRV_SMIA_ICR_EMB_DATA_OVFLW
7776 +#define MRV_SMIA_ICR_EMB_DATA_OVFLW_MASK 0x00000002
7777 +#define MRV_SMIA_ICR_EMB_DATA_OVFLW_SHIFT 1
7778 +#define MRV_SMIA_ICR_FRAME_END
7779 +#define MRV_SMIA_ICR_FRAME_END_MASK 0x00000001
7780 +#define MRV_SMIA_ICR_FRAME_END_SHIFT 0
7781 +
7782 +#define MRV_SMIA_ICR_ALL_IRQS
7783 +#define MRV_SMIA_ICR_ALL_IRQS_MASK \
7784 +(0 \
7785 +| MRV_SMIA_ICR_FIFO_FILL_LEVEL_MASK \
7786 +| MRV_SMIA_ICR_SYNC_FIFO_OVFLW_MASK \
7787 +| MRV_SMIA_ICR_ERR_CS_MASK \
7788 +| MRV_SMIA_ICR_ERR_PROTOCOL_MASK \
7789 +| MRV_SMIA_ICR_EMB_DATA_OVFLW_MASK \
7790 +| MRV_SMIA_ICR_FRAME_END_MASK \
7791 +)
7792 +#define MRV_SMIA_ICR_ALL_IRQS_SHIFT 0
7793 +
7794 +
7795 +#define MRV_SMIA_ISR_FIFO_FILL_LEVEL
7796 +#define MRV_SMIA_ISR_FIFO_FILL_LEVEL_MASK 0x00000020
7797 +#define MRV_SMIA_ISR_FIFO_FILL_LEVEL_SHIFT 5
7798 +#define MRV_SMIA_ISR_SYNC_FIFO_OVFLW
7799 +#define MRV_SMIA_ISR_SYNC_FIFO_OVFLW_MASK 0x00000010
7800 +#define MRV_SMIA_ISR_SYNC_FIFO_OVFLW_SHIFT 4
7801 +#define MRV_SMIA_ISR_ERR_CS
7802 +#define MRV_SMIA_ISR_ERR_CS_MASK 0x00000008
7803 +#define MRV_SMIA_ISR_ERR_CS_SHIFT 3
7804 +#define MRV_SMIA_ISR_ERR_PROTOCOL
7805 +#define MRV_SMIA_ISR_ERR_PROTOCOL_MASK 0x00000004
7806 +#define MRV_SMIA_ISR_ERR_PROTOCOL_SHIFT 2
7807 +
7808 +#define MRV_SMIA_ISR_EMB_DATA_OVFLW
7809 +#define MRV_SMIA_ISR_EMB_DATA_OVFLW_MASK 0x00000002
7810 +#define MRV_SMIA_ISR_EMB_DATA_OVFLW_SHIFT 1
7811 +#define MRV_SMIA_ISR_FRAME_END
7812 +#define MRV_SMIA_ISR_FRAME_END_MASK 0x00000001
7813 +#define MRV_SMIA_ISR_FRAME_END_SHIFT 0
7814 +
7815 +#define MRV_SMIA_ISR_ALL_IRQS
7816 +#define MRV_SMIA_ISR_ALL_IRQS_MASK \
7817 +(0 \
7818 +| MRV_SMIA_ISR_FIFO_FILL_LEVEL_MASK \
7819 +| MRV_SMIA_ISR_SYNC_FIFO_OVFLW_MASK \
7820 +| MRV_SMIA_ISR_ERR_CS_MASK \
7821 +| MRV_SMIA_ISR_ERR_PROTOCOL_MASK \
7822 +| MRV_SMIA_ISR_EMB_DATA_OVFLW_MASK \
7823 +| MRV_SMIA_ISR_FRAME_END_MASK \
7824 +)
7825 +#define MRV_SMIA_ISR_ALL_IRQS_SHIFT 0
7826 +
7827 +#define MRV_SMIA_DATA_FORMAT_SEL
7828 +#define MRV_SMIA_DATA_FORMAT_SEL_MASK 0x0000000F
7829 +#define MRV_SMIA_DATA_FORMAT_SEL_SHIFT 0
7830 +#define MRV_SMIA_DATA_FORMAT_SEL_YUV422      0
7831 +#define MRV_SMIA_DATA_FORMAT_SEL_YUV420      1
7832 +#define MRV_SMIA_DATA_FORMAT_SEL_RGB444      4
7833 +#define MRV_SMIA_DATA_FORMAT_SEL_RGB565      5
7834 +#define MRV_SMIA_DATA_FORMAT_SEL_RGB888      6
7835 +#define MRV_SMIA_DATA_FORMAT_SEL_RAW6        8
7836 +#define MRV_SMIA_DATA_FORMAT_SEL_RAW7        9
7837 +#define MRV_SMIA_DATA_FORMAT_SEL_RAW8       10
7838 +#define MRV_SMIA_DATA_FORMAT_SEL_RAW10      11
7839 +#define MRV_SMIA_DATA_FORMAT_SEL_RAW12      12
7840 +#define MRV_SMIA_DATA_FORMAT_SEL_RAW8TO10   13
7841 +#define MRV_SMIA_DATA_FORMAT_SEL_COMPRESSED 15
7842 +
7843 +
7844 +#define MRV_SMIA_SOF_EMB_DATA_LINES
7845 +#define MRV_SMIA_SOF_EMB_DATA_LINES_MASK 0x00000007
7846 +#define MRV_SMIA_SOF_EMB_DATA_LINES_SHIFT 0
7847 +#define MRV_SMIA_SOF_EMB_DATA_LINES_MIN  0
7848 +#define MRV_SMIA_SOF_EMB_DATA_LINES_MAX \
7849 +       (MRV_SMIA_SOF_EMB_DATA_LINES_MASK >> MRV_SMIA_SOF_EMB_DATA_LINES_SHIFT)
7850 +#define MRV_SMIA_EMB_HSTART
7851 +#define MRV_SMIA_EMB_HSTART_MASK 0x00003FFF
7852 +#define MRV_SMIA_EMB_HSTART_SHIFT 0
7853 +#define MRV_SMIA_EMB_HSTART_VALID_MASK (MRV_SMIA_EMB_HSTART_MASK & ~0x00000003)
7854 +
7855 +#define MRV_SMIA_EMB_HSIZE
7856 +#define MRV_SMIA_EMB_HSIZE_MASK 0x00003FFF
7857 +#define MRV_SMIA_EMB_HSIZE_SHIFT 0
7858 +#define MRV_SMIA_EMB_HSIZE_VALID_MASK (MRV_SMIA_EMB_HSIZE_MASK & ~0x00000003)
7859 +
7860 +#define MRV_SMIA_EMB_VSTART
7861 +#define MRV_SMIA_EMB_VSTART_MASK 0x00000FFF
7862 +#define MRV_SMIA_EMB_VSTART_SHIFT 0
7863 +
7864 +#define MRV_SMIA_NUM_LINES
7865 +#define MRV_SMIA_NUM_LINES_MASK 0x00000FFF
7866 +
7867 +#define MRV_SMIA_NUM_LINES_SHIFT 0
7868 +#define MRV_SMIA_NUM_LINES_MIN  1
7869 +#define MRV_SMIA_NUM_LINES_MAX \
7870 +       (MRV_SMIA_NUM_LINES_MASK >> MRV_SMIA_NUM_LINES_SHIFT)
7871 +
7872 +#define MRV_SMIA_EMB_DATA_FIFO
7873 +#define MRV_SMIA_EMB_DATA_FIFO_MASK 0xFFFFFFFF
7874 +#define MRV_SMIA_EMB_DATA_FIFO_SHIFT 0
7875 +
7876 +#define MRV_SMIA_FIFO_FILL_LEVEL
7877 +#define MRV_SMIA_FIFO_FILL_LEVEL_MASK 0x000003FF
7878 +#define MRV_SMIA_FIFO_FILL_LEVEL_SHIFT 0
7879 +#define MRV_SMIA_FIFO_FILL_LEVEL_VALID_MASK \
7880 +       (MRV_SMIA_FIFO_FILL_LEVEL_MASK & ~0x00000003)
7881 +
7882 +#define MRV_MIPI_ERR_SOT_SYNC_HS_SKIP
7883 +#define MRV_MIPI_ERR_SOT_SYNC_HS_SKIP_MASK 0x00020000
7884 +#define MRV_MIPI_ERR_SOT_SYNC_HS_SKIP_SHIFT 17
7885 +#define MRV_MIPI_ERR_SOT_HS_SKIP
7886 +#define MRV_MIPI_ERR_SOT_HS_SKIP_MASK 0x00010000
7887 +#define MRV_MIPI_ERR_SOT_HS_SKIP_SHIFT 16
7888 +
7889 +#define MRV_MIPI_NUM_LANES
7890 +#define MRV_MIPI_NUM_LANES_MASK 0x00003000
7891 +#define MRV_MIPI_NUM_LANES_SHIFT 12
7892 +#define MRV_MIPI_SHUTDOWN_LANE
7893 +#define MRV_MIPI_SHUTDOWN_LANE_MASK 0x00000F00
7894 +#define MRV_MIPI_SHUTDOWN_LANE_SHIFT 8
7895 +#define MRV_MIPI_FLUSH_FIFO
7896 +#define MRV_MIPI_FLUSH_FIFO_MASK 0x00000002
7897 +#define MRV_MIPI_FLUSH_FIFO_SHIFT 1
7898 +#define MRV_MIPI_OUTPUT_ENA
7899 +#define MRV_MIPI_OUTPUT_ENA_MASK 0x00000001
7900 +#define MRV_MIPI_OUTPUT_ENA_SHIFT 0
7901 +
7902 +#define MRV_MIPI_STOPSTATE
7903 +#define MRV_MIPI_STOPSTATE_MASK 0x00000F00
7904 +#define MRV_MIPI_STOPSTATE_SHIFT 8
7905 +#define MRV_MIPI_ADD_DATA_AVAIL
7906 +#define MRV_MIPI_ADD_DATA_AVAIL_MASK 0x00000001
7907 +#define MRV_MIPI_ADD_DATA_AVAIL_SHIFT 0
7908 +
7909 +#define MRV_MIPI_IMSC_ADD_DATA_FILL_LEVEL
7910 +#define MRV_MIPI_IMSC_ADD_DATA_FILL_LEVEL_MASK 0x04000000
7911 +#define MRV_MIPI_IMSC_ADD_DATA_FILL_LEVEL_SHIFT 26
7912 +#define MRV_MIPI_IMSC_ADD_DATA_OVFLW
7913 +#define MRV_MIPI_IMSC_ADD_DATA_OVFLW_MASK 0x02000000
7914 +#define MRV_MIPI_IMSC_ADD_DATA_OVFLW_SHIFT 25
7915 +#define MRV_MIPI_IMSC_FRAME_END
7916 +#define MRV_MIPI_IMSC_FRAME_END_MASK 0x01000000
7917 +#define MRV_MIPI_IMSC_FRAME_END_SHIFT 24
7918 +#define MRV_MIPI_IMSC_ERR_CS
7919 +#define MRV_MIPI_IMSC_ERR_CS_MASK 0x00800000
7920 +#define MRV_MIPI_IMSC_ERR_CS_SHIFT 23
7921 +#define MRV_MIPI_IMSC_ERR_ECC1
7922 +#define MRV_MIPI_IMSC_ERR_ECC1_MASK 0x00400000
7923 +#define MRV_MIPI_IMSC_ERR_ECC1_SHIFT 22
7924 +#define MRV_MIPI_IMSC_ERR_ECC2
7925 +#define MRV_MIPI_IMSC_ERR_ECC2_MASK 0x00200000
7926 +#define MRV_MIPI_IMSC_ERR_ECC2_SHIFT 21
7927 +#define MRV_MIPI_IMSC_ERR_PROTOCOL
7928 +#define MRV_MIPI_IMSC_ERR_PROTOCOL_MASK 0x00100000
7929 +#define MRV_MIPI_IMSC_ERR_PROTOCOL_SHIFT 20
7930 +#define MRV_MIPI_IMSC_ERR_CONTROL
7931 +#define MRV_MIPI_IMSC_ERR_CONTROL_MASK 0x000F0000
7932 +#define MRV_MIPI_IMSC_ERR_CONTROL_SHIFT 16
7933 +
7934 +#define MRV_MIPI_IMSC_ERR_EOT_SYNC
7935 +#define MRV_MIPI_IMSC_ERR_EOT_SYNC_MASK 0x0000F000
7936 +#define MRV_MIPI_IMSC_ERR_EOT_SYNC_SHIFT 12
7937 +#define MRV_MIPI_IMSC_ERR_SOT_SYNC
7938 +#define MRV_MIPI_IMSC_ERR_SOT_SYNC_MASK 0x00000F00
7939 +#define MRV_MIPI_IMSC_ERR_SOT_SYNC_SHIFT 8
7940 +#define MRV_MIPI_IMSC_ERR_SOT
7941 +#define MRV_MIPI_IMSC_ERR_SOT_MASK 0x000000F0
7942 +#define MRV_MIPI_IMSC_ERR_SOT_SHIFT 4
7943 +#define MRV_MIPI_IMSC_SYNC_FIFO_OVFLW
7944 +#define MRV_MIPI_IMSC_SYNC_FIFO_OVFLW_MASK 0x0000000F
7945 +#define MRV_MIPI_IMSC_SYNC_FIFO_OVFLW_SHIFT 0
7946 +
7947 +#define MRV_MIPI_IMSC_ALL_IRQS
7948 +#define MRV_MIPI_IMSC_ALL_IRQS_MASK \
7949 +(0 \
7950 +| MRV_MIPI_IMSC_ADD_DATA_FILL_LEVEL_MASK \
7951 +| MRV_MIPI_IMSC_ADD_DATA_OVFLW_MASK \
7952 +| MRV_MIPI_IMSC_FRAME_END_MASK \
7953 +| MRV_MIPI_IMSC_ERR_CS_MASK \
7954 +| MRV_MIPI_IMSC_ERR_ECC1_MASK \
7955 +| MRV_MIPI_IMSC_ERR_ECC2_MASK \
7956 +| MRV_MIPI_IMSC_ERR_PROTOCOL_MASK \
7957 +| MRV_MIPI_IMSC_ERR_CONTROL_MASK \
7958 +| MRV_MIPI_IMSC_ERR_EOT_SYNC_MASK \
7959 +| MRV_MIPI_IMSC_ERR_SOT_SYNC_MASK \
7960 +| MRV_MIPI_IMSC_ERR_SOT_MASK \
7961 +| MRV_MIPI_IMSC_SYNC_FIFO_OVFLW_MASK \
7962 +)
7963 +#define MRV_MIPI_IMSC_ALL_IRQS_SHIFT 0
7964 +
7965 +#define MRV_MIPI_RIS_ADD_DATA_FILL_LEVEL
7966 +#define MRV_MIPI_RIS_ADD_DATA_FILL_LEVEL_MASK 0x04000000
7967 +#define MRV_MIPI_RIS_ADD_DATA_FILL_LEVEL_SHIFT 26
7968 +#define MRV_MIPI_RIS_ADD_DATA_OVFLW
7969 +#define MRV_MIPI_RIS_ADD_DATA_OVFLW_MASK 0x02000000
7970 +#define MRV_MIPI_RIS_ADD_DATA_OVFLW_SHIFT 25
7971 +#define MRV_MIPI_RIS_FRAME_END
7972 +#define MRV_MIPI_RIS_FRAME_END_MASK 0x01000000
7973 +#define MRV_MIPI_RIS_FRAME_END_SHIFT 24
7974 +#define MRV_MIPI_RIS_ERR_CS
7975 +#define MRV_MIPI_RIS_ERR_CS_MASK 0x00800000
7976 +#define MRV_MIPI_RIS_ERR_CS_SHIFT 23
7977 +#define MRV_MIPI_RIS_ERR_ECC1
7978 +#define MRV_MIPI_RIS_ERR_ECC1_MASK 0x00400000
7979 +#define MRV_MIPI_RIS_ERR_ECC1_SHIFT 22
7980 +#define MRV_MIPI_RIS_ERR_ECC2
7981 +#define MRV_MIPI_RIS_ERR_ECC2_MASK 0x00200000
7982 +#define MRV_MIPI_RIS_ERR_ECC2_SHIFT 21
7983 +#define MRV_MIPI_RIS_ERR_PROTOCOL
7984 +#define MRV_MIPI_RIS_ERR_PROTOCOL_MASK 0x00100000
7985 +#define MRV_MIPI_RIS_ERR_PROTOCOL_SHIFT 20
7986 +#define MRV_MIPI_RIS_ERR_CONTROL
7987 +#define MRV_MIPI_RIS_ERR_CONTROL_MASK 0x000F0000
7988 +#define MRV_MIPI_RIS_ERR_CONTROL_SHIFT 16
7989 +#define MRV_MIPI_RIS_ERR_EOT_SYNC
7990 +#define MRV_MIPI_RIS_ERR_EOT_SYNC_MASK 0x0000F000
7991 +#define MRV_MIPI_RIS_ERR_EOT_SYNC_SHIFT 12
7992 +#define MRV_MIPI_RIS_ERR_SOT_SYNC
7993 +#define MRV_MIPI_RIS_ERR_SOT_SYNC_MASK 0x00000F00
7994 +#define MRV_MIPI_RIS_ERR_SOT_SYNC_SHIFT 8
7995 +#define MRV_MIPI_RIS_ERR_SOT
7996 +#define MRV_MIPI_RIS_ERR_SOT_MASK 0x000000F0
7997 +#define MRV_MIPI_RIS_ERR_SOT_SHIFT 4
7998 +#define MRV_MIPI_RIS_SYNC_FIFO_OVFLW
7999 +#define MRV_MIPI_RIS_SYNC_FIFO_OVFLW_MASK 0x0000000F
8000 +#define MRV_MIPI_RIS_SYNC_FIFO_OVFLW_SHIFT 0
8001 +
8002 +#define MRV_MIPI_RIS_ALL_IRQS
8003 +#define MRV_MIPI_RIS_ALL_IRQS_MASK \
8004 +(0 \
8005 +| MRV_MIPI_RIS_ADD_DATA_FILL_LEVEL_MASK \
8006 +| MRV_MIPI_RIS_ADD_DATA_OVFLW_MASK \
8007 +| MRV_MIPI_RIS_FRAME_END_MASK \
8008 +| MRV_MIPI_RIS_ERR_CS_MASK \
8009 +| MRV_MIPI_RIS_ERR_ECC1_MASK \
8010 +| MRV_MIPI_RIS_ERR_ECC2_MASK \
8011 +| MRV_MIPI_RIS_ERR_PROTOCOL_MASK \
8012 +| MRV_MIPI_RIS_ERR_CONTROL_MASK \
8013 +| MRV_MIPI_RIS_ERR_EOT_SYNC_MASK \
8014 +| MRV_MIPI_RIS_ERR_SOT_SYNC_MASK \
8015 +| MRV_MIPI_RIS_ERR_SOT_MASK \
8016 +| MRV_MIPI_RIS_SYNC_FIFO_OVFLW_MASK \
8017 +)
8018 +#define MRV_MIPI_RIS_ALL_IRQS_SHIFT 0
8019 +
8020 +#define MRV_MIPI_MIS_ADD_DATA_FILL_LEVEL
8021 +#define MRV_MIPI_MIS_ADD_DATA_FILL_LEVEL_MASK 0x04000000
8022 +#define MRV_MIPI_MIS_ADD_DATA_FILL_LEVEL_SHIFT 26
8023 +#define MRV_MIPI_MIS_ADD_DATA_OVFLW
8024 +#define MRV_MIPI_MIS_ADD_DATA_OVFLW_MASK 0x02000000
8025 +#define MRV_MIPI_MIS_ADD_DATA_OVFLW_SHIFT 25
8026 +#define MRV_MIPI_MIS_FRAME_END
8027 +#define MRV_MIPI_MIS_FRAME_END_MASK 0x01000000
8028 +#define MRV_MIPI_MIS_FRAME_END_SHIFT 24
8029 +#define MRV_MIPI_MIS_ERR_CS
8030 +#define MRV_MIPI_MIS_ERR_CS_MASK 0x00800000
8031 +#define MRV_MIPI_MIS_ERR_CS_SHIFT 23
8032 +#define MRV_MIPI_MIS_ERR_ECC1
8033 +#define MRV_MIPI_MIS_ERR_ECC1_MASK 0x00400000
8034 +#define MRV_MIPI_MIS_ERR_ECC1_SHIFT 22
8035 +#define MRV_MIPI_MIS_ERR_ECC2
8036 +#define MRV_MIPI_MIS_ERR_ECC2_MASK 0x00200000
8037 +#define MRV_MIPI_MIS_ERR_ECC2_SHIFT 21
8038 +#define MRV_MIPI_MIS_ERR_PROTOCOL
8039 +#define MRV_MIPI_MIS_ERR_PROTOCOL_MASK 0x00100000
8040 +#define MRV_MIPI_MIS_ERR_PROTOCOL_SHIFT 20
8041 +#define MRV_MIPI_MIS_ERR_CONTROL
8042 +#define MRV_MIPI_MIS_ERR_CONTROL_MASK 0x000F0000
8043 +#define MRV_MIPI_MIS_ERR_CONTROL_SHIFT 16
8044 +#define MRV_MIPI_MIS_ERR_EOT_SYNC
8045 +#define MRV_MIPI_MIS_ERR_EOT_SYNC_MASK 0x0000F000
8046 +#define MRV_MIPI_MIS_ERR_EOT_SYNC_SHIFT 12
8047 +#define MRV_MIPI_MIS_ERR_SOT_SYNC
8048 +#define MRV_MIPI_MIS_ERR_SOT_SYNC_MASK 0x00000F00
8049 +#define MRV_MIPI_MIS_ERR_SOT_SYNC_SHIFT 8
8050 +#define MRV_MIPI_MIS_ERR_SOT
8051 +#define MRV_MIPI_MIS_ERR_SOT_MASK 0x000000F0
8052 +#define MRV_MIPI_MIS_ERR_SOT_SHIFT 4
8053 +#define MRV_MIPI_MIS_SYNC_FIFO_OVFLW
8054 +#define MRV_MIPI_MIS_SYNC_FIFO_OVFLW_MASK 0x0000000F
8055 +#define MRV_MIPI_MIS_SYNC_FIFO_OVFLW_SHIFT 0
8056 +
8057 +#define MRV_MIPI_MIS_ALL_IRQS
8058 +#define MRV_MIPI_MIS_ALL_IRQS_MASK \
8059 +(0 \
8060 +| MRV_MIPI_MIS_ADD_DATA_FILL_LEVEL_MASK \
8061 +| MRV_MIPI_MIS_ADD_DATA_OVFLW_MASK \
8062 +| MRV_MIPI_MIS_FRAME_END_MASK \
8063 +| MRV_MIPI_MIS_ERR_CS_MASK \
8064 +| MRV_MIPI_MIS_ERR_ECC1_MASK \
8065 +| MRV_MIPI_MIS_ERR_ECC2_MASK \
8066 +| MRV_MIPI_MIS_ERR_PROTOCOL_MASK \
8067 +| MRV_MIPI_MIS_ERR_CONTROL_MASK \
8068 +| MRV_MIPI_MIS_ERR_EOT_SYNC_MASK \
8069 +| MRV_MIPI_MIS_ERR_SOT_SYNC_MASK \
8070 +| MRV_MIPI_MIS_ERR_SOT_MASK \
8071 +| MRV_MIPI_MIS_SYNC_FIFO_OVFLW_MASK \
8072 +)
8073 +#define MRV_MIPI_MIS_ALL_IRQS_SHIFT 0
8074 +
8075 +#define MRV_MIPI_ICR_ADD_DATA_FILL_LEVEL
8076 +#define MRV_MIPI_ICR_ADD_DATA_FILL_LEVEL_MASK 0x04000000
8077 +#define MRV_MIPI_ICR_ADD_DATA_FILL_LEVEL_SHIFT 26
8078 +#define MRV_MIPI_ICR_ADD_DATA_OVFLW
8079 +#define MRV_MIPI_ICR_ADD_DATA_OVFLW_MASK 0x02000000
8080 +#define MRV_MIPI_ICR_ADD_DATA_OVFLW_SHIFT 25
8081 +#define MRV_MIPI_ICR_FRAME_END
8082 +#define MRV_MIPI_ICR_FRAME_END_MASK 0x01000000
8083 +#define MRV_MIPI_ICR_FRAME_END_SHIFT 24
8084 +#define MRV_MIPI_ICR_ERR_CS
8085 +#define MRV_MIPI_ICR_ERR_CS_MASK 0x00800000
8086 +#define MRV_MIPI_ICR_ERR_CS_SHIFT 23
8087 +#define MRV_MIPI_ICR_ERR_ECC1
8088 +#define MRV_MIPI_ICR_ERR_ECC1_MASK 0x00400000
8089 +#define MRV_MIPI_ICR_ERR_ECC1_SHIFT 22
8090 +#define MRV_MIPI_ICR_ERR_ECC2
8091 +#define MRV_MIPI_ICR_ERR_ECC2_MASK 0x00200000
8092 +#define MRV_MIPI_ICR_ERR_ECC2_SHIFT 21
8093 +#define MRV_MIPI_ICR_ERR_PROTOCOL
8094 +#define MRV_MIPI_ICR_ERR_PROTOCOL_MASK 0x00100000
8095 +#define MRV_MIPI_ICR_ERR_PROTOCOL_SHIFT 20
8096 +#define MRV_MIPI_ICR_ERR_CONTROL
8097 +#define MRV_MIPI_ICR_ERR_CONTROL_MASK 0x000F0000
8098 +#define MRV_MIPI_ICR_ERR_CONTROL_SHIFT 16
8099 +#define MRV_MIPI_ICR_ERR_EOT_SYNC
8100 +#define MRV_MIPI_ICR_ERR_EOT_SYNC_MASK 0x0000F000
8101 +#define MRV_MIPI_ICR_ERR_EOT_SYNC_SHIFT 12
8102 +#define MRV_MIPI_ICR_ERR_SOT_SYNC
8103 +#define MRV_MIPI_ICR_ERR_SOT_SYNC_MASK 0x00000F00
8104 +#define MRV_MIPI_ICR_ERR_SOT_SYNC_SHIFT 8
8105 +#define MRV_MIPI_ICR_ERR_SOT
8106 +#define MRV_MIPI_ICR_ERR_SOT_MASK 0x000000F0
8107 +#define MRV_MIPI_ICR_ERR_SOT_SHIFT 4
8108 +#define MRV_MIPI_ICR_SYNC_FIFO_OVFLW
8109 +#define MRV_MIPI_ICR_SYNC_FIFO_OVFLW_MASK 0x0000000F
8110 +#define MRV_MIPI_ICR_SYNC_FIFO_OVFLW_SHIFT 0
8111 +
8112 +#define MRV_MIPI_ICR_ALL_IRQS
8113 +#define MRV_MIPI_ICR_ALL_IRQS_MASK \
8114 +(0 \
8115 +| MRV_MIPI_ICR_ADD_DATA_FILL_LEVEL_MASK \
8116 +| MRV_MIPI_ICR_ADD_DATA_OVFLW_MASK \
8117 +| MRV_MIPI_ICR_FRAME_END_MASK \
8118 +| MRV_MIPI_ICR_ERR_CS_MASK \
8119 +| MRV_MIPI_ICR_ERR_ECC1_MASK \
8120 +| MRV_MIPI_ICR_ERR_ECC2_MASK \
8121 +| MRV_MIPI_ICR_ERR_PROTOCOL_MASK \
8122 +| MRV_MIPI_ICR_ERR_CONTROL_MASK \
8123 +| MRV_MIPI_ICR_ERR_EOT_SYNC_MASK \
8124 +| MRV_MIPI_ICR_ERR_SOT_SYNC_MASK \
8125 +| MRV_MIPI_ICR_ERR_SOT_MASK \
8126 +| MRV_MIPI_ICR_SYNC_FIFO_OVFLW_MASK \
8127 +)
8128 +#define MRV_MIPI_ICR_ALL_IRQS_SHIFT 0
8129 +
8130 +
8131 +#define MRV_MIPI_ISR_ADD_DATA_FILL_LEVEL
8132 +#define MRV_MIPI_ISR_ADD_DATA_FILL_LEVEL_MASK 0x04000000
8133 +#define MRV_MIPI_ISR_ADD_DATA_FILL_LEVEL_SHIFT 26
8134 +#define MRV_MIPI_ISR_ADD_DATA_OVFLW
8135 +#define MRV_MIPI_ISR_ADD_DATA_OVFLW_MASK 0x02000000
8136 +#define MRV_MIPI_ISR_ADD_DATA_OVFLW_SHIFT 25
8137 +#define MRV_MIPI_ISR_FRAME_END
8138 +#define MRV_MIPI_ISR_FRAME_END_MASK 0x01000000
8139 +#define MRV_MIPI_ISR_FRAME_END_SHIFT 24
8140 +#define MRV_MIPI_ISR_ERR_CS
8141 +#define MRV_MIPI_ISR_ERR_CS_MASK 0x00800000
8142 +#define MRV_MIPI_ISR_ERR_CS_SHIFT 23
8143 +#define MRV_MIPI_ISR_ERR_ECC1
8144 +#define MRV_MIPI_ISR_ERR_ECC1_MASK 0x00400000
8145 +#define MRV_MIPI_ISR_ERR_ECC1_SHIFT 22
8146 +#define MRV_MIPI_ISR_ERR_ECC2
8147 +#define MRV_MIPI_ISR_ERR_ECC2_MASK 0x00200000
8148 +#define MRV_MIPI_ISR_ERR_ECC2_SHIFT 21
8149 +#define MRV_MIPI_ISR_ERR_PROTOCOL
8150 +#define MRV_MIPI_ISR_ERR_PROTOCOL_MASK 0x00100000
8151 +#define MRV_MIPI_ISR_ERR_PROTOCOL_SHIFT 20
8152 +#define MRV_MIPI_ISR_ERR_CONTROL
8153 +#define MRV_MIPI_ISR_ERR_CONTROL_MASK 0x000F0000
8154 +#define MRV_MIPI_ISR_ERR_CONTROL_SHIFT 16
8155 +#define MRV_MIPI_ISR_ERR_EOT_SYNC
8156 +#define MRV_MIPI_ISR_ERR_EOT_SYNC_MASK 0x0000F000
8157 +#define MRV_MIPI_ISR_ERR_EOT_SYNC_SHIFT 12
8158 +#define MRV_MIPI_ISR_ERR_SOT_SYNC
8159 +#define MRV_MIPI_ISR_ERR_SOT_SYNC_MASK 0x00000F00
8160 +#define MRV_MIPI_ISR_ERR_SOT_SYNC_SHIFT 8
8161 +#define MRV_MIPI_ISR_ERR_SOT
8162 +#define MRV_MIPI_ISR_ERR_SOT_MASK 0x000000F0
8163 +#define MRV_MIPI_ISR_ERR_SOT_SHIFT 4
8164 +#define MRV_MIPI_ISR_SYNC_FIFO_OVFLW
8165 +#define MRV_MIPI_ISR_SYNC_FIFO_OVFLW_MASK 0x0000000F
8166 +#define MRV_MIPI_ISR_SYNC_FIFO_OVFLW_SHIFT 0
8167 +
8168 +#define MRV_MIPI_ISR_ALL_IRQS
8169 +#define MRV_MIPI_ISR_ALL_IRQS_MASK \
8170 +(0 \
8171 +| MRV_MIPI_ISR_ADD_DATA_FILL_LEVEL_MASK \
8172 +| MRV_MIPI_ISR_ADD_DATA_OVFLW_MASK \
8173 +| MRV_MIPI_ISR_FRAME_END_MASK \
8174 +| MRV_MIPI_ISR_ERR_CS_MASK \
8175 +| MRV_MIPI_ISR_ERR_ECC1_MASK \
8176 +| MRV_MIPI_ISR_ERR_ECC2_MASK \
8177 +| MRV_MIPI_ISR_ERR_PROTOCOL_MASK \
8178 +| MRV_MIPI_ISR_ERR_CONTROL_MASK \
8179 +| MRV_MIPI_ISR_ERR_EOT_SYNC_MASK \
8180 +| MRV_MIPI_ISR_ERR_SOT_SYNC_MASK \
8181 +| MRV_MIPI_ISR_ERR_SOT_MASK \
8182 +| MRV_MIPI_ISR_SYNC_FIFO_OVFLW_MASK \
8183 +)
8184 +#define MRV_MIPI_ISR_ALL_IRQS_SHIFT 0
8185 +
8186 +
8187 +#define MRV_MIPI_VIRTUAL_CHANNEL
8188 +#define MRV_MIPI_VIRTUAL_CHANNEL_MASK 0x000000C0
8189 +#define MRV_MIPI_VIRTUAL_CHANNEL_SHIFT 6
8190 +
8191 +#define MRV_MIPI_VIRTUAL_CHANNEL_MAX \
8192 +       (MRV_MIPI_VIRTUAL_CHANNEL_MASK >> MRV_MIPI_VIRTUAL_CHANNEL_SHIFT)
8193 +#define MRV_MIPI_DATA_TYPE
8194 +#define MRV_MIPI_DATA_TYPE_MASK 0x0000003F
8195 +#define MRV_MIPI_DATA_TYPE_SHIFT 0
8196 +
8197 +#define MRV_MIPI_DATA_TYPE_MAX \
8198 +       (MRV_MIPI_DATA_TYPE_MASK >> MRV_MIPI_DATA_TYPE_SHIFT)
8199 +
8200 +
8201 +#define MRV_MIPI_VIRTUAL_CHANNEL_SEL
8202 +#define MRV_MIPI_VIRTUAL_CHANNEL_SEL_MASK 0x000000C0
8203 +#define MRV_MIPI_VIRTUAL_CHANNEL_SEL_SHIFT 6
8204 +#define MRV_MIPI_DATA_TYPE_SEL
8205 +#define MRV_MIPI_DATA_TYPE_SEL_MASK 0x0000003F
8206 +#define MRV_MIPI_DATA_TYPE_SEL_SHIFT 0
8207 +#define MRV_MIPI_DATA_TYPE_SEL_YUV420_8BIT        24
8208 +#define MRV_MIPI_DATA_TYPE_SEL_YUV420_10BIT       25
8209 +#define MRV_MIPI_DATA_TYPE_SEL_YUV420_8BIT_LEGACY 26
8210 +#define MRV_MIPI_DATA_TYPE_SEL_YUV420_8BIT_CSPS   28
8211 +#define MRV_MIPI_DATA_TYPE_SEL_YUV420_10BIT_CSPS  29
8212 +#define MRV_MIPI_DATA_TYPE_SEL_YUV422_8BIT        30
8213 +#define MRV_MIPI_DATA_TYPE_SEL_YUV422_10BIT       31
8214 +#define MRV_MIPI_DATA_TYPE_SEL_RGB444             32
8215 +#define MRV_MIPI_DATA_TYPE_SEL_RGB555             33
8216 +#define MRV_MIPI_DATA_TYPE_SEL_RGB565             34
8217 +#define MRV_MIPI_DATA_TYPE_SEL_RGB666             35
8218 +#define MRV_MIPI_DATA_TYPE_SEL_RGB888             36
8219 +#define MRV_MIPI_DATA_TYPE_SEL_RAW6               40
8220 +#define MRV_MIPI_DATA_TYPE_SEL_RAW7               41
8221 +#define MRV_MIPI_DATA_TYPE_SEL_RAW8               42
8222 +#define MRV_MIPI_DATA_TYPE_SEL_RAW10              43
8223 +#define MRV_MIPI_DATA_TYPE_SEL_RAW12              44
8224 +#define MRV_MIPI_DATA_TYPE_SEL_USER1              48
8225 +#define MRV_MIPI_DATA_TYPE_SEL_USER2              49
8226 +#define MRV_MIPI_DATA_TYPE_SEL_USER3              50
8227 +#define MRV_MIPI_DATA_TYPE_SEL_USER4              51
8228 +
8229 +
8230 +#define MRV_MIPI_ADD_DATA_VC_1
8231 +#define MRV_MIPI_ADD_DATA_VC_1_MASK 0x000000C0
8232 +#define MRV_MIPI_ADD_DATA_VC_1_SHIFT 6
8233 +#define MRV_MIPI_ADD_DATA_TYPE_1
8234 +#define MRV_MIPI_ADD_DATA_TYPE_1_MASK 0x0000003F
8235 +#define MRV_MIPI_ADD_DATA_TYPE_1_SHIFT 0
8236 +
8237 +
8238 +#define MRV_MIPI_ADD_DATA_VC_2
8239 +#define MRV_MIPI_ADD_DATA_VC_2_MASK 0x000000C0
8240 +#define MRV_MIPI_ADD_DATA_VC_2_SHIFT 6
8241 +#define MRV_MIPI_ADD_DATA_TYPE_2
8242 +#define MRV_MIPI_ADD_DATA_TYPE_2_MASK 0x0000003F
8243 +#define MRV_MIPI_ADD_DATA_TYPE_2_SHIFT 0
8244 +
8245 +
8246 +#define MRV_MIPI_ADD_DATA_VC_3
8247 +#define MRV_MIPI_ADD_DATA_VC_3_MASK 0x000000C0
8248 +#define MRV_MIPI_ADD_DATA_VC_3_SHIFT 6
8249 +#define MRV_MIPI_ADD_DATA_TYPE_3
8250 +#define MRV_MIPI_ADD_DATA_TYPE_3_MASK 0x0000003F
8251 +#define MRV_MIPI_ADD_DATA_TYPE_3_SHIFT 0
8252 +
8253 +
8254 +#define MRV_MIPI_ADD_DATA_VC_4
8255 +#define MRV_MIPI_ADD_DATA_VC_4_MASK 0x000000C0
8256 +#define MRV_MIPI_ADD_DATA_VC_4_SHIFT 6
8257 +#define MRV_MIPI_ADD_DATA_TYPE_4
8258 +#define MRV_MIPI_ADD_DATA_TYPE_4_MASK 0x0000003F
8259 +#define MRV_MIPI_ADD_DATA_TYPE_4_SHIFT 0
8260 +
8261 +#define MRV_MIPI_ADD_DATA_FIFO
8262 +#define MRV_MIPI_ADD_DATA_FIFO_MASK 0xFFFFFFFF
8263 +#define MRV_MIPI_ADD_DATA_FIFO_SHIFT 0
8264 +
8265 +#define MRV_MIPI_ADD_DATA_FILL_LEVEL
8266 +#define MRV_MIPI_ADD_DATA_FILL_LEVEL_MASK 0x00001FFC
8267 +#define MRV_MIPI_ADD_DATA_FILL_LEVEL_SHIFT 0
8268 +#define MRV_MIPI_ADD_DATA_FILL_LEVEL_MAX  0x00001FFC
8269 +
8270 +#define MRV_AFM_AFM_EN
8271 +#define MRV_AFM_AFM_EN_MASK 0x00000001
8272 +#define MRV_AFM_AFM_EN_SHIFT 0
8273 +
8274 +#define MRV_AFM_A_H_L
8275 +#define MRV_AFM_A_H_L_MASK 0x0FFF0000
8276 +#define MRV_AFM_A_H_L_SHIFT 16
8277 +#define MRV_AFM_A_H_L_MIN  5
8278 +#define MRV_AFM_A_H_L_MAX  (MRV_AFM_A_H_L_MASK >> MRV_AFM_A_H_L_SHIFT)
8279 +#define MRV_AFM_A_V_T
8280 +#define MRV_AFM_A_V_T_MASK 0x00000FFF
8281 +#define MRV_AFM_A_V_T_SHIFT 0
8282 +#define MRV_AFM_A_V_T_MIN  2
8283 +#define MRV_AFM_A_V_T_MAX  (MRV_AFM_A_V_T_MASK >> MRV_AFM_A_V_T_SHIFT)
8284 +
8285 +
8286 +#define MRV_AFM_A_H_R
8287 +#define MRV_AFM_A_H_R_MASK 0x0FFF0000
8288 +#define MRV_AFM_A_H_R_SHIFT 16
8289 +#define MRV_AFM_A_H_R_MIN  5
8290 +#define MRV_AFM_A_H_R_MAX  (MRV_AFM_A_H_R_MASK >> MRV_AFM_A_H_R_SHIFT)
8291 +#define MRV_AFM_A_V_B
8292 +#define MRV_AFM_A_V_B_MASK 0x00000FFF
8293 +#define MRV_AFM_A_V_B_SHIFT 0
8294 +#define MRV_AFM_A_V_B_MIN  2
8295 +#define MRV_AFM_A_V_B_MAX  (MRV_AFM_A_V_B_MASK >> MRV_AFM_A_V_B_SHIFT)
8296 +
8297 +
8298 +#define MRV_AFM_B_H_L
8299 +#define MRV_AFM_B_H_L_MASK 0x0FFF0000
8300 +#define MRV_AFM_B_H_L_SHIFT 16
8301 +#define MRV_AFM_B_H_L_MIN  5
8302 +#define MRV_AFM_B_H_L_MAX  (MRV_AFM_B_H_L_MASK >> MRV_AFM_B_H_L_SHIFT)
8303 +#define MRV_AFM_B_V_T
8304 +#define MRV_AFM_B_V_T_MASK 0x00000FFF
8305 +#define MRV_AFM_B_V_T_SHIFT 0
8306 +#define MRV_AFM_B_V_T_MIN  2
8307 +#define MRV_AFM_B_V_T_MAX  (MRV_AFM_B_V_T_MASK >> MRV_AFM_B_V_T_SHIFT)
8308 +
8309 +
8310 +#define MRV_AFM_B_H_R
8311 +#define MRV_AFM_B_H_R_MASK 0x0FFF0000
8312 +#define MRV_AFM_B_H_R_SHIFT 16
8313 +#define MRV_AFM_B_H_R_MIN  5
8314 +#define MRV_AFM_B_H_R_MAX  (MRV_AFM_B_H_R_MASK >> MRV_AFM_B_H_R_SHIFT)
8315 +#define MRV_AFM_B_V_B
8316 +#define MRV_AFM_B_V_B_MASK 0x00000FFF
8317 +#define MRV_AFM_B_V_B_SHIFT 0
8318 +#define MRV_AFM_B_V_B_MIN  2
8319 +#define MRV_AFM_B_V_B_MAX  (MRV_AFM_B_V_B_MASK >> MRV_AFM_B_V_B_SHIFT)
8320 +
8321 +
8322 +#define MRV_AFM_C_H_L
8323 +#define MRV_AFM_C_H_L_MASK 0x0FFF0000
8324 +#define MRV_AFM_C_H_L_SHIFT 16
8325 +#define MRV_AFM_C_H_L_MIN  5
8326 +#define MRV_AFM_C_H_L_MAX  (MRV_AFM_C_H_L_MASK >> MRV_AFM_C_H_L_SHIFT)
8327 +#define MRV_AFM_C_V_T
8328 +#define MRV_AFM_C_V_T_MASK 0x00000FFF
8329 +#define MRV_AFM_C_V_T_SHIFT 0
8330 +#define MRV_AFM_C_V_T_MIN  2
8331 +#define MRV_AFM_C_V_T_MAX  (MRV_AFM_C_V_T_MASK >> MRV_AFM_C_V_T_SHIFT)
8332 +
8333 +
8334 +#define MRV_AFM_C_H_R
8335 +#define MRV_AFM_C_H_R_MASK 0x0FFF0000
8336 +#define MRV_AFM_C_H_R_SHIFT 16
8337 +#define MRV_AFM_C_H_R_MIN  5
8338 +#define MRV_AFM_C_H_R_MAX  (MRV_AFM_C_H_R_MASK >> MRV_AFM_C_H_R_SHIFT)
8339 +#define MRV_AFM_C_V_B
8340 +#define MRV_AFM_C_V_B_MASK 0x00000FFF
8341 +#define MRV_AFM_C_V_B_SHIFT 0
8342 +#define MRV_AFM_C_V_B_MIN  2
8343 +#define MRV_AFM_C_V_B_MAX  (MRV_AFM_C_V_B_MASK >> MRV_AFM_C_V_B_SHIFT)
8344 +
8345 +#define MRV_AFM_AFM_THRES
8346 +#define MRV_AFM_AFM_THRES_MASK 0x0000FFFF
8347 +#define MRV_AFM_AFM_THRES_SHIFT 0
8348 +
8349 +#define MRV_AFM_LUM_VAR_SHIFT
8350 +#define MRV_AFM_LUM_VAR_SHIFT_MASK 0x00070000
8351 +#define MRV_AFM_LUM_VAR_SHIFT_SHIFT 16
8352 +#define MRV_AFM_AFM_VAR_SHIFT
8353 +#define MRV_AFM_AFM_VAR_SHIFT_MASK 0x00000007
8354 +#define MRV_AFM_AFM_VAR_SHIFT_SHIFT 0
8355 +
8356 +#define MRV_AFM_AFM_SUM_A
8357 +#define MRV_AFM_AFM_SUM_A_MASK 0xFFFFFFFF
8358 +#define MRV_AFM_AFM_SUM_A_SHIFT 0
8359 +
8360 +#define MRV_AFM_AFM_SUM_B
8361 +#define MRV_AFM_AFM_SUM_B_MASK 0xFFFFFFFF
8362 +#define MRV_AFM_AFM_SUM_B_SHIFT 0
8363 +
8364 +#define MRV_AFM_AFM_SUM_C
8365 +#define MRV_AFM_AFM_SUM_C_MASK 0xFFFFFFFF
8366 +#define MRV_AFM_AFM_SUM_C_SHIFT 0
8367 +
8368 +#define MRV_AFM_AFM_LUM_A
8369 +#define MRV_AFM_AFM_LUM_A_MASK 0x00FFFFFF
8370 +#define MRV_AFM_AFM_LUM_A_SHIFT 0
8371 +
8372 +#define MRV_AFM_AFM_LUM_B
8373 +#define MRV_AFM_AFM_LUM_B_MASK 0x00FFFFFF
8374 +#define MRV_AFM_AFM_LUM_B_SHIFT 0
8375 +
8376 +#define MRV_AFM_AFM_LUM_C
8377 +#define MRV_AFM_AFM_LUM_C_MASK 0x00FFFFFF
8378 +#define MRV_AFM_AFM_LUM_C_SHIFT 0
8379 +
8380 +
8381 +#define MRV_BP_COR_TYPE
8382 +#define MRV_BP_COR_TYPE_MASK 0x00000010
8383 +#define MRV_BP_COR_TYPE_SHIFT 4
8384 +#define MRV_BP_COR_TYPE_TABLE  0
8385 +#define MRV_BP_COR_TYPE_DIRECT 1
8386 +#define MRV_BP_REP_APPR
8387 +#define MRV_BP_REP_APPR_MASK 0x00000008
8388 +#define MRV_BP_REP_APPR_SHIFT 3
8389 +#define MRV_BP_REP_APPR_NEAREST  0
8390 +#define MRV_BP_REP_APPR_INTERPOL 1
8391 +#define MRV_BP_DEAD_COR_EN
8392 +#define MRV_BP_DEAD_COR_EN_MASK 0x00000004
8393 +#define MRV_BP_DEAD_COR_EN_SHIFT 2
8394 +#define MRV_BP_HOT_COR_EN
8395 +#define MRV_BP_HOT_COR_EN_MASK 0x00000002
8396 +#define MRV_BP_HOT_COR_EN_SHIFT 1
8397 +#define MRV_BP_BP_DET_EN
8398 +#define MRV_BP_BP_DET_EN_MASK 0x00000001
8399 +#define MRV_BP_BP_DET_EN_SHIFT 0
8400 +
8401 +
8402 +
8403 +#define MRV_BP_HOT_THRES
8404 +#define MRV_BP_HOT_THRES_MASK 0x0FFF0000
8405 +#define MRV_BP_HOT_THRES_SHIFT 16
8406 +#define MRV_BP_DEAD_THRES
8407 +#define MRV_BP_DEAD_THRES_MASK 0x00000FFF
8408 +#define MRV_BP_DEAD_THRES_SHIFT 0
8409 +
8410 +
8411 +
8412 +#define MRV_BP_DEV_HOT_THRES
8413 +#define MRV_BP_DEV_HOT_THRES_MASK 0x0FFF0000
8414 +#define MRV_BP_DEV_HOT_THRES_SHIFT 16
8415 +#define MRV_BP_DEV_DEAD_THRES
8416 +#define MRV_BP_DEV_DEAD_THRES_MASK 0x00000FFF
8417 +#define MRV_BP_DEV_DEAD_THRES_SHIFT 0
8418 +
8419 +
8420 +#define MRV_BP_BP_NUMBER
8421 +
8422 +#define MRV_BP_BP_NUMBER_MASK 0x00000FFF
8423 +#define MRV_BP_BP_NUMBER_SHIFT 0
8424 +
8425 +#define MRV_BP_BP_TABLE_ADDR
8426 +#define MRV_BP_BP_TABLE_ADDR_MASK 0x000007FF
8427 +
8428 +#define MRV_BP_BP_TABLE_ADDR_SHIFT 0
8429 +#define MRV_BP_BP_TABLE_ADDR_MAX MRV_BP_BP_TABLE_ADDR_MASK
8430 +
8431 +
8432 +#define MRV_BP_PIX_TYPE
8433 +#define MRV_BP_PIX_TYPE_MASK 0x80000000
8434 +#define MRV_BP_PIX_TYPE_SHIFT 31
8435 +#define MRV_BP_PIX_TYPE_DEAD   0u
8436 +#define MRV_BP_PIX_TYPE_HOT    1u
8437 +#define MRV_BP_V_ADDR
8438 +
8439 +#define MRV_BP_V_ADDR_MASK 0x0FFF0000
8440 +
8441 +#define MRV_BP_V_ADDR_SHIFT 16
8442 +#define MRV_BP_H_ADDR
8443 +#define MRV_BP_H_ADDR_MASK 0x00000FFF
8444 +#define MRV_BP_H_ADDR_SHIFT 0
8445 +
8446 +
8447 +#define MRV_BP_BP_NEW_NUMBER
8448 +#define MRV_BP_BP_NEW_NUMBER_MASK 0x0000000F
8449 +#define MRV_BP_BP_NEW_NUMBER_SHIFT 0
8450 +
8451 +
8452 +#define MRV_BP_NEW_VALUE
8453 +
8454 +#define MRV_BP_NEW_VALUE_MASK 0xF8000000
8455 +#define MRV_BP_NEW_VALUE_SHIFT 27
8456 +#define MRV_BP_NEW_V_ADDR
8457 +
8458 +#define MRV_BP_NEW_V_ADDR_MASK 0x07FF0000
8459 +#define MRV_BP_NEW_V_ADDR_SHIFT 16
8460 +#define MRV_BP_NEW_H_ADDR
8461 +#define MRV_BP_NEW_H_ADDR_MASK 0x00000FFF
8462 +#define MRV_BP_NEW_H_ADDR_SHIFT 0
8463 +
8464 +
8465 +
8466 +#define MRV_LSC_LSC_EN
8467 +#define MRV_LSC_LSC_EN_MASK 0x00000001
8468 +#define MRV_LSC_LSC_EN_SHIFT 0
8469 +
8470 +#define MRV_LSC_R_RAM_ADDR
8471 +#define MRV_LSC_R_RAM_ADDR_MASK 0x000000FF
8472 +#define MRV_LSC_R_RAM_ADDR_SHIFT 0
8473 +#define MRV_LSC_R_RAM_ADDR_MIN  0x00000000
8474 +#define MRV_LSC_R_RAM_ADDR_MAX  0x00000098
8475 +
8476 +#define MRV_LSC_G_RAM_ADDR
8477 +#define MRV_LSC_G_RAM_ADDR_MASK 0x000000FF
8478 +#define MRV_LSC_G_RAM_ADDR_SHIFT 0
8479 +#define MRV_LSC_G_RAM_ADDR_MIN  0x00000000
8480 +#define MRV_LSC_G_RAM_ADDR_MAX  0x00000098
8481 +
8482 +#define MRV_LSC_B_RAM_ADDR
8483 +#define MRV_LSC_B_RAM_ADDR_MASK 0x000000FF
8484 +#define MRV_LSC_B_RAM_ADDR_SHIFT 0
8485 +#define MRV_LSC_B_RAM_ADDR_MIN  0x00000000
8486 +#define MRV_LSC_B_RAM_ADDR_MAX  0x00000098
8487 +
8488 +#define MRV_LSC_R_SAMPLE_1
8489 +#define MRV_LSC_R_SAMPLE_1_MASK 0x00FFF000
8490 +#define MRV_LSC_R_SAMPLE_1_SHIFT 12
8491 +#define MRV_LSC_R_SAMPLE_0
8492 +#define MRV_LSC_R_SAMPLE_0_MASK 0x00000FFF
8493 +#define MRV_LSC_R_SAMPLE_0_SHIFT 0
8494 +
8495 +
8496 +#define MRV_LSC_G_SAMPLE_1
8497 +#define MRV_LSC_G_SAMPLE_1_MASK 0x00FFF000
8498 +#define MRV_LSC_G_SAMPLE_1_SHIFT 12
8499 +#define MRV_LSC_G_SAMPLE_0
8500 +#define MRV_LSC_G_SAMPLE_0_MASK 0x00000FFF
8501 +#define MRV_LSC_G_SAMPLE_0_SHIFT 0
8502 +
8503 +
8504 +#define MRV_LSC_B_SAMPLE_1
8505 +#define MRV_LSC_B_SAMPLE_1_MASK 0x00FFF000
8506 +#define MRV_LSC_B_SAMPLE_1_SHIFT 12
8507 +#define MRV_LSC_B_SAMPLE_0
8508 +#define MRV_LSC_B_SAMPLE_0_MASK 0x00000FFF
8509 +#define MRV_LSC_B_SAMPLE_0_SHIFT 0
8510 +
8511 +#define MRV_LSC_XGRAD_1
8512 +#define MRV_LSC_XGRAD_1_MASK 0x0FFF0000
8513 +#define MRV_LSC_XGRAD_1_SHIFT 16
8514 +#define MRV_LSC_XGRAD_0
8515 +#define MRV_LSC_XGRAD_0_MASK 0x00000FFF
8516 +#define MRV_LSC_XGRAD_0_SHIFT 0
8517 +
8518 +#define MRV_LSC_XGRAD_3
8519 +#define MRV_LSC_XGRAD_3_MASK 0x0FFF0000
8520 +#define MRV_LSC_XGRAD_3_SHIFT 16
8521 +#define MRV_LSC_XGRAD_2
8522 +#define MRV_LSC_XGRAD_2_MASK 0x00000FFF
8523 +#define MRV_LSC_XGRAD_2_SHIFT 0
8524 +
8525 +#define MRV_LSC_XGRAD_5
8526 +#define MRV_LSC_XGRAD_5_MASK 0x0FFF0000
8527 +#define MRV_LSC_XGRAD_5_SHIFT 16
8528 +
8529 +#define MRV_LSC_XGRAD_4
8530 +#define MRV_LSC_XGRAD_4_MASK 0x00000FFF
8531 +#define MRV_LSC_XGRAD_4_SHIFT 0
8532 +
8533 +
8534 +#define MRV_LSC_XGRAD_7
8535 +#define MRV_LSC_XGRAD_7_MASK 0x0FFF0000
8536 +#define MRV_LSC_XGRAD_7_SHIFT 16
8537 +
8538 +#define MRV_LSC_XGRAD_6
8539 +#define MRV_LSC_XGRAD_6_MASK 0x00000FFF
8540 +#define MRV_LSC_XGRAD_6_SHIFT 0
8541 +
8542 +
8543 +#define MRV_LSC_YGRAD_1
8544 +#define MRV_LSC_YGRAD_1_MASK 0x0FFF0000
8545 +#define MRV_LSC_YGRAD_1_SHIFT 16
8546 +#define MRV_LSC_YGRAD_0
8547 +#define MRV_LSC_YGRAD_0_MASK 0x00000FFF
8548 +#define MRV_LSC_YGRAD_0_SHIFT 0
8549 +
8550 +
8551 +#define MRV_LSC_YGRAD_3
8552 +#define MRV_LSC_YGRAD_3_MASK 0x0FFF0000
8553 +#define MRV_LSC_YGRAD_3_SHIFT 16
8554 +
8555 +#define MRV_LSC_YGRAD_2
8556 +#define MRV_LSC_YGRAD_2_MASK 0x00000FFF
8557 +#define MRV_LSC_YGRAD_2_SHIFT 0
8558 +
8559 +
8560 +#define MRV_LSC_YGRAD_5
8561 +#define MRV_LSC_YGRAD_5_MASK 0x0FFF0000
8562 +#define MRV_LSC_YGRAD_5_SHIFT 16
8563 +
8564 +#define MRV_LSC_YGRAD_4
8565 +#define MRV_LSC_YGRAD_4_MASK 0x00000FFF
8566 +#define MRV_LSC_YGRAD_4_SHIFT 0
8567 +
8568 +
8569 +#define MRV_LSC_YGRAD_7
8570 +#define MRV_LSC_YGRAD_7_MASK 0x0FFF0000
8571 +#define MRV_LSC_YGRAD_7_SHIFT 16
8572 +
8573 +#define MRV_LSC_YGRAD_6
8574 +#define MRV_LSC_YGRAD_6_MASK 0x00000FFF
8575 +#define MRV_LSC_YGRAD_6_SHIFT 0
8576 +
8577 +
8578 +#define MRV_LSC_X_SECT_SIZE_1
8579 +#define MRV_LSC_X_SECT_SIZE_1_MASK 0x03FF0000
8580 +#define MRV_LSC_X_SECT_SIZE_1_SHIFT 16
8581 +
8582 +#define MRV_LSC_X_SECT_SIZE_0
8583 +#define MRV_LSC_X_SECT_SIZE_0_MASK 0x000003FF
8584 +#define MRV_LSC_X_SECT_SIZE_0_SHIFT 0
8585 +
8586 +
8587 +#define MRV_LSC_X_SECT_SIZE_3
8588 +#define MRV_LSC_X_SECT_SIZE_3_MASK 0x03FF0000
8589 +#define MRV_LSC_X_SECT_SIZE_3_SHIFT 16
8590 +
8591 +#define MRV_LSC_X_SECT_SIZE_2
8592 +#define MRV_LSC_X_SECT_SIZE_2_MASK 0x000003FF
8593 +#define MRV_LSC_X_SECT_SIZE_2_SHIFT 0
8594 +
8595 +
8596 +#define MRV_LSC_X_SECT_SIZE_5
8597 +#define MRV_LSC_X_SECT_SIZE_5_MASK 0x03FF0000
8598 +#define MRV_LSC_X_SECT_SIZE_5_SHIFT 16
8599 +
8600 +#define MRV_LSC_X_SECT_SIZE_4
8601 +#define MRV_LSC_X_SECT_SIZE_4_MASK 0x000003FF
8602 +#define MRV_LSC_X_SECT_SIZE_4_SHIFT 0
8603 +
8604 +
8605 +#define MRV_LSC_X_SECT_SIZE_7
8606 +#define MRV_LSC_X_SECT_SIZE_7_MASK 0x03FF0000
8607 +#define MRV_LSC_X_SECT_SIZE_7_SHIFT 16
8608 +
8609 +#define MRV_LSC_X_SECT_SIZE_6
8610 +#define MRV_LSC_X_SECT_SIZE_6_MASK 0x000003FF
8611 +#define MRV_LSC_X_SECT_SIZE_6_SHIFT 0
8612 +
8613 +
8614 +#define MRV_LSC_Y_SECT_SIZE_1
8615 +#define MRV_LSC_Y_SECT_SIZE_1_MASK 0x03FF0000
8616 +#define MRV_LSC_Y_SECT_SIZE_1_SHIFT 16
8617 +#define MRV_LSC_Y_SECT_SIZE_0
8618 +#define MRV_LSC_Y_SECT_SIZE_0_MASK 0x000003FF
8619 +#define MRV_LSC_Y_SECT_SIZE_0_SHIFT 0
8620 +
8621 +
8622 +#define MRV_LSC_Y_SECT_SIZE_3
8623 +#define MRV_LSC_Y_SECT_SIZE_3_MASK 0x03FF0000
8624 +#define MRV_LSC_Y_SECT_SIZE_3_SHIFT 16
8625 +#define MRV_LSC_Y_SECT_SIZE_2
8626 +#define MRV_LSC_Y_SECT_SIZE_2_MASK 0x000003FF
8627 +#define MRV_LSC_Y_SECT_SIZE_2_SHIFT 0
8628 +
8629 +
8630 +#define MRV_LSC_Y_SECT_SIZE_5
8631 +#define MRV_LSC_Y_SECT_SIZE_5_MASK 0x03FF0000
8632 +#define MRV_LSC_Y_SECT_SIZE_5_SHIFT 16
8633 +#define MRV_LSC_Y_SECT_SIZE_4
8634 +#define MRV_LSC_Y_SECT_SIZE_4_MASK 0x000003FF
8635 +#define MRV_LSC_Y_SECT_SIZE_4_SHIFT 0
8636 +
8637 +
8638 +#define MRV_LSC_Y_SECT_SIZE_7
8639 +#define MRV_LSC_Y_SECT_SIZE_7_MASK 0x03FF0000
8640 +#define MRV_LSC_Y_SECT_SIZE_7_SHIFT 16
8641 +#define MRV_LSC_Y_SECT_SIZE_6
8642 +#define MRV_LSC_Y_SECT_SIZE_6_MASK 0x000003FF
8643 +#define MRV_LSC_Y_SECT_SIZE_6_SHIFT 0
8644 +
8645 +
8646 +#define MRV_IS_IS_EN
8647 +#define MRV_IS_IS_EN_MASK 0x00000001
8648 +#define MRV_IS_IS_EN_SHIFT 0
8649 +
8650 +
8651 +#define MRV_IS_IS_RECENTER
8652 +#define MRV_IS_IS_RECENTER_MASK 0x00000007
8653 +#define MRV_IS_IS_RECENTER_SHIFT 0
8654 +#define MRV_IS_IS_RECENTER_MAX \
8655 +       (MRV_IS_IS_RECENTER_MASK >> MRV_IS_IS_RECENTER_SHIFT)
8656 +
8657 +
8658 +#define MRV_IS_IS_H_OFFS
8659 +#define MRV_IS_IS_H_OFFS_MASK 0x00001FFF
8660 +#define MRV_IS_IS_H_OFFS_SHIFT 0
8661 +
8662 +
8663 +#define MRV_IS_IS_V_OFFS
8664 +#define MRV_IS_IS_V_OFFS_MASK 0x00000FFF
8665 +#define MRV_IS_IS_V_OFFS_SHIFT 0
8666 +
8667 +#define MRV_IS_IS_H_SIZE
8668 +#define MRV_IS_IS_H_SIZE_MASK 0x00003FFF
8669 +#define MRV_IS_IS_H_SIZE_SHIFT 0
8670 +
8671 +#define MRV_IS_IS_V_SIZE
8672 +#define MRV_IS_IS_V_SIZE_MASK 0x00000FFF
8673 +#define MRV_IS_IS_V_SIZE_SHIFT 0
8674 +
8675 +#define MRV_IS_IS_MAX_DX
8676 +#define MRV_IS_IS_MAX_DX_MASK 0x00000FFF
8677 +#define MRV_IS_IS_MAX_DX_SHIFT 0
8678 +#define MRV_IS_IS_MAX_DX_MAX (MRV_IS_IS_MAX_DX_MASK >> MRV_IS_IS_MAX_DX_SHIFT)
8679 +
8680 +
8681 +
8682 +#define MRV_IS_IS_MAX_DY
8683 +#define MRV_IS_IS_MAX_DY_MASK 0x00000FFF
8684 +#define MRV_IS_IS_MAX_DY_SHIFT 0
8685 +#define MRV_IS_IS_MAX_DY_MAX (MRV_IS_IS_MAX_DY_MASK >> MRV_IS_IS_MAX_DY_SHIFT)
8686 +#define MRV_IS_DY
8687 +#define MRV_IS_DY_MASK 0x0FFF0000
8688 +#define MRV_IS_DY_SHIFT 16
8689 +#define MRV_IS_DY_MAX 0x000007FF
8690 +#define MRV_IS_DY_MIN (~MRV_IS_DY_MAX)
8691 +#define MRV_IS_DX
8692 +#define MRV_IS_DX_MASK 0x00000FFF
8693 +#define MRV_IS_DX_SHIFT 0
8694 +#define MRV_IS_DX_MAX 0x000007FF
8695 +#define MRV_IS_DX_MIN (~MRV_IS_DX_MAX)
8696 +
8697 +
8698 +#define MRV_IS_IS_H_OFFS_SHD
8699 +#define MRV_IS_IS_H_OFFS_SHD_MASK 0x00001FFF
8700 +#define MRV_IS_IS_H_OFFS_SHD_SHIFT 0
8701 +
8702 +
8703 +#define MRV_IS_IS_V_OFFS_SHD
8704 +#define MRV_IS_IS_V_OFFS_SHD_MASK 0x00000FFF
8705 +#define MRV_IS_IS_V_OFFS_SHD_SHIFT 0
8706 +
8707 +
8708 +#define MRV_IS_ISP_H_SIZE_SHD
8709 +#define MRV_IS_ISP_H_SIZE_SHD_MASK 0x00001FFF
8710 +#define MRV_IS_ISP_H_SIZE_SHD_SHIFT 0
8711 +
8712 +
8713 +#define MRV_IS_ISP_V_SIZE_SHD
8714 +#define MRV_IS_ISP_V_SIZE_SHD_MASK 0x00000FFF
8715 +#define MRV_IS_ISP_V_SIZE_SHD_SHIFT 0
8716 +
8717 +
8718 +#define MRV_HIST_HIST_PDIV
8719 +#define MRV_HIST_HIST_PDIV_MASK 0x000007F8
8720 +#define MRV_HIST_HIST_PDIV_SHIFT 3
8721 +#define MRV_HIST_HIST_PDIV_MIN  0x00000003
8722 +#define MRV_HIST_HIST_PDIV_MAX  0x000000FF
8723 +#define MRV_HIST_HIST_MODE
8724 +#define MRV_HIST_HIST_MODE_MASK 0x00000007
8725 +#define MRV_HIST_HIST_MODE_SHIFT 0
8726 +#define MRV_HIST_HIST_MODE_MAX  5
8727 +#define MRV_HIST_HIST_MODE_LUM  5
8728 +#define MRV_HIST_HIST_MODE_B    4
8729 +#define MRV_HIST_HIST_MODE_G    3
8730 +#define MRV_HIST_HIST_MODE_R    2
8731 +#define MRV_HIST_HIST_MODE_RGB  1
8732 +#define MRV_HIST_HIST_MODE_NONE 0
8733 +
8734 +#define MRV_HIST_HIST_H_OFFS
8735 +#define MRV_HIST_HIST_H_OFFS_MASK 0x00000FFF
8736 +#define MRV_HIST_HIST_H_OFFS_SHIFT 0
8737 +#define MRV_HIST_HIST_H_OFFS_MAX \
8738 +       (MRV_HIST_HIST_H_OFFS_MASK >> MRV_HIST_HIST_H_OFFS_SHIFT)
8739 +
8740 +#define MRV_HIST_HIST_V_OFFS
8741 +#define MRV_HIST_HIST_V_OFFS_MASK 0x00000FFF
8742 +#define MRV_HIST_HIST_V_OFFS_SHIFT 0
8743 +#define MRV_HIST_HIST_V_OFFS_MAX \
8744 +       (MRV_HIST_HIST_V_OFFS_MASK >> MRV_HIST_HIST_V_OFFS_SHIFT)
8745 +
8746 +#define MRV_HIST_HIST_H_SIZE
8747 +#define MRV_HIST_HIST_H_SIZE_MASK 0x00000FFF
8748 +#define MRV_HIST_HIST_H_SIZE_SHIFT 0
8749 +#define MRV_HIST_HIST_H_SIZE_MAX \
8750 +       (MRV_HIST_HIST_H_SIZE_MASK >> MRV_HIST_HIST_H_SIZE_SHIFT)
8751 +
8752 +#define MRV_HIST_HIST_V_SIZE
8753 +#define MRV_HIST_HIST_V_SIZE_MASK 0x00000FFF
8754 +#define MRV_HIST_HIST_V_SIZE_SHIFT 0
8755 +#define MRV_HIST_HIST_V_SIZE_MAX \
8756 +       (MRV_HIST_HIST_V_SIZE_MASK >> MRV_HIST_HIST_V_SIZE_SHIFT)
8757 +
8758 +
8759 +#define MRV_HIST_HIST_BIN_N
8760 +#define MRV_HIST_HIST_BIN_N_MASK 0x000000FF
8761 +#define MRV_HIST_HIST_BIN_N_SHIFT 0
8762 +#define MRV_HIST_HIST_BIN_N_MAX \
8763 +       (MRV_HIST_HIST_BIN_N_MASK >> MRV_HIST_HIST_BIN_N_SHIFT)
8764 +
8765 +
8766 +
8767 +#define MRV_FILT_STAGE1_SELECT
8768 +#define MRV_FILT_STAGE1_SELECT_MASK 0x00000F00
8769 +#define MRV_FILT_STAGE1_SELECT_SHIFT 8
8770 +#define MRV_FILT_STAGE1_SELECT_MAX_BLUR 0
8771 +#define MRV_FILT_STAGE1_SELECT_DEFAULT  4
8772 +#define MRV_FILT_STAGE1_SELECT_MIN_BLUR 7
8773 +#define MRV_FILT_STAGE1_SELECT_BYPASS   8
8774 +#define MRV_FILT_FILT_CHR_H_MODE
8775 +#define MRV_FILT_FILT_CHR_H_MODE_MASK 0x000000C0
8776 +#define MRV_FILT_FILT_CHR_H_MODE_SHIFT 6
8777 +#define MRV_FILT_FILT_CHR_H_MODE_BYPASS 0
8778 +#define MRV_FILT_FILT_CHR_H_MODE_STATIC 1
8779 +#define MRV_FILT_FILT_CHR_H_MODE_DYN_1  2
8780 +#define MRV_FILT_FILT_CHR_H_MODE_DYN_2  3
8781 +#define MRV_FILT_FILT_CHR_V_MODE
8782 +#define MRV_FILT_FILT_CHR_V_MODE_MASK 0x00000030
8783 +#define MRV_FILT_FILT_CHR_V_MODE_SHIFT 4
8784 +#define MRV_FILT_FILT_CHR_V_MODE_BYPASS   0
8785 +#define MRV_FILT_FILT_CHR_V_MODE_STATIC8  1
8786 +#define MRV_FILT_FILT_CHR_V_MODE_STATIC10 2
8787 +#define MRV_FILT_FILT_CHR_V_MODE_STATIC12 3
8788 +
8789 +#define MRV_FILT_FILT_MODE
8790 +#define MRV_FILT_FILT_MODE_MASK 0x00000002
8791 +#define MRV_FILT_FILT_MODE_SHIFT 1
8792 +#define MRV_FILT_FILT_MODE_STATIC  0
8793 +#define MRV_FILT_FILT_MODE_DYNAMIC 1
8794 +
8795 +#define MRV_FILT_FILT_ENABLE
8796 +#define MRV_FILT_FILT_ENABLE_MASK 0x00000001
8797 +#define MRV_FILT_FILT_ENABLE_SHIFT 0
8798 +
8799 +
8800 +#define MRV_FILT_FILT_THRESH_BL0
8801 +#define MRV_FILT_FILT_THRESH_BL0_MASK 0x000003FF
8802 +#define MRV_FILT_FILT_THRESH_BL0_SHIFT 0
8803 +
8804 +
8805 +#define MRV_FILT_FILT_THRESH_BL1
8806 +#define MRV_FILT_FILT_THRESH_BL1_MASK 0x000003FF
8807 +#define MRV_FILT_FILT_THRESH_BL1_SHIFT 0
8808 +
8809 +
8810 +#define MRV_FILT_FILT_THRESH_SH0
8811 +#define MRV_FILT_FILT_THRESH_SH0_MASK 0x000003FF
8812 +#define MRV_FILT_FILT_THRESH_SH0_SHIFT 0
8813 +
8814 +
8815 +#define MRV_FILT_FILT_THRESH_SH1
8816 +#define MRV_FILT_FILT_THRESH_SH1_MASK 0x000003FF
8817 +#define MRV_FILT_FILT_THRESH_SH1_SHIFT 0
8818 +
8819 +
8820 +#define MRV_FILT_LUM_WEIGHT_GAIN
8821 +#define MRV_FILT_LUM_WEIGHT_GAIN_MASK 0x00070000
8822 +#define MRV_FILT_LUM_WEIGHT_GAIN_SHIFT 16
8823 +#define MRV_FILT_LUM_WEIGHT_KINK
8824 +#define MRV_FILT_LUM_WEIGHT_KINK_MASK 0x0000FF00
8825 +#define MRV_FILT_LUM_WEIGHT_KINK_SHIFT 8
8826 +#define MRV_FILT_LUM_WEIGHT_MIN
8827 +#define MRV_FILT_LUM_WEIGHT_MIN_MASK 0x000000FF
8828 +#define MRV_FILT_LUM_WEIGHT_MIN_SHIFT 0
8829 +
8830 +
8831 +#define MRV_FILT_FILT_FAC_SH1
8832 +#define MRV_FILT_FILT_FAC_SH1_MASK 0x0000003F
8833 +#define MRV_FILT_FILT_FAC_SH1_SHIFT 0
8834 +
8835 +
8836 +#define MRV_FILT_FILT_FAC_SH0
8837 +#define MRV_FILT_FILT_FAC_SH0_MASK 0x0000003F
8838 +#define MRV_FILT_FILT_FAC_SH0_SHIFT 0
8839 +
8840 +
8841 +#define MRV_FILT_FILT_FAC_MID
8842 +#define MRV_FILT_FILT_FAC_MID_MASK 0x0000003F
8843 +#define MRV_FILT_FILT_FAC_MID_SHIFT 0
8844 +
8845 +
8846 +#define MRV_FILT_FILT_FAC_BL0
8847 +#define MRV_FILT_FILT_FAC_BL0_MASK 0x0000003F
8848 +#define MRV_FILT_FILT_FAC_BL0_SHIFT 0
8849 +
8850 +
8851 +#define MRV_FILT_FILT_FAC_BL1
8852 +#define MRV_FILT_FILT_FAC_BL1_MASK 0x0000003F
8853 +#define MRV_FILT_FILT_FAC_BL1_SHIFT 0
8854 +
8855 +
8856 +
8857 +
8858 +    #define MRV_AE_EXP_MEAS_MODE
8859 +    #define MRV_AE_EXP_MEAS_MODE_MASK 0x80000000
8860 +    #define MRV_AE_EXP_MEAS_MODE_SHIFT 31
8861 +
8862 +#define MRV_AE_AUTOSTOP
8863 +#define MRV_AE_AUTOSTOP_MASK 0x00000002
8864 +#define MRV_AE_AUTOSTOP_SHIFT 1
8865 +
8866 +#define MRV_AE_EXP_START
8867 +#define MRV_AE_EXP_START_MASK 0x00000001
8868 +#define MRV_AE_EXP_START_SHIFT 0
8869 +
8870 +
8871 +
8872 +
8873 +
8874 +#define MRV_AE_ISP_EXP_H_OFFSET
8875 +#define MRV_AE_ISP_EXP_H_OFFSET_MASK 0x00000FFF
8876 +#define MRV_AE_ISP_EXP_H_OFFSET_SHIFT 0
8877 +#define MRV_AE_ISP_EXP_H_OFFSET_MIN  0x00000000
8878 +#define MRV_AE_ISP_EXP_H_OFFSET_MAX  0x00000F50
8879 +
8880 +
8881 +
8882 +#define MRV_AE_ISP_EXP_V_OFFSET
8883 +#define MRV_AE_ISP_EXP_V_OFFSET_MASK 0x00000FFF
8884 +#define MRV_AE_ISP_EXP_V_OFFSET_SHIFT 0
8885 +#define MRV_AE_ISP_EXP_V_OFFSET_MIN  0x00000000
8886 +#define MRV_AE_ISP_EXP_V_OFFSET_MAX  0x00000B74
8887 +
8888 +
8889 +#define MRV_AE_ISP_EXP_H_SIZE
8890 +#define MRV_AE_ISP_EXP_H_SIZE_MASK 0x000003FF
8891 +#define MRV_AE_ISP_EXP_H_SIZE_SHIFT 0
8892 +#define MRV_AE_ISP_EXP_H_SIZE_MIN  0x00000023
8893 +#define MRV_AE_ISP_EXP_H_SIZE_MAX  0x00000333
8894 +
8895 +
8896 +#define MRV_AE_ISP_EXP_V_SIZE
8897 +#define MRV_AE_ISP_EXP_V_SIZE_MASK 0x000003FE
8898 +#define MRV_AE_ISP_EXP_V_SIZE_SHIFT 0
8899 +#define MRV_AE_ISP_EXP_V_SIZE_VALID_MASK \
8900 +       (MRV_AE_ISP_EXP_V_SIZE_MASK & ~0x00000001)
8901 +#define MRV_AE_ISP_EXP_V_SIZE_MIN  0x0000001C
8902 +#define MRV_AE_ISP_EXP_V_SIZE_MAX  0x00000266
8903 +
8904 +#define MRV_AE_ISP_EXP_MEAN_ARR_SIZE1 5
8905 +#define MRV_AE_ISP_EXP_MEAN_ARR_SIZE2 5
8906 +#define MRV_AE_ISP_EXP_MEAN_ARR_OFS1  1
8907 +#define MRV_AE_ISP_EXP_MEAN_ARR_OFS2  MRV_AE_ISP_EXP_MEAN_ARR_SIZE1
8908 +#define MRV_AE_ISP_EXP_MEAN
8909 +#define MRV_AE_ISP_EXP_MEAN_MASK 0x000000FF
8910 +#define MRV_AE_ISP_EXP_MEAN_SHIFT 0
8911 +
8912 +
8913 +#define MRV_AE_ISP_EXP_MEAN_00
8914 +#define MRV_AE_ISP_EXP_MEAN_00_MASK 0x000000FF
8915 +#define MRV_AE_ISP_EXP_MEAN_00_SHIFT 0
8916 +
8917 +#define MRV_AE_ISP_EXP_MEAN_10
8918 +#define MRV_AE_ISP_EXP_MEAN_10_MASK 0x000000FF
8919 +#define MRV_AE_ISP_EXP_MEAN_10_SHIFT 0
8920 +
8921 +
8922 +#define MRV_AE_ISP_EXP_MEAN_20
8923 +#define MRV_AE_ISP_EXP_MEAN_20_MASK 0x000000FF
8924 +#define MRV_AE_ISP_EXP_MEAN_20_SHIFT 0
8925 +
8926 +
8927 +#define MRV_AE_ISP_EXP_MEAN_30
8928 +#define MRV_AE_ISP_EXP_MEAN_30_MASK 0x000000FF
8929 +#define MRV_AE_ISP_EXP_MEAN_30_SHIFT 0
8930 +
8931 +
8932 +#define MRV_AE_ISP_EXP_MEAN_40
8933 +#define MRV_AE_ISP_EXP_MEAN_40_MASK 0x000000FF
8934 +#define MRV_AE_ISP_EXP_MEAN_40_SHIFT 0
8935 +
8936 +
8937 +#define MRV_AE_ISP_EXP_MEAN_01
8938 +#define MRV_AE_ISP_EXP_MEAN_01_MASK 0x000000FF
8939 +#define MRV_AE_ISP_EXP_MEAN_01_SHIFT 0
8940 +
8941 +
8942 +#define MRV_AE_ISP_EXP_MEAN_11
8943 +#define MRV_AE_ISP_EXP_MEAN_11_MASK 0x000000FF
8944 +#define MRV_AE_ISP_EXP_MEAN_11_SHIFT 0
8945 +
8946 +
8947 +#define MRV_AE_ISP_EXP_MEAN_21
8948 +#define MRV_AE_ISP_EXP_MEAN_21_MASK 0x000000FF
8949 +#define MRV_AE_ISP_EXP_MEAN_21_SHIFT 0
8950 +
8951 +
8952 +#define MRV_AE_ISP_EXP_MEAN_31
8953 +#define MRV_AE_ISP_EXP_MEAN_31_MASK 0x000000FF
8954 +#define MRV_AE_ISP_EXP_MEAN_31_SHIFT 0
8955 +
8956 +
8957 +#define MRV_AE_ISP_EXP_MEAN_41
8958 +#define MRV_AE_ISP_EXP_MEAN_41_MASK 0x000000FF
8959 +#define MRV_AE_ISP_EXP_MEAN_41_SHIFT 0
8960 +
8961 +
8962 +#define MRV_AE_ISP_EXP_MEAN_02
8963 +#define MRV_AE_ISP_EXP_MEAN_02_MASK 0x000000FF
8964 +#define MRV_AE_ISP_EXP_MEAN_02_SHIFT 0
8965 +
8966 +
8967 +
8968 +#define MRV_AE_ISP_EXP_MEAN_12
8969 +#define MRV_AE_ISP_EXP_MEAN_12_MASK 0x000000FF
8970 +#define MRV_AE_ISP_EXP_MEAN_12_SHIFT 0
8971 +
8972 +
8973 +#define MRV_AE_ISP_EXP_MEAN_22
8974 +#define MRV_AE_ISP_EXP_MEAN_22_MASK 0x000000FF
8975 +#define MRV_AE_ISP_EXP_MEAN_22_SHIFT 0
8976 +
8977 +
8978 +#define MRV_AE_ISP_EXP_MEAN_32
8979 +#define MRV_AE_ISP_EXP_MEAN_32_MASK 0x000000FF
8980 +#define MRV_AE_ISP_EXP_MEAN_32_SHIFT 0
8981 +
8982 +
8983 +#define MRV_AE_ISP_EXP_MEAN_42
8984 +#define MRV_AE_ISP_EXP_MEAN_42_MASK 0x000000FF
8985 +#define MRV_AE_ISP_EXP_MEAN_42_SHIFT 0
8986 +
8987 +
8988 +#define MRV_AE_ISP_EXP_MEAN_03
8989 +#define MRV_AE_ISP_EXP_MEAN_03_MASK 0x000000FF
8990 +#define MRV_AE_ISP_EXP_MEAN_03_SHIFT 0
8991 +
8992 +
8993 +#define MRV_AE_ISP_EXP_MEAN_13
8994 +#define MRV_AE_ISP_EXP_MEAN_13_MASK 0x000000FF
8995 +#define MRV_AE_ISP_EXP_MEAN_13_SHIFT 0
8996 +
8997 +
8998 +#define MRV_AE_ISP_EXP_MEAN_23
8999 +#define MRV_AE_ISP_EXP_MEAN_23_MASK 0x000000FF
9000 +#define MRV_AE_ISP_EXP_MEAN_23_SHIFT 0
9001 +
9002 +
9003 +#define MRV_AE_ISP_EXP_MEAN_33
9004 +#define MRV_AE_ISP_EXP_MEAN_33_MASK 0x000000FF
9005 +#define MRV_AE_ISP_EXP_MEAN_33_SHIFT 0
9006 +
9007 +
9008 +#define MRV_AE_ISP_EXP_MEAN_43
9009 +#define MRV_AE_ISP_EXP_MEAN_43_MASK 0x000000FF
9010 +#define MRV_AE_ISP_EXP_MEAN_43_SHIFT 0
9011 +
9012 +
9013 +#define MRV_AE_ISP_EXP_MEAN_04
9014 +#define MRV_AE_ISP_EXP_MEAN_04_MASK 0x000000FF
9015 +#define MRV_AE_ISP_EXP_MEAN_04_SHIFT 0
9016 +
9017 +
9018 +#define MRV_AE_ISP_EXP_MEAN_14
9019 +#define MRV_AE_ISP_EXP_MEAN_14_MASK 0x000000FF
9020 +#define MRV_AE_ISP_EXP_MEAN_14_SHIFT 0
9021 +
9022 +
9023 +#define MRV_AE_ISP_EXP_MEAN_24
9024 +#define MRV_AE_ISP_EXP_MEAN_24_MASK 0x000000FF
9025 +#define MRV_AE_ISP_EXP_MEAN_24_SHIFT 0
9026 +
9027 +
9028 +#define MRV_AE_ISP_EXP_MEAN_34
9029 +#define MRV_AE_ISP_EXP_MEAN_34_MASK 0x000000FF
9030 +#define MRV_AE_ISP_EXP_MEAN_34_SHIFT 0
9031 +
9032 +
9033 +#define MRV_AE_ISP_EXP_MEAN_44
9034 +#define MRV_AE_ISP_EXP_MEAN_44_MASK 0x000000FF
9035 +#define MRV_AE_ISP_EXP_MEAN_44_SHIFT 0
9036 +
9037 +
9038 +
9039 +#define MRV_BLS_WINDOW_ENABLE
9040 +#define MRV_BLS_WINDOW_ENABLE_MASK 0x0000000C
9041 +#define MRV_BLS_WINDOW_ENABLE_SHIFT 2
9042 +#define MRV_BLS_WINDOW_ENABLE_NONE  0
9043 +#define MRV_BLS_WINDOW_ENABLE_WND1  1
9044 +#define MRV_BLS_WINDOW_ENABLE_WND2  2
9045 +#define MRV_BLS_WINDOW_ENABLE_BOTH  3
9046 +
9047 +#define MRV_BLS_BLS_MODE
9048 +#define MRV_BLS_BLS_MODE_MASK 0x00000002
9049 +#define MRV_BLS_BLS_MODE_SHIFT 1
9050 +#define MRV_BLS_BLS_MODE_MEAS  1
9051 +#define MRV_BLS_BLS_MODE_FIX   0
9052 +
9053 +#define MRV_BLS_BLS_ENABLE
9054 +#define MRV_BLS_BLS_ENABLE_MASK 0x00000001
9055 +#define MRV_BLS_BLS_ENABLE_SHIFT 0
9056 +
9057 +
9058 +#define MRV_BLS_BLS_SAMPLES
9059 +#define MRV_BLS_BLS_SAMPLES_MASK 0x0000001F
9060 +#define MRV_BLS_BLS_SAMPLES_SHIFT 0
9061 +
9062 +#define MRV_BLS_BLS_SAMPLES_MAX     (0x00000014)
9063 +
9064 +
9065 +#define MRV_BLS_BLS_H1_START
9066 +#define MRV_BLS_BLS_H1_START_MASK 0x00000FFF
9067 +#define MRV_BLS_BLS_H1_START_SHIFT 0
9068 +#define MRV_BLS_BLS_H1_START_MAX \
9069 +       (MRV_BLS_BLS_H1_START_MASK >> MRV_BLS_BLS_H1_START_SHIFT)
9070 +
9071 +
9072 +#define MRV_BLS_BLS_H1_STOP
9073 +#define MRV_BLS_BLS_H1_STOP_MASK 0x00001FFF
9074 +#define MRV_BLS_BLS_H1_STOP_SHIFT 0
9075 +#define MRV_BLS_BLS_H1_STOP_MAX \
9076 +       (MRV_BLS_BLS_H1_STOP_MASK >> MRV_BLS_BLS_H1_STOP_SHIFT)
9077 +
9078 +
9079 +#define MRV_BLS_BLS_V1_START
9080 +#define MRV_BLS_BLS_V1_START_MASK 0x00001FFF
9081 +#define MRV_BLS_BLS_V1_START_SHIFT 0
9082 +#define MRV_BLS_BLS_V1_START_MAX \
9083 +       (MRV_BLS_BLS_V1_START_MASK >> MRV_BLS_BLS_V1_START_SHIFT)
9084 +
9085 +#define MRV_BLS_BLS_V1_STOP
9086 +#define MRV_BLS_BLS_V1_STOP_MASK 0x00001FFF
9087 +#define MRV_BLS_BLS_V1_STOP_SHIFT 0
9088 +#define MRV_BLS_BLS_V1_STOP_MAX \
9089 +       (MRV_BLS_BLS_V1_STOP_MASK >> MRV_BLS_BLS_V1_STOP_SHIFT)
9090 +
9091 +#define MRV_BLS_BLS_H2_START
9092 +#define MRV_BLS_BLS_H2_START_MASK 0x00001FFF
9093 +#define MRV_BLS_BLS_H2_START_SHIFT 0
9094 +#define MRV_BLS_BLS_H2_START_MAX \
9095 +       (MRV_BLS_BLS_H2_START_MASK >> MRV_BLS_BLS_H2_START_SHIFT)
9096 +
9097 +
9098 +#define MRV_BLS_BLS_H2_STOP
9099 +#define MRV_BLS_BLS_H2_STOP_MASK 0x00001FFF
9100 +#define MRV_BLS_BLS_H2_STOP_SHIFT 0
9101 +#define MRV_BLS_BLS_H2_STOP_MAX \
9102 +       (MRV_BLS_BLS_H2_STOP_MASK >> MRV_BLS_BLS_H2_STOP_SHIFT)
9103 +
9104 +
9105 +#define MRV_BLS_BLS_V2_START
9106 +#define MRV_BLS_BLS_V2_START_MASK 0x00001FFF
9107 +#define MRV_BLS_BLS_V2_START_SHIFT 0
9108 +#define MRV_BLS_BLS_V2_START_MAX \
9109 +       (MRV_BLS_BLS_V2_START_MASK >> MRV_BLS_BLS_V2_START_SHIFT)
9110 +
9111 +
9112 +#define MRV_BLS_BLS_V2_STOP
9113 +#define MRV_BLS_BLS_V2_STOP_MASK 0x00001FFF
9114 +#define MRV_BLS_BLS_V2_STOP_SHIFT 0
9115 +#define MRV_BLS_BLS_V2_STOP_MAX \
9116 +       (MRV_BLS_BLS_V2_STOP_MASK >> MRV_BLS_BLS_V2_STOP_SHIFT)
9117 +
9118 +#define MRV_ISP_BLS_FIX_SUB_MIN     (0xFFFFF001)
9119 +#define MRV_ISP_BLS_FIX_SUB_MAX     (0x00000FFF)
9120 +#define MRV_ISP_BLS_FIX_MASK        (0x00001FFF)
9121 +#define MRV_ISP_BLS_FIX_SHIFT_A              (0)
9122 +#define MRV_ISP_BLS_FIX_SHIFT_B              (0)
9123 +#define MRV_ISP_BLS_FIX_SHIFT_C              (0)
9124 +#define MRV_ISP_BLS_FIX_SHIFT_D              (0)
9125 +#define MRV_ISP_BLS_MEAN_MASK       (0x00000FFF)
9126 +#define MRV_ISP_BLS_MEAN_SHIFT_A             (0)
9127 +#define MRV_ISP_BLS_MEAN_SHIFT_B             (0)
9128 +#define MRV_ISP_BLS_MEAN_SHIFT_C             (0)
9129 +#define MRV_ISP_BLS_MEAN_SHIFT_D             (0)
9130 +
9131 +#define MRV_BLS_BLS_A_FIXED
9132 +#define MRV_BLS_BLS_A_FIXED_MASK (MRV_ISP_BLS_FIX_MASK <<\
9133 +                                 MRV_ISP_BLS_FIX_SHIFT_A)
9134 +#define MRV_BLS_BLS_A_FIXED_SHIFT MRV_ISP_BLS_FIX_SHIFT_A
9135 +
9136 +#define MRV_BLS_BLS_B_FIXED
9137 +#define MRV_BLS_BLS_B_FIXED_MASK (MRV_ISP_BLS_FIX_MASK <<\
9138 +                                 MRV_ISP_BLS_FIX_SHIFT_B)
9139 +#define MRV_BLS_BLS_B_FIXED_SHIFT MRV_ISP_BLS_FIX_SHIFT_B
9140 +
9141 +#define MRV_BLS_BLS_C_FIXED
9142 +#define MRV_BLS_BLS_C_FIXED_MASK (MRV_ISP_BLS_FIX_MASK <<\
9143 +                                 MRV_ISP_BLS_FIX_SHIFT_C)
9144 +#define MRV_BLS_BLS_C_FIXED_SHIFT MRV_ISP_BLS_FIX_SHIFT_C
9145 +
9146 +#define MRV_BLS_BLS_D_FIXED
9147 +#define MRV_BLS_BLS_D_FIXED_MASK (MRV_ISP_BLS_FIX_MASK <<\
9148 +                                 MRV_ISP_BLS_FIX_SHIFT_D)
9149 +#define MRV_BLS_BLS_D_FIXED_SHIFT MRV_ISP_BLS_FIX_SHIFT_D
9150 +
9151 +
9152 +#define MRV_BLS_BLS_A_MEASURED
9153 +#define MRV_BLS_BLS_A_MEASURED_MASK (MRV_ISP_BLS_MEAN_MASK <<\
9154 +                                    MRV_ISP_BLS_MEAN_SHIFT_A)
9155 +#define MRV_BLS_BLS_A_MEASURED_SHIFT MRV_ISP_BLS_MEAN_SHIFT_A
9156 +
9157 +
9158 +#define MRV_BLS_BLS_B_MEASURED
9159 +#define MRV_BLS_BLS_B_MEASURED_MASK (MRV_ISP_BLS_MEAN_MASK <<\
9160 +                                    MRV_ISP_BLS_MEAN_SHIFT_B)
9161 +#define MRV_BLS_BLS_B_MEASURED_SHIFT MRV_ISP_BLS_MEAN_SHIFT_B
9162 +
9163 +
9164 +#define MRV_BLS_BLS_C_MEASURED
9165 +#define MRV_BLS_BLS_C_MEASURED_MASK (MRV_ISP_BLS_MEAN_MASK <<\
9166 +                                    MRV_ISP_BLS_MEAN_SHIFT_C)
9167 +#define MRV_BLS_BLS_C_MEASURED_SHIFT MRV_ISP_BLS_MEAN_SHIFT_C
9168 +
9169 +
9170 +#define MRV_BLS_BLS_D_MEASURED
9171 +#define MRV_BLS_BLS_D_MEASURED_MASK (MRV_ISP_BLS_MEAN_MASK <<\
9172 +                                    MRV_ISP_BLS_MEAN_SHIFT_D)
9173 +#define MRV_BLS_BLS_D_MEASURED_SHIFT MRV_ISP_BLS_MEAN_SHIFT_D
9174 +
9175 +#define CI_ISP_DELAY_AFTER_RESET 15
9176 +
9177 +#define IRQ_ISP_ERROR  -1
9178 +#define        IRQ_JPE_ERROR   0
9179 +#define IRQ_JPE_SUCCESS        1
9180 +#define IRQ_MI_SUCCESS         2
9181 +#define IRQ_MI_SP_SUCCESS      3
9182 +#define IRQ    1
9183 +
9184 +#endif
9185 --- /dev/null
9186 +++ b/drivers/media/video/mrstci/mrstisp/include/mrstisp_stdinc.h
9187 @@ -0,0 +1,119 @@
9188 +/*
9189 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
9190 + *
9191 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
9192 + *
9193 + * Copyright (c) Silicon Image 2008  www.siliconimage.com
9194 + *
9195 + * This program is free software; you can redistribute it and/or
9196 + * modify it under the terms of the GNU General Public License version
9197 + * 2 as published by the Free Software Foundation.
9198 + *
9199 + * This program is distributed in the hope that it will be useful,
9200 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
9201 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9202 + * GNU General Public License for more details.
9203 + *
9204 + * You should have received a copy of the GNU General Public License
9205 + * along with this program; if not, write to the Free Software
9206 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
9207 + * 02110-1301, USA.
9208 + *
9209 + *
9210 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
9211 + */
9212 +
9213 +#ifndef _MRSTISP_STDINC_H
9214 +#define _MRSTISP_STDINC_H
9215 +
9216 +#ifdef __KERNEL__
9217 +#include <linux/module.h>
9218 +#include <linux/version.h>
9219 +#include <linux/moduleparam.h>
9220 +#include <linux/init.h>
9221 +#include <linux/fs.h>
9222 +
9223 +#include <linux/proc_fs.h>
9224 +#include <linux/ctype.h>
9225 +#include <linux/pagemap.h>
9226 +#include <linux/delay.h>
9227 +#include <linux/io.h>
9228 +
9229 +#include <linux/uaccess.h>
9230 +#include <linux/videodev2.h>
9231 +#include <media/v4l2-common.h>
9232 +#include <media/v4l2-ioctl.h>
9233 +
9234 +#include <linux/mutex.h>
9235 +#include <linux/list.h>
9236 +#include <linux/string.h>
9237 +#include <linux/slab.h>
9238 +#include <linux/vmalloc.h>
9239 +#include <linux/types.h>
9240 +#include <linux/errno.h>
9241 +#include <linux/sched.h>
9242 +#include <linux/moduleparam.h>
9243 +#include <linux/smp_lock.h>
9244 +#include <asm/kmap_types.h>
9245 +#include <linux/delay.h>
9246 +#include <linux/pci.h>
9247 +#include <linux/interrupt.h>
9248 +#include <linux/timer.h>
9249 +#include <asm/system.h>
9250 +#include <asm/page.h>
9251 +#include <asm/pgtable.h>
9252 +#include <linux/time.h>
9253 +#include <linux/syscalls.h>
9254 +
9255 +#include <linux/i2c.h>
9256 +#include <linux/gpio.h>
9257 +#include <linux/dma-mapping.h>
9258 +#include <media/videobuf-core.h>
9259 +#include <media/videobuf-dma-contig.h>
9260 +/* #include <media/v4l2-i2c-drv.h> */
9261 +
9262 +#ifdef CONFIG_KMOD
9263 +#include <linux/kmod.h>
9264 +#endif
9265 +
9266 +#include "project_settings_mrv.h"
9267 +
9268 +#include "ci_sensor_common.h"
9269 +#include "ci_isp_common.h"
9270 +#include "ci_va.h"
9271 +#include "v4l2_jpg_review.h"
9272 +
9273 +#include "def.h"
9274 +#include "mrstisp_reg.h"
9275 +#include "mrstisp.h"
9276 +#include "mrstisp_isp.h"
9277 +#include "mrstisp_hw.h"
9278 +#include "mrstisp_jpe.h"
9279 +#include "mrstisp_dp.h"
9280 +/* #include "mrstisp_mif.h" */
9281 +
9282 +extern unsigned char *mrst_isp_regs;
9283 +#define MEM_CSC_REG_BASE                (0x08500000)
9284 +#define MEM_MRV_REG_BASE (mrst_isp_regs)
9285 +#define ALIGN_TO_4(f)  (((f) + 3) & ~3)
9286 +
9287 +/* for debug */
9288 +extern int mrstisp_debug;
9289 +#define dprintk(level, fmt, arg...) do {                       \
9290 +       if (mrstisp_debug >= level)                                     \
9291 +               printk(KERN_DEBUG "mrstisp@%s: " fmt "\n", \
9292 +                      __func__, ## arg); } \
9293 +       while (0)
9294 +
9295 +#define eprintk(fmt, arg...)   \
9296 +       printk(KERN_ERR "mrstisp@%s" fmt "\n",  \
9297 +              __func__, ## arg);
9298 +
9299 +#define DBG_entering   dprintk(1, "entering");
9300 +#define DBG_leaving    dprintk(1, "leaving");
9301 +#define DBG_line       dprintk(1, " line: %d", __LINE__);
9302 +
9303 +#include "reg_access.h"
9304 +
9305 +#endif
9306 +#endif
9307 --- /dev/null
9308 +++ b/drivers/media/video/mrstci/mrstisp/include/project_settings_mrv.h
9309 @@ -0,0 +1,622 @@
9310 +/*
9311 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
9312 + *
9313 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
9314 + *
9315 + * Copyright (c) Silicon Image 2008  www.siliconimage.com
9316 + *
9317 + * This program is free software; you can redistribute it and/or
9318 + * modify it under the terms of the GNU General Public License version
9319 + * 2 as published by the Free Software Foundation.
9320 + *
9321 + * This program is distributed in the hope that it will be useful,
9322 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
9323 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9324 + * GNU General Public License for more details.
9325 + *
9326 + * You should have received a copy of the GNU General Public License
9327 + * along with this program; if not, write to the Free Software
9328 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
9329 + * 02110-1301, USA.
9330 + *
9331 + *
9332 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
9333 + */
9334 +
9335 +
9336 +#ifndef _PROJECT_SETTTINGS_MRV_H
9337 +#define _PROJECT_SETTTINGS_MRV_H
9338 +
9339 +/* !< information mask */
9340 +#define DBG_INFO        0x00000001
9341 +/* !< warning mask */
9342 +#define DBG_WARN        0x00000002
9343 +/* !< error mask */
9344 +#define DBG_ERR         0x00000004
9345 +/* !< assert mask */
9346 +#define DBG_ASSERT      0x00000008
9347 +/* !< mask to get all categories */
9348 +#define DBG_CAT_ALL    0x000000FF
9349 +
9350 +/* !< currly used category mask */
9351 +#define DBG_CAT_FILTER  (DBG_CAT_ALL)
9352 +
9353 +/* !< application mask */
9354 +#define DBG_APP             0x00002000
9355 +/* !< MARVIN driver mask */
9356 +#define DBG_MRV             0x00001000
9357 +/* !< mipi driver mask */
9358 +#define DBG_MIPI            0x00040000
9359 +
9360 +#define CAMERA_VB6850           11
9361 +#define CAMERA_HW      CAMERA_VB6850
9362 +/*
9363 + * \name MARVIN_HW
9364 + *   select which MARVIN hardware is used.
9365 + */
9366 +
9367 +/* MARVIN 3, basically MARVIN 1 with more resolution */
9368 +#define MARVIN_3                 2
9369 +/* Codename: "ISP upgrade" */
9370 +#define MARVIN_3_V2              3
9371 +/* MARVIN_3_V2 upgrade */
9372 +#define MARVIN_3_V22            11
9373 +/* MARVIN_3_V2 upgrade + MI patch from 12/2006 */
9374 +#define MARVIN_3_V22X           13
9375 +/* MARVIN_3_V2 upgrade + MI patch from 12/2006 (package tag 15.01.07) */
9376 +#define MARVIN_3_V22X2          15
9377 +/* just a quick-made test version for AF, other features see below */
9378 +#define MARVIN_3_V2B             5
9379 +/* Codename: "M3plus" */
9380 +#define MARVIN_3_V3              4
9381 +/* Codename: "Autofocus/bad pixel" */
9382 +#define MARVIN_3_V4              6
9383 +/* MARVIN_3_V4 upgrade */
9384 +#define MARVIN_3_V42            12
9385 +/* MARVIN_3_V4 upgrade + MI patch from 12/2006 */
9386 +#define MARVIN_3_V42X           14
9387 +/* MARVIN_3_V4 upgrade + MI patch from 12/2006 + (package tag 15.01.07) */
9388 +#define MARVIN_3_V42X2          16
9389 +/* Codename: "EMP" */
9390 +#define MARVIN_3_V5              7
9391 +/* successor of MARVIN_3_V5 */
9392 +#define MARVIN_5_V5             18
9393 +
9394 +/*
9395 + * FPGA Bitstream ID 12 (Marvin5 tag 27.02.06), used for USA roadshow in
9396 + * 03/2006
9397 + */
9398 +#define MARVIN_5_BS12           10
9399 +/* MARVIN 5 (product) */
9400 +#define MARVIN_5_V1              9
9401 +/* MARVIN 5 (product with new isp filter) */
9402 +#define MARVIN_5_V2             20
9403 +/* MARVIN 5 (product with Chromatic Aberration) */
9404 +#define MARVIN_5_V3             21
9405 +/* MARVIN 5 (with 16 beat burst) */
9406 +#define MARVIN_5_V4             22
9407 +/* MARVIN XF */
9408 +#define MARVIN_5_XF             17
9409 +/* MARVIN XF */
9410 +#define MARVIN_5_XF_TMP         19
9411 +
9412 +/* MARVIN 12MP */
9413 +#define MARVIN_12_V1            23
9414 +
9415 +/* MARVIN 5 (with 16 beat burst) */
9416 +#define MARVIN_5_V4_R20         30
9417 +
9418 +
9419 +/* Currently used MARVIN version */
9420 +#define MARVIN_HW                MARVIN_5_V4_R20
9421 +
9422 +/*
9423 + * MRV_SUPPORT_xxx
9424 + * Some compile-time-configurable features of the MARVIN driver.
9425 + * Set the certain defines to a non-zero value to enable the feature
9426 + */
9427 +
9428 +/*
9429 + * routines to convert state and configuration enums into human readable
9430 + * text. (useful in e.g. debug outputs)
9431 + */
9432 +#define MRV_SUPPORT_STATE2STRING   1
9433 +
9434 +/*
9435 + * routines to read, write and dump the register set of the MARVIN module
9436 + */
9437 +#define MRV_SUPPORT_REGDUMP   1
9438 +
9439 +/*
9440 + * second level support routines for e.g. exposure control, auto focus
9441 + * and white balance. Second level support routines are
9442 + * those using the plain routines of mrv.h to implement a kind of
9443 + * "helper" to program/access/use the MARVIN with a bit more
9444 + * abstraction.
9445 + */
9446 +#define MRV_SUPPORT_SL   1
9447 +
9448 +/*
9449 + * \mainpage MARVIN SOFTWARE
9450 + * \b File: project_settings_mrv.h
9451 + *
9452 + * <!-- \section Global Descriptions and Informations
9453 + * (settings, definitions, software changes) -->
9454 + *
9455 + * For global descriptions and informations see under "Modules"
9456 + *
9457 + */
9458 +
9459 +/*
9460 + * \addtogroup MARVIN_DEFINES_00 MARVIN Features
9461 + * \b File: project_settings_mrv.h
9462 + *
9463 + * \par MARVIN Features
9464 + * Depends on the used MARVIN_HW. Direct usage of MARVIN_HW should be
9465 + * avoided wherever possible.
9466 + * This makes it VERY MUCH easier to adapt the driver to new MARVIN
9467 + * versions with a feature set suited to a certain customer.
9468 + *
9469 + * \par MARVIN_FEATURE_CHIP_ID (integer)
9470 + *    ID value contained in the chip. This is to be able to identify
9471 + *    the chip derivative during runtime of the software
9472 + *
9473 + * \par MARVIN_FEATURE_CAMBUSWIDTH: (integer)
9474 + *    How many bits can be captured from the image sensor?
9475 + *    MARVIN_FEATURE_8BITS  = sensor bus width is 8 bits
9476 + *    MARVIN_FEATURE_10BITS = sensor bus width is 10 bits
9477 + *    MARVIN_FEATURE_12BITS = sensor bus width is 12 bits
9478 + *
9479 + * \par MARVIN_FEATURE_XTALK: (integer)
9480 + *    separate crosstalk matrix. without this feature, the crosstalk
9481 + *    coefficients have to be combined with the color conversion matrix
9482 + *    MARVIN_FEATURE_XTALK_9BITS  = coefficient range -2.0 ... +1.992 ( 9 Bit)
9483 + *    MARVIN_FEATURE_XTALK_10BITS = coefficient range -4.0 ... +3.992 (10 Bit)
9484 + *    MARVIN_FEATURE_XTALK_11BITS = coefficient range -8.0 ... +7.992 (11 Bit)
9485 + *    MARVIN_FEATURE_EXIST_NOT    = no separate xtalk matrix
9486 + *
9487 + * \par MARVIN_FEATURE_XTALK_OFFSET: (boolean)
9488 + *    add a offset to the crosstalk matrix output
9489 + *
9490 + * \par MARVIN_FEATURE_GAMMAOUT: (boolean)
9491 + *    gamma correction for luminance channel at the output of the
9492 + *    ISP block.
9493 + *
9494 + * \par MARVIN_FEATURE_FRAMESIZE: (integer)
9495 + *    Maximum frame size (at sensor input) MARVIN can handle.
9496 + *    MARVIN_FEATURE_1M9 = 1.9 megapixels
9497 + *    MARVIN_FEATURE_3M1 = 3.1 megapixels
9498 + *    MARVIN_FEATURE_5M3 = 5.3 megapixels
9499 + *
9500 + * \par MARVIN_FEATURE_SSCALE: (boolean)
9501 + *    Selfpath feature, and therefore selfpath scaler feautel also. If set to
9502 + *    MARVIN_FEATURE_EXIST_NOT, the whole self data path is not present.
9503 + *
9504 + * \par MARVIN_FEATURE_SSCALE_UP: (boolean)
9505 + *    Upscale capability of the self path scaler. This feature enables
9506 + *    the scaler to do upscaling up to the factor of 5
9507 + *
9508 + * \par MARVIN_FEATURE_SSCALE_FACTORCALC: (integer)
9509 + *  Specifies the strategy to calculate the scale factors for the self scaler.
9510 + *  Note that this define is the successor of the MARVIN_FEATURE_SSCALE_LANES,
9511 + *  which does not longer reflect the 'true' implementations of the scaler
9512 + *  hardware and therefore has been removed.
9513 + *  MARVIN_FEATURE_SCALEFACTOR_COMBINED_UV = 'traditional' behaviour: The
9514 + *  scaler handles the U and V chroma components as if they were two joined
9515 + *  pixels. Thus, when YUV422 subsampled input data is to be processed and
9516 + *  no further subsampling is required, the scale facrors of luma and chroma
9517 + *  pathes must be identical.
9518 + *  MARVIN_FEATURE_SCALEFACTOR_SEPARATED_UV = 'new style' behaviour: The
9519 + *  scaler handles the U and V chroma components as if they belong to
9520 + *  totally different picture planes. Thus, when YUV422 subsampled input
9521 + *  data is to be processed and no further subsampling is required, the
9522 + *  scale facrors of the chroma path must be calculated like those of the
9523 + *  luma path, but with only half of the image width.
9524 + *
9525 + * \par MARVIN_FEATURE_MSCALE_UP: (boolean)
9526 + *    Upscale capability of the main path scaler. This feature enables
9527 + *    the scaler to do upscaling up to the factor of 5
9528 + *
9529 + * \par MARVIN_FEATURE_MSCALE_FACTORCALC: (integer)
9530 + * Specifies the strategy to calculate the scale factors for the main scaler.
9531 + * MARVIN_FEATURE_SCALEFACTOR_COMBINED_UV = 'traditional' behaviour: The
9532 + * scaler handles the U and V chroma components as if they were two joined
9533 + * pixels. Thus, when YUV422 subsampled input data is to be processed and
9534 + * no further subsampling is required, the scale facrors of luma and chroma
9535 + * pathes must be identical.
9536 + * MARVIN_FEATURE_SCALEFACTOR_SEPARATED_UV = 'new style' behaviour: The
9537 + * scaler handles the U and V chroma components as if they belong to
9538 + * totally different picture planes. Thus, when YUV422 subsampled input
9539 + * data is to be processed and no further subsampling is required, the
9540 + * scale facrors of the chroma path must be calculated like those of the
9541 + * luma path, but with only half of the image width.
9542 + *
9543 + * \par MARVIN_FEATURE_SCALE_FACTORWIDTH: (integer)
9544 + *    Width of the scalefactors for both main and self scaler
9545 + *    MARVIN_FEATURE_12BITS = 12 bits precision
9546 + *    MARVIN_FEATURE_14BITS = 14 bits precision
9547 + *    MARVIN_FEATURE_16BITS = 16 bits precision
9548 + *
9549 + * \par MARVIN_FEATURE_AF_MEASURE: (boolean)
9550 + *    Autofocus measurement block (attached to the demosaicing block)
9551 + *
9552 + * \par MARVIN_FEATURE_BAD_PIXEL: (boolean)
9553 + *    Bad pixel detection/correction block
9554 + *
9555 + * \par MARVIN_FEATURE_BAD_PIXEL_WIDTH: (integer)
9556 + *    Bad pixel detection/correction block register size
9557 + *    MARVIN_FEATURE_10BITS     = 10 bits precision
9558 + *    MARVIN_FEATURE_12BITS     = 12 bits precision
9559 + *    MARVIN_FEATURE_EXIST_NOT  = no bad pixel detection/correction block
9560 + *
9561 + * \par MARVIN_FEATURE_BAD_PIXEL_RAM: (integer)
9562 + *    Bad pixel table ram address size
9563 + *    MARVIN_FEATURE_7BITS      = 128 entries
9564 + *    MARVIN_FEATURE_11BITS     = 2048 entries
9565 + *    MARVIN_FEATURE_EXIST_NOT  = no bad pixel ram block
9566 + *
9567 + * \par MARVIN_FEATURE_SUPERIMPOSE: (boolean)
9568 + *    Superimpose block, used to combine camera picture with a static
9569 + *    one coming from the system memory (chroma keying)
9570 + *
9571 + * \par MARVIN_FEATURE_CHROM_ABERRATION: (boolean)
9572 + *    Chromatic aberration block corrects color fringing
9573 + *
9574 + * \par MARVIN_FEATURE_IMAGE_EFFECTS: (boolean)
9575 + *    Image effects block, various modes like grayscale, sepia, emboss
9576 + *    sketch, etc.
9577 + *
9578 + * \par MARVIN_FEATURE_LENS_SHADING: (boolean)
9579 + *    Lens shading compensation block
9580 + *
9581 + * \par MARVIN_FEATURE_ISP_ERRORFLAGS: (boolean)
9582 + *    Some registers containing more detailed error flags of the ISP.
9583 + *    These may help during system integration.
9584 + *
9585 + * \par MARVIN_FEATURE_FRAMECOUNTER: (boolean)
9586 + *    Frame counter register
9587 + *
9588 + * \par MARVIN_FEATURE_FLASH_LIGHT: (boolean)
9589 + *    Support for frame-synchronized triggering of a LED or xenon based
9590 + *    flashlight
9591 + *
9592 + * \par MARVIN_FEATURE_SHUTTER: (boolean)
9593 + *    Support for driving an external mechanical shutter
9594 + *
9595 + * \par MARVIN_FEATURE_IMG_STABILIZATION: (integer)
9596 + *    Support for digital image stabilization (=compensation against
9597 + *    small movements)
9598 + *    MARVIN_FEATURE_IMG_STABILIZATION_V1 = represents second output formatter
9599 + *                                         at ISP output, no image
9600 + *                                         stabilization functionality, located
9601 + *                                         in the ISP bayer path only.
9602 + *    MARVIN_FEATURE_IMG_STABILIZATION_V2 = represents image stabilization
9603 + *                                         including output formatter, located
9604 + *                                         in both bayer and YCbCr paths, but
9605 + *                                         not in the raw data path.
9606 + *    MARVIN_FEATURE_EXIST_NOT = there is no output image stabilization
9607 + *
9608 + * \par MARVIN_FEATURE_ISP_HISTOGRAM: (boolean)
9609 + *    Histogram measurement block
9610 + *
9611 + * \par MARVIN_FEATURE_ISP_FILTER: (boolean)
9612 + *    Additional burring/sharpness filer
9613 + *
9614 + * \par MARVIN_FEATURE_SMIA: (integer)
9615 + *    SMIA camera protocol version switch
9616 + *    MARVIN_FEATURE_SMIA_MIPI_EMP     = EMP version that contains just the the
9617 + *                                       SMIA and MIPI application protocol
9618 + *                                       with two embedded data areas
9619 + *    MARVIN_FEATURE_SMIA_EM   = EMP version that contains just the the SMIA
9620 + *                                     application protocol
9621 + *    MARVIN_FEATURE_SMIA_COMPLETE= SMIA module that contains the complete SMIA
9622 + *                                     functionality.
9623 + *    MARVIN_FEATURE_EXIST_NOT = there is no SMIA module
9624 + *
9625 + * \par MARVIN_FEATURE_AUTO_EXPOSURE: (integer)
9626 + *    measurement unit for automatic exposure control
9627 + *    MARVIN_FEATURE_AUTO_EXPOSURE_V1 = First implemented auto-exposure
9628 + *                                     algorithm version
9629 + *    MARVIN_FEATURE_AUTO_EXPOSURE_V2 = Second implemented auto-exposure
9630 + *                                     algorithm version
9631 + *
9632 + * \par MARVIN_FEATURE_MI_STATUSFLAGS: (boolean)
9633 + *    MI status flags needed for debugging purposes
9634 + *
9635 + * \par MARVIN_FEATURE_MIPI: (boolean)
9636 + *    MIPI camera protocol block
9637 + *
9638 + * \par MARVIN_FEATURE_SMALL_OUTUNIT: (boolean)
9639 + *    A small output unit instead of MI module
9640 + *
9641 + * \par MARVIN_FEATURE_CLOCK_DOMAINS: (integer)
9642 + *    MARVIN_CLOCK_DOMAINS_1 = One clock domain for the complete MARVIN.
9643 + *    MARVIN_CLOCK_DOMAINS_2 = Two clock domains (Camera data clock and AHB
9644 + *                              clock)
9645 + *
9646 + * \par MARVIN_FEATURE_WB: (integer)
9647 + *    measurement and correction unit for white balance
9648 + *    MARVIN_FEATURE_WB_V1 = basic white balance block
9649 + *    MARVIN_FEATURE_WB_V2 = like version 1, but Y_max added
9650 + *    MARVIN_FEATURE_WB_V3 = like version 2, but green_diff_gain added
9651 + *    MARVIN_FEATURE_WB_V4 = version 4of the white balance block. Extended gain
9652 + *                            range 0..4, resolution 10 bit, separated green
9653 + *                            gains for red and blue rows of bayer pattern.
9654 + *
9655 + * \par MARVIN_FEATURE_OUTPUT_FORMATTER: (integer)
9656 + *    position of the output formatter
9657 + *    MARVIN_FEATURE_OUTPUT_FORMATTER_V1 = exists at ISP output (old style)
9658 + *    MARVIN_FEATURE_OUTPUT_FORMATTER_V2 = exists at ISP input
9659 + *    MARVIN_FEATURE_EXIST_NOT           = there is no output formatter, as
9660 + *                                         the image stabilization contains
9661 + *                                         already this functionality
9662 + *
9663 + * \par MARVIN_FEATURE_MI: (integer)
9664 + *    MARVIN_FEATURE_MI_V1 = basic version
9665 + *    MARVIN_FEATURE_MI_V2 = introducing self-path DMA read
9666 + *    MARVIN_FEATURE_MI_V3 = self path DMA read, rotation, line stripe, 8
9667 + *    beat burst
9668 + *
9669 + * \par MARVIN_FEATURE_DMA_READ: (integer)
9670 + *    MARVIN_FEATURE_DMA_READ_V1 = version 1
9671 + *    MARVIN_FEATURE_DMA_READ_V2 = version 2
9672 + *    MARVIN_FEATURE_DMA_READ_V3 = version 3
9673 + *    MARVIN_FEATURE_DMA_READ_V4 = version 4
9674 + *    MARVIN_FEATURE_EXIST_NOT   = there is no DMA read feature
9675 + *
9676 + * \par MARVIN_FEATURE_JPE_SIZE: (integer)
9677 + *    MARVIN_FEATURE_JPE_SIZE_11BITS =11 Bits for JPE_HSIZE and JPE_VSIZE, only
9678 + *                                    Marvin1.
9679 + *    MARVIN_FEATURE_JPE_SIZE_12BITS =12 Bits for JPE_HSIZE and JPE_VSIZE, all
9680 + *                                    MARVIN3.
9681 + *    MARVIN_FEATURE_JPE_SIZE_13BITS = 13 Bits for JPE_HSIZE and JPE_VSIZE, all
9682 + *                                    MARVIN5.
9683 + *
9684 + * \par MARVIN_FEATURE_BLACK_LEVEL: (integer)
9685 + *    MARVIN_FEATURE_EXIST_NOT      = there is no BLS module
9686 + *    MARVIN_FEATURE_BLACK_LEVEL_V1 = version 1; basic version with  8 Bit
9687 + *                                              registers
9688 + *    MARVIN_FEATURE_BLACK_LEVEL_V2 = version 2; extended version with 10 Bit
9689 + *                                              registers
9690 + *    MARVIN_FEATURE_BLACK_LEVEL_V3 = version 3; extended version with 12 Bit
9691 + *                                              registers
9692 + *    MARVIN_FEATURE_BLACK_LEVEL_V4 = version 4; advanced version with 2
9693 + *                     independent measurement windows
9694 + *             and signed values; 10 Bit
9695 + *              registers
9696 + *    MARVIN_FEATURE_BLACK_LEVEL_V5 = version 5; like version 4
9697 + *    with 12 Bit registers
9698 + *
9699 + * \par MARVIN_FEATURE_DPMUX_YCSPLIT: (integer)
9700 + *    MARVIN_FEATURE_YCS_V1 = traditional datapath setup; separate datapath for
9701 + *                           raw data, y/c splitter does not support self path
9702 + *                           only mode
9703 + *    MARVIN_FEATURE_YCS_V2 = version 2, raw data routed through main path,
9704 + *                            y/c splitter supports self path only mode.
9705 + *
9706 + * \par MARVIN_FEATURE_DPMUX_MAINPATH: (integer)
9707 + *    MARVIN_FEATURE_DPMUX_MAIN_V1 = Traditional mainpath muxer. No direct path
9708 + *                                  from DMA-read to JPEG encoder, explicit RAW
9709 + *                                  datapath to MI
9710 + * MARVIN_FEATURE_DPMUX_MAIN_V2 = new DPCL register settings,
9711 + *     possibility to feed
9712 + *                                  JPEG encoder directly via DMA-Read
9713 + *
9714 + * \par MARVIN_FEATURE_INPUT_AQUISITION: (integer)
9715 + *    MARVIN_FEATURE_IAQU_V1 = Traditional version, supports following modes:
9716 + *                              raw data mode,
9717 + *                              raw picture according to ITU-R BT.601,
9718 + *                              RGB Bayer according to ITU-R BT.601,
9719 + *                              ITU-R BT601 (YCbCr data),
9720 + *                              ITU-R BT656 (YCbCr data)
9721 + *    MARVIN_FEATURE_IAQU_V2 = Additional modes:
9722 + *                               RGB Bayer according to ITU-R BT.656, raw
9723 + *                               picture according to ITU-R BT.656
9724 + *
9725 + * \par MARVIN_FEATURE_JPE: (integer)
9726 + *    MARVIN_FEATURE_JPE_V1 = Basic version
9727 + *    MARVIN_FEATURE_JPE_V2 = Enable bit frame synchronization
9728 + *    MARVIN_FEATURE_JPE_V3 = flags for Motion JPEG
9729 + *
9730 + * \par MARVIN_FEATURE_EXT_YCBCR_RANGE: (boolean)
9731 + *    ???
9732 + *
9733 + * \par MARVIN_FEATURE_SP_DMA: (boolean)
9734 + *    ???
9735 + * \par MARVIN_FEATURE_MI_BURST_16: (boolean)
9736 + *    MARVIN_FEATURE_EXIST          = AHB 16 beat burst
9737 + *    MARVIN_FEATURE_EXIST_NOT      = AHB burst to 8 or 4 is possible
9738 + * \par MARVIN_FEATURE_MI_LAST_PIXEL: (boolean)
9739 + *    last pixel signalization
9740 + */
9741 +
9742 +/* \name Values for all boolean features */
9743 +#define MARVIN_FEATURE_EXIST_NOT        (0)
9744 +#define MARVIN_FEATURE_EXIST            (1)
9745 +
9746 +/*
9747 + * \name Values for MARVIN_FEATURE_FRAMESIZE and
9748 + * MARVIN_FEATURE_MI_FRAMESIZE
9749 + */
9750 +#define MARVIN_FEATURE_1M9    1
9751 +#define MARVIN_FEATURE_3M1    2
9752 +#define MARVIN_FEATURE_5M3    3
9753 +#define MARVIN_FEATURE_12M6   4
9754 +
9755 +/* \name Values for MARVIN_FEATURE_CAMBUSWIDTH and
9756 + * MARVIN_FEATURE_SCALE_FACTORWIDTH
9757 + */
9758 +#define MARVIN_FEATURE_7BITS  7
9759 +#define MARVIN_FEATURE_8BITS  8
9760 +#define MARVIN_FEATURE_9BITS  9
9761 +#define MARVIN_FEATURE_10BITS 10
9762 +#define MARVIN_FEATURE_11BITS 11
9763 +#define MARVIN_FEATURE_12BITS 12
9764 +#define MARVIN_FEATURE_14BITS 14
9765 +#define MARVIN_FEATURE_16BITS 16
9766 +
9767 +/* \name Values for MARVIN_FEATURE_SMIA */
9768 +#define MARVIN_FEATURE_SMIA_COMPLETE   1
9769 +#define MARVIN_FEATURE_SMIA_EMP        2
9770 +#define MARVIN_FEATURE_SMIA_MIPI_EMP   3
9771 +
9772 +/* \name Values for MARVIN_FEATURE_AUTO_EXPOSURE */
9773 +#define MARVIN_FEATURE_AUTO_EXPOSURE_V1  1
9774 +#define MARVIN_FEATURE_AUTO_EXPOSURE_V2  2
9775 +#define MARVIN_FEATURE_AUTO_EXPOSURE_V3  3
9776 +
9777 +/* \name Values for MARVIN_FEATURE_CLOCK_DOMAINS */
9778 +#define MARVIN_CLOCK_DOMAINS_1          1
9779 +#define MARVIN_CLOCK_DOMAINS_2          2
9780 +
9781 +/* \name Values for MARVIN_FEATURE_WB: (integer) */
9782 +#define MARVIN_FEATURE_WB_V4  4
9783 +#define MARVIN_FEATURE_WB_V5  5
9784 +
9785 +/* \name Values for MARVIN_FEATURE_XTALK: (integer) */
9786 +/*  coefficient range -2.0 ... +1.992 ( 9 Bit) */
9787 +#define MARVIN_FEATURE_XTALK_9BITS   2
9788 +/*  coefficient range -4.0 ... +3.992 (10 Bit) */
9789 +#define MARVIN_FEATURE_XTALK_10BITS  3
9790 +/*  coefficient range -8.0 ... +7.992 (11 Bit) */
9791 +#define MARVIN_FEATURE_XTALK_11BITS  4
9792 +
9793 +#define MARVIN_FEATURE_GAMMAIN_10BITS 1
9794 +#define MARVIN_FEATURE_GAMMAIN_12BITS 2
9795 +/* \name Values for MARVIN_FEATURE_OUTPUT_FORMATTER: (integer) */
9796 +#define MARVIN_FEATURE_OUTPUT_FORMATTER_V1  (2)
9797 +#define MARVIN_FEATURE_OUTPUT_FORMATTER_V2  (3)
9798 +
9799 +/* \name Values for MARVIN_FEATURE_IMG_STABILIZATION: (integer) */
9800 +#define MARVIN_FEATURE_IMG_STABILIZATION_V1     (2)
9801 +#define MARVIN_FEATURE_IMG_STABILIZATION_V2     (3)
9802 +
9803 +/*
9804 + * \name Values for MARVIN_FEATURE_SSCALE_FACTORCALC and
9805 + * MARVIN_FEATURE_MSCALE_FACTORCALC: (integer)
9806 + */
9807 +#define MARVIN_FEATURE_SCALEFACTOR_COMBINED_UV  (2)
9808 +#define MARVIN_FEATURE_SCALEFACTOR_SEPARATED_UV (3)
9809 +
9810 +/* \name Values for MARVIN_FEATURE_MI: (integer) */
9811 +#define MARVIN_FEATURE_MI_V1    (2)
9812 +#define MARVIN_FEATURE_MI_V2    (3)
9813 +#define MARVIN_FEATURE_MI_V3    (4)
9814 +#define MARVIN_FEATURE_MI_V4    (5)
9815 +
9816 +/* \name Values for MARVIN_FEATURE_DMA_READ: (integer) */
9817 +#define MARVIN_FEATURE_DMA_READ_V1    (2)
9818 +#define MARVIN_FEATURE_DMA_READ_V2    (3)
9819 +#define MARVIN_FEATURE_DMA_READ_V3    (4)
9820 +#define MARVIN_FEATURE_DMA_READ_V4    (5)
9821 +
9822 +/* \name Values for MARVIN_FEATURE_JPE_SIZE: (integer) */
9823 +#define MARVIN_FEATURE_JPE_SIZE_11BITS 1
9824 +#define MARVIN_FEATURE_JPE_SIZE_12BITS 2
9825 +#define MARVIN_FEATURE_JPE_SIZE_13BITS 3
9826 +
9827 +/* \name Values for MARVIN_FEATURE_BLACK_LEVEL: (integer) */
9828 +#define MARVIN_FEATURE_BLACK_LEVEL_V1   (2)
9829 +#define MARVIN_FEATURE_BLACK_LEVEL_V2   (3)
9830 +#define MARVIN_FEATURE_BLACK_LEVEL_V3   (4)
9831 +#define MARVIN_FEATURE_BLACK_LEVEL_V4   (5)
9832 +#define MARVIN_FEATURE_BLACK_LEVEL_V5   (6)
9833 +
9834 +/* \name Values for MARVIN_FEATURE_DPMUX_YCSPLIT: (integer) */
9835 +#define MARVIN_FEATURE_YCS_V1 1
9836 +#define MARVIN_FEATURE_YCS_V2 2
9837 +
9838 +/* \name Values for MARVIN_FEATURE_DPMUX_MAINPATH: (integer) */
9839 +#define MARVIN_FEATURE_DPMUX_MAIN_V1 1
9840 +#define MARVIN_FEATURE_DPMUX_MAIN_V2 2
9841 +
9842 +/* \name Values for MARVIN_FEATURE_INPUT_AQUISITION: (integer) */
9843 +#define MARVIN_FEATURE_IAQU_V1 1
9844 +#define MARVIN_FEATURE_IAQU_V2 2
9845 +
9846 +/* \name Values for MARVIN_FEATURE_JPE: (integer) */
9847 +#define MARVIN_FEATURE_JPE_V1   (2)
9848 +#define MARVIN_FEATURE_JPE_V2   (3)
9849 +#define MARVIN_FEATURE_JPE_V3   (4)
9850 +
9851 +/* \name Values for MARVIN_FEATURE_JPE_CFG: (integer) */
9852 +#define MARVIN_FEATURE_JPE_CFG_V1   (2)
9853 +#define MARVIN_FEATURE_JPE_CFG_V2   (3)
9854 +
9855 +
9856 +/* \name Values for MARVIN_FEATURE_ISP_FILTER: (integer) */
9857 +#define MARVIN_FEATURE_ISP_FILTER_V1   1
9858 +#define MARVIN_FEATURE_ISP_FILTER_V2   2
9859 +
9860 +/* \name Values for MARVIN_FEATURE_LENS_SHADING: (integer) */
9861 +#define MARVIN_FEATURE_LSC_V1   1
9862 +#define MARVIN_FEATURE_LSC_V2   2
9863 +
9864 +/* \name Values for MARVIN_FEATURE_HISTOGRAM: (integer) */
9865 +#define MARVIN_FEATURE_HIST_V1   1
9866 +#define MARVIN_FEATURE_HIST_V2   2
9867 +#define MARVIN_FEATURE_HIST_V3   3
9868 +
9869 +#define MARVIN_FEATURE_IE_V1     (2)
9870 +#define MARVIN_FEATURE_IE_V2     (3)
9871 +#define MARVIN_FEATURE_IE_V3     (4)
9872 +
9873 +#if (MARVIN_HW == MARVIN_5_V4_R20)
9874 +#define MARVIN_FEATURE_CHIP_ID             0x20453010
9875 +#define MARVIN_FEATURE_CAMBUSWIDTH         MARVIN_FEATURE_12BITS
9876 +#define MARVIN_FEATURE_XTALK               MARVIN_FEATURE_XTALK_11BITS
9877 +    #define MARVIN_FEATURE_GAMMAIN              MARVIN_FEATURE_GAMMAIN_12BITS
9878 +#define MARVIN_FEATURE_GAMMAOUT            MARVIN_FEATURE_EXIST
9879 +#define MARVIN_FEATURE_FRAMESIZE           MARVIN_FEATURE_5M3
9880 +#define MARVIN_FEATURE_SP_DMA              MARVIN_FEATURE_EXIST
9881 +#define MARVIN_FEATURE_SSCALE              MARVIN_FEATURE_EXIST
9882 +#define MARVIN_FEATURE_SSCALE_UP           MARVIN_FEATURE_EXIST
9883 +#define MARVIN_FEATURE_SSCALE_FACTORCALC \
9884 +       MARVIN_FEATURE_SCALEFACTOR_SEPARATED_UV
9885 +#define MARVIN_FEATURE_MSCALE_UP           MARVIN_FEATURE_EXIST
9886 +#define MARVIN_FEATURE_MSCALE_FACTORCALC \
9887 +       MARVIN_FEATURE_SCALEFACTOR_SEPARATED_UV
9888 +#define MARVIN_FEATURE_SCALE_FACTORWIDTH    MARVIN_FEATURE_14BITS
9889 +#define MARVIN_FEATURE_AF_MEASURE          MARVIN_FEATURE_EXIST
9890 +#define MARVIN_FEATURE_BAD_PIXEL           MARVIN_FEATURE_EXIST
9891 +#define MARVIN_FEATURE_BAD_PIXEL_WIDTH     MARVIN_FEATURE_12BITS
9892 +#define MARVIN_FEATURE_BAD_PIXEL_RAM       MARVIN_FEATURE_11BITS
9893 +#define MARVIN_FEATURE_SUPERIMPOSE         MARVIN_FEATURE_EXIST
9894 +#define MARVIN_FEATURE_IMAGE_EFFECTS        MARVIN_FEATURE_IE_V1
9895 +#define MARVIN_FEATURE_LENS_SHADING        MARVIN_FEATURE_LSC_V2
9896 +#define MARVIN_FEATURE_ISP_ERRORFLAGS      MARVIN_FEATURE_EXIST
9897 +#define MARVIN_FEATURE_FRAMECOUNTER        MARVIN_FEATURE_EXIST
9898 +#define MARVIN_FEATURE_FLASH_LIGHT         MARVIN_FEATURE_EXIST
9899 +#define MARVIN_FEATURE_EXT_YCBCR_RANGE     MARVIN_FEATURE_EXIST
9900 +#define MARVIN_FEATURE_SHUTTER             MARVIN_FEATURE_EXIST
9901 +#define MARVIN_FEATURE_IMG_STABILIZATION    MARVIN_FEATURE_IMG_STABILIZATION_V2
9902 +#define MARVIN_FEATURE_ISP_HISTOGRAM       MARVIN_FEATURE_HIST_V2
9903 +#define MARVIN_FEATURE_ISP_CSM              MARVIN_FEATURE_EXIST
9904 +#define MARVIN_FEATURE_ISP_FILTER          MARVIN_FEATURE_ISP_FILTER_V2
9905 +#define MARVIN_FEATURE_SMIA                MARVIN_FEATURE_SMIA_COMPLETE
9906 +#define MARVIN_FEATURE_AUTO_EXPOSURE       MARVIN_FEATURE_AUTO_EXPOSURE_V3
9907 +#define MARVIN_FEATURE_MI_STATUSFLAGS      MARVIN_FEATURE_EXIST
9908 +#define MARVIN_FEATURE_MIPI                MARVIN_FEATURE_EXIST
9909 +#define MARVIN_FEATURE_SMALL_OUTUNIT       MARVIN_FEATURE_EXIST_NOT
9910 +#define MARVIN_FEATURE_CLOCK_DOMAINS       MARVIN_CLOCK_DOMAINS_1
9911 +#define MARVIN_FEATURE_WB                  MARVIN_FEATURE_WB_V5
9912 +#define MARVIN_FEATURE_OUTPUT_FORMATTER     MARVIN_FEATURE_OUTPUT_FORMATTER_V2
9913 +#define MARVIN_FEATURE_MI                  MARVIN_FEATURE_MI_V4
9914 +#define MARVIN_FEATURE_DMA_READ            MARVIN_FEATURE_DMA_READ_V3
9915 +#define MARVIN_FEATURE_JPE_SIZE            MARVIN_FEATURE_JPE_SIZE_13BITS
9916 +#define MARVIN_FEATURE_BLACK_LEVEL         MARVIN_FEATURE_BLACK_LEVEL_V5
9917 +#define MARVIN_FEATURE_DPMUX_YCSPLIT       MARVIN_FEATURE_YCS_V2
9918 +#define MARVIN_FEATURE_DPMUX_MAINPATH      MARVIN_FEATURE_DPMUX_MAIN_V2
9919 +#define MARVIN_FEATURE_INPUT_AQUISITION     MARVIN_FEATURE_IAQU_V2
9920 +#define MARVIN_FEATURE_JPE                 MARVIN_FEATURE_JPE_V3
9921 +#define MARVIN_FEATURE_JPE_CFG             MARVIN_FEATURE_JPE_CFG_V1
9922 +#define MARVIN_FEATURE_XTALK_OFFSET        MARVIN_FEATURE_EXIST
9923 +#define MARVIN_FEATURE_CHROM_ABERRATION     MARVIN_FEATURE_EXIST_NOT
9924 +#define MARVIN_FEATURE_MI_BURST_16         MARVIN_FEATURE_EXIST
9925 +#define MARVIN_FEATURE_MI_LAST_PIXEL       MARVIN_FEATURE_EXIST
9926 +#define MARVIN_FEATURE_MI_FRAMESIZE        MARVIN_FEATURE_12M6
9927 +#define MARVIN_FEATURE_BAYER_RGB           MARVIN_FEATURE_EXIST
9928 +
9929 +#endif /*  MARVIN_HW */
9930 +
9931 +#endif
9932 --- /dev/null
9933 +++ b/drivers/media/video/mrstci/mrstisp/include/reg_access.h
9934 @@ -0,0 +1,233 @@
9935 +/*
9936 + * Support for Moorestown Langwell Camera Imaging ISP subsystem.
9937 + *
9938 + * Copyright (c) 2009 Intel Corporation. All Rights Reserved.
9939 + *
9940 + * Copyright (c) Silicon Image 2008  www.siliconimage.com
9941 + *
9942 + * This program is free software; you can redistribute it and/or
9943 + * modify it under the terms of the GNU General Public License version
9944 + * 2 as published by the Free Software Foundation.
9945 + *
9946 + * This program is distributed in the hope that it will be useful,
9947 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
9948 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9949 + * GNU General Public License for more details.
9950 + *
9951 + * You should have received a copy of the GNU General Public License
9952 + * along with this program; if not, write to the Free Software
9953 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
9954 + * 02110-1301, USA.
9955 + *
9956 + *
9957 + * Xiaolin Zhang <xiaolin.zhang@intel.com>
9958 + */
9959 +
9960 +#ifndef _REG_ACCESS_H
9961 +#define _REG_ACCESS_H
9962 +
9963 +/*
9964 + * Notes:
9965 + *
9966 + * registers:
9967 + * - use these macros to allow a central way e.g. to print out debug
9968 + *   information on register access
9969 + *
9970 + *   slices:
9971 + * - "parameter" \a reg could be a hardware register or a (32bit) variable,
9972 + *   but not a pointer!
9973 + * - each slice (specified as "parameter" \a name) requires two \#defines:
9974 + *   \b \<name\>_MASK  : defines the mask to use on register side
9975 + *   \b \<name\>_SHIFT : defines the shift value to use (left on write, right
9976 + *   on read)
9977 + *
9978 + * arrays:
9979 + * - "parameter" \a areg could be an (32bit) array or a pointer to the
9980 + *   first array element
9981 + * - each one-dimensional array (specified as "parameter" \a name) requires
9982 + *   one \#define
9983 + * - <tt> \<name\>_ARR_SIZE </tt>: number of elements
9984 + * - each two-dimensional array (specified as "parameter" <name>) requires
9985 + *   four \#defines:
9986 + * - <tt> \<name\>_ARR_SIZE1 </tt>: number of elements in first dimension
9987 + * - <tt> \<name\>_ARR_SIZE2 </tt>: number of elements in second dimension
9988 + * - <tt> \<name\>_ARR_OFS1  </tt>: offset between two consecutive elements
9989 + *   in first dimension
9990 + * - <tt> \<name\>_ARR_OFS2  </tt>: offset between two consecutive elements
9991 + *   in second dimension
9992 + */
9993 +
9994 +/*
9995 + * reads and returns the complete value of register \a reg
9996 + * \note Use these macro to allow a central way e.g. to print out debug
9997 + * information on register access.
9998 + */
9999 +
10000 +/* helper function to let REG_READ return the value */
10001 +
10002 +#define DBG_DD(x) \
10003 +       do { \
10004 +               if (mrstisp_debug >= 4) {       \
10005 +                       printk(KERN_INFO "mrstisp@%s ", __func__);      \
10006 +                       printk x; \
10007 +               }       \
10008 +       } while (0)
10009 +
10010 +static inline u32 _reg_read(u32 reg, const char *text)
10011 +{
10012 +       u32 variable = reg;
10013 +       DBG_DD((text, variable));
10014 +       return variable;
10015 +}
10016 +
10017 +#define REG_READ(reg) \
10018 +_reg_read((reg),  "REG_READ(" VAL2STR(reg) "): 0x%08X\n")
10019 +
10020 +static inline u32 _reg_read_ex(u32 reg, const char *text)
10021 +{
10022 +       u32 variable = reg;
10023 +       DBG_DD((text, variable));
10024 +       return variable;
10025 +}
10026 +
10027 +#define REG_READ_EX(reg) \
10028 +_reg_read_ex((reg),  "REG_READ_EX(" VAL2STR(reg) "): 0x%08X\n")
10029 +/*
10030 + * writes the complete value \a value into register \a reg
10031 + * \note Use these macro to allow a central way e.g. to print out debug
10032 + * information on register access.
10033 + */
10034 +#define REG_WRITE(reg, value) \
10035 +{ \
10036 +       dprintk(4, \
10037 +       "REG_WRITE(" VAL2STR(reg) ", " VAL2STR(value) "): 0x%08X", (value)); \
10038 +       (reg) = (value); \
10039 +}
10040 +
10041 +#define REG_WRITE_EX(reg, value) \
10042 +{ \
10043 +       (reg) = (value); \
10044 +}
10045 +
10046 +
10047 +/*
10048 + * returns the value of slice \a name from register or variable \a reg
10049 + * \note "parameter" \a reg could be a hardware register or a (32bit)
10050 + * variable, but not a pointer! \n
10051 + * each slice (specified as "parameter" \a name) requires two \#defines: \n
10052 + * - <tt>\<name\>_MASK  </tt>: defines the mask to use on register side
10053 + * - <tt>\<name\>_SHIFT </tt>: defines the shift value to use (left on write,
10054 + *   right on read)
10055 + */
10056 +
10057 +static inline u32 _reg_get_slice(const char *text, u32 val)
10058 +{
10059 +       u32 variable = val;
10060 +       DBG_DD((text, variable));
10061 +       return val;
10062 +}
10063 +
10064 +#define REG_GET_SLICE_EX(reg, name) \
10065 +       (((reg) & (name##_MASK)) >> (name##_SHIFT))
10066 +
10067 +#define REG_GET_SLICE(reg, name) \
10068 +       _reg_get_slice("REG_GET_SLICE(" VAL2STR(reg) ", " VAL2STR(name) \
10069 +                      "): 0x%08X\n" , \
10070 +       (((reg) & (name##_MASK)) >> (name##_SHIFT)))
10071 +
10072 +/*
10073 + * writes the value \a value into slice \a name of register or variable \a reg
10074 + * \note "parameter" \a reg could be a hardware register or a (32bit) variable,
10075 + * but not a pointer! \n
10076 + * each slice (specified as "parameter" \a name) requires two \#defines: \n
10077 + * - <tt>\<name\>_MASK  </tt>: defines the mask to use on register side
10078 + * - <tt>\<name\>_SHIFT </tt>: defines the shift value to use (left on write,
10079 + *   right on read)
10080 + */
10081 +#define REG_SET_SLICE(reg, name, value) \
10082 +{ \
10083 +       dprintk(4, \
10084 +               "REG_SET_SLICE(" VAL2STR(reg) ", " VAL2STR(name) \
10085 +               ", " VAL2STR(value) "): 0x%08X", \
10086 +               (value));       \
10087 +               ((reg) = (((reg) & ~(name##_MASK)) | \
10088 +               (((value) << (name##_SHIFT)) & (name##_MASK)))); \
10089 +}
10090 +
10091 +#define REG_SET_SLICE_EX(reg, name, value) \
10092 +{ \
10093 +               ((reg) = (((reg) & ~(name##_MASK)) | \
10094 +               (((value) << (name##_SHIFT)) & (name##_MASK)))); \
10095 +}
10096 +
10097 +/*
10098 + * returns the value of element \a idx from register array or array variable \a
10099 + * areg
10100 + * \note "parameter" \a areg could be an (32bit) array or a pointer to the first
10101 + * array element \n
10102 + * each one-dimensional array (specified as "parameter" \a name) requires one
10103 + * \#define: \n
10104 + *        - <tt>\<name\>_ARR_SIZE </tt>: number of elements
10105 + */
10106 +#define REG_GET_ARRAY_ELEM1(areg, name, idx) \
10107 +((idx < name##_ARR_SIZE) \
10108 +? areg[idx] \
10109 +: 0)
10110 +
10111 +
10112 +/*
10113 + * writes the value \a value into element \a idx of register array or array
10114 + * variable \a areg
10115 + * \note "parameter" \a areg could be an (32bit) array or a pointer to the
10116 + * first array element \n
10117 + *       each one-dimensional array (specified as "parameter" \a name) requires
10118 + *       one \#define: \n
10119 + *        - <tt>\<name\>_ARR_SIZE </tt>: number of elements
10120 + */
10121 +#define REG_SET_ARRAY_ELEM1(areg, name, idx, value) \
10122 +((idx < name##_ARR_SIZE) \
10123 +? areg[idx] = value \
10124 +: 0)
10125 +
10126 +
10127 +/*
10128 + * returns the value of element \a idx1, \a idx2 from two-dimensional register
10129 + * array or array variable \a areg
10130 + * \note "parameter" \a areg could be an (32bit) array or a pointer to the
10131 + * first array element \n
10132 + *       each two-dimensional array (specified as "parameter" \a name) requires
10133 + *       four \#defines:
10134 + *        - <tt>\<name\>_ARR_SIZE1 </tt>: number of elements in first dimension
10135 + *        - <tt>\<name\>_ARR_SIZE2 </tt>: number of elements in second dimension
10136 + *        - <tt>\<name\>_ARR_OFS1  </tt>: offset between two consecutive
10137 + *        elements in first dimension
10138 + *        - <tt>\<name\>_ARR_OFS2  </tt>: offset between two consecutive
10139 + *        elements in second dimension
10140 + */
10141 +#define REG_GET_ARRAY_ELEM2(areg, name, idx1, idx2) \
10142 +(((idx1 < name##_ARR_SIZE1) && (idx2 < name##_ARR_SIZE2)) \
10143 +? areg[(idx1 * name##_ARR_OFS1) + (idx2 * name##_ARR_OFS2)] \
10144 +: 0)
10145 +
10146 +
10147 +/*
10148 + * writes the value \a value into element \a idx1, \a idx2 of two-dimensional
10149 + * register array or array variable \a areg
10150 + * \note "parameter" \a areg could be an (32bit) array or a pointer to the
10151 + * first array element \n
10152 + *       each two-dimensional array (specified as "parameter" \a name) requires
10153 + *       four \#defines:
10154 + *        - <tt>\<name\>_ARR_SIZE1 </tt>: number of elements in first dimension
10155 + *        - <tt>\<name\>_ARR_SIZE2 </tt>: number of elements in second dimension
10156 + *        - <tt>\<name\>_ARR_OFS1  </tt>: offset between two consecutive
10157 + *        elements in first dimension
10158 + *        - <tt>\<name\>_ARR_OFS2  </tt>: offset between two consecutive
10159 + *        elements in second dimension
10160 + */
10161 +#define REG_SET_ARRAY_ELEM2(areg, name, idx1, idx2, value) \
10162 +(((idx1 < name##_ARR_SIZE1) && (idx2 < name##_ARR_SIZE2)) \
10163 +? areg[(idx1 * name##_ARR_OFS1) + (idx2 * name##_ARR_OFS2)] = value \
10164 +: 0)
10165 +
10166 +/*  _REG_ACCESS_H */
10167 +#endif