aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/staging/media/atomisp/pci/isp/kernels/eed1_8/ia_css_eed1_8_param.h
blob: 880454d4dcf54fdf336923cf56aa653f242bc16f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/*
 * Support for Intel Camera Imaging ISP subsystem.
 * Copyright (c) 2015, Intel Corporation.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 */

#ifndef __IA_CSS_EED1_8_PARAM_H
#define __IA_CSS_EED1_8_PARAM_H

#include "type_support.h"
#include "vmem.h" /* needed for VMEM_ARRAY */

#include "ia_css_eed1_8_types.h" /* IA_CSS_NUMBER_OF_DEW_ENHANCE_SEGMENTS */

/* Configuration parameters: */

/* Enable median for false color correction
 * 0: Do not use median
 * 1: Use median
 * Default: 1
 */
#define EED1_8_FC_ENABLE_MEDIAN		1

/* Coring Threshold minima
 * Used in Tint color suppression.
 * Default: 1
 */
#define EED1_8_CORINGTHMIN	1

/* Define size of the state..... TODO: check if this is the correct place */
/* 4 planes : GR, R, B, GB */
#define NUM_PLANES	4

/* 5 lines state per color plane input_line_state */
#define EED1_8_STATE_INPUT_BUFFER_HEIGHT	(5 * NUM_PLANES)

/* Each plane has width equal to half frame line */
#define EED1_8_STATE_INPUT_BUFFER_WIDTH	CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2)

/* 1 line state per color plane LD_H state */
#define EED1_8_STATE_LD_H_HEIGHT	(1 * NUM_PLANES)
#define EED1_8_STATE_LD_H_WIDTH		CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2)

/* 1 line state per color plane LD_V state */
#define EED1_8_STATE_LD_V_HEIGHT	(1 * NUM_PLANES)
#define EED1_8_STATE_LD_V_WIDTH		CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2)

/* 1 line (single plane) state for D_Hr state */
#define EED1_8_STATE_D_HR_HEIGHT	1
#define EED1_8_STATE_D_HR_WIDTH		CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2)

/* 1 line (single plane) state for D_Hb state */
#define EED1_8_STATE_D_HB_HEIGHT	1
#define EED1_8_STATE_D_HB_WIDTH		CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2)

/* 2 lines (single plane) state for D_Vr state */
#define EED1_8_STATE_D_VR_HEIGHT	2
#define EED1_8_STATE_D_VR_WIDTH		CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2)

/* 2 line (single plane) state for D_Vb state */
#define EED1_8_STATE_D_VB_HEIGHT	2
#define EED1_8_STATE_D_VB_WIDTH		CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2)

/* 2 lines state for R and B (= 2 planes) rb_zipped_state */
#define EED1_8_STATE_RB_ZIPPED_HEIGHT	(2 * 2)
#define EED1_8_STATE_RB_ZIPPED_WIDTH	CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2)

#if EED1_8_FC_ENABLE_MEDIAN
/* 1 full input line (GR-R color line) for Yc state */
#define EED1_8_STATE_YC_HEIGHT	1
#define EED1_8_STATE_YC_WIDTH	MAX_FRAME_SIMDWIDTH

/* 1 line state per color plane Cg_state */
#define EED1_8_STATE_CG_HEIGHT	(1 * NUM_PLANES)
#define EED1_8_STATE_CG_WIDTH	CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2)

/* 1 line state per color plane Co_state */
#define EED1_8_STATE_CO_HEIGHT	(1 * NUM_PLANES)
#define EED1_8_STATE_CO_WIDTH	CEIL_DIV(MAX_FRAME_SIMDWIDTH, 2)

/* 1 full input line (GR-R color line) for AbsK state */
#define EED1_8_STATE_ABSK_HEIGHT	1
#define EED1_8_STATE_ABSK_WIDTH		MAX_FRAME_SIMDWIDTH
#endif

struct eed1_8_vmem_params {
	VMEM_ARRAY(e_dew_enh_x, ISP_VEC_NELEMS);
	VMEM_ARRAY(e_dew_enh_y, ISP_VEC_NELEMS);
	VMEM_ARRAY(e_dew_enh_a, ISP_VEC_NELEMS);
	VMEM_ARRAY(e_dew_enh_f, ISP_VEC_NELEMS);
	VMEM_ARRAY(chgrinv_x, ISP_VEC_NELEMS);
	VMEM_ARRAY(chgrinv_a, ISP_VEC_NELEMS);
	VMEM_ARRAY(chgrinv_b, ISP_VEC_NELEMS);
	VMEM_ARRAY(chgrinv_c, ISP_VEC_NELEMS);
	VMEM_ARRAY(fcinv_x, ISP_VEC_NELEMS);
	VMEM_ARRAY(fcinv_a, ISP_VEC_NELEMS);
	VMEM_ARRAY(fcinv_b, ISP_VEC_NELEMS);
	VMEM_ARRAY(fcinv_c, ISP_VEC_NELEMS);
	VMEM_ARRAY(tcinv_x, ISP_VEC_NELEMS);
	VMEM_ARRAY(tcinv_a, ISP_VEC_NELEMS);
	VMEM_ARRAY(tcinv_b, ISP_VEC_NELEMS);
	VMEM_ARRAY(tcinv_c, ISP_VEC_NELEMS);
};

/* EED (Edge Enhancing Demosaic) ISP parameters */
struct eed1_8_dmem_params {
	s32 rbzp_strength;

	s32 fcstrength;
	s32 fcthres_0;
	s32 fc_sat_coef;
	s32 fc_coring_prm;
	s32 fc_slope;

	s32 aerel_thres0;
	s32 aerel_gain0;
	s32 aerel_thres_diff;
	s32 aerel_gain_diff;

	s32 derel_thres0;
	s32 derel_gain0;
	s32 derel_thres_diff;
	s32 derel_gain_diff;

	s32 coring_pos0;
	s32 coring_pos_diff;
	s32 coring_neg0;
	s32 coring_neg_diff;

	s32 gain_exp;
	s32 gain_pos0;
	s32 gain_pos_diff;
	s32 gain_neg0;
	s32 gain_neg_diff;

	s32 margin_pos0;
	s32 margin_pos_diff;
	s32 margin_neg0;
	s32 margin_neg_diff;

	s32 e_dew_enh_asr;
	s32 dedgew_max;
};

#endif /* __IA_CSS_EED1_8_PARAM_H */