fimc-is: change metadata header as uapi header
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Thu, 22 Jun 2017 09:41:20 +0000 (18:41 +0900)
committerInki Dae <inki.dae@samsung.com>
Mon, 3 Dec 2018 00:56:49 +0000 (09:56 +0900)
The header fimc-is-metadata.h is required from user, so it should
be a uapi header. So this patch moves the header to uapi header.

Change-Id: I5618889c806d4463da0bf0ea947bf5d1b667d5e3
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
drivers/media/platform/exynos/fimc-is/fimc-is-interface.h
drivers/media/platform/exynos/fimc-is/fimc-is-metadata.h [deleted file]
drivers/media/platform/exynos/fimc-is/fimc-is-video-3aa.c
drivers/media/platform/exynos/fimc-is/fimc-is-video-isp.c
drivers/media/platform/exynos/fimc-is/fimc-is-video-sensor.c
drivers/media/platform/exynos/fimc-is/fimc-is-video-vdiso.c
drivers/media/platform/exynos/fimc-is/fimc-is-video.h
include/uapi/linux/fimc-is-metadata.h [new file with mode: 0644]

index d4ea64eb946b1b411c02fbaf30707c332b845caa..34c11cf5a937fb6ac412b947d04947807db13be1 100644 (file)
@@ -14,7 +14,8 @@
 #ifndef FIMC_IS_INTERFACE_H
 #define FIMC_IS_INTERFACE_H
 
-#include "fimc-is-metadata.h"
+#include <linux/fimc-is-metadata.h>
+
 #include "fimc-is-framemgr.h"
 #include "fimc-is-video.h"
 #include "fimc-is-time.h"
