1f5fbb83fSMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0 */ 29d4fa1a1SMauro Carvalho Chehab /* 39d4fa1a1SMauro Carvalho Chehab * Support for Intel Camera Imaging ISP subsystem. 49d4fa1a1SMauro Carvalho Chehab * Copyright (c) 2015, Intel Corporation. 59d4fa1a1SMauro Carvalho Chehab * 69d4fa1a1SMauro Carvalho Chehab * This program is free software; you can redistribute it and/or modify it 79d4fa1a1SMauro Carvalho Chehab * under the terms and conditions of the GNU General Public License, 89d4fa1a1SMauro Carvalho Chehab * version 2, as published by the Free Software Foundation. 99d4fa1a1SMauro Carvalho Chehab * 109d4fa1a1SMauro Carvalho Chehab * This program is distributed in the hope it will be useful, but WITHOUT 119d4fa1a1SMauro Carvalho Chehab * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 129d4fa1a1SMauro Carvalho Chehab * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 139d4fa1a1SMauro Carvalho Chehab * more details. 149d4fa1a1SMauro Carvalho Chehab */ 159d4fa1a1SMauro Carvalho Chehab 169d4fa1a1SMauro Carvalho Chehab #ifndef __IA_CSS_BNLM_PARAM_H 179d4fa1a1SMauro Carvalho Chehab #define __IA_CSS_BNLM_PARAM_H 189d4fa1a1SMauro Carvalho Chehab 199d4fa1a1SMauro Carvalho Chehab #include "type_support.h" 209d4fa1a1SMauro Carvalho Chehab #include "vmem.h" /* needed for VMEM_ARRAY */ 219d4fa1a1SMauro Carvalho Chehab 229d4fa1a1SMauro Carvalho Chehab struct bnlm_lut { 239d4fa1a1SMauro Carvalho Chehab VMEM_ARRAY(thr, ISP_VEC_NELEMS); /* thresholds */ 249d4fa1a1SMauro Carvalho Chehab VMEM_ARRAY(val, ISP_VEC_NELEMS); /* values */ 259d4fa1a1SMauro Carvalho Chehab }; 269d4fa1a1SMauro Carvalho Chehab 279d4fa1a1SMauro Carvalho Chehab struct bnlm_vmem_params { 289d4fa1a1SMauro Carvalho Chehab VMEM_ARRAY(nl_th, ISP_VEC_NELEMS); 299d4fa1a1SMauro Carvalho Chehab VMEM_ARRAY(match_quality_max_idx, ISP_VEC_NELEMS); 309d4fa1a1SMauro Carvalho Chehab struct bnlm_lut mu_root_lut; 319d4fa1a1SMauro Carvalho Chehab struct bnlm_lut sad_norm_lut; 329d4fa1a1SMauro Carvalho Chehab struct bnlm_lut sig_detail_lut; 339d4fa1a1SMauro Carvalho Chehab struct bnlm_lut sig_rad_lut; 349d4fa1a1SMauro Carvalho Chehab struct bnlm_lut rad_pow_lut; 359d4fa1a1SMauro Carvalho Chehab struct bnlm_lut nl_0_lut; 369d4fa1a1SMauro Carvalho Chehab struct bnlm_lut nl_1_lut; 379d4fa1a1SMauro Carvalho Chehab struct bnlm_lut nl_2_lut; 389d4fa1a1SMauro Carvalho Chehab struct bnlm_lut nl_3_lut; 399d4fa1a1SMauro Carvalho Chehab 409d4fa1a1SMauro Carvalho Chehab /* LUTs used for division approximiation */ 419d4fa1a1SMauro Carvalho Chehab struct bnlm_lut div_lut; 429d4fa1a1SMauro Carvalho Chehab 439d4fa1a1SMauro Carvalho Chehab VMEM_ARRAY(div_lut_intercepts, ISP_VEC_NELEMS); 449d4fa1a1SMauro Carvalho Chehab 459d4fa1a1SMauro Carvalho Chehab /* 240x does not have an ISP instruction to left shift each element of a 469d4fa1a1SMauro Carvalho Chehab * vector by different shift value. Hence it will be simulated by multiplying 479d4fa1a1SMauro Carvalho Chehab * the elements by required 2^shift. */ 489d4fa1a1SMauro Carvalho Chehab VMEM_ARRAY(power_of_2, ISP_VEC_NELEMS); 499d4fa1a1SMauro Carvalho Chehab }; 509d4fa1a1SMauro Carvalho Chehab 519d4fa1a1SMauro Carvalho Chehab /* BNLM ISP parameters */ 529d4fa1a1SMauro Carvalho Chehab struct bnlm_dmem_params { 539d4fa1a1SMauro Carvalho Chehab bool rad_enable; 549d4fa1a1SMauro Carvalho Chehab s32 rad_x_origin; 559d4fa1a1SMauro Carvalho Chehab s32 rad_y_origin; 569d4fa1a1SMauro Carvalho Chehab s32 avg_min_th; 579d4fa1a1SMauro Carvalho Chehab s32 max_min_th; 589d4fa1a1SMauro Carvalho Chehab 599d4fa1a1SMauro Carvalho Chehab s32 exp_coeff_a; 609d4fa1a1SMauro Carvalho Chehab u32 exp_coeff_b; 619d4fa1a1SMauro Carvalho Chehab s32 exp_coeff_c; 629d4fa1a1SMauro Carvalho Chehab u32 exp_exponent; 639d4fa1a1SMauro Carvalho Chehab }; 649d4fa1a1SMauro Carvalho Chehab 659d4fa1a1SMauro Carvalho Chehab #endif /* __IA_CSS_BNLM_PARAM_H */ 66