GNU Linux-libre 4.14.295-gnu1
[releases.git] / drivers / staging / media / atomisp / pci / atomisp2 / css2400 / isp / modes / interface / isp_const.h
1 #ifndef ISP2401
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 #else
16 /**
17 Support for Intel Camera Imaging ISP subsystem.
18 Copyright (c) 2010 - 2015, Intel Corporation.
19
20 This program is free software; you can redistribute it and/or modify it
21 under the terms and conditions of the GNU General Public License,
22 version 2, as published by the Free Software Foundation.
23
24 This program is distributed in the hope it will be useful, but WITHOUT
25 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
26 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
27 more details.
28 */
29 #endif
30
31 #ifndef _COMMON_ISP_CONST_H_
32 #define _COMMON_ISP_CONST_H_
33
34 /*#include "isp.h"*/    /* ISP_VEC_NELEMS */
35
36 /* Binary independent constants */
37
38 #ifndef NO_HOIST
39 #  define               NO_HOIST        HIVE_ATTRIBUTE (( no_hoist ))
40 #endif
41
42 #define NO_HOIST_CSE HIVE_ATTRIBUTE ((no_hoist, no_cse))
43
44 #define UNION struct /* Union constructors not allowed in C++ */
45
46 /* ISP binary identifiers.
47    These determine the order in which the binaries are looked up, do not change
48    this!
49    Also, the SP firmware uses this same order (isp_loader.hive.c).
50    Also, gen_firmware.c uses this order in its firmware_header.
51 */
52 /* The binary id is used in pre-processor expressions so we cannot
53  * use an enum here. */
54  /* 24xx pipelines*/
55 #define SH_CSS_BINARY_ID_COPY                      0
56 #define SH_CSS_BINARY_ID_BAYER_DS                  1
57 #define SH_CSS_BINARY_ID_VF_PP_FULL                2
58 #define SH_CSS_BINARY_ID_VF_PP_OPT                 3
59 #define SH_CSS_BINARY_ID_YUV_SCALE                 4
60 #define SH_CSS_BINARY_ID_CAPTURE_PP                5
61 #define SH_CSS_BINARY_ID_PRE_ISP                   6
62 #define SH_CSS_BINARY_ID_PRE_ISP_ISP2              7
63 #define SH_CSS_BINARY_ID_GDC                       8
64 #define SH_CSS_BINARY_ID_POST_ISP                  9
65 #define SH_CSS_BINARY_ID_POST_ISP_ISP2            10
66 #define SH_CSS_BINARY_ID_ANR                      11
67 #define SH_CSS_BINARY_ID_ANR_ISP2                 12
68 #define SH_CSS_BINARY_ID_PREVIEW_CONT_DS          13
69 #define SH_CSS_BINARY_ID_PREVIEW_DS               14
70 #define SH_CSS_BINARY_ID_PREVIEW_DEC              15
71 #define SH_CSS_BINARY_ID_PREVIEW_CONT_BDS125_ISP2 16
72 #define SH_CSS_BINARY_ID_PREVIEW_CONT_DPC_BDS150_ISP2 17
73 #define SH_CSS_BINARY_ID_PREVIEW_CONT_BDS150_ISP2 18
74 #define SH_CSS_BINARY_ID_PREVIEW_CONT_DPC_BDS200_ISP2 19
75 #define SH_CSS_BINARY_ID_PREVIEW_CONT_BDS200_ISP2 20
76 #define SH_CSS_BINARY_ID_PREVIEW_DZ               21
77 #define SH_CSS_BINARY_ID_PREVIEW_DZ_ISP2          22
78 #define SH_CSS_BINARY_ID_PRIMARY_DS               23
79 #define SH_CSS_BINARY_ID_PRIMARY_VAR              24
80 #define SH_CSS_BINARY_ID_PRIMARY_VAR_ISP2         25
81 #define SH_CSS_BINARY_ID_PRIMARY_SMALL            26
82 #define SH_CSS_BINARY_ID_PRIMARY_STRIPED          27
83 #define SH_CSS_BINARY_ID_PRIMARY_STRIPED_ISP2     28
84 #define SH_CSS_BINARY_ID_PRIMARY_8MP              29
85 #define SH_CSS_BINARY_ID_PRIMARY_14MP             30
86 #define SH_CSS_BINARY_ID_PRIMARY_16MP             31
87 #define SH_CSS_BINARY_ID_PRIMARY_REF              32
88 #define SH_CSS_BINARY_ID_PRIMARY_ISP261_STAGE0        33
89 #define SH_CSS_BINARY_ID_PRIMARY_ISP261_STAGE1        34
90 #define SH_CSS_BINARY_ID_PRIMARY_ISP261_STAGE2        35
91 #define SH_CSS_BINARY_ID_PRIMARY_ISP261_STAGE3        36
92 #define SH_CSS_BINARY_ID_PRIMARY_ISP261_STAGE4        37
93 #define SH_CSS_BINARY_ID_PRIMARY_ISP261_STAGE5        38
94 #define SH_CSS_BINARY_ID_VIDEO_OFFLINE            39
95 #define SH_CSS_BINARY_ID_VIDEO_DS                 40
96 #define SH_CSS_BINARY_ID_VIDEO_YUV_DS             41
97 #define SH_CSS_BINARY_ID_VIDEO_DZ                 42
98 #define SH_CSS_BINARY_ID_VIDEO_DZ_2400_ONLY       43
99 #define SH_CSS_BINARY_ID_VIDEO_HIGH               44
100 #define SH_CSS_BINARY_ID_VIDEO_NODZ               45
101 #define SH_CSS_BINARY_ID_VIDEO_CONT_MULTIBDS_ISP2_MIN 46
102 #define SH_CSS_BINARY_ID_VIDEO_CONT_BDS_300_600_ISP2_MIN 47
103 #define SH_CSS_BINARY_ID_VIDEO_CONT_DPC_BDS150_ISP2_MIN 48
104 #define SH_CSS_BINARY_ID_VIDEO_CONT_BDS150_ISP2_MIN   49
105 #define SH_CSS_BINARY_ID_VIDEO_CONT_DPC_BDS200_ISP2_MIN   50
106 #define SH_CSS_BINARY_ID_VIDEO_CONT_BDS200_ISP2_MIN   51
107 #define SH_CSS_BINARY_ID_VIDEO_CONT_NOBDS_ISP2_MIN    52
108 #define SH_CSS_BINARY_ID_VIDEO_DZ_ISP2_MIN      53
109 #define SH_CSS_BINARY_ID_VIDEO_DZ_ISP2          54
110 #define SH_CSS_BINARY_ID_VIDEO_LP_ISP2          55
111 #define SH_CSS_BINARY_ID_RESERVED1              56
112 #define SH_CSS_BINARY_ID_ACCELERATION           57
113 #define SH_CSS_BINARY_ID_PRE_DE_ISP2            58
114 #define SH_CSS_BINARY_ID_KERNEL_TEST_LOAD_STORE 59
115 #define SH_CSS_BINARY_ID_CAPTURE_PP_BLI         60
116 #define SH_CSS_BINARY_ID_CAPTURE_PP_LDC         61
117 #ifdef ISP2401
118 #define SH_CSS_BINARY_ID_PRIMARY_STRIPED_ISP2_XNR      62
119 #endif
120
121 /* skycam kerneltest pipelines */
122 #ifndef ISP2401
123 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_NORM              120
124 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_NORM_STRIPED      121
125 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_LIN               122
126 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_LIN_STRIPED       123
127 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_SHD           124
128 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_SHD_STRIPED   125
129 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_AWB           126
130 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_3A                127
131 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_3A_STRIPED        128
132 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_AF            129
133 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OBGRID            130
134 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_BAYER_DENOISE       131
135 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_BAYER_DENOISE_STRIPED 132
136 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_DEMOSAIC            133
137 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_YUVP1_C0            134
138 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_YUVP2               135
139 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_REF               136
140 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_REF_STRIPED       137
141 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_XNR_REF           138
142 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_DVS               139
143 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_XNR               140
144 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_XNR_STRIPED       141
145 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_XNR_BLENDING      142
146 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_TNR_BLOCK         143
147 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_AE            144
148 #define SH_CSS_BINARY_ID_VIDEO_RAW                          145
149 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_AWB_FR        146
150 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_DM_RGBPP          147
151 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_DM_RGBPP_STRIPED  148
152 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_ANR                 149
153 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_IF                150
154 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_IF_STRIPED        151
155 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OUTPUT_SYSTEM     152
156 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_TNR_STRIPED       153
157 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_DVS_STRIPED       154
158 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OBGRID_STRIPED    155
159 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_COPY_YUV          156
160 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_COPY_YUV_BLOCK    157
161 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_COPY_YUV16_BLOCK  158
162 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_COPY_YUV16_STRIPED 159
163 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_COPY_BLOCK_STRIPED 160
164 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_INPUT_YUV         161
165 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OUTPUT_YUV        162
166 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OUTPUT_YUV_16     163
167 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OUTPUT_SPLIT      164
168 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OUTPUT_SYSTEM_STRIPED 165
169
170 #else
171 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_NORM              121
172 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_NORM_STRIPED      122
173 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OBGRID            123
174 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OBGRID_STRIPED    124
175 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_LIN               125
176 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_LIN_STRIPED       126
177 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_SHD           127
178 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_SHD_STRIPED   128
179 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_AE            129
180 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_AWB           130
181 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_AF            131
182 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_ACC_AWB_FR        132
183 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_3A                133
184 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_3A_STRIPED        134
185 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_BAYER_DENOISE       135
186 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_BAYER_DENOISE_STRIPED 136
187 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_ANR                 137
188 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_ANR_STRIPED         138
189 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_DEMOSAIC            139
190 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_DM_RGBPP          140
191 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_DM_RGBPP_STRIPED  141
192 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_YUVP1_C0            142
193 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_YUVP2               143
194 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_YUVP2_STRIPED       144
195 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_XNR_REF           145
196 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_XNR               146
197 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_XNR_STRIPED       147
198 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_XNR_BLENDING      148
199 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_REF               149
200 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_REF_STRIPED       150
201 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_DVS               151
202 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_DVS_STRIPED       152
203 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_DVS_STAT_C0         153
204 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_TNR_BLOCK         154
205 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_TNR_STRIPED       155
206 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OUTPUT_SYSTEM     156
207 #define SH_CSS_BINARY_ID_VIDEO_RAW                          157
208 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_COPY_YUV          158
209 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_COPY_YUV_BLOCK    159
210 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_COPY_YUV16_BLOCK  160
211 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_COPY_YUV16_STRIPED 161
212 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_COPY_BLOCK_STRIPED 162
213 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_INPUT_YUV         163
214 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OUTPUT_YUV        164
215 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OUTPUT_YUV_16     165
216 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OUTPUT_SPLIT      166
217 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_OUTPUT_SYSTEM_STRIPED 167
218 #define SH_CSS_BINARY_ID_COPY_KERNELTEST_OUTPUT_SYSTEM      168
219 #endif
220
221 /* skycam partial test pipelines*/
222 #ifndef ISP2401
223 #define SH_CSS_BINARY_ID_IF_TO_DPC                          201
224 #define SH_CSS_BINARY_ID_IF_TO_BDS                          202
225 #else
226 #define SH_CSS_BINARY_ID_IF_TO_BDS                          201
227 #define SH_CSS_BINARY_ID_IF_TO_BDS_STRIPED                  202
228 #endif
229 #define SH_CSS_BINARY_ID_IF_TO_NORM                         203
230 #ifndef ISP2401
231 #define SH_CSS_BINARY_ID_IF_TO_OB                           204
232 #define SH_CSS_BINARY_ID_IF_TO_LIN                          205
233 #define SH_CSS_BINARY_ID_IF_TO_SHD                          206
234 #define SH_CSS_BINARY_ID_IF_TO_BNR                          207
235 #define SH_CSS_BINARY_ID_IF_TO_RGBPP_NV12_16                208
236 #define SH_CSS_BINARY_ID_IF_TO_RGBPP                        210
237 #define SH_CSS_BINARY_ID_IF_TO_YUVP1                        211
238 #define SH_CSS_BINARY_ID_IF_TO_DM                           214
239 #define SH_CSS_BINARY_ID_IF_TO_YUVP2_C0                     216
240 #define SH_CSS_BINARY_ID_IF_TO_YUVP2_ANR_VIA_ISP            217
241 #define SH_CSS_BINARY_ID_VIDEO_IF_TO_DVS                    218
242 #define SH_CSS_BINARY_ID_VIDEO_IF_TO_TNR                    219
243 #define SH_CSS_BINARY_ID_IF_TO_BDS_STRIPED                  224
244 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_ANR_STRIPED         225
245 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_YUVP2_STRIPED       227
246 #define SH_CSS_BINARY_ID_IF_TO_BDS_RGBP_DVS_STAT_C0         228
247 #define SH_CSS_BINARY_ID_IF_TO_BDS_RGBP_DVS_STAT_C0_STRIPED 229
248 #define SH_CSS_BINARY_ID_IF_TO_REF                          236
249 #define SH_CSS_BINARY_ID_IF_TO_DVS_STRIPED                  237
250 #define SH_CSS_BINARY_ID_IF_TO_YUVP2_STRIPED                238
251 #define SH_CSS_BINARY_ID_IF_TO_YUVP1_STRIPED                239
252 #define SH_CSS_BINARY_ID_IF_TO_RGBPP_STRIPED                240
253 #define SH_CSS_BINARY_ID_IF_TO_ANR_STRIPED                  241
254 #define SH_CSS_BINARY_ID_IF_TO_BNR_STRIPED                  242
255 #define SH_CSS_BINARY_ID_IF_TO_SHD_STRIPED                  243
256 #define SH_CSS_BINARY_ID_IF_TO_LIN_STRIPED                  244
257 #define SH_CSS_BINARY_ID_IF_TO_OB_STRIPED                   245
258 #define SH_CSS_BINARY_ID_IF_TO_NORM_STRIPED                 248
259 #define SH_CSS_BINARY_ID_COPY_KERNELTEST_OUTPUT_SYSTEM      253
260 #define SH_CSS_BINARY_ID_IF_TO_XNR                          256
261 #define SH_CSS_BINARY_ID_IF_TO_XNR_STRIPED                  257
262 #define SH_CSS_BINARY_ID_IF_TO_REF_STRIPED                  258
263 #define SH_CSS_BINARY_ID_VIDEO_IF_TO_OSYS                   259
264 #define SH_CSS_BINARY_ID_IF_TO_YUVP1_C0                     262
265 #define SH_CSS_BINARY_ID_IF_TO_XNR_PRIMARY                  263
266 #define SH_CSS_BINARY_ID_IF_TO_XNR_PRIMARY_STRIPED          264
267 #define SH_CSS_BINARY_ID_IF_TO_ANR                          265
268 #define SH_CSS_BINARY_ID_VIDEO_TEST_ACC_DVS_STAT_C0         266
269 #define SH_CSS_BINARY_ID_VIDEO_IF_TO_OSYS_STRIPED           270
270 #define SH_CSS_BINARY_ID_IF_TO_OSYS_PRIMARY                 276
271 #define SH_CSS_BINARY_ID_IF_TO_OSYS_PRIMARY_STRIPED         277
272 #define SH_CSS_BINARY_ID_IF_TO_YUVP1_C0_STRIPED             278
273 #else
274 #define SH_CSS_BINARY_ID_IF_TO_NORM_STRIPED                 204
275 #define SH_CSS_BINARY_ID_IF_TO_OB                           205
276 #define SH_CSS_BINARY_ID_IF_TO_OB_STRIPED                   206
277 #define SH_CSS_BINARY_ID_IF_TO_LIN                          207
278 #define SH_CSS_BINARY_ID_IF_TO_LIN_STRIPED                  208
279 #define SH_CSS_BINARY_ID_IF_TO_SHD                          209
280 #define SH_CSS_BINARY_ID_IF_TO_SHD_STRIPED                  210
281 #define SH_CSS_BINARY_ID_IF_TO_BNR                          211
282 #define SH_CSS_BINARY_ID_IF_TO_BNR_STRIPED                  212
283 #define SH_CSS_BINARY_ID_IF_TO_ANR                          213
284 #define SH_CSS_BINARY_ID_IF_TO_ANR_STRIPED                  214
285 #define SH_CSS_BINARY_ID_IF_TO_DM                           215
286 #define SH_CSS_BINARY_ID_IF_TO_BDS_RGBP_DVS_STAT_C0         216
287 #define SH_CSS_BINARY_ID_IF_TO_BDS_RGBP_DVS_STAT_C0_STRIPED 217
288 #define SH_CSS_BINARY_ID_IF_TO_RGBPP                        218
289 #define SH_CSS_BINARY_ID_IF_TO_RGBPP_NV12_16                219
290 #define SH_CSS_BINARY_ID_IF_TO_RGBPP_STRIPED                220
291 #define SH_CSS_BINARY_ID_IF_TO_YUVP1                        221
292 #define SH_CSS_BINARY_ID_IF_TO_YUVP1_STRIPED                222
293 #define SH_CSS_BINARY_ID_IF_TO_YUVP1_C0                     223
294 #define SH_CSS_BINARY_ID_IF_TO_YUVP2_C0                     224
295 #define SH_CSS_BINARY_ID_IF_TO_YUVP2_STRIPED                225
296 #define SH_CSS_BINARY_ID_IF_TO_XNR                          226
297 #define SH_CSS_BINARY_ID_IF_TO_XNR_STRIPED                  227
298 #define SH_CSS_BINARY_ID_IF_TO_XNR_PRIMARY                  228
299 #define SH_CSS_BINARY_ID_IF_TO_XNR_PRIMARY_STRIPED          229
300 #define SH_CSS_BINARY_ID_IF_TO_REF                          230
301 #define SH_CSS_BINARY_ID_IF_TO_REF_STRIPED                  231
302 #define SH_CSS_BINARY_ID_VIDEO_IF_TO_DVS                    232
303 #define SH_CSS_BINARY_ID_IF_TO_DVS_STRIPED                  233
304 #define SH_CSS_BINARY_ID_VIDEO_IF_TO_TNR                    234
305 #define SH_CSS_BINARY_ID_VIDEO_IF_TO_OSYS                   235
306 #define SH_CSS_BINARY_ID_VIDEO_IF_TO_OSYS_STRIPED           236
307 #define SH_CSS_BINARY_ID_IF_TO_OSYS_PRIMARY                 237
308 #define SH_CSS_BINARY_ID_IF_TO_OSYS_PRIMARY_STRIPED         238
309 #define SH_CSS_BINARY_ID_IF_TO_YUVP1_C0_STRIPED             239
310 #define SH_CSS_BINARY_ID_VIDEO_YUVP1_TO_OSYS                240
311 #define SH_CSS_BINARY_ID_IF_TO_OSYS_PREVIEW                 241
312 #define SH_CSS_BINARY_ID_IF_TO_OSYS_PREVIEW_STRIPED         242
313 #endif
314
315 /* Skycam IR camera binaries */
316 #ifndef ISP2401
317 #define SH_CSS_BINARY_ID_IR_IF_TO_OSYS_NO_XNR               300
318 #define SH_CSS_BINARY_ID_VIDEO_IR_IF_TO_OSYS_NO_DVS_NO_TNR_NO_XNR    301
319 #define SH_CSS_BINARY_ID_IR_IF_TO_OSYS_NO_XNR_NO_DVS_PRIMARY         302
320 #else
321 #define SH_CSS_BINARY_ID_IR_IF_TO_OSYS                      300
322 #define SH_CSS_BINARY_ID_IR_IF_TO_OSYS_NO_TNR3              301
323 #define SH_CSS_BINARY_ID_IR_IF_TO_OSYS_PRIMARY              302
324
325 /* Binaries under development */
326 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_TNR3              401
327 #define SH_CSS_BINARY_ID_VIDEO_KERNELTEST_TNR3_STRIPED      402
328
329 #endif
330
331 #define XMEM_WIDTH_BITS              HIVE_ISP_DDR_WORD_BITS
332 #define XMEM_SHORTS_PER_WORD         (HIVE_ISP_DDR_WORD_BITS/16)
333 #define XMEM_INTS_PER_WORD           (HIVE_ISP_DDR_WORD_BITS/32)
334 #define XMEM_POW2_BYTES_PER_WORD      HIVE_ISP_DDR_WORD_BYTES
335
336 #define BITS8_ELEMENTS_PER_XMEM_ADDR    CEIL_DIV(XMEM_WIDTH_BITS, 8)
337 #define BITS16_ELEMENTS_PER_XMEM_ADDR    CEIL_DIV(XMEM_WIDTH_BITS, 16)
338
339 #if ISP_VEC_NELEMS == 64
340 #define ISP_NWAY_LOG2  6
341 #elif ISP_VEC_NELEMS == 32
342 #define ISP_NWAY_LOG2  5
343 #elif ISP_VEC_NELEMS == 16
344 #define ISP_NWAY_LOG2  4
345 #elif ISP_VEC_NELEMS == 8
346 #define ISP_NWAY_LOG2  3
347 #else
348 #error "isp_const.h ISP_VEC_NELEMS must be one of {8, 16, 32, 64}"
349 #endif
350
351 /* *****************************
352  * ISP input/output buffer sizes
353  * ****************************/
354 /* input image */
355 #define INPUT_BUF_DMA_HEIGHT          2
356 #define INPUT_BUF_HEIGHT              2 /* double buffer */
357 #define OUTPUT_BUF_DMA_HEIGHT         2
358 #define OUTPUT_BUF_HEIGHT             2 /* double buffer */
359 #define OUTPUT_NUM_TRANSFERS          4
360
361 /* GDC accelerator: Up/Down Scaling */
362 /* These should be moved to the gdc_defs.h in the device */
363 #define UDS_SCALING_N                 HRT_GDC_N
364 /* AB: This should cover the zooming up to 16MP */
365 #define UDS_MAX_OXDIM                 5000
366 /* We support maximally 2 planes with different parameters
367        - luma and chroma (YUV420) */
368 #define UDS_MAX_PLANES                2
369 #define UDS_BLI_BLOCK_HEIGHT          2
370 #define UDS_BCI_BLOCK_HEIGHT          4
371 #define UDS_BLI_INTERP_ENVELOPE       1
372 #define UDS_BCI_INTERP_ENVELOPE       3
373 #define UDS_MAX_ZOOM_FAC              64
374 /* Make it always one FPGA vector.
375    Four FPGA vectors are required and
376    four of them fit in one ASIC vector.*/
377 #define UDS_MAX_CHUNKS                16
378
379 #define ISP_LEFT_PADDING        _ISP_LEFT_CROP_EXTRA(ISP_LEFT_CROPPING)
380 #define ISP_LEFT_PADDING_VECS   CEIL_DIV(ISP_LEFT_PADDING, ISP_VEC_NELEMS)
381 /* in case of continuous the croppong of the current binary doesn't matter for the buffer calculation, but the cropping of the sp copy should be used */
382 #define ISP_LEFT_PADDING_CONT   _ISP_LEFT_CROP_EXTRA(SH_CSS_MAX_LEFT_CROPPING)
383 #define ISP_LEFT_PADDING_VECS_CONT      CEIL_DIV(ISP_LEFT_PADDING_CONT, ISP_VEC_NELEMS)
384
385 #define CEIL_ROUND_DIV_STRIPE(width, stripe, padding) \
386         CEIL_MUL(padding + CEIL_DIV(width - padding, stripe), ((ENABLE_RAW_BINNING || ENABLE_FIXED_BAYER_DS)?4:2))
387
388 /* output (Y,U,V) image, 4:2:0 */
389 #define MAX_VECTORS_PER_LINE \
390         CEIL_ROUND_DIV_STRIPE(CEIL_DIV(ISP_MAX_INTERNAL_WIDTH, ISP_VEC_NELEMS), \
391                               ISP_NUM_STRIPES, \
392                               ISP_LEFT_PADDING_VECS)
393
394 /*
395  * ITERATOR_VECTOR_INCREMENT' explanation:
396  * when striping an even number of iterations, one of the stripes is
397  * one iteration wider than the other to account for overlap
398  * so the calc for the output buffer vmem size is:
399  * ((width[vectors]/num_of_stripes) + 2[vectors])
400  */
401 #define MAX_VECTORS_PER_OUTPUT_LINE \
402         CEIL_DIV(CEIL_DIV(ISP_MAX_OUTPUT_WIDTH, ISP_NUM_STRIPES) + ISP_LEFT_PADDING, ISP_VEC_NELEMS)
403
404 /* Must be even due to interlaced bayer input */
405 #define MAX_VECTORS_PER_INPUT_LINE      CEIL_MUL((CEIL_DIV(ISP_MAX_INPUT_WIDTH, ISP_VEC_NELEMS) + ISP_LEFT_PADDING_VECS), 2)
406 #define MAX_VECTORS_PER_INPUT_STRIPE    CEIL_ROUND_DIV_STRIPE(MAX_VECTORS_PER_INPUT_LINE, \
407                                                               ISP_NUM_STRIPES, \
408                                                               ISP_LEFT_PADDING_VECS)
409
410
411 /* Add 2 for left croppping */
412 #define MAX_SP_RAW_COPY_VECTORS_PER_INPUT_LINE  (CEIL_DIV(ISP_MAX_INPUT_WIDTH, ISP_VEC_NELEMS) + 2)
413
414 #define MAX_VECTORS_PER_BUF_LINE \
415         (MAX_VECTORS_PER_LINE + DUMMY_BUF_VECTORS)
416 #define MAX_VECTORS_PER_BUF_INPUT_LINE \
417         (MAX_VECTORS_PER_INPUT_STRIPE + DUMMY_BUF_VECTORS)
418 #define MAX_OUTPUT_Y_FRAME_WIDTH \
419         (MAX_VECTORS_PER_LINE * ISP_VEC_NELEMS)
420 #define MAX_OUTPUT_Y_FRAME_SIMDWIDTH \
421         MAX_VECTORS_PER_LINE
422 #define MAX_OUTPUT_C_FRAME_WIDTH \
423         (MAX_OUTPUT_Y_FRAME_WIDTH / 2)
424 #define MAX_OUTPUT_C_FRAME_SIMDWIDTH \
425         CEIL_DIV(MAX_OUTPUT_C_FRAME_WIDTH, ISP_VEC_NELEMS)
426
427 /* should be even */
428 #define NO_CHUNKING (OUTPUT_NUM_CHUNKS == 1)
429
430 #define MAX_VECTORS_PER_CHUNK \
431         (NO_CHUNKING ? MAX_VECTORS_PER_LINE \
432                                 : 2*CEIL_DIV(MAX_VECTORS_PER_LINE, \
433                                              2*OUTPUT_NUM_CHUNKS))
434
435 #define MAX_C_VECTORS_PER_CHUNK \
436         (MAX_VECTORS_PER_CHUNK/2)
437
438 /* should be even */
439 #define MAX_VECTORS_PER_OUTPUT_CHUNK \
440         (NO_CHUNKING ? MAX_VECTORS_PER_OUTPUT_LINE \
441                                 : 2*CEIL_DIV(MAX_VECTORS_PER_OUTPUT_LINE, \
442                                              2*OUTPUT_NUM_CHUNKS))
443
444 #define MAX_C_VECTORS_PER_OUTPUT_CHUNK \
445         (MAX_VECTORS_PER_OUTPUT_CHUNK/2)
446
447
448
449 /* should be even */
450 #define MAX_VECTORS_PER_INPUT_CHUNK \
451         (INPUT_NUM_CHUNKS == 1 ? MAX_VECTORS_PER_INPUT_STRIPE \
452                                : 2*CEIL_DIV(MAX_VECTORS_PER_INPUT_STRIPE, \
453                                             2*OUTPUT_NUM_CHUNKS))
454
455 #define DEFAULT_C_SUBSAMPLING      2
456
457 /****** DMA buffer properties */
458
459 #define RAW_BUF_LINES ((ENABLE_RAW_BINNING || ENABLE_FIXED_BAYER_DS) ? 4 : 2)
460
461 #define RAW_BUF_STRIDE \
462         (BINARY_ID == SH_CSS_BINARY_ID_POST_ISP ? MAX_VECTORS_PER_INPUT_CHUNK : \
463          ISP_NUM_STRIPES > 1 ? MAX_VECTORS_PER_INPUT_STRIPE+_ISP_EXTRA_PADDING_VECS : \
464          !ENABLE_CONTINUOUS ? MAX_VECTORS_PER_INPUT_LINE : \
465          MAX_VECTORS_PER_INPUT_CHUNK)
466
467 /* [isp vmem] table size[vectors] per line per color (GR,R,B,GB),
468    multiples of NWAY */
469 #define SCTBL_VECTORS_PER_LINE_PER_COLOR \
470         CEIL_DIV(SH_CSS_MAX_SCTBL_WIDTH_PER_COLOR, ISP_VEC_NELEMS)
471 /* [isp vmem] table size[vectors] per line for 4colors (GR,R,B,GB),
472    multiples of NWAY */
473 #define SCTBL_VECTORS_PER_LINE \
474         (SCTBL_VECTORS_PER_LINE_PER_COLOR * IA_CSS_SC_NUM_COLORS)
475
476 /*************/
477
478 /* Format for fixed primaries */
479
480 #define ISP_FIXED_PRIMARY_FORMAT IA_CSS_FRAME_FORMAT_NV12
481
482 #endif /* _COMMON_ISP_CONST_H_ */