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
ia_css_ob2_encode(struct sh_css_isp_ob2_params * to,const struct ia_css_ob2_config * from,unsigned int size)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
ia_css_ob2_dump(const struct sh_css_isp_ob2_params * ob2,unsigned int level)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
ia_css_ob2_debug_dtrace(const struct ia_css_ob2_config * config,unsigned int level)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