diff --git a/drivers/media/platform/exynos/fimc-is/fimc-is-metadata.h b/drivers/media/platform/exynos/fimc-is/fimc-is-metadata.h
deleted file mode 100644 (file)
index f2f27c7..0000000
+++ /dev/null
@@ -1,1472 +0,0 @@
-/* Copyright (c) 2011 Samsung Electronics Co, Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-
- *
-
- * Alternatively, Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-
- */
-
-#ifndef FIMC_IS_METADATA_H_
-#define FIMC_IS_METADATA_H_
-
-#ifndef _LINUX_TYPES_H
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef signed short int16_t;
-typedef signed int int32_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-#endif
-
-struct rational {
-       uint32_t num;
-       uint32_t den;
-};
-
-#define CAMERA2_MAX_AVAILABLE_MODE     21
-#define CAMERA2_MAX_FACES              16
-#define CAMERA2_MAX_VENDER_LENGTH      400
-#define CAPTURE_NODE_MAX               2
-#define CAMERA2_MAX_PDAF_MULTIROI_COLUMN 9
-#define CAMERA2_MAX_PDAF_MULTIROI_ROW 5
-
-#define OPEN_MAGIC_NUMBER              0x01020304
-#define SHOT_MAGIC_NUMBER              0x23456789
-
-/*
- *controls/dynamic metadata
-*/
-
-/* android.request */
-
-enum metadata_mode {
-       METADATA_MODE_NONE,
-       METADATA_MODE_FULL
-};
-
-struct camera2_request_ctl {
-       uint32_t                id;
-       enum metadata_mode      metadataMode;
-       uint8_t                 outputStreams[16];
-       uint32_t                frameCount;
-        uint32_t               requestCount;
-};
-
-struct camera2_request_dm {
-       uint32_t                id;
-       enum metadata_mode      metadataMode;
-       uint32_t                frameCount;
-        uint32_t               requestCount;
-};
-
-struct camera2_entry_ctl {
-       /** \brief
-               per-frame control for entry control
-               \remarks
-               low parameter is 0bit ~ 31bit flag
-               high parameter is 32bit ~ 63bit flag
-       */
-       uint32_t                lowIndexParam;
-       uint32_t                highIndexParam;
-       uint32_t                parameter[2048];
-};
-
-struct camera2_entry_dm {
-       uint32_t                lowIndexParam;
-       uint32_t                highIndexParam;
-};
-
-/* android.lens */
-
-enum optical_stabilization_mode {
-       OPTICAL_STABILIZATION_MODE_OFF = 1,
-       OPTICAL_STABILIZATION_MODE_ON = 2,
-       OPTICAL_STABILIZATION_MODE_STILL = 3,  // Still mode
-       OPTICAL_STABILIZATION_MODE_STILL_ZOOM = 4, // Still Zoom mode
-       OPTICAL_STABILIZATION_MODE_VIDEO = 5,  // Recording mode
-       OPTICAL_STABILIZATION_MODE_SINE_X = 6,  // factory mode x
-       OPTICAL_STABILIZATION_MODE_SINE_Y = 7,  // factory mode y
-       OPTICAL_STABILIZATION_MODE_CENTERING = 8 // Centering mode
-};
-
-enum lens_facing {
-       LENS_FACING_BACK,
-       LENS_FACING_FRONT
-};
-
-struct camera2_lens_ctl {
-       uint32_t                                focusDistance;
-       float                                   aperture;
-       float                                   focalLength;
-       float                                   filterDensity;
-       enum optical_stabilization_mode         opticalStabilizationMode;
-
-};
-
-struct camera2_lens_dm {
-       uint32_t                                focusDistance;
-       float                                   aperture;
-       float                                   focalLength;
-       float                                   filterDensity;
-       enum optical_stabilization_mode         opticalStabilizationMode;
-       float                                   focusRange[2];
-};
-
-struct camera2_lens_sm {
-       float                           minimumFocusDistance;
-       float                           hyperfocalDistance;
-       float                           availableFocalLength[2];
-       float                           availableApertures;
-       /*assuming 1 aperture*/
-       float                           availableFilterDensities;
-       /*assuming 1 ND filter value*/
-       enum optical_stabilization_mode availableOpticalStabilization;
-       /*assuming 1*/
-       uint32_t                        shadingMapSize;
-       float                           shadingMap[3][40][30];
-       uint32_t                        geometricCorrectionMapSize;
-       float                           geometricCorrectionMap[2][3][40][30];
-       enum lens_facing                facing;
-       float                           position[2];
-};
-
-/* android.sensor */
-
-enum sensor_colorfilterarrangement {
-       SENSOR_COLORFILTERARRANGEMENT_RGGB,
-       SENSOR_COLORFILTERARRANGEMENT_GRBG,
-       SENSOR_COLORFILTERARRANGEMENT_GBRG,
-       SENSOR_COLORFILTERARRANGEMENT_BGGR,
-       SENSOR_COLORFILTERARRANGEMENT_RGB
-};
-
-enum sensor_ref_illuminant {
-       SENSOR_ILLUMINANT_DAYLIGHT = 1,
-       SENSOR_ILLUMINANT_FLUORESCENT = 2,
-       SENSOR_ILLUMINANT_TUNGSTEN = 3,
-       SENSOR_ILLUMINANT_FLASH = 4,
-       SENSOR_ILLUMINANT_FINE_WEATHER = 9,
-       SENSOR_ILLUMINANT_CLOUDY_WEATHER = 10,
-       SENSOR_ILLUMINANT_SHADE = 11,
-       SENSOR_ILLUMINANT_DAYLIGHT_FLUORESCENT = 12,
-       SENSOR_ILLUMINANT_DAY_WHITE_FLUORESCENT = 13,
-       SENSOR_ILLUMINANT_COOL_WHITE_FLUORESCENT = 14,
-       SENSOR_ILLUMINANT_WHITE_FLUORESCENT = 15,
-       SENSOR_ILLUMINANT_STANDARD_A = 17,
-       SENSOR_ILLUMINANT_STANDARD_B = 18,
-       SENSOR_ILLUMINANT_STANDARD_C = 19,
-       SENSOR_ILLUMINANT_D55 = 20,
-       SENSOR_ILLUMINANT_D65 = 21,
-       SENSOR_ILLUMINANT_D75 = 22,
-       SENSOR_ILLUMINANT_D50 = 23,
-       SENSOR_ILLUMINANT_ISO_STUDIO_TUNGSTEN = 24
-};
-
-struct camera2_sensor_ctl {
-       /* unit : nano */
-       uint64_t        exposureTime;
-       /* unit : nano(It's min frame duration */
-       uint64_t        frameDuration;
-       /* unit : percent(need to change ISO value?) */
-       uint32_t        sensitivity;
-};
-
-struct camera2_sensor_dm {
-       uint64_t        exposureTime;
-       uint64_t        frameDuration;
-       uint32_t        sensitivity;
-       uint64_t        timeStamp;
-       uint32_t        analogGain;
-       uint32_t        digitalGain;
-};
-
-struct camera2_sensor_sm {
-       uint32_t        exposureTimeRange[2];
-       uint32_t        maxFrameDuration;
-       /* list of available sensitivities. */
-       uint32_t        availableSensitivities[10];
-       enum sensor_colorfilterarrangement colorFilterArrangement;
-       float           physicalSize[2];
-       uint32_t        pixelArraySize[2];
-       uint32_t        activeArraySize[4];
-       uint32_t        whiteLevel;
-       uint32_t        blackLevelPattern[4];
-       struct rational colorTransform1[9];
-       struct rational colorTransform2[9];
-       enum sensor_ref_illuminant      referenceIlluminant1;
-       enum sensor_ref_illuminant      referenceIlluminant2;
-       struct rational forwardMatrix1[9];
-       struct rational forwardMatrix2[9];
-       struct rational calibrationTransform1[9];
-       struct rational calibrationTransform2[9];
-       struct rational baseGainFactor;
-       uint32_t        maxAnalogSensitivity;
-       float           noiseModelCoefficients[2];
-       uint32_t        orientation;
-};
-
-
-
-/* android.flash */
-
-enum flash_mode {
-       CAM2_FLASH_MODE_OFF = 1,
-       CAM2_FLASH_MODE_SINGLE,
-       CAM2_FLASH_MODE_TORCH,
-       CAM2_FLASH_MODE_BEST
-};
-
-enum capture_state {
-    CAPTURE_STATE_NONE = 0,
-    CAPTURE_STATE_FLASH = 1,
-    CAPTURE_STATE_HDR_DARK = 12,
-    CAPTURE_STATE_HDR_NORMAL = 13,
-    CAPTURE_STATE_HDR_BRIGHT = 14,
-    CAPTURE_STATE_ZSL_LIKE = 20,
-};
-
-struct camera2_flash_ctl {
-       enum flash_mode         flashMode;
-       uint32_t                firingPower;
-       uint64_t                firingTime;
-};
-
-struct camera2_flash_dm {
-       enum flash_mode         flashMode;
-       /*10 is max power*/
-       uint32_t                firingPower;
-       /*unit : microseconds*/
-       uint64_t                firingTime;
-       /*1 : stable, 0 : unstable*/
-       uint32_t                firingStable;
-       /*1 : success, 0 : fail*/
-       uint32_t                decision;
-       /*0: None, 1 : pre, 2 : main flash ready*/
-       uint32_t                flashReady;
-       /*0: None, 1 : pre, 2 : main flash off ready*/
-       uint32_t                flashOffReady;
-};
-
-struct camera2_flash_sm {
-       uint32_t        available;
-       uint64_t        chargeDuration;
-};
-
-
-/* android.hotpixel */
-
-enum processing_mode {
-       PROCESSING_MODE_OFF = 1,
-       PROCESSING_MODE_FAST,
-       PROCESSING_MODE_HIGH_QUALITY
-};
-
-
-struct camera2_hotpixel_ctl {
-       enum processing_mode    mode;
-};
-
-struct camera2_hotpixel_dm {
-       enum processing_mode    mode;
-};
-
-
-
-/* android.demosaic */
-
-struct camera2_demosaic_ctl {
-       enum processing_mode    mode;
-};
-
-struct camera2_demosaic_dm {
-       enum processing_mode    mode;
-};
-
-
-
-/* android.noiseReduction */
-
-struct camera2_noisereduction_ctl {
-       enum processing_mode    mode;
-       uint32_t                strength;
-};
-
-struct camera2_noisereduction_dm {
-       enum processing_mode    mode;
-       uint32_t                strength;
-};
-
-
-
-/* android.shading */
-
-struct camera2_shading_ctl {
-       enum processing_mode    mode;
-};
-
-struct camera2_shading_dm {
-       enum processing_mode    mode;
-};
-
-
-
-/* android.geometric */
-
-struct camera2_geometric_ctl {
-       enum processing_mode    mode;
-};
-
-struct camera2_geometric_dm {
-       enum processing_mode    mode;
-};
-
-
-
-/* android.colorCorrection */
-
-enum colorcorrection_mode {
-       COLORCORRECTION_MODE_FAST = 1,
-       COLORCORRECTION_MODE_HIGH_QUALITY,
-       COLORCORRECTION_MODE_TRANSFORM_MATRIX,
-       COLORCORRECTION_MODE_EFFECT_MONO,
-       COLORCORRECTION_MODE_EFFECT_NEGATIVE,
-       COLORCORRECTION_MODE_EFFECT_SOLARIZE,
-       COLORCORRECTION_MODE_EFFECT_SEPIA,
-       COLORCORRECTION_MODE_EFFECT_POSTERIZE,
-       COLORCORRECTION_MODE_EFFECT_WHITEBOARD,
-       COLORCORRECTION_MODE_EFFECT_BLACKBOARD,
-       COLORCORRECTION_MODE_EFFECT_AQUA,
-       COLORCORRECTION_MODE_EFFECT_EMBOSS,
-       COLORCORRECTION_MODE_EFFECT_EMBOSS_MONO,
-       COLORCORRECTION_MODE_EFFECT_SKETCH,
-       COLORCORRECTION_MODE_EFFECT_RED_YELLOW_POINT,
-       COLORCORRECTION_MODE_EFFECT_GREEN_POINT,
-       COLORCORRECTION_MODE_EFFECT_BLUE_POINT,
-       COLORCORRECTION_MODE_EFFECT_MAGENTA_POINT,
-       COLORCORRECTION_MODE_EFFECT_WARM_VINTAGE,
-       COLORCORRECTION_MODE_EFFECT_COLD_VINTAGE,
-       COLORCORRECTION_MODE_EFFECT_WASHED,
-       COLORCORRECTION_MODE_EFFECT_BEAUTY_FACE,
-       TOTAOCOUNT_COLORCORRECTION_MODE_EFFECT
-};
-
-
-struct camera2_colorcorrection_ctl {
-       enum colorcorrection_mode       mode;
-       float                           transform[9];
-       uint32_t                        hue;
-       uint32_t                        saturation;
-       uint32_t                        brightness;
-       uint32_t                        contrast;
-};
-
-struct camera2_colorcorrection_dm {
-       enum colorcorrection_mode       mode;
-       float                           transform[9];
-       uint32_t                        hue;
-       uint32_t                        saturation;
-       uint32_t                        brightness;
-       uint32_t                        contrast;
-};
-
-struct camera2_colorcorrection_sm {
-       /*assuming 10 supported modes*/
-       uint8_t                 availableModes[CAMERA2_MAX_AVAILABLE_MODE];
-       uint32_t                hueRange[2];
-       uint32_t                saturationRange[2];
-       uint32_t                brightnessRange[2];
-       uint32_t                contrastRange[2];
-};
-
-
-/* android.tonemap */
-
-enum tonemap_mode {
-       TONEMAP_MODE_FAST = 1,
-       TONEMAP_MODE_HIGH_QUALITY,
-       TONEMAP_MODE_CONTRAST_CURVE
-};
-
-struct camera2_tonemap_ctl {
-       enum tonemap_mode               mode;
-       /* assuming maxCurvePoints = 64 */
-       float                           curveRed[64];
-       float                           curveGreen[64];
-       float                           curveBlue[64];
-};
-
-struct camera2_tonemap_dm {
-       enum tonemap_mode               mode;
-       /* assuming maxCurvePoints = 64 */
-       float                           curveRed[64];
-       float                           curveGreen[64];
-       float                           curveBlue[64];
-};
-
-struct camera2_tonemap_sm {
-       uint32_t        maxCurvePoints;
-};
-
-/* android.edge */
-
-struct camera2_edge_ctl {
-       enum processing_mode    mode;
-       uint32_t                strength;
-};
-
-struct camera2_edge_dm {
-       enum processing_mode    mode;
-       uint32_t                strength;
-};
-
-
-
-/* android.scaler */
-
-enum scaler_availableformats {
-       SCALER_FORMAT_BAYER_RAW,
-       SCALER_FORMAT_YV12,
-       SCALER_FORMAT_NV21,
-       SCALER_FORMAT_JPEG,
-       SCALER_FORMAT_UNKNOWN
-};
-
-struct camera2_scaler_ctl {
-       uint32_t        cropRegion[4];
-       uint32_t        orientation;
-};
-
-struct camera2_scaler_dm {
-       uint32_t        cropRegion[4];
-       uint32_t        orientation;
-};
-
-struct camera2_scaler_sm {
-       enum scaler_availableformats availableFormats[4];
-       /*assuming # of availableFormats = 4*/
-       uint32_t        availableRawSizes;
-       uint64_t        availableRawMinDurations;
-       /* needs check */
-       uint32_t        availableProcessedSizes[8];
-       uint64_t        availableProcessedMinDurations[8];
-       uint32_t        availableJpegSizes[8][2];
-       uint64_t        availableJpegMinDurations[8];
-       uint32_t        availableMaxDigitalZoom[8];
-};
-
-/* android.jpeg */
-struct camera2_jpeg_ctl {
-       uint32_t        quality;
-       uint32_t        thumbnailSize[2];
-       uint32_t        thumbnailQuality;
-       double          gpsCoordinates[3];
-       uint32_t        gpsProcessingMethod;
-       uint64_t        gpsTimestamp;
-       uint32_t        orientation;
-};
-
-struct camera2_jpeg_dm {
-       uint32_t        quality;
-       uint32_t        thumbnailSize[2];
-       uint32_t        thumbnailQuality;
-       double          gpsCoordinates[3];
-       uint32_t        gpsProcessingMethod;
-       uint64_t        gpsTimestamp;
-       uint32_t        orientation;
-};
-
-struct camera2_jpeg_sm {
-       uint32_t        availableThumbnailSizes[8][2];
-       uint32_t        maxSize;
-       /*assuming supported size=8*/
-};
-
-
-
-/* android.statistics */
-
-enum facedetect_mode {
-       FACEDETECT_MODE_OFF = 1,
-       FACEDETECT_MODE_SIMPLE,
-       FACEDETECT_MODE_FULL
-};
-
-enum stats_mode {
-       STATS_MODE_OFF = 1,
-       STATS_MODE_ON
-};
-
-enum stats_lowlightmode {
-    STATE_LLS_LEVEL_ZSL = 0,
-    STATE_LLS_LEVEL_LOW = 1,
-    STATE_LLS_LEVEL_HIGH = 2,
-    STATE_LLS_LEVEL_SIS = 3,
-    STATE_LLS_LEVEL_ZSL_LIKE = 4,
-    STATE_LLS_LEVEL_ZSL_FLASH = 16,
-};
-
-struct camera2_stats_ctl {
-       enum facedetect_mode    faceDetectMode;
-       enum stats_mode         histogramMode;
-       enum stats_mode         sharpnessMapMode;
-};
-
-
-struct camera2_stats_dm {
-       enum facedetect_mode    faceDetectMode;
-       uint32_t                faceRectangles[CAMERA2_MAX_FACES][4];
-       uint8_t                 faceScores[CAMERA2_MAX_FACES];
-       uint32_t                faceLandmarks[CAMERA2_MAX_FACES][6];
-       uint32_t                faceIds[CAMERA2_MAX_FACES];
-/* PAYTON_CHECK_20120712 : histogram_mode -> stats_mode */
-       enum stats_mode         histogramMode;
-/* [hj529.kim, 2012/07/19] androd.statistics.histogram */
-       uint32_t                histogram[3 * 256];
-/* PAYTON_CHECK_20120712 : sharpnessmap_mode -> stats_mode */
-       enum stats_mode         sharpnessMapMode;
-       /*sharpnessMap*/
-       enum stats_lowlightmode LowLightMode;
-       uint32_t lls_tuning_set_index;
-       uint32_t lls_brightness_index;
-};
-
-
-struct camera2_stats_sm {
-       uint8_t         availableFaceDetectModes[CAMERA2_MAX_AVAILABLE_MODE];
-       /*assuming supported modes = 3;*/
-       uint32_t        maxFaceCount;
-       uint32_t        histogramBucketCount;
-       uint32_t        maxHistogramCount;
-       uint32_t        sharpnessMapSize[2];
-       uint32_t        maxSharpnessMapValue;
-};
-
-/* android.control */
-
-enum aa_capture_intent {
-       AA_CAPTURE_INTENT_CUSTOM = 0,
-       AA_CAPTURE_INTENT_PREVIEW,
-       AA_CAPTURE_INTENT_STILL_CAPTURE,
-       AA_CAPTURE_INTENT_VIDEO_RECORD,
-       AA_CAPTURE_INTENT_VIDEO_SNAPSHOT,
-       AA_CAPTURE_INTENT_ZERO_SHUTTER_LAG,
-       AA_CAPTURE_INTENT_STILL_CAPTURE_OIS_SINGLE,
-       AA_CAPTURE_INTENT_STILL_CAPTURE_OIS_MULTI
-};
-
-enum aa_mode {
-       AA_CONTROL_OFF = 1,
-       AA_CONTROL_AUTO,
-       AA_CONTROL_USE_SCENE_MODE
-};
-
-enum aa_scene_mode {
-       AA_SCENE_MODE_UNSUPPORTED = 1,
-       AA_SCENE_MODE_FACE_PRIORITY,
-       AA_SCENE_MODE_ACTION,
-       AA_SCENE_MODE_PORTRAIT,
-       AA_SCENE_MODE_LANDSCAPE,
-       AA_SCENE_MODE_NIGHT,
-       AA_SCENE_MODE_NIGHT_PORTRAIT,
-       AA_SCENE_MODE_THEATRE,
-       AA_SCENE_MODE_BEACH,
-       AA_SCENE_MODE_SNOW,
-       AA_SCENE_MODE_SUNSET,
-       AA_SCENE_MODE_STEADYPHOTO,
-       AA_SCENE_MODE_FIREWORKS,
-       AA_SCENE_MODE_SPORTS,
-       AA_SCENE_MODE_PARTY,
-       AA_SCENE_MODE_CANDLELIGHT,
-       AA_SCENE_MODE_BARCODE,
-       AA_SCENE_MODE_NIGHT_CAPTURE,
-       AA_SCENE_MODE_ANTISHAKE,
-       AA_SCENE_MODE_HDR,
-       AA_SCENE_MODE_LLS,
-       AA_SCENE_MODE_FDAE,
-       AA_SCENE_MODE_DUAL,
-       AA_SCENE_MODE_DRAMA,
-       AA_SCENE_MODE_ANIMATED,
-       AA_SCENE_MODE_PANORAMA,
-       AA_SCENE_MODE_GOLF,
-       AA_SCENE_MODE_PREVIEW,
-       AA_SCENE_MODE_VIDEO,
-       AA_SCENE_MODE_SLOWMOTION_2,
-       AA_SCENE_MODE_SLOWMOTION_4_8,
-       AA_SCENE_MODE_DUAL_PREVIEW,
-       AA_SCENE_MODE_DUAL_VIDEO,
-       AA_SCENE_MODE_120_PREVIEW,
-       AA_SCENE_MODE_LIGHT_TRACE
-};
-
-enum aa_effect_mode {
-       AA_EFFECT_OFF = 1,
-       AA_EFFECT_MONO,
-       AA_EFFECT_NEGATIVE,
-       AA_EFFECT_SOLARIZE,
-       AA_EFFECT_SEPIA,
-       AA_EFFECT_POSTERIZE,
-       AA_EFFECT_WHITEBOARD,
-       AA_EFFECT_BLACKBOARD,
-       AA_EFFECT_AQUA
-};
-
-enum aa_aemode {
-       AA_AEMODE_OFF = 1,
-       AA_AEMODE_LOCKED,
-       AA_AEMODE_CENTER,
-       AA_AEMODE_AVERAGE,
-       AA_AEMODE_MATRIX,
-       AA_AEMODE_SPOT,
-       AA_AEMODE_CENTER_TOUCH,
-       AA_AEMODE_AVERAGE_TOUCH,
-       AA_AEMODE_MATRIX_TOUCH,
-       AA_AEMODE_SPOT_TOUCH
-};
-
-enum aa_ae_flashmode {
-       /*all flash control stop*/
-       AA_FLASHMODE_OFF = 1,
-       /*flash start*/
-       AA_FLASHMODE_START,
-       /*flash cancle*/
-       AA_FLASHMODE_CANCLE,
-       /*internal 3A can control flash*/
-       AA_FLASHMODE_ON,
-       /*internal 3A can do auto flash algorithm*/
-       AA_FLASHMODE_AUTO,
-       /*internal 3A can fire flash by auto result*/
-       AA_FLASHMODE_CAPTURE,
-       /*internal 3A can control flash forced*/
-       AA_FLASHMODE_ON_ALWAYS
-};
-
-enum aa_ae_antibanding_mode {
-       AA_AE_ANTIBANDING_OFF = 1,
-       AA_AE_ANTIBANDING_50HZ,
-       AA_AE_ANTIBANDING_60HZ,
-       AA_AE_ANTIBANDING_AUTO,
-       AA_AE_ANTIBANDING_AUTO_50HZ,   /*50Hz + Auto*/
-       AA_AE_ANTIBANDING_AUTO_60HZ    /*60Hz + Auto*/
-};
-
-enum aa_awbmode {
-       AA_AWBMODE_OFF = 1,
-       AA_AWBMODE_LOCKED,
-       AA_AWBMODE_WB_AUTO,
-       AA_AWBMODE_WB_INCANDESCENT,
-       AA_AWBMODE_WB_FLUORESCENT,
-       AA_AWBMODE_WB_WARM_FLUORESCENT,
-       AA_AWBMODE_WB_DAYLIGHT,
-       AA_AWBMODE_WB_CLOUDY_DAYLIGHT,
-       AA_AWBMODE_WB_TWILIGHT,
-       AA_AWBMODE_WB_SHADE
-};
-
-enum aa_afmode {
-       /* These modes are adjusted immediatly */
-       AA_AFMODE_OFF = 1,
-       AA_AFMODE_SLEEP,
-       AA_AFMODE_INFINITY,
-       AA_AFMODE_MACRO,
-       AA_AFMODE_DELAYED_OFF,
-
-       /* Single AF. These modes are adjusted when afTrigger is changed from 0 to 1 */
-       AA_AFMODE_AUTO = 11,
-       AA_AFMODE_AUTO_MACRO,
-       AA_AFMODE_AUTO_VIDEO,
-       AA_AFMODE_AUTO_FACE,
-
-       /* Continuous AF. These modes are adjusted when afTrigger is changed from 0 to 1 */
-       AA_AFMODE_CONTINUOUS_PICTURE = 21,
-       AA_AFMODE_CONTINUOUS_VIDEO,
-       AA_AFMODE_CONTINUOUS_PICTURE_FACE,
-
-       /* Special modes for PDAF */
-       AA_AFMODE_PDAF_OUTFOCUSING = 31,
-       AA_AFMODE_PDAF_OUTFOCUSING_FACE,
-       AA_AFMODE_PDAF_OUTFOCUSING_CONTINUOUS_PICTURE,
-       AA_AFMODE_PDAF_OUTFOCUSING_CONTINUOUS_PICTURE_FACE,
-
-       /* Not supported yet */
-       AA_AFMODE_EDOF = 41,
-};
-
-/* camera2_aa_ctl.afRegions[4] */
-enum aa_afmode_ext {
-       AA_AFMODE_EXT_OFF = 1000,
-       /* Increase macro range for special app */
-       AA_AFMODE_EXT_ADVANCED_MACRO_FOCUS = 1001,
-       /* Set AF region for OCR */
-       AA_AFMODE_EXT_FOCUS_LOCATION = 1002,
-};
-
-enum aa_afstate {
-       AA_AFSTATE_INACTIVE = 1,
-       AA_AFSTATE_PASSIVE_SCAN,
-       AA_AFSTATE_ACTIVE_SCAN,
-       AA_AFSTATE_AF_ACQUIRED_FOCUS,
-       AA_AFSTATE_AF_FAILED_FOCUS
-};
-
-enum ae_state {
-       AE_STATE_INACTIVE = 1,
-       AE_STATE_SEARCHING,
-       AE_STATE_CONVERGED,
-       AE_STATE_LOCKED,
-       AE_STATE_FLASH_REQUIRED,
-       AE_STATE_PRECAPTURE
-};
-
-enum awb_state {
-       AWB_STATE_INACTIVE = 1,
-       AWB_STATE_SEARCHING,
-       AWB_STATE_CONVERGED,
-       AWB_STATE_LOCKED
-};
-
-enum aa_isomode {
-       AA_ISOMODE_AUTO = 1,
-       AA_ISOMODE_MANUAL,
-};
-
-struct camera2_aa_ctl {
-       enum aa_capture_intent          captureIntent;
-       enum aa_mode                    mode;
-       /*enum aa_effect_mode           effectMode;*/
-       enum aa_scene_mode              sceneMode;
-       uint32_t                        videoStabilizationMode;
-       enum aa_aemode                  aeMode;
-       uint32_t                        aeRegions[5];
-       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/
-       int32_t                         aeExpCompensation;
-       uint32_t                        aeTargetFpsRange[2];
-       enum aa_ae_antibanding_mode     aeAntibandingMode;
-       enum aa_ae_flashmode            aeflashMode;
-       enum aa_awbmode                 awbMode;
-       uint32_t                        awbRegions[5];
-       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/
-       enum aa_afmode                  afMode;
-       uint32_t                        afRegions[5];
-       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/
-       uint32_t                        afTrigger;
-       enum aa_isomode                 isoMode;
-       uint32_t                        isoValue;
-       int32_t                 awbValue;
-       uint32_t                        reserved[10];
-};
-
-struct camera2_aa_dm {
-       enum aa_mode                            mode;
-       enum aa_effect_mode                     effectMode;
-       enum aa_scene_mode                      sceneMode;
-       uint32_t                                videoStabilizationMode;
-       enum aa_aemode                          aeMode;
-       /*needs check*/
-       uint32_t                                aeRegions[5];
-       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/
-       enum ae_state                           aeState;
-       enum aa_ae_flashmode                    aeflashMode;
-       /*needs check*/
-       enum aa_awbmode                         awbMode;
-       uint32_t                                awbRegions[5];
-       enum awb_state                          awbState;
-       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/
-       enum aa_afmode                          afMode;
-       uint32_t                                afRegions[5];
-       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region*/
-       enum aa_afstate                         afState;
-       enum aa_isomode                         isoMode;
-       uint32_t                                isoValue;
-       uint32_t                                reserved[10];
-};
-
-struct camera2_aa_sm {
-       uint8_t         availableSceneModes[CAMERA2_MAX_AVAILABLE_MODE];
-       uint8_t         availableEffects[CAMERA2_MAX_AVAILABLE_MODE];
-       /*assuming # of available scene modes = 10*/
-       uint32_t        maxRegions;
-       uint8_t         aeAvailableModes[CAMERA2_MAX_AVAILABLE_MODE];
-       /*assuming # of available ae modes = 8*/
-       struct rational aeCompensationStep;
-       int32_t         aeCompensationRange[2];
-       uint32_t aeAvailableTargetFpsRanges[CAMERA2_MAX_AVAILABLE_MODE][2];
-       uint8_t         aeAvailableAntibandingModes[CAMERA2_MAX_AVAILABLE_MODE];
-       uint8_t         awbAvailableModes[CAMERA2_MAX_AVAILABLE_MODE];
-       /*assuming # of awbAvailableModes = 10*/
-       uint8_t         afAvailableModes[CAMERA2_MAX_AVAILABLE_MODE];
-       /*assuming # of afAvailableModes = 4*/
-       uint8_t availableVideoStabilizationModes[4];
-       /*assuming # of availableVideoStabilizationModes = 4*/
-       uint32_t        isoRange[2];
-};
-
-struct camera2_lens_usm {
-       /** Frame delay between sending command and applying frame data */
-       uint32_t        focusDistanceFrameDelay;
-};
-
-struct camera2_sensor_usm {
-       /** Frame delay between sending command and applying frame data */
-       uint32_t        exposureTimeFrameDelay;
-       uint32_t        frameDurationFrameDelay;
-       uint32_t        sensitivityFrameDelay;
-};
-
-struct camera2_flash_usm {
-       /** Frame delay between sending command and applying frame data */
-       uint32_t        flashModeFrameDelay;
-       uint32_t        firingPowerFrameDelay;
-       uint64_t        firingTimeFrameDelay;
-};
-
-struct camera2_ctl {
-       struct camera2_request_ctl              request;
-       struct camera2_lens_ctl                 lens;
-       struct camera2_sensor_ctl               sensor;
-       struct camera2_flash_ctl                flash;
-       struct camera2_hotpixel_ctl             hotpixel;
-       struct camera2_demosaic_ctl             demosaic;
-       struct camera2_noisereduction_ctl       noise;
-       struct camera2_shading_ctl              shading;
-       struct camera2_geometric_ctl            geometric;
-       struct camera2_colorcorrection_ctl      color;
-       struct camera2_tonemap_ctl              tonemap;
-       struct camera2_edge_ctl                 edge;
-       struct camera2_scaler_ctl               scaler;
-       struct camera2_jpeg_ctl                 jpeg;
-       struct camera2_stats_ctl                stats;
-       struct camera2_aa_ctl                   aa;
-       struct camera2_entry_ctl                entry;
-};
-
-struct camera2_dm {
-       struct camera2_request_dm               request;
-       struct camera2_lens_dm                  lens;
-       struct camera2_sensor_dm                sensor;
-       struct camera2_flash_dm                 flash;
-       struct camera2_hotpixel_dm              hotpixel;
-       struct camera2_demosaic_dm              demosaic;
-       struct camera2_noisereduction_dm        noise;
-       struct camera2_shading_dm               shading;
-       struct camera2_geometric_dm             geometric;
-       struct camera2_colorcorrection_dm       color;
-       struct camera2_tonemap_dm               tonemap;
-       struct camera2_edge_dm                  edge;
-       struct camera2_scaler_dm                scaler;
-       struct camera2_jpeg_dm                  jpeg;
-       struct camera2_stats_dm                 stats;
-       struct camera2_aa_dm                    aa;
-       struct camera2_entry_dm                 entry;
-};
-
-struct camera2_sm {
-       struct camera2_lens_sm                  lens;
-       struct camera2_sensor_sm                sensor;
-       struct camera2_flash_sm                 flash;
-       struct camera2_colorcorrection_sm       color;
-       struct camera2_tonemap_sm               tonemap;
-       struct camera2_scaler_sm                scaler;
-       struct camera2_jpeg_sm                  jpeg;
-       struct camera2_stats_sm                 stats;
-       struct camera2_aa_sm                    aa;
-
-       /** User-defined(ispfw specific) static metadata. */
-       struct camera2_lens_usm                 lensUd;
-       struct camera2_sensor_usm               sensorUd;
-       struct camera2_flash_usm                flashUd;
-};
-
-/** \brief
-       User-defined control for lens.
-*/
-struct camera2_lens_uctl {
-       struct camera2_lens_ctl ctl;
-
-       /** It depends by posSize */
-       uint32_t        pos;
-       /** It depends by af algorithm(AF pos bit. normally 8 or 9 or 10) */
-       uint32_t        posSize;
-       /** It depends by af algorithm */
-       uint32_t        direction;
-       /** Some actuator support slew rate control. */
-       uint32_t        slewRate;
-};
-
-/** \brief
-       User-defined metadata for lens.
-*/
-struct camera2_lens_udm {
-       /** It depends by posSize */
-       uint32_t        pos;
-       /** It depends by af algorithm(AF pos bit. normally 8 or 9 or 10) */
-       uint32_t        posSize;
-       /** It depends by af algorithm */
-       uint32_t        direction;
-       /** Some actuator support slew rate control. */
-       uint32_t        slewRate;
-};
-
-/** \brief
- User-defined metadata for ae.
-*/
-struct camera2_ae_udm {
-       /** vendor specific length */
-       uint32_t        vsLength;
-       /** vendor specific data array */
-       uint32_t        vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
-};
-
-/** \brief
- User-defined metadata for awb.
-*/
-struct camera2_awb_udm {
-       /** vendor specific length */
-       uint32_t        vsLength;
-       /** vendor specific data array */
-       uint32_t        vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
-};
-
-/** \brief
- User-defined metadata for af.
-*/
-struct camera2_af_udm {
-       /** vendor specific length */
-       uint32_t        vsLength;
-       /** vendor specific data array */
-       uint32_t        vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
-       int32_t         lensPositionInfinity;
-       int32_t         lensPositionMacro;
-       int32_t         lensPositionCurrent;
-};
-
-/** \brief
- User-defined metadata for anti-shading.
-*/
-struct camera2_as_udm {
-       /** vendor specific length */
-       uint32_t vsLength;
-       /** vendor specific data array */
-       uint32_t vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
-};
-
-/** \brief
- User-defined metadata for anti-shading.
-*/
-struct camera2_ipc_udm {
-       /** vendor specific length */
-       uint32_t vsLength;
-       /** vendor specific data array */
-       uint32_t vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
-};
-
-/** \brief
- User-defined metadata for aa.
-*/
-struct camera2_internal_udm {
-       /** vendor specific data array */
-       uint32_t vendorSpecific1[CAMERA2_MAX_VENDER_LENGTH];
-       uint32_t vendorSpecific2[CAMERA2_MAX_VENDER_LENGTH];
-       /*
-        * vendorSpecific2[0] : info
-        * vendorSpecific2[100] : 0:sirc 1:cml
-        * vendorSpecific2[101] : cml exposure
-        * vendorSpecific2[102] : cml iso(gain)
-        * vendorSpecific2[103] : cml Bv
-        */
-};
-
-/** \brief
-       User-defined control for sensor.
-*/
-struct camera2_sensor_uctl {
-       struct camera2_sensor_ctl ctl;
-       /** Dynamic frame duration.
-       This feature is decided to max. value between
-       'sensor.exposureTime'+alpha and 'sensor.frameDuration'.
-       */
-       uint64_t        dynamicFrameDuration;
-       uint32_t        analogGain;
-       uint32_t        digitalGain;
-       uint64_t        longExposureTime; /* For supporting WDR */
-       uint64_t        shortExposureTime;
-       uint32_t        longAnalogGain;
-       uint32_t        shortAnalogGain;
-       uint32_t        longDigitalGain;
-       uint32_t        shortDigitalGain;
-};
-
-struct camera2_scaler_uctl {
-       /** \brief
-       target address for next frame.
-       \remarks
-       [0] invalid address, stop
-       [others] valid address
-       */
-       uint32_t sccTargetAddress[4];
-       uint32_t scpTargetAddress[4];
-       uint32_t disTargetAddress[4];
-       uint32_t taapTargetAddress[4]; /* 3AA preview DMA */
-       uint32_t taacTargetAddress[4]; /* 3AA capture DMA */
-       uint32_t orientation;
-};
-
-struct camera2_flash_uctl {
-       struct camera2_flash_ctl ctl;
-};
-
-struct camera2_bayer_uctl {
-       struct camera2_scaler_ctl ctl;
-};
-
-enum companion_drc_mode {
-       COMPANION_DRC_OFF = 1,
-       COMPANION_DRC_ON,
-};
-
-enum companion_wdr_mode {
-       COMPANION_WDR_OFF = 1,
-       COMPANION_WDR_ON,
-};
-
-enum companion_paf_mode {
-       COMPANION_PAF_OFF = 1,
-       COMPANION_PAF_ON,
-};
-
-enum companion_bypass_mode {
-       COMPANION_FULL_BYPASS_OFF = 1,
-       COMPANION_FULL_BYPASS_ON,
-};
-
-enum companion_lsc_mode {
-       COMPANION_LSC_OFF = 1,
-       COMPANION_LSC_ON,
-};
-
-struct camera2_companion_uctl {
-       enum companion_drc_mode drc_mode;
-       enum companion_wdr_mode wdr_mode;
-       enum companion_paf_mode paf_mode;
-};
-
-struct camera2_bayer_udm {
-       uint32_t        width;
-       uint32_t        height;
-};
-
-struct camera2_pdaf_single_result {
-       uint16_t        mode;
-       uint16_t        goalPos;
-       uint16_t        reliability;
-       uint16_t        currentPos;
-};
-
-struct camera2_pdaf_multi_result {
-       uint16_t        mode;
-       uint16_t        goalPos;
-       uint16_t        reliability;
-};
-
-struct camera2_pdaf_udm {
-       uint16_t                                numCol; /* width of PDAF map, 0 means no multi PDAF data */
-       uint16_t                                numRow; /* height of PDAF map, 0 means no multi PDAF data */
-       struct camera2_pdaf_multi_result        multiResult[CAMERA2_MAX_PDAF_MULTIROI_COLUMN][CAMERA2_MAX_PDAF_MULTIROI_ROW];
-       struct camera2_pdaf_single_result       singleResult;
-       uint16_t                                lensPosResolution;      /* 1023(unsigned 10bit) */
-};
-
-struct camera2_companion_udm {
-       enum companion_drc_mode drc_mode;
-       enum companion_wdr_mode wdr_mode;
-       enum companion_paf_mode paf_mode;
-       struct camera2_pdaf_udm pdaf;
-};
-
-/** \brief
-       User-defined control area.
-    \remarks
-       sensor, lens, flash category is empty value.
-       It should be filled by a5 for SET_CAM_CONTROL command.
-       Other category is filled already from host.
-*/
-struct camera2_uctl {
-       /** \brief
-       Set sensor, lens, flash control for next frame.
-       \remarks
-       This flag can be combined.
-       [0 bit] lens
-       [1 bit] sensor
-       [2 bit] flash
-       */
-       uint32_t uUpdateBitMap;
-
-       /** For debugging */
-       uint32_t uFrameNumber;
-
-       /** ispfw specific control(user-defined) of lens. */
-       struct camera2_lens_uctl        lensUd;
-       /** ispfw specific control(user-defined) of sensor. */
-       struct camera2_sensor_uctl      sensorUd;
-       /** ispfw specific control(user-defined) of flash. */
-       struct camera2_flash_uctl       flashUd;
-
-       struct camera2_scaler_uctl      scalerUd;
-       /** ispfw specific control(user-defined) of Bcrop1. */
-       struct camera2_bayer_uctl       bayerUd;
-       struct camera2_companion_uctl   companionUd;
-       uint32_t        reserved[10];
-};
-
-struct camera2_udm {
-       struct camera2_lens_udm         lens;
-       struct camera2_ae_udm           ae;
-       struct camera2_awb_udm          awb;
-       struct camera2_af_udm           af;
-       struct camera2_as_udm           as;
-       struct camera2_ipc_udm          ipc;
-       /* KJ_121129 : Add udm for sirc sdk. */
-       struct camera2_internal_udm     internal;
-       /* Add udm for bayer down size. */
-       struct camera2_bayer_udm        bayer;
-       struct camera2_companion_udm    companion;
-       uint32_t        reserved[10];
-};
-
-struct camera2_shot {
-       /*google standard area*/
-       struct camera2_ctl      ctl;
-       struct camera2_dm       dm;
-       /*user defined area*/
-       struct camera2_uctl     uctl;
-       struct camera2_udm      udm;
-       /*magic : 23456789*/
-       uint32_t                magicNumber;
-};
-
-struct camera2_node_input {
-       /**     \brief
-               intput crop region
-               \remarks
-               [0] x axis
-               [1] y axie
-               [2] width
-               [3] height
-       */
-       uint32_t        cropRegion[4];
-};
-
-struct camera2_node_output {
-       /**     \brief
-               output crop region
-               \remarks
-               [0] x axis
-               [1] y axie
-               [2] width
-               [3] height
-       */
-       uint32_t        cropRegion[4];
-};
-
-struct camera2_node {
-       /**     \brief
-               video node id
-               \remarks
-               [x] video node id
-       */
-       uint32_t                        vid;
-
-       /**     \brief
-               stream control
-               \remarks
-               [0] disable stream out
-               [1] enable stream out
-       */
-       uint32_t                        request;
-
-       struct camera2_node_input       input;
-       struct camera2_node_output      output;
-};
-
-struct camera2_node_group {
-       /**     \brief
-               output device node
-               \remarks
-               this node can pull in image
-       */
-       struct camera2_node             leader;
-
-       /**     \brief
-               capture node list
-               \remarks
-               this node can get out image
-               3AAC, 3AAP, SCC, SCP, VDISC
-       */
-       struct camera2_node             capture[CAPTURE_NODE_MAX];
-};
-
-/** \brief
-       Structure for interfacing between HAL and driver.
-*/
-struct camera2_shot_ext {
-       /*
-        * ---------------------------------------------------------------------
-        * HAL Control Part
-        * ---------------------------------------------------------------------
-        */
-
-       /**     \brief
-               setfile change
-               \remarks
-               [x] mode for setfile
-       */
-       uint32_t                        setfile;
-
-       /**     \brief
-               node group control
-               \remarks
-               per frame control
-       */
-       struct camera2_node_group       node_group;
-
-       /**     \brief
-               post processing control(DRC)
-               \remarks
-               [0] bypass off
-               [1] bypass on
-       */
-       uint32_t                        drc_bypass;
-
-       /**     \brief
-               post processing control(DIS)
-               \remarks
-               [0] bypass off
-               [1] bypass on
-       */
-       uint32_t                        dis_bypass;
-
-       /**     \brief
-               post processing control(3DNR)
-               \remarks
-               [0] bypass off
-               [1] bypass on
-       */
-       uint32_t                        dnr_bypass;
-
-       /**     \brief
-               post processing control(FD)
-               \remarks
-               [0] bypass off
-               [1] bypass on
-       */
-       uint32_t                        fd_bypass;
-
-       /*
-        * ---------------------------------------------------------------------
-        * DRV Control Part
-        * ---------------------------------------------------------------------
-        */
-
-       /**     \brief
-               requested frames state.
-               driver return the information everytime
-               when dequeue is requested.
-               \remarks
-               [X] count
-       */
-       uint32_t                        free_cnt;
-       uint32_t                        request_cnt;
-       uint32_t                        process_cnt;
-       uint32_t                        complete_cnt;
-
-       /* reserved for future */
-       uint32_t                        reserved[15];
-
-       /**     \brief
-               processing time debugging
-               \remarks
-               taken time(unit : struct timeval)
-               [0][x] flite start
-               [1][x] flite end
-               [2][x] DRV Shot
-               [3][x] DRV Shot done
-               [4][x] DRV Meta done
-       */
-       uint32_t                        timeZone[10][2];
-
-       /*
-        * ---------------------------------------------------------------------
-        * Camera API
-        * ---------------------------------------------------------------------
-        */
-
-       struct camera2_shot             shot;
-};
-
-/** \brief
-       stream structure for scaler.
-*/
-struct camera2_stream {
-       /**     \brief
-               this address for verifying conincidence of index and address
-               \remarks
-               [X] kernel virtual address for this buffer
-       */
-       uint32_t                address;
-
-       /**     \brief
-               this frame count is from FLITE through dm.request.fcount,
-               this count increases every frame end. initial value is 1.
-               \remarks
-               [X] frame count
-       */
-       uint32_t                fcount;
-
-       /**     \brief
-               this request count is from HAL through ctl.request.fcount,
-               this count is the unique.
-               \remarks
-               [X] request count
-       */
-       uint32_t                rcount;
-
-       /**     \brief
-               frame index of isp framemgr.
-               this value is for driver internal debugging
-               \remarks
-               [X] frame index
-       */
-       uint32_t                findex;
-
-       /**     \brief
-               frame validation of isp framemgr.
-               this value is for driver and HAL internal debugging
-               \remarks
-               [X] frame valid
-       */
-       uint32_t                fvalid;
-
-       /**     \brief
-               output crop region
-               this value mean the output image places the axis of  memory space
-               \remarks
-               [0] crop x axis
-               [1] crop y axis
-               [2] width
-               [3] height
-       */
-       uint32_t                input_crop_region[4];
-       uint32_t                output_crop_region[4];
-};
-
-#define CAM_LENS_CMD           (0x1 << 0x0)
-#define CAM_SENSOR_CMD         (0x1 << 0x1)
-#define CAM_FLASH_CMD          (0x1 << 0x2)
-
-/* typedefs below are for firmware sources */
-
-typedef enum metadata_mode metadata_mode_t;
-typedef struct camera2_request_ctl camera2_request_ctl_t;
-typedef struct camera2_request_dm camera2_request_dm_t;
-typedef enum optical_stabilization_mode optical_stabilization_mode_t;
-typedef enum lens_facing lens_facing_t;
-typedef struct camera2_entry_ctl camera2_entry_ctl_t;
-typedef struct camera2_entry_dm camera2_entry_dm_t;
-typedef struct camera2_lens_ctl camera2_lens_ctl_t;
-typedef struct camera2_lens_dm camera2_lens_dm_t;
-typedef struct camera2_lens_sm camera2_lens_sm_t;
-typedef enum sensor_colorfilterarrangement sensor_colorfilterarrangement_t;
-typedef enum sensor_ref_illuminant sensor_ref_illuminant_t;
-typedef struct camera2_sensor_ctl camera2_sensor_ctl_t;
-typedef struct camera2_sensor_dm camera2_sensor_dm_t;
-typedef struct camera2_sensor_sm camera2_sensor_sm_t;
-typedef enum flash_mode flash_mode_t;
-typedef struct camera2_flash_ctl camera2_flash_ctl_t;
-typedef struct camera2_flash_dm camera2_flash_dm_t;
-typedef struct camera2_flash_sm camera2_flash_sm_t;
-typedef enum processing_mode processing_mode_t;
-typedef struct camera2_hotpixel_ctl camera2_hotpixel_ctl_t;
-typedef struct camera2_hotpixel_dm camera2_hotpixel_dm_t;
-
-typedef struct camera2_demosaic_ctl camera2_demosaic_ctl_t;
-typedef struct camera2_demosaic_dm camera2_demosaic_dm_t;
-typedef struct camera2_noisereduction_ctl camera2_noisereduction_ctl_t;
-typedef struct camera2_noisereduction_dm camera2_noisereduction_dm_t;
-typedef struct camera2_shading_ctl camera2_shading_ctl_t;
-typedef struct camera2_shading_dm camera2_shading_dm_t;
-typedef struct camera2_geometric_ctl camera2_geometric_ctl_t;
-typedef struct camera2_geometric_dm camera2_geometric_dm_t;
-typedef enum colorcorrection_mode colorcorrection_mode_t;
-typedef struct camera2_colorcorrection_ctl camera2_colorcorrection_ctl_t;
-typedef struct camera2_colorcorrection_dm camera2_colorcorrection_dm_t;
-typedef struct camera2_colorcorrection_sm camera2_colorcorrection_sm_t;
-typedef enum tonemap_mode tonemap_mode_t;
-typedef struct camera2_tonemap_ctl camera2_tonemap_ctl_t;
-typedef struct camera2_tonemap_dm camera2_tonemap_dm_t;
-typedef struct camera2_tonemap_sm camera2_tonemap_sm_t;
-
-typedef struct camera2_edge_ctl camera2_edge_ctl_t;
-typedef struct camera2_edge_dm camera2_edge_dm_t;
-typedef enum scaler_availableformats scaler_availableformats_t;
-typedef struct camera2_scaler_ctl camera2_scaler_ctl_t;
-typedef struct camera2_scaler_dm camera2_scaler_dm_t;
-typedef struct camera2_jpeg_ctl camera2_jpeg_ctl_t;
-typedef struct camera2_jpeg_dm camera2_jpeg_dm_t;
-typedef struct camera2_jpeg_sm camera2_jpeg_sm_t;
-typedef enum facedetect_mode facedetect_mode_t;
-typedef enum stats_mode stats_mode_t;
-typedef struct camera2_stats_ctl camera2_stats_ctl_t;
-typedef struct camera2_stats_dm camera2_stats_dm_t;
-typedef struct camera2_stats_sm camera2_stats_sm_t;
-typedef enum aa_capture_intent aa_capture_intent_t;
-typedef enum aa_mode aa_mode_t;
-typedef enum aa_scene_mode aa_scene_mode_t;
-typedef enum aa_effect_mode aa_effect_mode_t;
-typedef enum aa_aemode aa_aemode_t;
-typedef enum aa_ae_antibanding_mode aa_ae_antibanding_mode_t;
-typedef enum aa_awbmode aa_awbmode_t;
-typedef enum aa_afmode aa_afmode_t;
-typedef enum aa_afstate aa_afstate_t;
-typedef struct camera2_aa_ctl camera2_aa_ctl_t;
-typedef struct camera2_aa_dm camera2_aa_dm_t;
-typedef struct camera2_aa_sm camera2_aa_sm_t;
-typedef struct camera2_lens_usm camera2_lens_usm_t;
-typedef struct camera2_sensor_usm camera2_sensor_usm_t;
-typedef struct camera2_flash_usm camera2_flash_usm_t;
-typedef struct camera2_ctl camera2_ctl_t;
-typedef struct camera2_uctl camera2_uctl_t;
-typedef struct camera2_dm camera2_dm_t;
-typedef struct camera2_sm camera2_sm_t;
-
-typedef struct camera2_scaler_sm camera2_scaler_sm_t;
-typedef struct camera2_scaler_uctl camera2_scaler_uctl_t;
-
-typedef struct camera2_sensor_uctl camera2_sensor_uctl_t;
-typedef struct camera2_lens_uctl camera2_lens_uctl_t;
-typedef struct camera2_lens_udm camera2_lens_udm_t;
-
-typedef struct camera2_ae_udm camera2_ae_udm_t;
-typedef struct camera2_awb_udm camera2_awb_udm_t;
-typedef struct camera2_af_udm camera2_af_udm_t;
-typedef struct camera2_as_udm camera2_as_udm_t;
-typedef struct camera2_ipc_udm camera2_ipc_udm_t;
-typedef struct camera2_internal_udm camera2_internal_udm_t;
-
-typedef struct camera2_flash_uctl camera2_flash_uctl_t;
-
-typedef struct camera2_shot camera2_shot_t;
-
-#endif
index 3db80b2449cbb11a17a42cee2e5c9682e8e113bc..37df8914854c22dea913f11f90a98a98194036f9 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/videodev2_exynos_camera.h>
 #include <linux/v4l2-mediabus.h>
 #include <linux/bug.h>
