19d4fa1a1SMauro Carvalho Chehab /* 29d4fa1a1SMauro Carvalho Chehab * Support for Intel Camera Imaging ISP subsystem. 39d4fa1a1SMauro Carvalho Chehab * Copyright (c) 2015, Intel Corporation. 49d4fa1a1SMauro Carvalho Chehab * 59d4fa1a1SMauro Carvalho Chehab * This program is free software; you can redistribute it and/or modify it 69d4fa1a1SMauro Carvalho Chehab * under the terms and conditions of the GNU General Public License, 79d4fa1a1SMauro Carvalho Chehab * version 2, as published by the Free Software Foundation. 89d4fa1a1SMauro Carvalho Chehab * 99d4fa1a1SMauro Carvalho Chehab * This program is distributed in the hope it will be useful, but WITHOUT 109d4fa1a1SMauro Carvalho Chehab * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 119d4fa1a1SMauro Carvalho Chehab * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 129d4fa1a1SMauro Carvalho Chehab * more details. 139d4fa1a1SMauro Carvalho Chehab */ 149d4fa1a1SMauro Carvalho Chehab 159d4fa1a1SMauro Carvalho Chehab #include "ia_css_types.h" 169d4fa1a1SMauro Carvalho Chehab #include "sh_css_defs.h" 179d4fa1a1SMauro Carvalho Chehab #ifndef IA_CSS_NO_DEBUG 189d4fa1a1SMauro Carvalho Chehab /* FIXME: See BZ 4427 */ 199d4fa1a1SMauro Carvalho Chehab #include "ia_css_debug.h" 209d4fa1a1SMauro Carvalho Chehab #endif 219d4fa1a1SMauro Carvalho Chehab #include "sh_css_frac.h" 229d4fa1a1SMauro Carvalho Chehab #include "vamem.h" 239d4fa1a1SMauro Carvalho Chehab 249d4fa1a1SMauro Carvalho Chehab #include "ia_css_gc.host.h" 259d4fa1a1SMauro Carvalho Chehab 269d4fa1a1SMauro Carvalho Chehab const struct ia_css_gc_config default_gc_config = { 279d4fa1a1SMauro Carvalho Chehab 0, 289d4fa1a1SMauro Carvalho Chehab 0 299d4fa1a1SMauro Carvalho Chehab }; 309d4fa1a1SMauro Carvalho Chehab 319d4fa1a1SMauro Carvalho Chehab const struct ia_css_ce_config default_ce_config = { 329d4fa1a1SMauro Carvalho Chehab 0, 339d4fa1a1SMauro Carvalho Chehab 255 349d4fa1a1SMauro Carvalho Chehab }; 359d4fa1a1SMauro Carvalho Chehab 369d4fa1a1SMauro Carvalho Chehab void 379d4fa1a1SMauro Carvalho Chehab ia_css_gc_encode( 389d4fa1a1SMauro Carvalho Chehab struct sh_css_isp_gc_params *to, 399d4fa1a1SMauro Carvalho Chehab const struct ia_css_gc_config *from, 409d4fa1a1SMauro Carvalho Chehab unsigned int size) 419d4fa1a1SMauro Carvalho Chehab { 429d4fa1a1SMauro Carvalho Chehab (void)size; 439d4fa1a1SMauro Carvalho Chehab to->gain_k1 = 449d4fa1a1SMauro Carvalho Chehab uDIGIT_FITTING((int)from->gain_k1, 16, 459d4fa1a1SMauro Carvalho Chehab IA_CSS_GAMMA_GAIN_K_SHIFT); 469d4fa1a1SMauro Carvalho Chehab to->gain_k2 = 479d4fa1a1SMauro Carvalho Chehab uDIGIT_FITTING((int)from->gain_k2, 16, 489d4fa1a1SMauro Carvalho Chehab IA_CSS_GAMMA_GAIN_K_SHIFT); 499d4fa1a1SMauro Carvalho Chehab } 509d4fa1a1SMauro Carvalho Chehab 519d4fa1a1SMauro Carvalho Chehab void 529d4fa1a1SMauro Carvalho Chehab ia_css_ce_encode( 539d4fa1a1SMauro Carvalho Chehab struct sh_css_isp_ce_params *to, 549d4fa1a1SMauro Carvalho Chehab const struct ia_css_ce_config *from, 559d4fa1a1SMauro Carvalho Chehab unsigned int size) 569d4fa1a1SMauro Carvalho Chehab { 579d4fa1a1SMauro Carvalho Chehab (void)size; 589d4fa1a1SMauro Carvalho Chehab to->uv_level_min = from->uv_level_min; 599d4fa1a1SMauro Carvalho Chehab to->uv_level_max = from->uv_level_max; 609d4fa1a1SMauro Carvalho Chehab } 619d4fa1a1SMauro Carvalho Chehab 629d4fa1a1SMauro Carvalho Chehab void 639d4fa1a1SMauro Carvalho Chehab ia_css_gc_vamem_encode( 649d4fa1a1SMauro Carvalho Chehab struct sh_css_isp_gc_vamem_params *to, 659d4fa1a1SMauro Carvalho Chehab const struct ia_css_gamma_table *from, 669d4fa1a1SMauro Carvalho Chehab unsigned int size) 679d4fa1a1SMauro Carvalho Chehab { 689d4fa1a1SMauro Carvalho Chehab (void)size; 699d4fa1a1SMauro Carvalho Chehab memcpy(&to->gc, &from->data, sizeof(to->gc)); 709d4fa1a1SMauro Carvalho Chehab } 719d4fa1a1SMauro Carvalho Chehab 729d4fa1a1SMauro Carvalho Chehab #ifndef IA_CSS_NO_DEBUG 739d4fa1a1SMauro Carvalho Chehab void 749d4fa1a1SMauro Carvalho Chehab ia_css_gc_dump( 759d4fa1a1SMauro Carvalho Chehab const struct sh_css_isp_gc_params *gc, 769d4fa1a1SMauro Carvalho Chehab unsigned int level) 779d4fa1a1SMauro Carvalho Chehab { 789d4fa1a1SMauro Carvalho Chehab if (!gc) return; 799d4fa1a1SMauro Carvalho Chehab ia_css_debug_dtrace(level, "Gamma Correction:\n"); 809d4fa1a1SMauro Carvalho Chehab ia_css_debug_dtrace(level, "\t%-32s = %d\n", 819d4fa1a1SMauro Carvalho Chehab "gamma_gain_k1", gc->gain_k1); 829d4fa1a1SMauro Carvalho Chehab ia_css_debug_dtrace(level, "\t%-32s = %d\n", 839d4fa1a1SMauro Carvalho Chehab "gamma_gain_k2", gc->gain_k2); 849d4fa1a1SMauro Carvalho Chehab } 859d4fa1a1SMauro Carvalho Chehab 869d4fa1a1SMauro Carvalho Chehab void 879d4fa1a1SMauro Carvalho Chehab ia_css_ce_dump( 889d4fa1a1SMauro Carvalho Chehab const struct sh_css_isp_ce_params *ce, 899d4fa1a1SMauro Carvalho Chehab unsigned int level) 909d4fa1a1SMauro Carvalho Chehab { 919d4fa1a1SMauro Carvalho Chehab ia_css_debug_dtrace(level, "Chroma Enhancement:\n"); 929d4fa1a1SMauro Carvalho Chehab ia_css_debug_dtrace(level, "\t%-32s = %d\n", 939d4fa1a1SMauro Carvalho Chehab "ce_uv_level_min", ce->uv_level_min); 949d4fa1a1SMauro Carvalho Chehab ia_css_debug_dtrace(level, "\t%-32s = %d\n", 959d4fa1a1SMauro Carvalho Chehab "ce_uv_level_max", ce->uv_level_max); 969d4fa1a1SMauro Carvalho Chehab } 979d4fa1a1SMauro Carvalho Chehab 989d4fa1a1SMauro Carvalho Chehab void 999d4fa1a1SMauro Carvalho Chehab ia_css_gc_debug_dtrace( 1009d4fa1a1SMauro Carvalho Chehab const struct ia_css_gc_config *config, 1019d4fa1a1SMauro Carvalho Chehab unsigned int level) 1029d4fa1a1SMauro Carvalho Chehab { 1039d4fa1a1SMauro Carvalho Chehab ia_css_debug_dtrace(level, 1049d4fa1a1SMauro Carvalho Chehab "config.gain_k1=%d, config.gain_k2=%d\n", 1059d4fa1a1SMauro Carvalho Chehab config->gain_k1, config->gain_k2); 1069d4fa1a1SMauro Carvalho Chehab } 1079d4fa1a1SMauro Carvalho Chehab 1089d4fa1a1SMauro Carvalho Chehab void 1099d4fa1a1SMauro Carvalho Chehab ia_css_ce_debug_dtrace( 1109d4fa1a1SMauro Carvalho Chehab const struct ia_css_ce_config *config, 1119d4fa1a1SMauro Carvalho Chehab unsigned int level) 1129d4fa1a1SMauro Carvalho Chehab { 1139d4fa1a1SMauro Carvalho Chehab ia_css_debug_dtrace(level, 1149d4fa1a1SMauro Carvalho Chehab "config.uv_level_min=%d, config.uv_level_max=%d\n", 1159d4fa1a1SMauro Carvalho Chehab config->uv_level_min, config->uv_level_max); 1169d4fa1a1SMauro Carvalho Chehab } 1179d4fa1a1SMauro Carvalho Chehab #endif 118