AM62L FreeRTOS SDK  11.00.00
csl_dssTop.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Texas Instruments Incorporated 2023
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the
15  * distribution.
16  *
17  * Neither the name of Texas Instruments Incorporated nor the names of
18  * its contributors may be used to endorse or promote products derived
19  * from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33 
52 #ifndef CSL_DSSTOP_H_
53 #define CSL_DSSTOP_H_
54 
55 /* ========================================================================== */
56 /* Include Files */
57 /* ========================================================================== */
58 
59 #include <drivers/dss/v0/hw_include/V3/cslr_dss.h>
60 #include <drivers/fvid2.h>
61 
62 #ifdef __cplusplus
63 extern "C" {
64 #endif
65 
66 /* ========================================================================== */
67 /* Macros & Typedefs */
68 /* ========================================================================== */
69 
78 #define CSL_DSS_VID_PIPE_TYPE_VIDL ((uint32_t) 0x0)
79 
89 #define CSL_DSS_COMM_REG_ID_0 ((uint32_t) 0x0U)
90 
91 #define CSL_DSS_COMM_REG_ID_1 ((uint32_t) 0x1U)
92 
93 #define CSL_DSS_COMM_REG_ID_MAX ((uint32_t) 0x2U)
94 
104 #define CSL_DSS_VID_PIPE_ID_VIDL1 ((uint32_t) 0x0U)
105 
106 #define CSL_DSS_VID_PIPE_ID_MAX ((uint32_t) 0x1U)
107 
108 #define CSL_DSS_VID_PIPE_ID_INVALID ((uint32_t) 0xFFU)
109 
119 #define CSL_DSS_OVERLAY_ID_1 ((uint32_t) 0x0U)
120 
121 #define CSL_DSS_OVERLAY_ID_MAX ((uint32_t) 0x1U)
122 
132 #define CSL_DSS_VP_ID_1 ((uint32_t) 0x0U)
133 
134 #define CSL_DSS_VP_ID_MAX ((uint32_t) 0x1U)
135 
145 #define CSL_DSS_VP_ID_1_MASK ((uint32_t) 0x1U)
146 
156 #define CSL_DSS_CSC_RANGE_LIMITED ((uint32_t) 0x0U)
157 
158 #define CSL_DSS_CSC_RANGE_FULL ((uint32_t) 0x1U)
159 
160 #define CSL_DSS_CSC_RANGE_CUSTOM ((uint32_t) 0x2U)
161 
171 #define CSL_DSS_SAFETY_CHK_FRAME_FREEZE_DETECT \
172  ((uint32_t) CSL_DSS_VIDL1_SAFETY_ATTRIBUTES_CAPTUREMODE_VAL_FRAMEFREEZE)
173 
174 #define CSL_DSS_SAFETY_CHK_DATA_INTEGRITY \
175  ((uint32_t) CSL_DSS_VIDL1_SAFETY_ATTRIBUTES_CAPTUREMODE_VAL_DATACHECK)
176 
186 #define CSL_DSS_SAFETY_CHK_FRAME_SKIP_NO \
187  ((uint32_t) CSL_DSS_VIDL1_SAFETY_ATTRIBUTES_FRAMESKIP_VAL_DISABLE)
188 
189 #define CSL_DSS_SAFETY_CHK_FRAME_SKIP_EVEN \
190  ((uint32_t) CSL_DSS_VIDL1_SAFETY_ATTRIBUTES_FRAMESKIP_VAL_EVEN)
191 
192 #define CSL_DSS_SAFETY_CHK_FRAME_SKIP_ODD \
193  ((uint32_t) CSL_DSS_VIDL1_SAFETY_ATTRIBUTES_FRAMESKIP_VAL_ODD)
194 
197 #define CSL_DSS_NUM_LUT_ENTRIES ((uint32_t) 256U)
198 
200 #define CSL_DSS_MODULE_INVALID ((uint32_t) 0xFFU)
201 
202 /* ========================================================================== */
203 /* Structure Declarations */
204 /* ========================================================================== */
205 
209 typedef struct
210 {
211  uint32_t cscRange;
214  int32_t c00;
216  int32_t c01;
218  int32_t c02;
220  int32_t c10;
222  int32_t c11;
224  int32_t c12;
226  int32_t c20;
228  int32_t c21;
230  int32_t c22;
232  int32_t preOffset1;
234  int32_t preOffset2;
236  int32_t preOffset3;
238  int32_t postOffset1;
240  int32_t postOffset2;
242  int32_t postOffset3;
245 
249 typedef struct
250 {
251  uint32_t safetyChkEnable;
255  uint32_t safetyChkMode;
262  uint32_t thresholdValue;
266  uint32_t frameSkip;
292 
293 /* ========================================================================== */
294 /* Function Declarations */
295 /* ========================================================================== */
296 
297 /* None */
298 
299 /* ========================================================================== */
300 /* Static Function Declarations */
301 /* ========================================================================== */
302 
309 static inline void CSL_dssCscCoeffInit(
310  CSL_DssCscCoeff *cscCoeff);
311 
318 static inline void CSL_dssSafetyChkCfgInit(
319  CSL_DssSafetyChkCfg *safetyCfg);
320 
321 /* ========================================================================== */
322 /* Static Function Definitions */
323 /* ========================================================================== */
324 
325 static inline void CSL_dssCscCoeffInit(
326  CSL_DssCscCoeff *cscCoeff)
327 {
328  if(NULL != cscCoeff)
329  {
331  cscCoeff->c00 = 0;
332  cscCoeff->c01 = 0;
333  cscCoeff->c02 = 0;
334  cscCoeff->c10 = 0;
335  cscCoeff->c11 = 0;
336  cscCoeff->c12 = 0;
337  cscCoeff->c20 = 0;
338  cscCoeff->c21 = 0;
339  cscCoeff->c22 = 0;
340  cscCoeff->preOffset1 = 0;
341  cscCoeff->preOffset2 = 0;
342  cscCoeff->preOffset3 = 0;
343  cscCoeff->postOffset1 = 0;
344  cscCoeff->postOffset2 = 0;
345  cscCoeff->postOffset3 = 0;
346  }
347 }
348 
349 static inline void CSL_dssSafetyChkCfgInit(
350  CSL_DssSafetyChkCfg *safetyCfg)
351 {
352  if(NULL != safetyCfg)
353  {
354  safetyCfg->safetyChkEnable = FALSE;
356  safetyCfg->seedSelectEnable = 0U;
357  safetyCfg->thresholdValue = FALSE;
359  safetyCfg->regionPos.startX = 0U;
360  safetyCfg->regionPos.startY = 0U;
361  safetyCfg->regionSize.width = 0U;
362  safetyCfg->regionSize.height = 0U;
363  }
364 }
365 
366 #ifdef __cplusplus
367 }
368 #endif
369 
370 #endif /* #ifndef CSL_DSSTOP_H_ */
371 
CSL_DssSafetyChkCfg
Configuration for doing safety checks.
Definition: csl_dssTop.h:250
CSL_DssCscCoeff::postOffset1
int32_t postOffset1
Definition: csl_dssTop.h:238
Fvid2_PosConfig::startY
uint32_t startY
Definition: fvid2_dataTypes.h:1392
CSL_DssCscCoeff::c02
int32_t c02
Definition: csl_dssTop.h:218
CSL_DssCscCoeff::c11
int32_t c11
Definition: csl_dssTop.h:222
CSL_dssSafetyChkCfgInit
static void CSL_dssSafetyChkCfgInit(CSL_DssSafetyChkCfg *safetyCfg)
CSL_DssSafetyChkCfg structure init function.
Definition: csl_dssTop.h:349
CSL_DssCscCoeff::preOffset3
int32_t preOffset3
Definition: csl_dssTop.h:236
CSL_DssSafetyChkCfg::safetyChkEnable
uint32_t safetyChkEnable
Definition: csl_dssTop.h:251
CSL_DssCscCoeff::preOffset2
int32_t preOffset2
Definition: csl_dssTop.h:234
CSL_DssCscCoeff::c21
int32_t c21
Definition: csl_dssTop.h:228
CSL_DssCscCoeff::postOffset2
int32_t postOffset2
Definition: csl_dssTop.h:240
CSL_DssCscCoeff::preOffset1
int32_t preOffset1
Definition: csl_dssTop.h:232
Fvid2_PosConfig::startX
uint32_t startX
Definition: fvid2_dataTypes.h:1390
CSL_DssCscCoeff
Structure containing coefficients for Color Space Conversion.
Definition: csl_dssTop.h:210
CSL_DssSafetyChkCfg::seedSelectEnable
uint32_t seedSelectEnable
Definition: csl_dssTop.h:258
NULL
#define NULL
Define NULL if not defined.
Definition: csl_types.h:100
fvid2.h
Fvid2_SizeConfig
Structure containing size configuration.
Definition: fvid2_dataTypes.h:1401
CSL_DssSafetyChkCfg::frameSkip
uint32_t frameSkip
Definition: csl_dssTop.h:266
Fvid2_PosConfig
Structure containing position configuration - used in VCOMP and CIG.
Definition: fvid2_dataTypes.h:1389
CSL_DssCscCoeff::c22
int32_t c22
Definition: csl_dssTop.h:230
CSL_DssSafetyChkCfg::thresholdValue
uint32_t thresholdValue
Definition: csl_dssTop.h:262
CSL_DssCscCoeff::c10
int32_t c10
Definition: csl_dssTop.h:220
CSL_dssCscCoeffInit
static void CSL_dssCscCoeffInit(CSL_DssCscCoeff *cscCoeff)
CSL_DssCscCoeff structure init function.
Definition: csl_dssTop.h:325
CSL_DssCscCoeff::cscRange
uint32_t cscRange
Definition: csl_dssTop.h:211
Fvid2_SizeConfig::width
UInt32 width
Definition: fvid2_dataTypes.h:1402
Fvid2_SizeConfig::height
UInt32 height
Definition: fvid2_dataTypes.h:1404
CSL_DssSafetyChkCfg::regionPos
Fvid2_PosConfig regionPos
Definition: csl_dssTop.h:269
CSL_DssCscCoeff::c00
int32_t c00
Definition: csl_dssTop.h:214
CSL_DssCscCoeff::postOffset3
int32_t postOffset3
Definition: csl_dssTop.h:242
CSL_DSS_SAFETY_CHK_FRAME_SKIP_NO
#define CSL_DSS_SAFETY_CHK_FRAME_SKIP_NO
No frames are skipped.
Definition: csl_dssTop.h:186
CSL_DssCscCoeff::c01
int32_t c01
Definition: csl_dssTop.h:216
CSL_DSS_CSC_RANGE_LIMITED
#define CSL_DSS_CSC_RANGE_LIMITED
Limited range selected.
Definition: csl_dssTop.h:156
CSL_DssSafetyChkCfg::safetyChkMode
uint32_t safetyChkMode
Definition: csl_dssTop.h:255
CSL_DSS_SAFETY_CHK_FRAME_FREEZE_DETECT
#define CSL_DSS_SAFETY_CHK_FRAME_FREEZE_DETECT
Frame freeze detect enabled.
Definition: csl_dssTop.h:171
CSL_DssCscCoeff::c20
int32_t c20
Definition: csl_dssTop.h:226
CSL_DssSafetyChkCfg::regionSize
Fvid2_SizeConfig regionSize
Definition: csl_dssTop.h:280
FALSE
#define FALSE
Definition: csl_types.h:62
CSL_DssCscCoeff::c12
int32_t c12
Definition: csl_dssTop.h:224