1 /* 2 * Support for Intel Camera Imaging ISP subsystem. 3 * Copyright (c) 2015, Intel Corporation. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms and conditions of the GNU General Public License, 7 * version 2, as published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 */ 14 15 #include "type_support.h" 16 #include "ia_css_bnr2_2.host.h" 17 18 #ifndef IA_CSS_NO_DEBUG 19 #include "ia_css_debug.h" /* ia_css_debug_dtrace() */ 20 #endif 21 22 /* Default kernel parameters. */ 23 const struct ia_css_bnr2_2_config default_bnr2_2_config = { 24 200, 25 200, 26 200, 27 0, 28 0, 29 0, 30 200, 31 200, 32 200, 33 0, 34 0, 35 0, 36 0, 37 4096, 38 8191, 39 128, 40 1, 41 0, 42 0, 43 0, 44 8191, 45 0, 46 8191 47 }; 48 49 void 50 ia_css_bnr2_2_encode( 51 struct sh_css_isp_bnr2_2_params *to, 52 const struct ia_css_bnr2_2_config *from, 53 size_t size) 54 { 55 (void)size; 56 to->d_var_gain_r = from->d_var_gain_r; 57 to->d_var_gain_g = from->d_var_gain_g; 58 to->d_var_gain_b = from->d_var_gain_b; 59 to->d_var_gain_slope_r = from->d_var_gain_slope_r; 60 to->d_var_gain_slope_g = from->d_var_gain_slope_g; 61 to->d_var_gain_slope_b = from->d_var_gain_slope_b; 62 63 to->n_var_gain_r = from->n_var_gain_r; 64 to->n_var_gain_g = from->n_var_gain_g; 65 to->n_var_gain_b = from->n_var_gain_b; 66 to->n_var_gain_slope_r = from->n_var_gain_slope_r; 67 to->n_var_gain_slope_g = from->n_var_gain_slope_g; 68 to->n_var_gain_slope_b = from->n_var_gain_slope_b; 69 70 to->dir_thres = from->dir_thres; 71 to->dir_thres_w = from->dir_thres_w; 72 to->var_offset_coef = from->var_offset_coef; 73 74 to->dir_gain = from->dir_gain; 75 to->detail_gain = from->detail_gain; 76 to->detail_gain_divisor = from->detail_gain_divisor; 77 to->detail_level_offset = from->detail_level_offset; 78 79 to->d_var_th_min = from->d_var_th_min; 80 to->d_var_th_max = from->d_var_th_max; 81 to->n_var_th_min = from->n_var_th_min; 82 to->n_var_th_max = from->n_var_th_max; 83 } 84 85 #ifndef IA_CSS_NO_DEBUG 86 void 87 ia_css_bnr2_2_debug_dtrace( 88 const struct ia_css_bnr2_2_config *bnr, 89 unsigned int level) 90 { 91 if (!bnr) 92 return; 93 94 ia_css_debug_dtrace(level, "Bayer Noise Reduction 2.2:\n"); 95 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "d_var_gain_r", bnr->d_var_gain_r); 96 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "d_var_gain_g", bnr->d_var_gain_g); 97 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "d_var_gain_b", bnr->d_var_gain_b); 98 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "d_var_gain_slope_r", 99 bnr->d_var_gain_slope_r); 100 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "d_var_gain_slope_g", 101 bnr->d_var_gain_slope_g); 102 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "d_var_gain_slope_b", 103 bnr->d_var_gain_slope_b); 104 105 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "n_var_gain_r", bnr->n_var_gain_r); 106 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "n_var_gain_g", bnr->n_var_gain_g); 107 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "n_var_gain_b", bnr->n_var_gain_b); 108 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "n_var_gain_slope_r", 109 bnr->n_var_gain_slope_r); 110 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "n_var_gain_slope_g", 111 bnr->n_var_gain_slope_g); 112 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "n_var_gain_slope_b", 113 bnr->n_var_gain_slope_b); 114 115 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "dir_thres", bnr->dir_thres); 116 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "dir_thres_w", bnr->dir_thres_w); 117 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "var_offset_coef", 118 bnr->var_offset_coef); 119 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "dir_gain", bnr->dir_gain); 120 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "detail_gain", bnr->detail_gain); 121 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "detail_gain_divisor", 122 bnr->detail_gain_divisor); 123 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "detail_level_offset", 124 bnr->detail_level_offset); 125 126 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "d_var_th_min", bnr->d_var_th_min); 127 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "d_var_th_max", bnr->d_var_th_max); 128 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "n_var_th_min", bnr->n_var_th_min); 129 ia_css_debug_dtrace(level, "\t%-32s = %d\n", "n_var_th_max", bnr->n_var_th_max); 130 } 131 #endif /* IA_CSS_NO_DEBUG */ 132