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 #include "ia_css_debug.h"
189d4fa1a1SMauro Carvalho Chehab #include "sh_css_frac.h"
199d4fa1a1SMauro Carvalho Chehab #include "ia_css_de.host.h"
209d4fa1a1SMauro Carvalho Chehab 
219d4fa1a1SMauro Carvalho Chehab const struct ia_css_de_config default_de_config = {
229d4fa1a1SMauro Carvalho Chehab 	0,
239d4fa1a1SMauro Carvalho Chehab 	0,
249d4fa1a1SMauro Carvalho Chehab 	0
259d4fa1a1SMauro Carvalho Chehab };
269d4fa1a1SMauro Carvalho Chehab 
279d4fa1a1SMauro Carvalho Chehab void
289d4fa1a1SMauro Carvalho Chehab ia_css_de_encode(
299d4fa1a1SMauro Carvalho Chehab     struct sh_css_isp_de_params *to,
309d4fa1a1SMauro Carvalho Chehab     const struct ia_css_de_config *from,
319d4fa1a1SMauro Carvalho Chehab     unsigned int size)
329d4fa1a1SMauro Carvalho Chehab {
339d4fa1a1SMauro Carvalho Chehab 	(void)size;
349d4fa1a1SMauro Carvalho Chehab 	to->pixelnoise =
359d4fa1a1SMauro Carvalho Chehab 	    uDIGIT_FITTING(from->pixelnoise, 16, SH_CSS_BAYER_BITS);
369d4fa1a1SMauro Carvalho Chehab 	to->c1_coring_threshold =
379d4fa1a1SMauro Carvalho Chehab 	    uDIGIT_FITTING(from->c1_coring_threshold, 16,
389d4fa1a1SMauro Carvalho Chehab 			   SH_CSS_BAYER_BITS);
399d4fa1a1SMauro Carvalho Chehab 	to->c2_coring_threshold =
409d4fa1a1SMauro Carvalho Chehab 	    uDIGIT_FITTING(from->c2_coring_threshold, 16,
419d4fa1a1SMauro Carvalho Chehab 			   SH_CSS_BAYER_BITS);
429d4fa1a1SMauro Carvalho Chehab }
439d4fa1a1SMauro Carvalho Chehab 
449d4fa1a1SMauro Carvalho Chehab void
459d4fa1a1SMauro Carvalho Chehab ia_css_de_dump(
469d4fa1a1SMauro Carvalho Chehab     const struct sh_css_isp_de_params *de,
479d4fa1a1SMauro Carvalho Chehab     unsigned int level)
489d4fa1a1SMauro Carvalho Chehab {
499d4fa1a1SMauro Carvalho Chehab 	if (!de) return;
509d4fa1a1SMauro Carvalho Chehab 	ia_css_debug_dtrace(level, "Demosaic:\n");
519d4fa1a1SMauro Carvalho Chehab 	ia_css_debug_dtrace(level, "\t%-32s = %d\n",
529d4fa1a1SMauro Carvalho Chehab 			    "de_pixelnoise", de->pixelnoise);
539d4fa1a1SMauro Carvalho Chehab 	ia_css_debug_dtrace(level, "\t%-32s = %d\n",
549d4fa1a1SMauro Carvalho Chehab 			    "de_c1_coring_threshold",
559d4fa1a1SMauro Carvalho Chehab 			    de->c1_coring_threshold);
569d4fa1a1SMauro Carvalho Chehab 	ia_css_debug_dtrace(level, "\t%-32s = %d\n",
579d4fa1a1SMauro Carvalho Chehab 			    "de_c2_coring_threshold",
589d4fa1a1SMauro Carvalho Chehab 			    de->c2_coring_threshold);
599d4fa1a1SMauro Carvalho Chehab }
609d4fa1a1SMauro Carvalho Chehab 
619d4fa1a1SMauro Carvalho Chehab void
629d4fa1a1SMauro Carvalho Chehab ia_css_de_debug_dtrace(
639d4fa1a1SMauro Carvalho Chehab     const struct ia_css_de_config *config,
649d4fa1a1SMauro Carvalho Chehab     unsigned int level)
659d4fa1a1SMauro Carvalho Chehab {
669d4fa1a1SMauro Carvalho Chehab 	ia_css_debug_dtrace(level,
679d4fa1a1SMauro Carvalho Chehab 			    "config.pixelnoise=%d, config.c1_coring_threshold=%d, config.c2_coring_threshold=%d\n",
689d4fa1a1SMauro Carvalho Chehab 			    config->pixelnoise,
699d4fa1a1SMauro Carvalho Chehab 			    config->c1_coring_threshold, config->c2_coring_threshold);
709d4fa1a1SMauro Carvalho Chehab }
719d4fa1a1SMauro Carvalho Chehab 
729d4fa1a1SMauro Carvalho Chehab void
739d4fa1a1SMauro Carvalho Chehab ia_css_init_de_state(
749d4fa1a1SMauro Carvalho Chehab     void/*struct sh_css_isp_de_vmem_state*/ * state,
759d4fa1a1SMauro Carvalho Chehab     size_t size)
769d4fa1a1SMauro Carvalho Chehab {
779d4fa1a1SMauro Carvalho Chehab 	memset(state, 0, size);
789d4fa1a1SMauro Carvalho Chehab }
79