+#include <linux/fimc-is-metadata.h>
 
 #include <media/videobuf2-core.h>
 #include <media/v4l2-ctrls.h>
@@ -40,7 +41,6 @@
 #include "fimc-is-regs.h"
 #include "fimc-is-err.h"
 #include "fimc-is-video.h"
-#include "fimc-is-metadata.h"
 
 const struct v4l2_file_operations fimc_is_3aa_video_fops;
 const struct v4l2_ioctl_ops fimc_is_3aa_video_ioctl_ops;
index 188b251220c273c1ac8779cd62c4061f838b1494..6d8ede2f04610f3fa3e6ba72ffeae9b353a94158 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/videodev2_exynos_camera.h>
 #include <linux/v4l2-mediabus.h>
 #include <linux/bug.h>
+#include <linux/fimc-is-metadata.h>
 
 #include "fimc-is-core.h"
 #include "fimc-is-param.h"
@@ -34,7 +35,6 @@
 #include "fimc-is-regs.h"
 #include "fimc-is-err.h"
 #include "fimc-is-video.h"
-#include "fimc-is-metadata.h"
 
 extern struct fimc_is_from_info                *sysfs_finfo;
 extern struct fimc_is_from_info                *sysfs_pinfo;
index a76f19278b72966fb8523787b08834324fb81cc2..5451a4f0dfe7e19971d875aac87d51ae0624588a 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/videodev2_exynos_camera.h>
 #include <linux/v4l2-mediabus.h>
 #include <linux/bug.h>
