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_XNR_TYPES_H
8 #define __IA_CSS_XNR_TYPES_H
9 
10 /* @file
11 * CSS-API header file for Extra Noise Reduction (XNR) parameters.
12 */
13 
14 /* XNR table.
15  *
16  *  NOTE: The driver does not need to set this table,
17  *        because the default values are set inside the css.
18  *
19  *  This table contains coefficients used for division in XNR.
20  *
21  *	u0.12, [0,4095],
22  *      {4095, 2048, 1365, .........., 65, 64}
23  *      ({1/1, 1/2, 1/3, ............., 1/63, 1/64})
24  *
25  *  ISP block: XNR1
26  *  ISP1: XNR1 is used.
27  *  ISP2: XNR1 is used.
28  *
29  */
30 
31 /* Number of elements in the xnr table. */
32 #define IA_CSS_VAMEM_1_XNR_TABLE_SIZE_LOG2      6
33 /* Number of elements in the xnr table. */
34 #define IA_CSS_VAMEM_1_XNR_TABLE_SIZE           BIT(IA_CSS_VAMEM_1_XNR_TABLE_SIZE_LOG2)
35 
36 /* Number of elements in the xnr table. */
37 #define IA_CSS_VAMEM_2_XNR_TABLE_SIZE_LOG2      6
38 /* Number of elements in the xnr table. */
39 #define IA_CSS_VAMEM_2_XNR_TABLE_SIZE		BIT(IA_CSS_VAMEM_2_XNR_TABLE_SIZE_LOG2)
40 
41 /** IA_CSS_VAMEM_TYPE_1(ISP2300) or
42      IA_CSS_VAMEM_TYPE_2(ISP2400) */
43 union ia_css_xnr_data {
44 	u16 vamem_1[IA_CSS_VAMEM_1_XNR_TABLE_SIZE];
45 	/** Coefficients table on vamem type1. u0.12, [0,4095] */
46 	u16 vamem_2[IA_CSS_VAMEM_2_XNR_TABLE_SIZE];
47 	/** Coefficients table on vamem type2. u0.12, [0,4095] */
48 };
49 
50 struct ia_css_xnr_table {
51 	enum ia_css_vamem_type vamem_type;
52 	union ia_css_xnr_data data;
53 };
54 
55 struct ia_css_xnr_config {
56 	/* XNR threshold.
57 	 * type:u0.16 valid range:[0,65535]
58 	 * default: 6400 */
59 	u16 threshold;
60 };
61 
62 #endif /* __IA_CSS_XNR_TYPES_H */
63