| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * 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_EED1_8_PARAM_H |
| #define __IA_CSS_EED1_8_PARAM_H |
| |
| #include "type_support.h" |
| #include "vmem.h" /* needed for VMEM_ARRAY */ |
| |
| #include "ia_css_eed1_8_types.h" /* IA_CSS_NUMBER_OF_DEW_ENHANCE_SEGMENTS */ |
| |
| /* Configuration parameters: */ |
| |
| /* Enable median for false color correction |
| * 0: Do not use median |
| * 1: Use median |
| * Default: 1 |
| */ |
| #define EED1_8_FC_ENABLE_MEDIAN 1 |
| |
| /* Coring Threshold minima |
| * Used in Tint color suppression. |
| * Default: 1 |
| */ |
| #define EED1_8_CORINGTHMIN 1 |
| |
| /* Define size of the state..... TODO: check if this is the correct place */ |
| /* 4 planes : GR, R, B, GB */ |
| #define NUM_PLANES 4 |
| |
| /* 5 lines state per color plane input_line_state */ |
| #define EED1_8_STATE_INPUT_BUFFER_HEIGHT (5 * NUM_PLANES) |
| |
| /* Each plane has width equal to half frame line */ |
| #define EED1_8_STATE_INPUT_BUFFER_WIDTH CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2) |
| |
| /* 1 line state per color plane LD_H state */ |
| #define EED1_8_STATE_LD_H_HEIGHT (1 * NUM_PLANES) |
| #define EED1_8_STATE_LD_H_WIDTH CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2) |
| |
| /* 1 line state per color plane LD_V state */ |
| #define EED1_8_STATE_LD_V_HEIGHT (1 * NUM_PLANES) |
| #define EED1_8_STATE_LD_V_WIDTH CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2) |
| |
| /* 1 line (single plane) state for D_Hr state */ |
| #define EED1_8_STATE_D_HR_HEIGHT 1 |
| #define EED1_8_STATE_D_HR_WIDTH CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2) |
| |
| /* 1 line (single plane) state for D_Hb state */ |
| #define EED1_8_STATE_D_HB_HEIGHT 1 |
| #define EED1_8_STATE_D_HB_WIDTH CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2) |
| |
| /* 2 lines (single plane) state for D_Vr state */ |
| #define EED1_8_STATE_D_VR_HEIGHT 2 |
| #define EED1_8_STATE_D_VR_WIDTH CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2) |
| |
| /* 2 line (single plane) state for D_Vb state */ |
| #define EED1_8_STATE_D_VB_HEIGHT 2 |
| #define EED1_8_STATE_D_VB_WIDTH CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2) |
| |
| /* 2 lines state for R and B (= 2 planes) rb_zipped_state */ |
| #define EED1_8_STATE_RB_ZIPPED_HEIGHT (2 * 2) |
| #define EED1_8_STATE_RB_ZIPPED_WIDTH CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2) |
| |
| #if EED1_8_FC_ENABLE_MEDIAN |
| /* 1 full input line (GR-R color line) for Yc state */ |
| #define EED1_8_STATE_YC_HEIGHT 1 |
| #define EED1_8_STATE_YC_WIDTH MAX_FRAME_SIMDWIDTH |
| |
| /* 1 line state per color plane Cg_state */ |
| #define EED1_8_STATE_CG_HEIGHT (1 * NUM_PLANES) |
| #define EED1_8_STATE_CG_WIDTH CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2) |
| |
| /* 1 line state per color plane Co_state */ |
| #define EED1_8_STATE_CO_HEIGHT (1 * NUM_PLANES) |
| #define EED1_8_STATE_CO_WIDTH CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2) |
| |
| /* 1 full input line (GR-R color line) for AbsK state */ |
| #define EED1_8_STATE_ABSK_HEIGHT 1 |
| #define EED1_8_STATE_ABSK_WIDTH MAX_FRAME_SIMDWIDTH |
| #endif |
| |
| struct eed1_8_vmem_params { |
| VMEM_ARRAY(e_dew_enh_x, ISP_VEC_NELEMS); |
| VMEM_ARRAY(e_dew_enh_y, ISP_VEC_NELEMS); |
| VMEM_ARRAY(e_dew_enh_a, ISP_VEC_NELEMS); |
| VMEM_ARRAY(e_dew_enh_f, ISP_VEC_NELEMS); |
| VMEM_ARRAY(chgrinv_x, ISP_VEC_NELEMS); |
| VMEM_ARRAY(chgrinv_a, ISP_VEC_NELEMS); |
| VMEM_ARRAY(chgrinv_b, ISP_VEC_NELEMS); |
| VMEM_ARRAY(chgrinv_c, ISP_VEC_NELEMS); |
| VMEM_ARRAY(fcinv_x, ISP_VEC_NELEMS); |
| VMEM_ARRAY(fcinv_a, ISP_VEC_NELEMS); |
| VMEM_ARRAY(fcinv_b, ISP_VEC_NELEMS); |
| VMEM_ARRAY(fcinv_c, ISP_VEC_NELEMS); |
| VMEM_ARRAY(tcinv_x, ISP_VEC_NELEMS); |
| VMEM_ARRAY(tcinv_a, ISP_VEC_NELEMS); |
| VMEM_ARRAY(tcinv_b, ISP_VEC_NELEMS); |
| VMEM_ARRAY(tcinv_c, ISP_VEC_NELEMS); |
| }; |
| |
| /* EED (Edge Enhancing Demosaic) ISP parameters */ |
| struct eed1_8_dmem_params { |
| s32 rbzp_strength; |
| |
| s32 fcstrength; |
| s32 fcthres_0; |
| s32 fc_sat_coef; |
| s32 fc_coring_prm; |
| s32 fc_slope; |
| |
| s32 aerel_thres0; |
| s32 aerel_gain0; |
| s32 aerel_thres_diff; |
| s32 aerel_gain_diff; |
| |
| s32 derel_thres0; |
| s32 derel_gain0; |
| s32 derel_thres_diff; |
| s32 derel_gain_diff; |
| |
| s32 coring_pos0; |
| s32 coring_pos_diff; |
| s32 coring_neg0; |
| s32 coring_neg_diff; |
| |
| s32 gain_exp; |
| s32 gain_pos0; |
| s32 gain_pos_diff; |
| s32 gain_neg0; |
| s32 gain_neg_diff; |
| |
| s32 margin_pos0; |
| s32 margin_pos_diff; |
| s32 margin_neg0; |
| s32 margin_neg_diff; |
| |
| s32 e_dew_enh_asr; |
| s32 dedgew_max; |
| }; |
| |
| #endif /* __IA_CSS_EED1_8_PARAM_H */ |