1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Support for Intel Camera Imaging ISP subsystem.
4  * Copyright (c) 2015, Intel Corporation.
5  */
6 
7 #ifndef __IA_CSS_XNR3_PARAM_H
8 #define __IA_CSS_XNR3_PARAM_H
9 
10 #include "type_support.h"
11 #include "vmem.h" /* ISP2401: needed for VMEM_ARRAY */
12 
13 /* Scaling factor of the alpha values: which fixed-point value represents 1.0?
14  * It must be chosen such that 1/min_sigma still fits in an ISP vector
15  * element. */
16 #define XNR_ALPHA_SCALE_LOG2        5
17 #define XNR_ALPHA_SCALE_FACTOR      BIT(XNR_ALPHA_SCALE_LOG2)
18 
19 /* Scaling factor of the coring values on the ISP. */
20 #define XNR_CORING_SCALE_LOG2       (ISP_VEC_ELEMBITS - 1)
21 #define XNR_CORING_SCALE_FACTOR     BIT(XNR_CORING_SCALE_LOG2)
22 
23 /* Scaling factor of the blending strength on the ISP. */
24 #define XNR_BLENDING_SCALE_LOG2     (ISP_VEC_ELEMBITS - 1)
25 #define XNR_BLENDING_SCALE_FACTOR   BIT(XNR_BLENDING_SCALE_LOG2)
26 
27 /* XNR3 filter size. Must be 11x11, 9x9 or 5x5. */
28 #define XNR_FILTER_SIZE             5
29 
30 /* XNR3 alpha (1/sigma) parameters on the ISP, expressed as a base (0) value
31  * for dark areas, and a scaled diff towards the value for bright areas. */
32 struct sh_css_xnr3_alpha_params {
33 	s32 y0;
34 	s32 u0;
35 	s32 v0;
36 	s32 ydiff;
37 	s32 udiff;
38 	s32 vdiff;
39 };
40 
41 /* XNR3 coring parameters on the ISP, expressed as a base (0) value
42  * for dark areas, and a scaled diff towards the value for bright areas. */
43 struct sh_css_xnr3_coring_params {
44 	s32 u0;
45 	s32 v0;
46 	s32 udiff;
47 	s32 vdiff;
48 };
49 
50 /* XNR3 blending strength on the ISP. */
51 struct sh_css_xnr3_blending_params {
52 	s32 strength;
53 };
54 
55 /* XNR3 ISP parameters */
56 struct sh_css_isp_xnr3_params {
57 	struct sh_css_xnr3_alpha_params    alpha;
58 	struct sh_css_xnr3_coring_params   coring;
59 	struct sh_css_xnr3_blending_params blending;
60 };
61 
62 /* ISP2401 */
63 /*
64  * STRUCT sh_css_isp_xnr3_vmem_params
65  * -----------------------------------------------
66  * ISP VMEM parameters
67  */
68 struct sh_css_isp_xnr3_vmem_params {
69 	VMEM_ARRAY(x, ISP_VEC_NELEMS);
70 	VMEM_ARRAY(a, ISP_VEC_NELEMS);
71 	VMEM_ARRAY(b, ISP_VEC_NELEMS);
72 	VMEM_ARRAY(c, ISP_VEC_NELEMS);
73 };
74 
75 #endif  /*__IA_CSS_XNR3_PARAM_H */
76