1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Support for Intel Camera Imaging ISP subsystem.
4  * Copyright (c) 2015, Intel Corporation.
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms and conditions of the GNU General Public License,
8  * version 2, as published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13  * more details.
14  */
15 
16 #include "ia_css_types.h"
17 #include "sh_css_defs.h"
18 #include "sh_css_frac.h"
19 #ifndef IA_CSS_NO_DEBUG
20 #include "ia_css_debug.h"
21 #endif
22 #include "isp.h"
23 #include "ia_css_ob2.host.h"
24 
25 const struct ia_css_ob2_config default_ob2_config = {
26 	0,
27 	0,
28 	0,
29 	0
30 };
31 
32 void
33 ia_css_ob2_encode(
34     struct sh_css_isp_ob2_params *to,
35     const struct ia_css_ob2_config *from,
36     unsigned int size)
37 {
38 	(void)size;
39 
40 	/* Blacklevels types are u0_16 */
41 	to->blacklevel_gr = uDIGIT_FITTING(from->level_gr, 16, SH_CSS_BAYER_BITS);
42 	to->blacklevel_r  = uDIGIT_FITTING(from->level_r,  16, SH_CSS_BAYER_BITS);
43 	to->blacklevel_b  = uDIGIT_FITTING(from->level_b,  16, SH_CSS_BAYER_BITS);
44 	to->blacklevel_gb = uDIGIT_FITTING(from->level_gb, 16, SH_CSS_BAYER_BITS);
45 }
46 
47 #ifndef IA_CSS_NO_DEBUG
48 void
49 ia_css_ob2_dump(
50     const struct sh_css_isp_ob2_params *ob2,
51     unsigned int level)
52 {
53 	if (!ob2)
54 		return;
55 
56 	ia_css_debug_dtrace(level, "Optical Black 2:\n");
57 	ia_css_debug_dtrace(level, "\t%-32s = %d\n",
58 			    "ob2_blacklevel_gr", ob2->blacklevel_gr);
59 	ia_css_debug_dtrace(level, "\t%-32s = %d\n",
60 			    "ob2_blacklevel_r", ob2->blacklevel_r);
61 	ia_css_debug_dtrace(level, "\t%-32s = %d\n",
62 			    "ob2_blacklevel_b", ob2->blacklevel_b);
63 	ia_css_debug_dtrace(level, "\t%-32s = %d\n",
64 			    "ob2_blacklevel_gb", ob2->blacklevel_gb);
65 }
66 
67 void
68 ia_css_ob2_debug_dtrace(
69     const struct ia_css_ob2_config *config,
70     unsigned int level)
71 {
72 	ia_css_debug_dtrace(level,
73 			    "config.level_gr=%d, config.level_r=%d, config.level_b=%d,  config.level_gb=%d, ",
74 			    config->level_gr, config->level_r,
75 			    config->level_b, config->level_gb);
76 }
77 #endif
78