| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* Release Version: irci_stable_candrpv_0415_20150521_0458 */ |
| /* |
| * Support for Intel Camera Imaging ISP subsystem. |
| * Copyright (c) 2015, Intel Corporation. |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms and conditions of the GNU General Public License, |
| * version 2, as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| * more details. |
| */ |
| |
| #ifndef _IA_CSS_TYPES_H |
| #define _IA_CSS_TYPES_H |
| |
| /* @file |
| * This file contains types used for the ia_css parameters. |
| * These types are in a separate file because they are expected |
| * to be used in software layers that do not access the CSS API |
| * directly but still need to forward parameters for it. |
| */ |
| |
| #include <type_support.h> |
| |
| #include "ia_css_frac.h" |
| |
| #include "isp/kernels/aa/aa_2/ia_css_aa2_types.h" |
| #include "isp/kernels/anr/anr_1.0/ia_css_anr_types.h" |
| #include "isp/kernels/anr/anr_2/ia_css_anr2_types.h" |
| #include "isp/kernels/cnr/cnr_2/ia_css_cnr2_types.h" |
| #include "isp/kernels/csc/csc_1.0/ia_css_csc_types.h" |
| #include "isp/kernels/ctc/ctc_1.0/ia_css_ctc_types.h" |
| #include "isp/kernels/dp/dp_1.0/ia_css_dp_types.h" |
| #include "isp/kernels/de/de_1.0/ia_css_de_types.h" |
| #include "isp/kernels/de/de_2/ia_css_de2_types.h" |
| #include "isp/kernels/fc/fc_1.0/ia_css_formats_types.h" |
| #include "isp/kernels/fpn/fpn_1.0/ia_css_fpn_types.h" |
| #include "isp/kernels/gc/gc_1.0/ia_css_gc_types.h" |
| #include "isp/kernels/gc/gc_2/ia_css_gc2_types.h" |
| #include "isp/kernels/macc/macc_1.0/ia_css_macc_types.h" |
| #include "isp/kernels/ob/ob_1.0/ia_css_ob_types.h" |
| #include "isp/kernels/s3a/s3a_1.0/ia_css_s3a_types.h" |
| #include "isp/kernels/sc/sc_1.0/ia_css_sc_types.h" |
| #include "isp/kernels/sdis/sdis_1.0/ia_css_sdis_types.h" |
| #include "isp/kernels/sdis/sdis_2/ia_css_sdis2_types.h" |
| #include "isp/kernels/tnr/tnr_1.0/ia_css_tnr_types.h" |
| #include "isp/kernels/wb/wb_1.0/ia_css_wb_types.h" |
| #include "isp/kernels/xnr/xnr_1.0/ia_css_xnr_types.h" |
| #include "isp/kernels/xnr/xnr_3.0/ia_css_xnr3_types.h" |
| |
| /* ISP2401 */ |
| #include "isp/kernels/tnr/tnr3/ia_css_tnr3_types.h" |
| |
| #include "isp/kernels/ynr/ynr_1.0/ia_css_ynr_types.h" |
| #include "isp/kernels/ynr/ynr_2/ia_css_ynr2_types.h" |
| #include "isp/kernels/output/output_1.0/ia_css_output_types.h" |
| |
| #define IA_CSS_DVS_STAT_GRID_INFO_SUPPORTED |
| /** Should be removed after Driver adaptation will be done */ |
| |
| #define IA_CSS_VERSION_MAJOR 2 |
| #define IA_CSS_VERSION_MINOR 0 |
| #define IA_CSS_VERSION_REVISION 2 |
| |
| #define IA_CSS_MORPH_TABLE_NUM_PLANES 6 |
| |
| /* Min and max exposure IDs. These macros are here to allow |
| * the drivers to get this information. Changing these macros |
| * constitutes a CSS API change. */ |
| #define IA_CSS_ISYS_MIN_EXPOSURE_ID 1 /** Minimum exposure ID */ |
| #define IA_CSS_ISYS_MAX_EXPOSURE_ID 250 /** Maximum exposure ID */ |
| |
| /* opaque types */ |
| struct ia_css_isp_parameters; |
| struct ia_css_pipe; |
| struct ia_css_memory_offsets; |
| struct ia_css_config_memory_offsets; |
| struct ia_css_state_memory_offsets; |
| |
| /* Virtual address within the CSS address space. */ |
| typedef u32 ia_css_ptr; |
| |
| /* Generic resolution structure. |
| */ |
| struct ia_css_resolution { |
| u32 width; /** Width */ |
| u32 height; /** Height */ |
| }; |
| |
| /* Generic coordinate structure. |
| */ |
| struct ia_css_coordinate { |
| s32 x; /** Value of a coordinate on the horizontal axis */ |
| s32 y; /** Value of a coordinate on the vertical axis */ |
| }; |
| |
| /* Vector with signed values. This is used to indicate motion for |
| * Digital Image Stabilization. |
| */ |
| struct ia_css_vector { |
| s32 x; /** horizontal motion (in pixels) */ |
| s32 y; /** vertical motion (in pixels) */ |
| }; |
| |
| /* Short hands */ |
| #define IA_CSS_ISP_DMEM IA_CSS_ISP_DMEM0 |
| #define IA_CSS_ISP_VMEM IA_CSS_ISP_VMEM0 |
| |
| /* CSS data descriptor */ |
| struct ia_css_data { |
| ia_css_ptr address; /** CSS virtual address */ |
| u32 size; /** Disabled if 0 */ |
| }; |
| |
| /* Host data descriptor */ |
| struct ia_css_host_data { |
| char *address; /** Host address */ |
| u32 size; /** Disabled if 0 */ |
| }; |
| |
| /* ISP data descriptor */ |
| struct ia_css_isp_data { |
| u32 address; /** ISP address */ |
| u32 size; /** Disabled if 0 */ |
| }; |
| |
| /* Shading Correction types. */ |
| enum ia_css_shading_correction_type { |
| IA_CSS_SHADING_CORRECTION_NONE, /** Shading Correction is not processed in the pipe. */ |
| IA_CSS_SHADING_CORRECTION_TYPE_1 /** Shading Correction 1.0 (pipe 1.0 on ISP2300, pipe 2.2 on ISP2400/2401) */ |
| |
| /** More shading correction types can be added in the future. */ |
| }; |
| |
| /* Shading Correction information. */ |
| struct ia_css_shading_info { |
| enum ia_css_shading_correction_type type; /** Shading Correction type. */ |
| |
| union { /* Shading Correction information of each Shading Correction types. */ |
| |
| /* Shading Correction information of IA_CSS_SHADING_CORRECTION_TYPE_1. |
| * |
| * This structure contains the information necessary to generate |
| * the shading table required in the isp. |
| * This structure is filled in the css, |
| * and the driver needs to get it to generate the shading table. |
| * |
| * Before the shading correction is applied, NxN-filter and/or scaling |
| * are applied in the isp, depending on the isp binaries. |
| * Then, these should be considered in generating the shading table. |
| * - Bad pixels on left/top sides generated by NxN-filter |
| * (Bad pixels are NOT considered currently, |
| * because they are subtle.) |
| * - Down-scaling/Up-scaling factor |
| * |
| * Shading correction is applied to the area |
| * which has real sensor data and margin. |
| * Then, the shading table should cover the area including margin. |
| * This structure has this information. |
| * - Origin coordinate of bayer (real sensor data) |
| * on the shading table |
| * |
| * ------------------------ISP 2401----------------------- |
| * |
| * the shading table directly required from ISP. |
| * This structure is filled in CSS, and the driver needs to get it to generate the shading table. |
| * |
| * The shading correction is applied to the bayer area which contains sensor data and padding data. |
| * The shading table should cover this bayer area. |
| * |
| * The shading table size directly required from ISP is expressed by these parameters. |
| * 1. uint32_t num_hor_grids; |
| * 2. uint32_t num_ver_grids; |
| * 3. uint32_t bqs_per_grid_cell; |
| * |
| * In some isp binaries, the bayer scaling is applied before the shading correction is applied. |
| * Then, this scaling factor should be considered in generating the shading table. |
| * The scaling factor is expressed by these parameters. |
| * 4. uint32_t bayer_scale_hor_ratio_in; |
| * 5. uint32_t bayer_scale_hor_ratio_out; |
| * 6. uint32_t bayer_scale_ver_ratio_in; |
| * 7. uint32_t bayer_scale_ver_ratio_out; |
| * |
| * The sensor data size inputted to ISP is expressed by this parameter. |
| * This is the size BEFORE the bayer scaling is applied. |
| * 8. struct ia_css_resolution isp_input_sensor_data_res_bqs; |
| * |
| * The origin of the sensor data area positioned on the shading table at the shading correction |
| * is expressed by this parameter. |
| * The size of this area assumes the size AFTER the bayer scaling is applied |
| * to the isp_input_sensor_data_resolution_bqs. |
| * 9. struct ia_css_coordinate sensor_data_origin_bqs_on_sctbl; |
| * |
| * ****** Definitions of the shading table and the sensor data at the shading correction ****** |
| * |
| * (0,0)--------------------- TW ------------------------------- |
| * | shading table | |
| * | (ox,oy)---------- W -------------------------- | |
| * | | sensor data | | |
| * | | | | |
| * TH H sensor data center | | |
| * | | (cx,cy) | | |
| * | | | | |
| * | | | | |
| * | | | | |
| * | ------------------------------------------- | |
| * | | |
| * ---------------------------------------------------------- |
| * |
| * Example of still mode for output 1080p: |
| * |
| * num_hor_grids = 66 |
| * num_ver_grids = 37 |
| * bqs_per_grid_cell = 16 |
| * bayer_scale_hor_ratio_in = 1 |
| * bayer_scale_hor_ratio_out = 1 |
| * bayer_scale_ver_ratio_in = 1 |
| * bayer_scale_ver_ratio_out = 1 |
| * isp_input_sensor_data_resolution_bqs = {966, 546} |
| * sensor_data_origin_bqs_on_sctbl = {61, 15} |
| * |
| * TW, TH [bqs]: width and height of shading table |
| * TW = (num_hor_grids - 1) * bqs_per_grid_cell = (66 - 1) * 16 = 1040 |
| * TH = (num_ver_grids - 1) * bqs_per_grid_cell = (37 - 1) * 16 = 576 |
| * |
| * W, H [bqs]: width and height of sensor data at shading correction |
| * W = sensor_data_res_bqs.width |
| * = isp_input_sensor_data_res_bqs.width |
| * * bayer_scale_hor_ratio_out / bayer_scale_hor_ratio_in + 0.5 = 966 |
| * H = sensor_data_res_bqs.height |
| * = isp_input_sensor_data_res_bqs.height |
| * * bayer_scale_ver_ratio_out / bayer_scale_ver_ratio_in + 0.5 = 546 |
| * |
| * (ox, oy) [bqs]: origin of sensor data positioned on shading table at shading correction |
| * ox = sensor_data_origin_bqs_on_sctbl.x = 61 |
| * oy = sensor_data_origin_bqs_on_sctbl.y = 15 |
| * |
| * (cx, cy) [bqs]: center of sensor data positioned on shading table at shading correction |
| * cx = ox + W/2 = 61 + 966/2 = 544 |
| * cy = oy + H/2 = 15 + 546/2 = 288 |
| * |
| * ****** Relation between the shading table and the sensor data ****** |
| * |
| * The origin of the sensor data should be on the shading table. |
| * 0 <= ox < TW, 0 <= oy < TH |
| * |
| * ****** How to center the shading table on the sensor data ****** |
| * |
| * To center the shading table on the sensor data, |
| * CSS decides the shading table size so that a certain grid point is positioned |
| * on the center of the sensor data at the shading correction. |
| * CSS expects the shading center is set on this grid point |
| * when the shading table data is calculated in AIC. |
| * |
| * W, H [bqs]: width and height of sensor data at shading correction |
| * W = sensor_data_res_bqs.width |
| * H = sensor_data_res_bqs.height |
| * |
| * (cx, cy) [bqs]: center of sensor data positioned on shading table at shading correction |
| * cx = sensor_data_origin_bqs_on_sctbl.x + W/2 |
| * cy = sensor_data_origin_bqs_on_sctbl.y + H/2 |
| * |
| * CSS decides the shading table size and the sensor data position |
| * so that the (cx, cy) satisfies this condition. |
| * mod(cx, bqs_per_grid_cell) = 0 |
| * mod(cy, bqs_per_grid_cell) = 0 |
| * |
| * ****** How to change the sensor data size by processes in the driver and ISP ****** |
| * |
| * 1. sensor data size: Physical sensor size |
| * (The struct ia_css_shading_info does not have this information.) |
| * 2. process: Driver applies the sensor cropping/binning/scaling to physical sensor size. |
| * 3. sensor data size: ISP input size (== shading_info.isp_input_sensor_data_res_bqs) |
| * (ISP assumes the ISP input sensor data is centered on the physical sensor.) |
| * 4. process: ISP applies the bayer scaling by the factor of shading_info.bayer_scale_*. |
| * 5. sensor data size: Scaling factor * ISP input size (== shading_info.sensor_data_res_bqs) |
| * 6. process: ISP applies the shading correction. |
| * |
| * ISP block: SC1 |
| * ISP1: SC1 is used. |
| * ISP2: SC1 is used. |
| */ |
| struct { |
| /* ISP2400 */ |
| u32 enable; /** Shading correction enabled. |
| 0:disabled, 1:enabled */ |
| |
| /* ISP2401 */ |
| u32 num_hor_grids; /** Number of data points per line per color on shading table. */ |
| u32 num_ver_grids; /** Number of lines of data points per color on shading table. */ |
| u32 bqs_per_grid_cell; /** Grid cell size in BQ unit. |
| NOTE: bqs = size in BQ(Bayer Quad) unit. |
| 1BQ means {Gr,R,B,Gb} (2x2 pixels). |
| Horizontal 1 bqs corresponds to horizontal 2 pixels. |
| Vertical 1 bqs corresponds to vertical 2 pixels. */ |
| u32 bayer_scale_hor_ratio_in; |
| u32 bayer_scale_hor_ratio_out; |
| |
| /** Horizontal ratio of bayer scaling between input width and output width, |
| for the scaling which should be done before shading correction. |
| output_width = input_width * bayer_scale_hor_ratio_out |
| / bayer_scale_hor_ratio_in + 0.5 */ |
| u32 bayer_scale_ver_ratio_in; |
| u32 bayer_scale_ver_ratio_out; |
| |
| /** Vertical ratio of bayer scaling |
| between input height and output height, for the scaling |
| which should be done before shading correction. |
| output_height = input_height * bayer_scale_ver_ratio_out |
| / bayer_scale_ver_ratio_in */ |
| /* ISP2400 */ |
| u32 sc_bayer_origin_x_bqs_on_shading_table; |
| /** X coordinate (in bqs) of bayer origin on shading table. |
| This indicates the left-most pixel of bayer |
| (not include margin) inputted to the shading correction. |
| This corresponds to the left-most pixel of bayer |
| inputted to isp from sensor. */ |
| /* ISP2400 */ |
| u32 sc_bayer_origin_y_bqs_on_shading_table; |
| /** Y coordinate (in bqs) of bayer origin on shading table. |
| This indicates the top pixel of bayer |
| (not include margin) inputted to the shading correction. |
| This corresponds to the top pixel of bayer |
| inputted to isp from sensor. */ |
| |
| /** Vertical ratio of bayer scaling between input height and output height, |
| for the scaling which should be done before shading correction. |
| output_height = input_height * bayer_scale_ver_ratio_out |
| / bayer_scale_ver_ratio_in + 0.5 */ |
| /* ISP2401 */ |
| struct ia_css_resolution isp_input_sensor_data_res_bqs; |
| /** Sensor data size (in bqs) inputted to ISP. This is the size BEFORE bayer scaling. |
| NOTE: This is NOT the size of the physical sensor size. |
| CSS requests the driver that ISP inputs sensor data |
| by the size of isp_input_sensor_data_res_bqs. |
| The driver sends the sensor data to ISP, |
| after the adequate cropping/binning/scaling |
| are applied to the physical sensor data area. |
| ISP assumes the area of isp_input_sensor_data_res_bqs |
| is centered on the physical sensor. */ |
| /* ISP2401 */ |
| struct ia_css_resolution sensor_data_res_bqs; |
| /** Sensor data size (in bqs) at shading correction. |
| This is the size AFTER bayer scaling. */ |
| /* ISP2401 */ |
| struct ia_css_coordinate sensor_data_origin_bqs_on_sctbl; |
| /** Origin of sensor data area positioned on shading table at shading correction. |
| The coordinate x,y should be positive values. */ |
| } type_1; |
| |
| /** More structures can be added here when more shading correction types will be added |
| in the future. */ |
| } info; |
| }; |
| |
| /* Default Shading Correction information of Shading Correction Type 1. */ |
| #define DEFAULT_SHADING_INFO_TYPE_1 \ |
| (struct ia_css_shading_info) { \ |
| .type = IA_CSS_SHADING_CORRECTION_TYPE_1, \ |
| .info = { \ |
| .type_1 = { \ |
| .bayer_scale_hor_ratio_in = 1, \ |
| .bayer_scale_hor_ratio_out = 1, \ |
| .bayer_scale_ver_ratio_in = 1, \ |
| .bayer_scale_ver_ratio_out = 1, \ |
| } \ |
| } \ |
| } |
| |
| /* Default Shading Correction information. */ |
| #define DEFAULT_SHADING_INFO DEFAULT_SHADING_INFO_TYPE_1 |
| |
| /* structure that describes the 3A and DIS grids */ |
| struct ia_css_grid_info { |
| /* \name ISP input size |
| * that is visible for user |
| * @{ |
| */ |
| u32 isp_in_width; |
| u32 isp_in_height; |
| /* @}*/ |
| |
| struct ia_css_3a_grid_info s3a_grid; /** 3A grid info */ |
| union ia_css_dvs_grid_u dvs_grid; |
| /** All types of DVS statistics grid info union */ |
| |
| enum ia_css_vamem_type vamem_type; |
| }; |
| |
| /* defaults for ia_css_grid_info structs */ |
| #define DEFAULT_GRID_INFO { \ |
| .dvs_grid = DEFAULT_DVS_GRID_INFO, \ |
| .vamem_type = IA_CSS_VAMEM_TYPE_1 \ |
| } |
| |
| /* Morphing table, used for geometric distortion and chromatic abberration |
| * correction (GDCAC, also called GDC). |
| * This table describes the imperfections introduced by the lens, the |
| * advanced ISP can correct for these imperfections using this table. |
| */ |
| struct ia_css_morph_table { |
| u32 enable; /** To disable GDC, set this field to false. The |
| coordinates fields can be set to NULL in this case. */ |
| u32 height; /** Table height */ |
| u32 width; /** Table width */ |
| u16 *coordinates_x[IA_CSS_MORPH_TABLE_NUM_PLANES]; |
| /** X coordinates that describe the sensor imperfection */ |
| u16 *coordinates_y[IA_CSS_MORPH_TABLE_NUM_PLANES]; |
| /** Y coordinates that describe the sensor imperfection */ |
| }; |
| |
| struct ia_css_dvs_6axis_config { |
| unsigned int exp_id; |
| /** Exposure ID, see ia_css_event_public.h for more detail */ |
| u32 width_y; |
| u32 height_y; |
| u32 width_uv; |
| u32 height_uv; |
| u32 *xcoords_y; |
| u32 *ycoords_y; |
| u32 *xcoords_uv; |
| u32 *ycoords_uv; |
| }; |
| |
| /** |
| * This specifies the coordinates (x,y) |
| */ |
| struct ia_css_point { |
| s32 x; /** x coordinate */ |
| s32 y; /** y coordinate */ |
| }; |
| |
| /** |
| * This specifies the region |
| */ |
| struct ia_css_region { |
| struct ia_css_point origin; /** Starting point coordinates for the region */ |
| struct ia_css_resolution resolution; /** Region resolution */ |
| }; |
| |
| /** |
| * Digital zoom: |
| * This feature is currently available only for video, but will become |
| * available for preview and capture as well. |
| * Set the digital zoom factor, this is a logarithmic scale. The actual zoom |
| * factor will be 64/x. |
| * Setting dx or dy to 0 disables digital zoom for that direction. |
| * New API change for Digital zoom:(added struct ia_css_region zoom_region) |
| * zoom_region specifies the origin of the zoom region and width and |
| * height of that region. |
| * origin : This is the coordinate (x,y) within the effective input resolution |
| * of the stream. where, x >= 0 and y >= 0. (0,0) maps to the upper left of the |
| * effective input resolution. |
| * resolution : This is resolution of zoom region. |
| * where, x + width <= effective input width |
| * y + height <= effective input height |
| */ |
| struct ia_css_dz_config { |
| u32 dx; /** Horizontal zoom factor */ |
| u32 dy; /** Vertical zoom factor */ |
| struct ia_css_region zoom_region; /** region for zoom */ |
| }; |
| |
| /* The still capture mode, this can be RAW (simply copy sensor input to DDR), |
| * Primary ISP, the Advanced ISP (GDC) or the low-light ISP (ANR). |
| */ |
| enum ia_css_capture_mode { |
| IA_CSS_CAPTURE_MODE_RAW, /** no processing, copy data only */ |
| IA_CSS_CAPTURE_MODE_BAYER, /** bayer processing, up to demosaic */ |
| IA_CSS_CAPTURE_MODE_PRIMARY, /** primary ISP */ |
| IA_CSS_CAPTURE_MODE_ADVANCED, /** advanced ISP (GDC) */ |
| IA_CSS_CAPTURE_MODE_LOW_LIGHT /** low light ISP (ANR) */ |
| }; |
| |
| struct ia_css_capture_config { |
| enum ia_css_capture_mode mode; /** Still capture mode */ |
| u32 enable_xnr; /** Enable/disable XNR */ |
| u32 enable_raw_output; |
| bool enable_capture_pp_bli; /** Enable capture_pp_bli mode */ |
| }; |
| |
| /* default settings for ia_css_capture_config structs */ |
| #define DEFAULT_CAPTURE_CONFIG { \ |
| .mode = IA_CSS_CAPTURE_MODE_PRIMARY, \ |
| } |
| |
| /* ISP filter configuration. This is a collection of configurations |
| * for each of the ISP filters (modules). |
| * |
| * NOTE! The contents of all pointers is copied when get or set with the |
| * exception of the shading and morph tables. For these we only copy the |
| * pointer, so the caller must make sure the memory contents of these pointers |
| * remain valid as long as they are used by the CSS. This will be fixed in the |
| * future by copying the contents instead of just the pointer. |
| * |
| * Comment: |
| * ["ISP block", 1&2] : ISP block is used both for ISP1 and ISP2. |
| * ["ISP block", 1only] : ISP block is used only for ISP1. |
| * ["ISP block", 2only] : ISP block is used only for ISP2. |
| */ |
| struct ia_css_isp_config { |
| struct ia_css_wb_config *wb_config; /** White Balance |
| [WB1, 1&2] */ |
| struct ia_css_cc_config *cc_config; /** Color Correction |
| [CSC1, 1only] */ |
| struct ia_css_tnr_config *tnr_config; /** Temporal Noise Reduction |
| [TNR1, 1&2] */ |
| struct ia_css_ecd_config *ecd_config; /** Eigen Color Demosaicing |
| [DE2, 2only] */ |
| struct ia_css_ynr_config *ynr_config; /** Y(Luma) Noise Reduction |
| [YNR2&YEE2, 2only] */ |
| struct ia_css_fc_config *fc_config; /** Fringe Control |
| [FC2, 2only] */ |
| struct ia_css_formats_config |
| *formats_config; /** Formats Control for main output |
| [FORMATS, 1&2] */ |
| struct ia_css_cnr_config *cnr_config; /** Chroma Noise Reduction |
| [CNR2, 2only] */ |
| struct ia_css_macc_config *macc_config; /** MACC |
| [MACC2, 2only] */ |
| struct ia_css_ctc_config *ctc_config; /** Chroma Tone Control |
| [CTC2, 2only] */ |
| struct ia_css_aa_config *aa_config; /** YUV Anti-Aliasing |
| [AA2, 2only] |
| (not used currently) */ |
| struct ia_css_aa_config *baa_config; /** Bayer Anti-Aliasing |
| [BAA2, 1&2] */ |
| struct ia_css_ce_config *ce_config; /** Chroma Enhancement |
| [CE1, 1only] */ |
| struct ia_css_dvs_6axis_config *dvs_6axis_config; |
| struct ia_css_ob_config *ob_config; /** Objective Black |
| [OB1, 1&2] */ |
| struct ia_css_dp_config *dp_config; /** Defect Pixel Correction |
| [DPC1/DPC2, 1&2] */ |
| struct ia_css_nr_config *nr_config; /** Noise Reduction |
| [BNR1&YNR1&CNR1, 1&2]*/ |
| struct ia_css_ee_config *ee_config; /** Edge Enhancement |
| [YEE1, 1&2] */ |
| struct ia_css_de_config *de_config; /** Demosaic |
| [DE1, 1only] */ |
| struct ia_css_gc_config *gc_config; /** Gamma Correction (for YUV) |
| [GC1, 1only] */ |
| struct ia_css_anr_config *anr_config; /** Advanced Noise Reduction */ |
| struct ia_css_3a_config *s3a_config; /** 3A Statistics config */ |
| struct ia_css_xnr_config *xnr_config; /** eXtra Noise Reduction */ |
| struct ia_css_dz_config *dz_config; /** Digital Zoom */ |
| struct ia_css_cc_config *yuv2rgb_cc_config; /** Color Correction |
| [CCM2, 2only] */ |
| struct ia_css_cc_config *rgb2yuv_cc_config; /** Color Correction |
| [CSC2, 2only] */ |
| struct ia_css_macc_table *macc_table; /** MACC |
| [MACC1/MACC2, 1&2]*/ |
| struct ia_css_gamma_table *gamma_table; /** Gamma Correction (for YUV) |
| [GC1, 1only] */ |
| struct ia_css_ctc_table *ctc_table; /** Chroma Tone Control |
| [CTC1, 1only] */ |
| |
| /* \deprecated */ |
| struct ia_css_xnr_table *xnr_table; /** eXtra Noise Reduction |
| [XNR1, 1&2] */ |
| struct ia_css_rgb_gamma_table *r_gamma_table;/** sRGB Gamma Correction |
| [GC2, 2only] */ |
| struct ia_css_rgb_gamma_table *g_gamma_table;/** sRGB Gamma Correction |
| [GC2, 2only] */ |
| struct ia_css_rgb_gamma_table *b_gamma_table;/** sRGB Gamma Correction |
| [GC2, 2only] */ |
| struct ia_css_vector *motion_vector; /** For 2-axis DVS */ |
| struct ia_css_shading_table *shading_table; |
| struct ia_css_morph_table *morph_table; |
| struct ia_css_dvs_coefficients *dvs_coefs; /** DVS 1.0 coefficients */ |
| struct ia_css_dvs2_coefficients *dvs2_coefs; /** DVS 2.0 coefficients */ |
| struct ia_css_capture_config *capture_config; |
| struct ia_css_anr_thres *anr_thres; |
| /* @deprecated{Old shading settings, see bugzilla bz675 for details} */ |
| struct ia_css_shading_settings *shading_settings; |
| struct ia_css_xnr3_config *xnr3_config; /** eXtreme Noise Reduction v3 */ |
| /* comment from Lasse: Be aware how this feature will affect coordinate |
| * normalization in different parts of the system. (e.g. face detection, |
| * touch focus, 3A statistics and windows of interest, shading correction, |
| * DVS, GDC) from IQ tool level and application level down-to ISP FW level. |
| * the risk for regression is not in the individual blocks, but how they |
| * integrate together. */ |
| struct ia_css_output_config |
| *output_config; /** Main Output Mirroring, flipping */ |
| |
| struct ia_css_scaler_config |
| *scaler_config; /** Skylake: scaler config (optional) */ |
| struct ia_css_formats_config |
| *formats_config_display;/** Formats control for viewfinder/display output (optional) |
| [OSYS, n/a] */ |
| struct ia_css_output_config |
| *output_config_display; /** Viewfinder/display output mirroring, flipping (optional) */ |
| |
| struct ia_css_frame |
| *output_frame; /** Output frame the config is to be applied to (optional) */ |
| u32 isp_config_id; /** Unique ID to track which config was actually applied to a particular frame */ |
| }; |
| |
| #endif /* _IA_CSS_TYPES_H */ |