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