/* 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 */