+#include <linux/fimc-is-metadata.h>
 
 #include "fimc-is-device-sensor.h"
 #include "fimc-is-param.h"
@@ -34,7 +35,6 @@
 #include "fimc-is-regs.h"
 #include "fimc-is-err.h"
 #include "fimc-is-video.h"
-#include "fimc-is-metadata.h"
 #include "fimc-is-core.h"
 
 const struct v4l2_file_operations fimc_is_sen_video_fops;
index 6e3786c0ca0241f2b62b42e60be4235a2fc394c5..4e618b1de50afc4b59b6f9dcb26ae3e3c6cf0a56 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/videodev2_exynos_camera.h>
 #include <linux/v4l2-mediabus.h>
 #include <linux/bug.h>
+#include <linux/fimc-is-metadata.h>
 
 #include "fimc-is-core.h"
 #include "fimc-is-param.h"
@@ -34,7 +35,6 @@
 #include "fimc-is-regs.h"
 #include "fimc-is-err.h"
 #include "fimc-is-video.h"
-#include "fimc-is-metadata.h"
 
 const struct v4l2_file_operations fimc_is_vdo_video_fops;
 const struct v4l2_ioctl_ops fimc_is_vdo_video_ioctl_ops;
index 95c3ffaf9ac2d68f110aec886f1ab9f350eee662..8e6f46c53d16170e170c6df0dd1e15e945b0f5d7 100644 (file)
@@ -2,11 +2,11 @@
 #define FIMC_IS_VIDEO_H
 
 #include <linux/version.h>
