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 #ifndef IA_CSS_NO_DEBUG
199d4fa1a1SMauro Carvalho Chehab /* FIXME: See BZ 4427 */
209d4fa1a1SMauro Carvalho Chehab #include "ia_css_debug.h"
219d4fa1a1SMauro Carvalho Chehab #endif
229d4fa1a1SMauro Carvalho Chehab #include "csc/csc_1.0/ia_css_csc.host.h"
239d4fa1a1SMauro Carvalho Chehab #include "vamem.h"
249d4fa1a1SMauro Carvalho Chehab 
259d4fa1a1SMauro Carvalho Chehab #include "ia_css_gc2.host.h"
269d4fa1a1SMauro Carvalho Chehab 
279d4fa1a1SMauro Carvalho Chehab const struct ia_css_cc_config default_yuv2rgb_cc_config = {
289d4fa1a1SMauro Carvalho Chehab 	12,
299d4fa1a1SMauro Carvalho Chehab 	{4096, -4096, 4096, 4096, 4096, 0, 4096, -4096, -4096}
309d4fa1a1SMauro Carvalho Chehab };
319d4fa1a1SMauro Carvalho Chehab 
329d4fa1a1SMauro Carvalho Chehab const struct ia_css_cc_config default_rgb2yuv_cc_config = {
339d4fa1a1SMauro Carvalho Chehab 	13,
349d4fa1a1SMauro Carvalho Chehab 	{2449, 4809, 934, -1382, -2714, 4096, 4096, -3430, -666}
359d4fa1a1SMauro Carvalho Chehab };
369d4fa1a1SMauro Carvalho Chehab 
379d4fa1a1SMauro Carvalho Chehab void
ia_css_yuv2rgb_encode(struct sh_css_isp_csc_params * to,const struct ia_css_cc_config * from,unsigned int size)389d4fa1a1SMauro Carvalho Chehab ia_css_yuv2rgb_encode(
399d4fa1a1SMauro Carvalho Chehab     struct sh_css_isp_csc_params *to,
409d4fa1a1SMauro Carvalho Chehab     const struct ia_css_cc_config *from,
419d4fa1a1SMauro Carvalho Chehab     unsigned int size)
429d4fa1a1SMauro Carvalho Chehab {
439d4fa1a1SMauro Carvalho Chehab 	ia_css_encode_cc(to, from, size);
449d4fa1a1SMauro Carvalho Chehab }
459d4fa1a1SMauro Carvalho Chehab 
469d4fa1a1SMauro Carvalho Chehab void
ia_css_rgb2yuv_encode(struct sh_css_isp_csc_params * to,const struct ia_css_cc_config * from,unsigned int size)479d4fa1a1SMauro Carvalho Chehab ia_css_rgb2yuv_encode(
489d4fa1a1SMauro Carvalho Chehab     struct sh_css_isp_csc_params *to,
499d4fa1a1SMauro Carvalho Chehab     const struct ia_css_cc_config *from,
509d4fa1a1SMauro Carvalho Chehab     unsigned int size)
519d4fa1a1SMauro Carvalho Chehab {
529d4fa1a1SMauro Carvalho Chehab 	ia_css_encode_cc(to, from, size);
539d4fa1a1SMauro Carvalho Chehab }
549d4fa1a1SMauro Carvalho Chehab 
559d4fa1a1SMauro Carvalho Chehab void
ia_css_r_gamma_vamem_encode(struct sh_css_isp_rgb_gamma_vamem_params * to,const struct ia_css_rgb_gamma_table * from,unsigned int size)569d4fa1a1SMauro Carvalho Chehab ia_css_r_gamma_vamem_encode(
579d4fa1a1SMauro Carvalho Chehab     struct sh_css_isp_rgb_gamma_vamem_params *to,
589d4fa1a1SMauro Carvalho Chehab     const struct ia_css_rgb_gamma_table *from,
599d4fa1a1SMauro Carvalho Chehab     unsigned int size)
609d4fa1a1SMauro Carvalho Chehab {
619d4fa1a1SMauro Carvalho Chehab 	(void)size;
629d4fa1a1SMauro Carvalho Chehab 	memcpy(&to->gc,  &from->data, sizeof(to->gc));
639d4fa1a1SMauro Carvalho Chehab }
649d4fa1a1SMauro Carvalho Chehab 
659d4fa1a1SMauro Carvalho Chehab void
ia_css_g_gamma_vamem_encode(struct sh_css_isp_rgb_gamma_vamem_params * to,const struct ia_css_rgb_gamma_table * from,unsigned int size)669d4fa1a1SMauro Carvalho Chehab ia_css_g_gamma_vamem_encode(
679d4fa1a1SMauro Carvalho Chehab     struct sh_css_isp_rgb_gamma_vamem_params *to,
689d4fa1a1SMauro Carvalho Chehab     const struct ia_css_rgb_gamma_table *from,
699d4fa1a1SMauro Carvalho Chehab     unsigned int size)
709d4fa1a1SMauro Carvalho Chehab {
719d4fa1a1SMauro Carvalho Chehab 	(void)size;
729d4fa1a1SMauro Carvalho Chehab 	memcpy(&to->gc,  &from->data, sizeof(to->gc));
739d4fa1a1SMauro Carvalho Chehab }
749d4fa1a1SMauro Carvalho Chehab 
759d4fa1a1SMauro Carvalho Chehab void
ia_css_b_gamma_vamem_encode(struct sh_css_isp_rgb_gamma_vamem_params * to,const struct ia_css_rgb_gamma_table * from,unsigned int size)769d4fa1a1SMauro Carvalho Chehab ia_css_b_gamma_vamem_encode(
779d4fa1a1SMauro Carvalho Chehab     struct sh_css_isp_rgb_gamma_vamem_params *to,
789d4fa1a1SMauro Carvalho Chehab     const struct ia_css_rgb_gamma_table *from,
799d4fa1a1SMauro Carvalho Chehab     unsigned int size)
809d4fa1a1SMauro Carvalho Chehab {
819d4fa1a1SMauro Carvalho Chehab 	(void)size;
829d4fa1a1SMauro Carvalho Chehab 	memcpy(&to->gc,  &from->data, sizeof(to->gc));
839d4fa1a1SMauro Carvalho Chehab }
849d4fa1a1SMauro Carvalho Chehab 
859d4fa1a1SMauro Carvalho Chehab #ifndef IA_CSS_NO_DEBUG
869d4fa1a1SMauro Carvalho Chehab void
ia_css_yuv2rgb_dump(const struct sh_css_isp_csc_params * yuv2rgb,unsigned int level)879d4fa1a1SMauro Carvalho Chehab ia_css_yuv2rgb_dump(
889d4fa1a1SMauro Carvalho Chehab     const struct sh_css_isp_csc_params *yuv2rgb,
899d4fa1a1SMauro Carvalho Chehab     unsigned int level)
909d4fa1a1SMauro Carvalho Chehab {
919d4fa1a1SMauro Carvalho Chehab 	ia_css_cc_dump(yuv2rgb, level, "YUV to RGB Conversion");
929d4fa1a1SMauro Carvalho Chehab }
939d4fa1a1SMauro Carvalho Chehab 
949d4fa1a1SMauro Carvalho Chehab void
ia_css_rgb2yuv_dump(const struct sh_css_isp_csc_params * rgb2yuv,unsigned int level)959d4fa1a1SMauro Carvalho Chehab ia_css_rgb2yuv_dump(
969d4fa1a1SMauro Carvalho Chehab     const struct sh_css_isp_csc_params *rgb2yuv,
979d4fa1a1SMauro Carvalho Chehab     unsigned int level)
989d4fa1a1SMauro Carvalho Chehab {
999d4fa1a1SMauro Carvalho Chehab 	ia_css_cc_dump(rgb2yuv, level, "RGB to YUV Conversion");
1009d4fa1a1SMauro Carvalho Chehab }
1019d4fa1a1SMauro Carvalho Chehab 
1029d4fa1a1SMauro Carvalho Chehab void
ia_css_rgb_gamma_table_debug_dtrace(const struct ia_css_rgb_gamma_table * config,unsigned int level)1039d4fa1a1SMauro Carvalho Chehab ia_css_rgb_gamma_table_debug_dtrace(
1049d4fa1a1SMauro Carvalho Chehab     const struct ia_css_rgb_gamma_table *config,
1059d4fa1a1SMauro Carvalho Chehab     unsigned int level)
1069d4fa1a1SMauro Carvalho Chehab {
1079d4fa1a1SMauro Carvalho Chehab 	(void)config;
1089d4fa1a1SMauro Carvalho Chehab 	(void)level;
1099d4fa1a1SMauro Carvalho Chehab }
1109d4fa1a1SMauro Carvalho Chehab #endif
111