+#include <linux/fimc-is-metadata.h>
 #include <media/v4l2-ioctl.h>
 #include "fimc-is-type.h"
 #include "fimc-is-mem.h"
 #include "fimc-is-framemgr.h"
-#include "fimc-is-metadata.h"
 #include "fimc-is-config.h"
 
 /* configuration by linux kernel version */
diff --git a/include/uapi/linux/fimc-is-metadata.h b/include/uapi/linux/fimc-is-metadata.h
new file mode 100644 (file)
index 0000000..f2f27c7
--- /dev/null
@@ -0,0 +1,1472 @@
+/* Copyright (c) 2011 Samsung Electronics Co, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+
+ *
+
+ * Alternatively, Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+
+ */
+
+#ifndef FIMC_IS_METADATA_H_
+#define FIMC_IS_METADATA_H_
+
+#ifndef _LINUX_TYPES_H
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef signed short int16_t;
+typedef signed int int32_t;
+typedef unsigned int uint32_t;
+typedef unsigned long long uint64_t;
+#endif
+
+struct rational {
+       uint32_t num;
+       uint32_t den;
+};
+
+#define CAMERA2_MAX_AVAILABLE_MODE     21
+#define CAMERA2_MAX_FACES              16
+#define CAMERA2_MAX_VENDER_LENGTH      400
+#define CAPTURE_NODE_MAX               2
+#define CAMERA2_MAX_PDAF_MULTIROI_COLUMN 9
+#define CAMERA2_MAX_PDAF_MULTIROI_ROW 5
+
+#define OPEN_MAGIC_NUMBER              0x01020304
+#define SHOT_MAGIC_NUMBER              0x23456789
+
+/*
+ *controls/dynamic metadata
+*/
+
+/* android.request */
+
+enum metadata_mode {
+       METADATA_MODE_NONE,
+       METADATA_MODE_FULL
+};
+
+struct camera2_request_ctl {
+       uint32_t                id;
+       enum metadata_mode      metadataMode;
+       uint8_t                 outputStreams[16];
+       uint32_t                frameCount;
+        uint32_t               requestCount;
+};
+
+struct camera2_request_dm {
+       uint32_t                id;
+       enum metadata_mode      metadataMode;
+       uint32_t                frameCount;
+        uint32_t               requestCount;
+};
+
+struct camera2_entry_ctl {
+       /** \brief
+               per-frame control for entry control
+               \remarks
+               low parameter is 0bit ~ 31bit flag
+               high parameter is 32bit ~ 63bit flag
+       */
+       uint32_t                lowIndexParam;
+       uint32_t                highIndexParam;
+       uint32_t                parameter[2048];
+};
+
+struct camera2_entry_dm {
+       uint32_t                lowIndexParam;
+       uint32_t                highIndexParam;
+};
+
+/* android.lens */
+
+enum optical_stabilization_mode {
+       OPTICAL_STABILIZATION_MODE_OFF = 1,
+       OPTICAL_STABILIZATION_MODE_ON = 2,
+       OPTICAL_STABILIZATION_MODE_STILL = 3,  // Still mode
+       OPTICAL_STABILIZATION_MODE_STILL_ZOOM = 4, // Still Zoom mode
+       OPTICAL_STABILIZATION_MODE_VIDEO = 5,  // Recording mode
+       OPTICAL_STABILIZATION_MODE_SINE_X = 6,  // factory mode x
+       OPTICAL_STABILIZATION_MODE_SINE_Y = 7,  // factory mode y
+       OPTICAL_STABILIZATION_MODE_CENTERING = 8 // Centering mode
+};
+
+enum lens_facing {
+       LENS_FACING_BACK,
+       LENS_FACING_FRONT
+};
+
+struct camera2_lens_ctl {
+       uint32_t                                focusDistance;
+       float                                   aperture;
+       float                                   focalLength;
+       float                                   filterDensity;
+       enum optical_stabilization_mode         opticalStabilizationMode;
+
+};
+
+struct camera2_lens_dm {
+       uint32_t                                focusDistance;
+       float                                   aperture;
+       float                                   focalLength;
+       float                                   filterDensity;
+       enum optical_stabilization_mode         opticalStabilizationMode;
+       float                                   focusRange[2];
+};
+
+struct camera2_lens_sm {
+       float                           minimumFocusDistance;
+       float                           hyperfocalDistance;
+       float                           availableFocalLength[2];
+       float                           availableApertures;
+       /*assuming 1 aperture*/
+       float                           availableFilterDensities;
+       /*assuming 1 ND filter value*/
+       enum optical_stabilization_mode availableOpticalStabilization;
+       /*assuming 1*/
+       uint32_t                        shadingMapSize;
+       float                           shadingMap[3][40][30];
+       uint32_t                        geometricCorrectionMapSize;
+       float                           geometricCorrectionMap[2][3][40][30];
+       enum lens_facing                facing;
+       float                           position[2];
+};
+
+/* android.sensor */
+
+enum sensor_colorfilterarrangement {
+       SENSOR_COLORFILTERARRANGEMENT_RGGB,
+       SENSOR_COLORFILTERARRANGEMENT_GRBG,
+       SENSOR_COLORFILTERARRANGEMENT_GBRG,
+       SENSOR_COLORFILTERARRANGEMENT_BGGR,
+       SENSOR_COLORFILTERARRANGEMENT_RGB
+};
+
+enum sensor_ref_illuminant {
+       SENSOR_ILLUMINANT_DAYLIGHT = 1,
+       SENSOR_ILLUMINANT_FLUORESCENT = 2,
+       SENSOR_ILLUMINANT_TUNGSTEN = 3,
+       SENSOR_ILLUMINANT_FLASH = 4,
+       SENSOR_ILLUMINANT_FINE_WEATHER = 9,
+       SENSOR_ILLUMINANT_CLOUDY_WEATHER = 10,
+       SENSOR_ILLUMINANT_SHADE = 11,
+       SENSOR_ILLUMINANT_DAYLIGHT_FLUORESCENT = 12,
+       SENSOR_ILLUMINANT_DAY_WHITE_FLUORESCENT = 13,
+       SENSOR_ILLUMINANT_COOL_WHITE_FLUORESCENT = 14,
+       SENSOR_ILLUMINANT_WHITE_FLUORESCENT = 15,
+       SENSOR_ILLUMINANT_STANDARD_A = 17,
+       SENSOR_ILLUMINANT_STANDARD_B = 18,
+       SENSOR_ILLUMINANT_STANDARD_C = 19,
+       SENSOR_ILLUMINANT_D55 = 20,
+       SENSOR_ILLUMINANT_D65 = 21,
+       SENSOR_ILLUMINANT_D75 = 22,
+       SENSOR_ILLUMINANT_D50 = 23,
+       SENSOR_ILLUMINANT_ISO_STUDIO_TUNGSTEN = 24
+};
+
+struct camera2_sensor_ctl {
+       /* unit : nano */
+       uint64_t        exposureTime;
+       /* unit : nano(It's min frame duration */
+       uint64_t        frameDuration;
+       /* unit : percent(need to change ISO value?) */
+       uint32_t        sensitivity;
+};
+
+struct camera2_sensor_dm {
+       uint64_t        exposureTime;
+       uint64_t        frameDuration;
+       uint32_t        sensitivity;
+       uint64_t        timeStamp;
+       uint32_t        analogGain;
+       uint32_t        digitalGain;
+};
+
+struct camera2_sensor_sm {
+       uint32_t        exposureTimeRange[2];
+       uint32_t        maxFrameDuration;
+       /* list of available sensitivities. */
+       uint32_t        availableSensitivities[10];
+       enum sensor_colorfilterarrangement colorFilterArrangement;
+       float           physicalSize[2];
+       uint32_t        pixelArraySize[2];
+       uint32_t        activeArraySize[4];
+       uint32_t        whiteLevel;
+       uint32_t        blackLevelPattern[4];
+       struct rational colorTransform1[9];
+       struct rational colorTransform2[9];
+       enum sensor_ref_illuminant      referenceIlluminant1;
+       enum sensor_ref_illuminant      referenceIlluminant2;
+       struct rational forwardMatrix1[9];
+       struct rational forwardMatrix2[9];
+       struct rational calibrationTransform1[9];
+       struct rational calibrationTransform2[9];
+       struct rational baseGainFactor;
+       uint32_t        maxAnalogSensitivity;
+       float           noiseModelCoefficients[2];
+       uint32_t        orientation;
+};
+
+
+
+/* android.flash */
+
+enum flash_mode {
+       CAM2_FLASH_MODE_OFF = 1,
+       CAM2_FLASH_MODE_SINGLE,
+       CAM2_FLASH_MODE_TORCH,
+       CAM2_FLASH_MODE_BEST
+};
+
+enum capture_state {
+    CAPTURE_STATE_NONE = 0,
+    CAPTURE_STATE_FLASH = 1,
+    CAPTURE_STATE_HDR_DARK = 12,
+    CAPTURE_STATE_HDR_NORMAL = 13,
+    CAPTURE_STATE_HDR_BRIGHT = 14,
+    CAPTURE_STATE_ZSL_LIKE = 20,
+};
+
+struct camera2_flash_ctl {
+       enum flash_mode         flashMode;
+       uint32_t                firingPower;
+       uint64_t                firingTime;
+};
+
+struct camera2_flash_dm {
+       enum flash_mode         flashMode;
+       /*10 is max power*/
+       uint32_t                firingPower;
+       /*unit : microseconds*/
+       uint64_t                firingTime;
+       /*1 : stable, 0 : unstable*/
+       uint32_t                firingStable;
+       /*1 : success, 0 : fail*/
+       uint32_t                decision;
+       /*0: None, 1 : pre, 2 : main flash ready*/
+       uint32_t                flashReady;
+       /*0: None, 1 : pre, 2 : main flash off ready*/
+       uint32_t                flashOffReady;
+};
+
+struct camera2_flash_sm {
+       uint32_t        available;
+       uint64_t        chargeDuration;
+};
+
+
+/* android.hotpixel */
+
+enum processing_mode {
+       PROCESSING_MODE_OFF = 1,
+       PROCESSING_MODE_FAST,
+       PROCESSING_MODE_HIGH_QUALITY
+};
+
+
+struct camera2_hotpixel_ctl {
+       enum processing_mode    mode;
+};
+
+struct camera2_hotpixel_dm {
+       enum processing_mode    mode;
+};
+
+
+
+/* android.demosaic */
+
+struct camera2_demosaic_ctl {
+       enum processing_mode    mode;
+};
+
+struct camera2_demosaic_dm {
+       enum processing_mode    mode;
+};
+
+
+
+/* android.noiseReduction */
+
+struct camera2_noisereduction_ctl {
+       enum processing_mode    mode;
+       uint32_t                strength;
+};
+
+struct camera2_noisereduction_dm {
+       enum processing_mode    mode;
+       uint32_t                strength;
+};
+
+
+
+/* android.shading */
+
+struct camera2_shading_ctl {
+       enum processing_mode    mode;
+};
+
+struct camera2_shading_dm {
+       enum processing_mode    mode;
+};
+
+
+
+/* android.geometric */
+
+struct camera2_geometric_ctl {
+       enum processing_mode    mode;
+};
+
+struct camera2_geometric_dm {
+       enum processing_mode    mode;
+};
+
+
+
+/* android.colorCorrection */
+
+enum colorcorrection_mode {
+       COLORCORRECTION_MODE_FAST = 1,
+       COLORCORRECTION_MODE_HIGH_QUALITY,
+       COLORCORRECTION_MODE_TRANSFORM_MATRIX,
+       COLORCORRECTION_MODE_EFFECT_MONO,
+       COLORCORRECTION_MODE_EFFECT_NEGATIVE,
+       COLORCORRECTION_MODE_EFFECT_SOLARIZE,
+       COLORCORRECTION_MODE_EFFECT_SEPIA,
+       COLORCORRECTION_MODE_EFFECT_POSTERIZE,
+       COLORCORRECTION_MODE_EFFECT_WHITEBOARD,
+       COLORCORRECTION_MODE_EFFECT_BLACKBOARD,
+       COLORCORRECTION_MODE_EFFECT_AQUA,
+       COLORCORRECTION_MODE_EFFECT_EMBOSS,
+       COLORCORRECTION_MODE_EFFECT_EMBOSS_MONO,
+       COLORCORRECTION_MODE_EFFECT_SKETCH,
+       COLORCORRECTION_MODE_EFFECT_RED_YELLOW_POINT,
+       COLORCORRECTION_MODE_EFFECT_GREEN_POINT,
+       COLORCORRECTION_MODE_EFFECT_BLUE_POINT,
+       COLORCORRECTION_MODE_EFFECT_MAGENTA_POINT,
+       COLORCORRECTION_MODE_EFFECT_WARM_VINTAGE,
+       COLORCORRECTION_MODE_EFFECT_COLD_VINTAGE,
+       COLORCORRECTION_MODE_EFFECT_WASHED,
+       COLORCORRECTION_MODE_EFFECT_BEAUTY_FACE,
+       TOTAOCOUNT_COLORCORRECTION_MODE_EFFECT
+};
+
+
+struct camera2_colorcorrection_ctl {
+       enum colorcorrection_mode       mode;
+       float                           transform[9];
+       uint32_t                        hue;
+       uint32_t                        saturation;
+       uint32_t                        brightness;
+       uint32_t                        contrast;
+};
+
+struct camera2_colorcorrection_dm {
+       enum colorcorrection_mode       mode;
+       float                           transform[9];
+       uint32_t                        hue;
+       uint32_t                        saturation;
+       uint32_t                        brightness;
+       uint32_t                        contrast;
+};
+
+struct camera2_colorcorrection_sm {
+       /*assuming 10 supported modes*/
+       uint8_t                 availableModes[CAMERA2_MAX_AVAILABLE_MODE];
+       uint32_t                hueRange[2];
+       uint32_t                saturationRange[2];
+       uint32_t                brightnessRange[2];
+       uint32_t                contrastRange[2];
+};
+
+
+/* android.tonemap */
+
+enum tonemap_mode {
+       TONEMAP_MODE_FAST = 1,
+       TONEMAP_MODE_HIGH_QUALITY,
+       TONEMAP_MODE_CONTRAST_CURVE
+};
+
+struct camera2_tonemap_ctl {
+       enum tonemap_mode               mode;
+       /* assuming maxCurvePoints = 64 */
+       float                           curveRed[64];
+       float                           curveGreen[64];
+       float                           curveBlue[64];
+};
+
+struct camera2_tonemap_dm {
+       enum tonemap_mode               mode;
+       /* assuming maxCurvePoints = 64 */
+       float                           curveRed[64];
+       float                           curveGreen[64];
+       float                           curveBlue[64];
+};
+
+struct camera2_tonemap_sm {
+       uint32_t        maxCurvePoints;
+};
+
+/* android.edge */
+
+struct camera2_edge_ctl {
+       enum processing_mode    mode;
+       uint32_t                strength;
+};
+
+struct camera2_edge_dm {
+       enum processing_mode    mode;
+       uint32_t                strength;
+};
+
+
+
+/* android.scaler */
+
+enum scaler_availableformats {
+       SCALER_FORMAT_BAYER_RAW,
+       SCALER_FORMAT_YV12,
+       SCALER_FORMAT_NV21,
+       SCALER_FORMAT_JPEG,
+       SCALER_FORMAT_UNKNOWN
+};
+
+struct camera2_scaler_ctl {
+       uint32_t        cropRegion[4];
+       uint32_t        orientation;
+};
+
+struct camera2_scaler_dm {
+       uint32_t        cropRegion[4];
+       uint32_t        orientation;
+};
+
+struct camera2_scaler_sm {
+       enum scaler_availableformats availableFormats[4];
+       /*assuming # of availableFormats = 4*/
+       uint32_t        availableRawSizes;
+       uint64_t        availableRawMinDurations;
+       /* needs check */
+       uint32_t        availableProcessedSizes[8];
+       uint64_t        availableProcessedMinDurations[8];
+       uint32_t        availableJpegSizes[8][2];
+       uint64_t        availableJpegMinDurations[8];
+       uint32_t        availableMaxDigitalZoom[8];
+};
+
+/* android.jpeg */
+struct camera2_jpeg_ctl {
+       uint32_t        quality;
+       uint32_t        thumbnailSize[2];
+       uint32_t        thumbnailQuality;
+       double          gpsCoordinates[3];
+       uint32_t        gpsProcessingMethod;
+       uint64_t        gpsTimestamp;
+       uint32_t        orientation;
+};
+
+struct camera2_jpeg_dm {
+       uint32_t        quality;
+       uint32_t        thumbnailSize[2];
+       uint32_t        thumbnailQuality;
+       double          gpsCoordinates[3];
+       uint32_t        gpsProcessingMethod;
+       uint64_t        gpsTimestamp;
+       uint32_t        orientation;
+};
+
+struct camera2_jpeg_sm {
+       uint32_t        availableThumbnailSizes[8][2];
+       uint32_t        maxSize;
+       /*assuming supported size=8*/
+};
+
+
+
+/* android.statistics */
+
+enum facedetect_mode {
+       FACEDETECT_MODE_OFF = 1,
+       FACEDETECT_MODE_SIMPLE,
+       FACEDETECT_MODE_FULL
+};
+
+enum stats_mode {
+       STATS_MODE_OFF = 1,
+       STATS_MODE_ON
+};
+
+enum stats_lowlightmode {
+    STATE_LLS_LEVEL_ZSL = 0,
+    STATE_LLS_LEVEL_LOW = 1,
+    STATE_LLS_LEVEL_HIGH = 2,
+    STATE_LLS_LEVEL_SIS = 3,
+    STATE_LLS_LEVEL_ZSL_LIKE = 4,
+    STATE_LLS_LEVEL_ZSL_FLASH = 16,
+};
+
+struct camera2_stats_ctl {
+       enum facedetect_mode    faceDetectMode;
+       enum stats_mode         histogramMode;
+       enum stats_mode         sharpnessMapMode;
+};
+
+
+struct camera2_stats_dm {
+       enum facedetect_mode    faceDetectMode;
+       uint32_t                faceRectangles[CAMERA2_MAX_FACES][4];
+       uint8_t                 faceScores[CAMERA2_MAX_FACES];
+       uint32_t                faceLandmarks[CAMERA2_MAX_FACES][6];
+       uint32_t                faceIds[CAMERA2_MAX_FACES];
+/* PAYTON_CHECK_20120712 : histogram_mode -> stats_mode */
+       enum stats_mode         histogramMode;
+/* [hj529.kim, 2012/07/19] androd.statistics.histogram */
+       uint32_t                histogram[3 * 256];
+/* PAYTON_CHECK_20120712 : sharpnessmap_mode -> stats_mode */
+       enum stats_mode         sharpnessMapMode;
+       /*sharpnessMap*/
+       enum stats_lowlightmode LowLightMode;
+       uint32_t lls_tuning_set_index;
+       uint32_t lls_brightness_index;
+};
+
+
+struct camera2_stats_sm {
+       uint8_t         availableFaceDetectModes[CAMERA2_MAX_AVAILABLE_MODE];
+       /*assuming supported modes = 3;*/
+       uint32_t        maxFaceCount;
+       uint32_t        histogramBucketCount;
+       uint32_t        maxHistogramCount;
+       uint32_t        sharpnessMapSize[2];
+       uint32_t        maxSharpnessMapValue;
+};
+
+/* android.control */
+
+enum aa_capture_intent {
+       AA_CAPTURE_INTENT_CUSTOM = 0,
+       AA_CAPTURE_INTENT_PREVIEW,
+       AA_CAPTURE_INTENT_STILL_CAPTURE,
+       AA_CAPTURE_INTENT_VIDEO_RECORD,
+       AA_CAPTURE_INTENT_VIDEO_SNAPSHOT,
+       AA_CAPTURE_INTENT_ZERO_SHUTTER_LAG,
+       AA_CAPTURE_INTENT_STILL_CAPTURE_OIS_SINGLE,
+       AA_CAPTURE_INTENT_STILL_CAPTURE_OIS_MULTI
+};
+
+enum aa_mode {
+       AA_CONTROL_OFF = 1,
+       AA_CONTROL_AUTO,
+       AA_CONTROL_USE_SCENE_MODE
+};
+
+enum aa_scene_mode {
+       AA_SCENE_MODE_UNSUPPORTED = 1,
+       AA_SCENE_MODE_FACE_PRIORITY,
+       AA_SCENE_MODE_ACTION,
+       AA_SCENE_MODE_PORTRAIT,
+       AA_SCENE_MODE_LANDSCAPE,
+       AA_SCENE_MODE_NIGHT,
+       AA_SCENE_MODE_NIGHT_PORTRAIT,
+       AA_SCENE_MODE_THEATRE,
+       AA_SCENE_MODE_BEACH,
+       AA_SCENE_MODE_SNOW,
+       AA_SCENE_MODE_SUNSET,
+       AA_SCENE_MODE_STEADYPHOTO,
+       AA_SCENE_MODE_FIREWORKS,
+       AA_SCENE_MODE_SPORTS,
+       AA_SCENE_MODE_PARTY,
+       AA_SCENE_MODE_CANDLELIGHT,
+       AA_SCENE_MODE_BARCODE,
+       AA_SCENE_MODE_NIGHT_CAPTURE,
+       AA_SCENE_MODE_ANTISHAKE,
+       AA_SCENE_MODE_HDR,
+       AA_SCENE_MODE_LLS,
+       AA_SCENE_MODE_FDAE,
+       AA_SCENE_MODE_DUAL,
+       AA_SCENE_MODE_DRAMA,
+       AA_SCENE_MODE_ANIMATED,
+       AA_SCENE_MODE_PANORAMA,
+       AA_SCENE_MODE_GOLF,
+       AA_SCENE_MODE_PREVIEW,
+       AA_SCENE_MODE_VIDEO,
+       AA_SCENE_MODE_SLOWMOTION_2,
+       AA_SCENE_MODE_SLOWMOTION_4_8,
+       AA_SCENE_MODE_DUAL_PREVIEW,
+       AA_SCENE_MODE_DUAL_VIDEO,
+       AA_SCENE_MODE_120_PREVIEW,
+       AA_SCENE_MODE_LIGHT_TRACE
+};
+
+enum aa_effect_mode {
+       AA_EFFECT_OFF = 1,
+       AA_EFFECT_MONO,
+       AA_EFFECT_NEGATIVE,
+       AA_EFFECT_SOLARIZE,
+       AA_EFFECT_SEPIA,
+       AA_EFFECT_POSTERIZE,
+       AA_EFFECT_WHITEBOARD,
+       AA_EFFECT_BLACKBOARD,
+       AA_EFFECT_AQUA
+};
+
+enum aa_aemode {
+       AA_AEMODE_OFF = 1,
+       AA_AEMODE_LOCKED,
+       AA_AEMODE_CENTER,
+       AA_AEMODE_AVERAGE,
+       AA_AEMODE_MATRIX,
+       AA_AEMODE_SPOT,
+       AA_AEMODE_CENTER_TOUCH,
+       AA_AEMODE_AVERAGE_TOUCH,
+       AA_AEMODE_MATRIX_TOUCH,
+       AA_AEMODE_SPOT_TOUCH
+};
+
+enum aa_ae_flashmode {
+       /*all flash control stop*/
+       AA_FLASHMODE_OFF = 1,
+       /*flash start*/
+       AA_FLASHMODE_START,
+       /*flash cancle*/
+       AA_FLASHMODE_CANCLE,
+       /*internal 3A can control flash*/
+       AA_FLASHMODE_ON,
+       /*internal 3A can do auto flash algorithm*/
+       AA_FLASHMODE_AUTO,
+       /*internal 3A can fire flash by auto result*/
+       AA_FLASHMODE_CAPTURE,
+       /*internal 3A can control flash forced*/
+       AA_FLASHMODE_ON_ALWAYS
+};
+
+enum aa_ae_antibanding_mode {
+       AA_AE_ANTIBANDING_OFF = 1,
+       AA_AE_ANTIBANDING_50HZ,
+       AA_AE_ANTIBANDING_60HZ,
+       AA_AE_ANTIBANDING_AUTO,
+       AA_AE_ANTIBANDING_AUTO_50HZ,   /*50Hz + Auto*/
+       AA_AE_ANTIBANDING_AUTO_60HZ    /*60Hz + Auto*/
+};
+
+enum aa_awbmode {
+       AA_AWBMODE_OFF = 1,
+       AA_AWBMODE_LOCKED,
+       AA_AWBMODE_WB_AUTO,
+       AA_AWBMODE_WB_INCANDESCENT,
+       AA_AWBMODE_WB_FLUORESCENT,
+       AA_AWBMODE_WB_WARM_FLUORESCENT,
+       AA_AWBMODE_WB_DAYLIGHT,
+       AA_AWBMODE_WB_CLOUDY_DAYLIGHT,
+       AA_AWBMODE_WB_TWILIGHT,
+       AA_AWBMODE_WB_SHADE
+};
+
+enum aa_afmode {
+       /* These modes are adjusted immediatly */
+       AA_AFMODE_OFF = 1,
+       AA_AFMODE_SLEEP,
+       AA_AFMODE_INFINITY,
+       AA_AFMODE_MACRO,
+       AA_AFMODE_DELAYED_OFF,
+
+       /* Single AF. These modes are adjusted when afTrigger is changed from 0 to 1 */
+       AA_AFMODE_AUTO = 11,
+       AA_AFMODE_AUTO_MACRO,
+       AA_AFMODE_AUTO_VIDEO,
+       AA_AFMODE_AUTO_FACE,
+
+       /* Continuous AF. These modes are adjusted when afTrigger is changed from 0 to 1 */
+       AA_AFMODE_CONTINUOUS_PICTURE = 21,
+       AA_AFMODE_CONTINUOUS_VIDEO,
+       AA_AFMODE_CONTINUOUS_PICTURE_FACE,
+
+       /* Special modes for PDAF */
+       AA_AFMODE_PDAF_OUTFOCUSING = 31,
+       AA_AFMODE_PDAF_OUTFOCUSING_FACE,
+       AA_AFMODE_PDAF_OUTFOCUSING_CONTINUOUS_PICTURE,
+       AA_AFMODE_PDAF_OUTFOCUSING_CONTINUOUS_PICTURE_FACE,
+
+       /* Not supported yet */
+       AA_AFMODE_EDOF = 41,
+};
+
+/* camera2_aa_ctl.afRegions[4] */
+enum aa_afmode_ext {
+       AA_AFMODE_EXT_OFF = 1000,
+       /* Increase macro range for special app */
+       AA_AFMODE_EXT_ADVANCED_MACRO_FOCUS = 1001,
+       /* Set AF region for OCR */
+       AA_AFMODE_EXT_FOCUS_LOCATION = 1002,
+};
+
+enum aa_afstate {
+       AA_AFSTATE_INACTIVE = 1,
+       AA_AFSTATE_PASSIVE_SCAN,
+       AA_AFSTATE_ACTIVE_SCAN,
+       AA_AFSTATE_AF_ACQUIRED_FOCUS,
+       AA_AFSTATE_AF_FAILED_FOCUS
+};
+
+enum ae_state {
+       AE_STATE_INACTIVE = 1,
+       AE_STATE_SEARCHING,
+       AE_STATE_CONVERGED,
+       AE_STATE_LOCKED,
+       AE_STATE_FLASH_REQUIRED,
+       AE_STATE_PRECAPTURE
+};
+
+enum awb_state {
+       AWB_STATE_INACTIVE = 1,
+       AWB_STATE_SEARCHING,
+       AWB_STATE_CONVERGED,
+       AWB_STATE_LOCKED
+};
+
+enum aa_isomode {
+       AA_ISOMODE_AUTO = 1,
+       AA_ISOMODE_MANUAL,
+};
+
+struct camera2_aa_ctl {
+       enum aa_capture_intent          captureIntent;
+       enum aa_mode                    mode;
+       /*enum aa_effect_mode           effectMode;*/
+       enum aa_scene_mode              sceneMode;
+       uint32_t                        videoStabilizationMode;
+       enum aa_aemode                  aeMode;
+       uint32_t                        aeRegions[5];
+       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/
+       int32_t                         aeExpCompensation;
+       uint32_t                        aeTargetFpsRange[2];
+       enum aa_ae_antibanding_mode     aeAntibandingMode;
+       enum aa_ae_flashmode            aeflashMode;
+       enum aa_awbmode                 awbMode;
+       uint32_t                        awbRegions[5];
+       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/
+       enum aa_afmode                  afMode;
+       uint32_t                        afRegions[5];
+       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/
+       uint32_t                        afTrigger;
+       enum aa_isomode                 isoMode;
+       uint32_t                        isoValue;
+       int32_t                 awbValue;
+       uint32_t                        reserved[10];
+};
+
+struct camera2_aa_dm {
+       enum aa_mode                            mode;
+       enum aa_effect_mode                     effectMode;
+       enum aa_scene_mode                      sceneMode;
+       uint32_t                                videoStabilizationMode;
+       enum aa_aemode                          aeMode;
+       /*needs check*/
+       uint32_t                                aeRegions[5];
+       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/
+       enum ae_state                           aeState;
+       enum aa_ae_flashmode                    aeflashMode;
+       /*needs check*/
+       enum aa_awbmode                         awbMode;
+       uint32_t                                awbRegions[5];
+       enum awb_state                          awbState;
+       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region.*/
+       enum aa_afmode                          afMode;
+       uint32_t                                afRegions[5];
+       /*5 per region(x1,y1,x2,y2,weight). currently assuming 1 region*/
+       enum aa_afstate                         afState;
+       enum aa_isomode                         isoMode;
+       uint32_t                                isoValue;
+       uint32_t                                reserved[10];
+};
+
+struct camera2_aa_sm {
+       uint8_t         availableSceneModes[CAMERA2_MAX_AVAILABLE_MODE];
+       uint8_t         availableEffects[CAMERA2_MAX_AVAILABLE_MODE];
+       /*assuming # of available scene modes = 10*/
+       uint32_t        maxRegions;
+       uint8_t         aeAvailableModes[CAMERA2_MAX_AVAILABLE_MODE];
+       /*assuming # of available ae modes = 8*/
+       struct rational aeCompensationStep;
+       int32_t         aeCompensationRange[2];
+       uint32_t aeAvailableTargetFpsRanges[CAMERA2_MAX_AVAILABLE_MODE][2];
+       uint8_t         aeAvailableAntibandingModes[CAMERA2_MAX_AVAILABLE_MODE];
+       uint8_t         awbAvailableModes[CAMERA2_MAX_AVAILABLE_MODE];
+       /*assuming # of awbAvailableModes = 10*/
+       uint8_t         afAvailableModes[CAMERA2_MAX_AVAILABLE_MODE];
+       /*assuming # of afAvailableModes = 4*/
+       uint8_t availableVideoStabilizationModes[4];
+       /*assuming # of availableVideoStabilizationModes = 4*/
+       uint32_t        isoRange[2];
+};
+
+struct camera2_lens_usm {
+       /** Frame delay between sending command and applying frame data */
+       uint32_t        focusDistanceFrameDelay;
+};
+
+struct camera2_sensor_usm {
+       /** Frame delay between sending command and applying frame data */
+       uint32_t        exposureTimeFrameDelay;
+       uint32_t        frameDurationFrameDelay;
+       uint32_t        sensitivityFrameDelay;
+};
+
+struct camera2_flash_usm {
+       /** Frame delay between sending command and applying frame data */
+       uint32_t        flashModeFrameDelay;
+       uint32_t        firingPowerFrameDelay;
+       uint64_t        firingTimeFrameDelay;
+};
+
+struct camera2_ctl {
+       struct camera2_request_ctl              request;
+       struct camera2_lens_ctl                 lens;
+       struct camera2_sensor_ctl               sensor;
+       struct camera2_flash_ctl                flash;
+       struct camera2_hotpixel_ctl             hotpixel;
+       struct camera2_demosaic_ctl             demosaic;
+       struct camera2_noisereduction_ctl       noise;
+       struct camera2_shading_ctl              shading;
+       struct camera2_geometric_ctl            geometric;
+       struct camera2_colorcorrection_ctl      color;
+       struct camera2_tonemap_ctl              tonemap;
+       struct camera2_edge_ctl                 edge;
+       struct camera2_scaler_ctl               scaler;
+       struct camera2_jpeg_ctl                 jpeg;
+       struct camera2_stats_ctl                stats;
+       struct camera2_aa_ctl                   aa;
+       struct camera2_entry_ctl                entry;
+};
+
+struct camera2_dm {
+       struct camera2_request_dm               request;
+       struct camera2_lens_dm                  lens;
+       struct camera2_sensor_dm                sensor;
+       struct camera2_flash_dm                 flash;
+       struct camera2_hotpixel_dm              hotpixel;
+       struct camera2_demosaic_dm              demosaic;
+       struct camera2_noisereduction_dm        noise;
+       struct camera2_shading_dm               shading;
+       struct camera2_geometric_dm             geometric;
+       struct camera2_colorcorrection_dm       color;
+       struct camera2_tonemap_dm               tonemap;
+       struct camera2_edge_dm                  edge;
+       struct camera2_scaler_dm                scaler;
+       struct camera2_jpeg_dm                  jpeg;
+       struct camera2_stats_dm                 stats;
+       struct camera2_aa_dm                    aa;
+       struct camera2_entry_dm                 entry;
+};
+
+struct camera2_sm {
+       struct camera2_lens_sm                  lens;
+       struct camera2_sensor_sm                sensor;
+       struct camera2_flash_sm                 flash;
+       struct camera2_colorcorrection_sm       color;
+       struct camera2_tonemap_sm               tonemap;
+       struct camera2_scaler_sm                scaler;
+       struct camera2_jpeg_sm                  jpeg;
+       struct camera2_stats_sm                 stats;
+       struct camera2_aa_sm                    aa;
+
+       /** User-defined(ispfw specific) static metadata. */
+       struct camera2_lens_usm                 lensUd;
+       struct camera2_sensor_usm               sensorUd;
+       struct camera2_flash_usm                flashUd;
+};
+
+/** \brief
+       User-defined control for lens.
+*/
+struct camera2_lens_uctl {
+       struct camera2_lens_ctl ctl;
+
+       /** It depends by posSize */
+       uint32_t        pos;
+       /** It depends by af algorithm(AF pos bit. normally 8 or 9 or 10) */
+       uint32_t        posSize;
+       /** It depends by af algorithm */
+       uint32_t        direction;
+       /** Some actuator support slew rate control. */
+       uint32_t        slewRate;
+};
+
+/** \brief
+       User-defined metadata for lens.
+*/
+struct camera2_lens_udm {
+       /** It depends by posSize */
+       uint32_t        pos;
+       /** It depends by af algorithm(AF pos bit. normally 8 or 9 or 10) */
+       uint32_t        posSize;
+       /** It depends by af algorithm */
+       uint32_t        direction;
+       /** Some actuator support slew rate control. */
+       uint32_t        slewRate;
+};
+
+/** \brief
+ User-defined metadata for ae.
+*/
+struct camera2_ae_udm {
+       /** vendor specific length */
+       uint32_t        vsLength;
+       /** vendor specific data array */
+       uint32_t        vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
+};
+
+/** \brief
+ User-defined metadata for awb.
+*/
+struct camera2_awb_udm {
+       /** vendor specific length */
+       uint32_t        vsLength;
+       /** vendor specific data array */
+       uint32_t        vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
+};
+
+/** \brief
+ User-defined metadata for af.
+*/
+struct camera2_af_udm {
+       /** vendor specific length */
+       uint32_t        vsLength;
+       /** vendor specific data array */
+       uint32_t        vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
+       int32_t         lensPositionInfinity;
+       int32_t         lensPositionMacro;
+       int32_t         lensPositionCurrent;
+};
+
+/** \brief
+ User-defined metadata for anti-shading.
+*/
+struct camera2_as_udm {
+       /** vendor specific length */
+       uint32_t vsLength;
+       /** vendor specific data array */
+       uint32_t vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
+};
+
+/** \brief
+ User-defined metadata for anti-shading.
+*/
+struct camera2_ipc_udm {
+       /** vendor specific length */
+       uint32_t vsLength;
+       /** vendor specific data array */
+       uint32_t vendorSpecific[CAMERA2_MAX_VENDER_LENGTH];
+};
+
+/** \brief
+ User-defined metadata for aa.
+*/
+struct camera2_internal_udm {
+       /** vendor specific data array */
+       uint32_t vendorSpecific1[CAMERA2_MAX_VENDER_LENGTH];
+       uint32_t vendorSpecific2[CAMERA2_MAX_VENDER_LENGTH];
+       /*
+        * vendorSpecific2[0] : info
+        * vendorSpecific2[100] : 0:sirc 1:cml
+        * vendorSpecific2[101] : cml exposure
+        * vendorSpecific2[102] : cml iso(gain)
+        * vendorSpecific2[103] : cml Bv
+        */
+};
+
+/** \brief
+       User-defined control for sensor.
+*/
+struct camera2_sensor_uctl {
+       struct camera2_sensor_ctl ctl;
+       /** Dynamic frame duration.
+       This feature is decided to max. value between
+       'sensor.exposureTime'+alpha and 'sensor.frameDuration'.
+       */
+       uint64_t        dynamicFrameDuration;
+       uint32_t        analogGain;
+       uint32_t        digitalGain;
+       uint64_t        longExposureTime; /* For supporting WDR */
+       uint64_t        shortExposureTime;
+       uint32_t        longAnalogGain;
+       uint32_t        shortAnalogGain;
+       uint32_t        longDigitalGain;
+       uint32_t        shortDigitalGain;
+};
+
+struct camera2_scaler_uctl {
+       /** \brief
+       target address for next frame.
+       \remarks
+       [0] invalid address, stop
+       [others] valid address
+       */
+       uint32_t sccTargetAddress[4];
+       uint32_t scpTargetAddress[4];
+       uint32_t disTargetAddress[4];
+       uint32_t taapTargetAddress[4]; /* 3AA preview DMA */
+       uint32_t taacTargetAddress[4]; /* 3AA capture DMA */
+       uint32_t orientation;
+};
+
+struct camera2_flash_uctl {
+       struct camera2_flash_ctl ctl;
+};
+
+struct camera2_bayer_uctl {
+       struct camera2_scaler_ctl ctl;
+};
+
+enum companion_drc_mode {
+       COMPANION_DRC_OFF = 1,
+       COMPANION_DRC_ON,
+};
+
+enum companion_wdr_mode {
+       COMPANION_WDR_OFF = 1,
+       COMPANION_WDR_ON,
+};
+
+enum companion_paf_mode {
+       COMPANION_PAF_OFF = 1,
+       COMPANION_PAF_ON,
+};
+
+enum companion_bypass_mode {
+       COMPANION_FULL_BYPASS_OFF = 1,
+       COMPANION_FULL_BYPASS_ON,
+};
+
+enum companion_lsc_mode {
+       COMPANION_LSC_OFF = 1,
+       COMPANION_LSC_ON,
+};
+
+struct camera2_companion_uctl {
+       enum companion_drc_mode drc_mode;
+       enum companion_wdr_mode wdr_mode;
+       enum companion_paf_mode paf_mode;
+};
+
+struct camera2_bayer_udm {
+       uint32_t        width;
+       uint32_t        height;
+};
+
+struct camera2_pdaf_single_result {
+       uint16_t        mode;
+       uint16_t        goalPos;
+       uint16_t        reliability;
+       uint16_t        currentPos;
+};
+
+struct camera2_pdaf_multi_result {
+       uint16_t        mode;
+       uint16_t        goalPos;
+       uint16_t        reliability;
+};
+
+struct camera2_pdaf_udm {
+       uint16_t                                numCol; /* width of PDAF map, 0 means no multi PDAF data */
+       uint16_t                                numRow; /* height of PDAF map, 0 means no multi PDAF data */
+       struct camera2_pdaf_multi_result        multiResult[CAMERA2_MAX_PDAF_MULTIROI_COLUMN][CAMERA2_MAX_PDAF_MULTIROI_ROW];
+       struct camera2_pdaf_single_result       singleResult;
+       uint16_t                                lensPosResolution;      /* 1023(unsigned 10bit) */
+};
+
+struct camera2_companion_udm {
+       enum companion_drc_mode drc_mode;
+       enum companion_wdr_mode wdr_mode;
+       enum companion_paf_mode paf_mode;
+       struct camera2_pdaf_udm pdaf;
+};
+
+/** \brief
+       User-defined control area.
+    \remarks
+       sensor, lens, flash category is empty value.
+       It should be filled by a5 for SET_CAM_CONTROL command.
+       Other category is filled already from host.
+*/
+struct camera2_uctl {
+       /** \brief
+       Set sensor, lens, flash control for next frame.
+       \remarks
+       This flag can be combined.
+       [0 bit] lens
+       [1 bit] sensor
+       [2 bit] flash
+       */
+       uint32_t uUpdateBitMap;
+
+       /** For debugging */
+       uint32_t uFrameNumber;
+
+       /** ispfw specific control(user-defined) of lens. */
+       struct camera2_lens_uctl        lensUd;
+       /** ispfw specific control(user-defined) of sensor. */
+       struct camera2_sensor_uctl      sensorUd;
+       /** ispfw specific control(user-defined) of flash. */
+       struct camera2_flash_uctl       flashUd;
+
+       struct camera2_scaler_uctl      scalerUd;
+       /** ispfw specific control(user-defined) of Bcrop1. */
+       struct camera2_bayer_uctl       bayerUd;
+       struct camera2_companion_uctl   companionUd;
+       uint32_t        reserved[10];
+};
+
+struct camera2_udm {
+       struct camera2_lens_udm         lens;
+       struct camera2_ae_udm           ae;
+       struct camera2_awb_udm          awb;
+       struct camera2_af_udm           af;
+       struct camera2_as_udm           as;
+       struct camera2_ipc_udm          ipc;
+       /* KJ_121129 : Add udm for sirc sdk. */
+       struct camera2_internal_udm     internal;
+       /* Add udm for bayer down size. */
+       struct camera2_bayer_udm        bayer;
+       struct camera2_companion_udm    companion;
+       uint32_t        reserved[10];
+};
+
+struct camera2_shot {
+       /*google standard area*/
+       struct camera2_ctl      ctl;
+       struct camera2_dm       dm;
+       /*user defined area*/
+       struct camera2_uctl     uctl;
+       struct camera2_udm      udm;
+       /*magic : 23456789*/
+       uint32_t                magicNumber;
+};
+
+struct camera2_node_input {
+       /**     \brief
+               intput crop region
+               \remarks
+               [0] x axis
+               [1] y axie
+               [2] width
+               [3] height
+       */
+       uint32_t        cropRegion[4];
+};
+
+struct camera2_node_output {
+       /**     \brief
+               output crop region
+               \remarks
+               [0] x axis
+               [1] y axie
+               [2] width
+               [3] height
+       */
+       uint32_t        cropRegion[4];
+};
+
+struct camera2_node {
+       /**     \brief
+               video node id
+               \remarks
+               [x] video node id
+       */
+       uint32_t                        vid;
+
+       /**     \brief
+               stream control
+               \remarks
+               [0] disable stream out
+               [1] enable stream out
+       */
+       uint32_t                        request;
+
+       struct camera2_node_input       input;
+       struct camera2_node_output      output;
+};
+
+struct camera2_node_group {
+       /**     \brief
+               output device node
+               \remarks
+               this node can pull in image
+       */
+       struct camera2_node             leader;
+
+       /**     \brief
+               capture node list
+               \remarks
+               this node can get out image
+               3AAC, 3AAP, SCC, SCP, VDISC
+       */
+       struct camera2_node             capture[CAPTURE_NODE_MAX];
+};
+
+/** \brief
+       Structure for interfacing between HAL and driver.
+*/
+struct camera2_shot_ext {
+       /*
+        * ---------------------------------------------------------------------
+        * HAL Control Part
+        * ---------------------------------------------------------------------
+        */
+
+       /**     \brief
+               setfile change
+               \remarks
+               [x] mode for setfile
+       */
+       uint32_t                        setfile;
+
+       /**     \brief
+               node group control
+               \remarks
+               per frame control
+       */
+       struct camera2_node_group       node_group;
+
+       /**     \brief
+               post processing control(DRC)
+               \remarks
+               [0] bypass off
+               [1] bypass on
+       */
+       uint32_t                        drc_bypass;
+
+       /**     \brief
+               post processing control(DIS)
+               \remarks
+               [0] bypass off
+               [1] bypass on
+       */
+       uint32_t                        dis_bypass;
+
+       /**     \brief
+               post processing control(3DNR)
+               \remarks
+               [0] bypass off
+               [1] bypass on
+       */
+       uint32_t                        dnr_bypass;
+
+       /**     \brief
+               post processing control(FD)
+               \remarks
+               [0] bypass off
+               [1] bypass on
+       */
+       uint32_t                        fd_bypass;
+
+       /*
+        * ---------------------------------------------------------------------
+        * DRV Control Part
+        * ---------------------------------------------------------------------
+        */
+
+       /**     \brief
+               requested frames state.
+               driver return the information everytime
+               when dequeue is requested.
+               \remarks
+               [X] count
+       */
+       uint32_t                        free_cnt;
+       uint32_t                        request_cnt;
+       uint32_t                        process_cnt;
+       uint32_t                        complete_cnt;
+
+       /* reserved for future */
+       uint32_t                        reserved[15];
+
+       /**     \brief
+               processing time debugging
+               \remarks
+               taken time(unit : struct timeval)
+               [0][x] flite start
+               [1][x] flite end
+               [2][x] DRV Shot
+               [3][x] DRV Shot done
+               [4][x] DRV Meta done
+       */
+       uint32_t                        timeZone[10][2];
+
+       /*
+        * ---------------------------------------------------------------------
+        * Camera API
+        * ---------------------------------------------------------------------
+        */
+
+       struct camera2_shot             shot;
+};
+
+/** \brief
+       stream structure for scaler.
+*/
+struct camera2_stream {
+       /**     \brief
+               this address for verifying conincidence of index and address
+               \remarks
+               [X] kernel virtual address for this buffer
+       */
+       uint32_t                address;
+
+       /**     \brief
+               this frame count is from FLITE through dm.request.fcount,
+               this count increases every frame end. initial value is 1.
+               \remarks
+               [X] frame count
+       */
+       uint32_t                fcount;
+
+       /**     \brief
+               this request count is from HAL through ctl.request.fcount,
+               this count is the unique.
+               \remarks
+               [X] request count
+       */
+       uint32_t                rcount;
+
+       /**     \brief
+               frame index of isp framemgr.
+               this value is for driver internal debugging
+               \remarks
+               [X] frame index
+       */
+       uint32_t                findex;
+
+       /**     \brief
+               frame validation of isp framemgr.
+               this value is for driver and HAL internal debugging
+               \remarks
+               [X] frame valid
+       */
+       uint32_t                fvalid;
+
+       /**     \brief
+               output crop region
+               this value mean the output image places the axis of  memory space
+               \remarks
+               [0] crop x axis
+               [1] crop y axis
+               [2] width
+               [3] height
+       */
+       uint32_t                input_crop_region[4];
+       uint32_t                output_crop_region[4];
+};
+
+#define CAM_LENS_CMD           (0x1 << 0x0)
+#define CAM_SENSOR_CMD         (0x1 << 0x1)
+#define CAM_FLASH_CMD          (0x1 << 0x2)
+
+/* typedefs below are for firmware sources */
+
+typedef enum metadata_mode metadata_mode_t;
+typedef struct camera2_request_ctl camera2_request_ctl_t;
+typedef struct camera2_request_dm camera2_request_dm_t;
+typedef enum optical_stabilization_mode optical_stabilization_mode_t;
+typedef enum lens_facing lens_facing_t;
+typedef struct camera2_entry_ctl camera2_entry_ctl_t;
+typedef struct camera2_entry_dm camera2_entry_dm_t;
+typedef struct camera2_lens_ctl camera2_lens_ctl_t;
+typedef struct camera2_lens_dm camera2_lens_dm_t;
+typedef struct camera2_lens_sm camera2_lens_sm_t;
+typedef enum sensor_colorfilterarrangement sensor_colorfilterarrangement_t;
+typedef enum sensor_ref_illuminant sensor_ref_illuminant_t;
+typedef struct camera2_sensor_ctl camera2_sensor_ctl_t;
+typedef struct camera2_sensor_dm camera2_sensor_dm_t;
+typedef struct camera2_sensor_sm camera2_sensor_sm_t;
+typedef enum flash_mode flash_mode_t;
+typedef struct camera2_flash_ctl camera2_flash_ctl_t;
+typedef struct camera2_flash_dm camera2_flash_dm_t;
+typedef struct camera2_flash_sm camera2_flash_sm_t;
+typedef enum processing_mode processing_mode_t;
+typedef struct camera2_hotpixel_ctl camera2_hotpixel_ctl_t;
+typedef struct camera2_hotpixel_dm camera2_hotpixel_dm_t;
+
+typedef struct camera2_demosaic_ctl camera2_demosaic_ctl_t;
+typedef struct camera2_demosaic_dm camera2_demosaic_dm_t;
+typedef struct camera2_noisereduction_ctl camera2_noisereduction_ctl_t;
+typedef struct camera2_noisereduction_dm camera2_noisereduction_dm_t;
+typedef struct camera2_shading_ctl camera2_shading_ctl_t;
+typedef struct camera2_shading_dm camera2_shading_dm_t;
+typedef struct camera2_geometric_ctl camera2_geometric_ctl_t;
+typedef struct camera2_geometric_dm camera2_geometric_dm_t;
+typedef enum colorcorrection_mode colorcorrection_mode_t;
+typedef struct camera2_colorcorrection_ctl camera2_colorcorrection_ctl_t;
+typedef struct camera2_colorcorrection_dm camera2_colorcorrection_dm_t;
+typedef struct camera2_colorcorrection_sm camera2_colorcorrection_sm_t;
+typedef enum tonemap_mode tonemap_mode_t;
+typedef struct camera2_tonemap_ctl camera2_tonemap_ctl_t;
+typedef struct camera2_tonemap_dm camera2_tonemap_dm_t;
+typedef struct camera2_tonemap_sm camera2_tonemap_sm_t;
+
+typedef struct camera2_edge_ctl camera2_edge_ctl_t;
+typedef struct camera2_edge_dm camera2_edge_dm_t;
+typedef enum scaler_availableformats scaler_availableformats_t;
+typedef struct camera2_scaler_ctl camera2_scaler_ctl_t;
+typedef struct camera2_scaler_dm camera2_scaler_dm_t;
+typedef struct camera2_jpeg_ctl camera2_jpeg_ctl_t;
+typedef struct camera2_jpeg_dm camera2_jpeg_dm_t;
+typedef struct camera2_jpeg_sm camera2_jpeg_sm_t;
+typedef enum facedetect_mode facedetect_mode_t;
+typedef enum stats_mode stats_mode_t;
+typedef struct camera2_stats_ctl camera2_stats_ctl_t;
+typedef struct camera2_stats_dm camera2_stats_dm_t;
+typedef struct camera2_stats_sm camera2_stats_sm_t;
+typedef enum aa_capture_intent aa_capture_intent_t;
+typedef enum aa_mode aa_mode_t;
+typedef enum aa_scene_mode aa_scene_mode_t;
+typedef enum aa_effect_mode aa_effect_mode_t;
+typedef enum aa_aemode aa_aemode_t;
+typedef enum aa_ae_antibanding_mode aa_ae_antibanding_mode_t;
+typedef enum aa_awbmode aa_awbmode_t;
+typedef enum aa_afmode aa_afmode_t;
+typedef enum aa_afstate aa_afstate_t;
+typedef struct camera2_aa_ctl camera2_aa_ctl_t;
+typedef struct camera2_aa_dm camera2_aa_dm_t;
+typedef struct camera2_aa_sm camera2_aa_sm_t;
+typedef struct camera2_lens_usm camera2_lens_usm_t;
+typedef struct camera2_sensor_usm camera2_sensor_usm_t;
+typedef struct camera2_flash_usm camera2_flash_usm_t;
+typedef struct camera2_ctl camera2_ctl_t;
+typedef struct camera2_uctl camera2_uctl_t;
+typedef struct camera2_dm camera2_dm_t;
+typedef struct camera2_sm camera2_sm_t;
+
+typedef struct camera2_scaler_sm camera2_scaler_sm_t;
+typedef struct camera2_scaler_uctl camera2_scaler_uctl_t;
+
+typedef struct camera2_sensor_uctl camera2_sensor_uctl_t;
+typedef struct camera2_lens_uctl camera2_lens_uctl_t;
+typedef struct camera2_lens_udm camera2_lens_udm_t;
+
+typedef struct camera2_ae_udm camera2_ae_udm_t;
+typedef struct camera2_awb_udm camera2_awb_udm_t;
+typedef struct camera2_af_udm camera2_af_udm_t;
+typedef struct camera2_as_udm camera2_as_udm_t;
+typedef struct camera2_ipc_udm camera2_ipc_udm_t;
+typedef struct camera2_internal_udm camera2_internal_udm_t;
+
+typedef struct camera2_flash_uctl camera2_flash_uctl_t;
+
+typedef struct camera2_shot camera2_shot_t;
+
+#endif