AM62L FreeRTOS SDK  11.00.00
csl_dssVideoPipe.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Texas Instruments Incorporated 2023-24
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 
48 #ifndef CSL_DSSVIDEOPIPE_H_
49 #define CSL_DSSVIDEOPIPE_H_
50 
51 /* ========================================================================== */
52 /* Include Files */
53 /* ========================================================================== */
54 
55 /* None */
56 
57 #ifdef __cplusplus
58 extern "C" {
59 #endif
60 
61 /* ========================================================================== */
62 /* Macros & Typedefs */
63 /* ========================================================================== */
64 
73 
82 #define CSL_DSS_VID_PIPE_YUV_ALIGN_LSB \
83  ((uint32_t) CSL_DSS_VIDL1_ATTRIBUTES2_YUV_ALIGN_VAL_LSB)
84 
85 #define CSL_DSS_VID_PIPE_YUV_ALIGN_MSB \
86  ((uint32_t) CSL_DSS_VIDL1_ATTRIBUTES2_YUV_ALIGN_VAL_MSB)
87 
97 #define CSL_DSS_VID_PIPE_PRELOAD_CONTROL_SW \
98  ((uint32_t) CSL_DSS_VIDL1_ATTRIBUTES_BUFPRELOAD_VAL_DEFVAL)
99 
100 #define CSL_DSS_VID_PIPE_PRELOAD_CONTROL_HW \
101  ((uint32_t) CSL_DSS_VIDL1_ATTRIBUTES_BUFPRELOAD_VAL_HIGHTHRES)
102 
111 #define CSL_DSS_VID_PIPE_PRIORITY_NORMAL \
112  ((uint32_t) CSL_DSS_VIDL1_ATTRIBUTES_ARBITRATION_VAL_NORMALPRIO)
113 
114 #define CSL_DSS_VID_PIPE_PRIORITY_HIGH \
115  ((uint32_t) CSL_DSS_VIDL1_ATTRIBUTES_ARBITRATION_VAL_HIGHPRIO)
116 
125 #define CSL_DSS_VID_PIPE_REFRESH_CONTROL_SW \
126  ((uint32_t) CSL_DSS_VIDL1_ATTRIBUTES_SELFREFRESHAUTO_VAL_SELFREFRESHAUTODIS)
127 
128 #define CSL_DSS_VID_PIPE_REFRESH_CONTROL_HW \
129  ((uint32_t) CSL_DSS_VIDL1_ATTRIBUTES_SELFREFRESHAUTO_VAL_SELFREFRESHAUTOEN)
130 
132 /* ========================================================================== */
133 /* Structure Declarations */
134 /* ========================================================================== */
135 
139 typedef struct
140 {
141  uint32_t pipeType;
224  uint32_t pixelInc;
231  uint32_t yuvAlign;
234  uint32_t outWidth;
236  uint32_t outHeight;
238  uint32_t scEnable;
242  uint32_t cscRange;
251  uint32_t flipType;
254  uint32_t clutData[CSL_DSS_NUM_LUT_ENTRIES];
260  uint32_t gammaEnable;
265 
269 typedef struct
270 {
275  uint32_t preloadVal;
277  uint32_t bufLowThreshold;
291  uint32_t arbitration;
295 
299 typedef struct
300 {
301  uint32_t lumaKeyEnable;
305  uint32_t lumaKeyMinVal;
308  uint32_t lumaKeyMaxVal;
312 
316 typedef struct
317 {
318  uint32_t globalAlpha;
327 
331 typedef struct
332 {
333  uint32_t vc1Enable;
335  uint32_t rangeY;
337  uint32_t rangeUV;
340 
344 typedef struct
345 {
346  uint32_t thresholdLow;
348  uint32_t thresholdHigh;
351 
352 /* ========================================================================== */
353 /* Function Declarations */
354 /* ========================================================================== */
355 
369  const CSL_DssVidPipeCfg *pipeCfg,
370  const CSL_DssVidPipeVC1Cfg *vc1Cfg);
371 
382  const CSL_DssVidPipeDmaCfg *dmaCfg);
383 
394  const CSL_DssVidPipeLumaCfg *lumaCfg);
395 
406  const CSL_DssVidPipeAlphaCfg *alphaCfg);
407 
418  const CSL_DssCscCoeff *coeff);
419 
432  uint32_t field,
433  uint64_t baseAddrRGBY,
434  uint64_t baseAddrUV);
435 
445 void CSL_dssVidPipeEnable(CSL_dss_pipeRegs *pipeRegs, uint32_t enable);
446 
456  uint32_t signSeedVal);
457 
467  uint32_t referenceSign);
468 
479  const CSL_DssSafetyChkCfg *safetyCfg);
480 
490 
501  const CSL_DssVidPipeMFlagCfg *mflagCfg);
502 
503 /* ========================================================================== */
504 /* Static Function Declarations */
505 /* ========================================================================== */
506 
513 static inline void CSL_dssVidPipeCfgInit(
514  CSL_DssVidPipeCfg *pipeCfg);
515 
522 static inline void CSL_dssVidPipeDmaCfgInit(
523  CSL_DssVidPipeDmaCfg *dmaCfg);
524 
531 static inline void CSL_dssVidPipeLumaCfgInit(
532  CSL_DssVidPipeLumaCfg *lumaCfg);
533 
540 static inline void CSL_dssVidPipeAlphaCfgInit(
541  CSL_DssVidPipeAlphaCfg *alphaCfg);
542 
549 static inline void CSL_dssVidPipeVC1CfgInit(
550  CSL_DssVidPipeVC1Cfg *vc1Cfg);
551 
558 static inline void CSL_dssVidPipeMFlagCfgInit(
559  CSL_DssVidPipeMFlagCfg *mflagCfg);
560 
561 /* ========================================================================== */
562 /* Static Function Definitions */
563 /* ========================================================================== */
564 
565 static inline void CSL_dssVidPipeCfgInit(
566  CSL_DssVidPipeCfg *pipeCfg)
567 {
568  uint32_t i;
569  if(NULL != pipeCfg)
570  {
571  Fvid2Format_init(&pipeCfg->inFmt);
573  pipeCfg->pixelInc = 1U;
575  pipeCfg->outWidth = 800U;
576  pipeCfg->outHeight = 480U;
577  pipeCfg->cscRange = CSL_DSS_CSC_RANGE_FULL;
580  pipeCfg->flipType = FVID2_FLIP_TYPE_NONE;
581  for(i=0U; i<CSL_DSS_NUM_LUT_ENTRIES; i++)
582  {
583  pipeCfg->clutData[i] = 0x0U;
584  }
585  pipeCfg->nibbleModeEnable = FALSE;
586  pipeCfg->gammaEnable = FALSE;
587  }
588 }
589 
590 static inline void CSL_dssVidPipeDmaCfgInit(
591  CSL_DssVidPipeDmaCfg *dmaCfg)
592 {
593  if(NULL != dmaCfg)
594  {
596  dmaCfg->bufLowThreshold = 0x09FFU;
597  dmaCfg->bufHighThreshold = 0x09F8U;
599  dmaCfg->selfRefreshEnable = FALSE;
601  }
602 }
603 
604 static inline void CSL_dssVidPipeLumaCfgInit(
605  CSL_DssVidPipeLumaCfg *lumaCfg)
606 {
607  if(NULL != lumaCfg)
608  {
609  lumaCfg->lumaKeyEnable = FALSE;
610  lumaCfg->lumaKeyMinVal = 0U;
611  lumaCfg->lumaKeyMaxVal = 0U;
612  }
613 }
614 
615 static inline void CSL_dssVidPipeAlphaCfgInit(
616  CSL_DssVidPipeAlphaCfg *alphaCfg)
617 {
618  if(NULL != alphaCfg)
619  {
620  alphaCfg->globalAlpha = 0xFFU;
621  alphaCfg->preMultiplyAlpha = FALSE;
622  }
623 }
624 
625 static inline void CSL_dssVidPipeVC1CfgInit(
626  CSL_DssVidPipeVC1Cfg *vc1Cfg)
627 {
628  if(NULL != vc1Cfg)
629  {
630  vc1Cfg->vc1Enable = FALSE;
631  vc1Cfg->rangeY = 0U;
632  vc1Cfg->rangeUV = 0U;
633  }
634 }
635 
636 static inline void CSL_dssVidPipeMFlagCfgInit(
637  CSL_DssVidPipeMFlagCfg *mflagCfg)
638 {
639  if(NULL != mflagCfg)
640  {
641  mflagCfg->thresholdLow = 0U;
642  mflagCfg->thresholdHigh = 0U;
643  }
644 }
645 
646 #ifdef __cplusplus
647 }
648 #endif
649 
650 #endif /* #ifndef CSL_DSSVIDEOPIPE_H_ */
651 
CSL_DssVidPipeCfg::cscRange
uint32_t cscRange
Definition: csl_dssVideoPipe.h:242
CSL_DssSafetyChkCfg
Configuration for doing safety checks.
Definition: csl_dssTop.h:250
CSL_DssVidPipeLumaCfg::lumaKeyEnable
uint32_t lumaKeyEnable
Definition: csl_dssVideoPipe.h:301
CSL_DSS_VID_PIPE_PRIORITY_NORMAL
#define CSL_DSS_VID_PIPE_PRIORITY_NORMAL
Priority of video pipeline is normal.
Definition: csl_dssVideoPipe.h:111
CSL_DssVidPipeCfg::custCscCoeff
CSL_DssCscCoeff custCscCoeff
Definition: csl_dssVideoPipe.h:245
CSL_DssVidPipeCfg
Configuration for DSS Video Pipe.
Definition: csl_dssVideoPipe.h:140
CSL_dss_pipeRegs
CSL_dss_vidl1Regs CSL_dss_pipeRegs
DSS Video Pipe Registers.
Definition: csl_dssVideoPipe.h:72
CSL_DssVidPipeCfg::flipType
uint32_t flipType
Definition: csl_dssVideoPipe.h:251
CSL_dssVidPipeMFlagCfgInit
static void CSL_dssVidPipeMFlagCfgInit(CSL_DssVidPipeMFlagCfg *mflagCfg)
CSL_DssVidPipeMFlagCfg structure init function.
Definition: csl_dssVideoPipe.h:636
CSL_dssVidPipeSetSafetyReferenceSign
void CSL_dssVidPipeSetSafetyReferenceSign(CSL_dss_pipeRegs *pipeRegs, uint32_t referenceSign)
Set the reference safety signature for data correctness check.
CSL_DssVidPipeDmaCfg
DSS Video Pipe DMA related Config parameters.
Definition: csl_dssVideoPipe.h:270
CSL_DssVidPipeCfg::pixelInc
uint32_t pixelInc
Definition: csl_dssVideoPipe.h:224
CSL_dssVidPipeCfgInit
static void CSL_dssVidPipeCfgInit(CSL_DssVidPipeCfg *pipeCfg)
CSL_DssVidPipeCfg structure init function.
Definition: csl_dssVideoPipe.h:565
CSL_dssVidPipeGetSafetySign
uint32_t CSL_dssVidPipeGetSafetySign(const CSL_dss_pipeRegs *pipeRegs)
Get the Safety Signature.
CSL_DssCscCoeff
Structure containing coefficients for Color Space Conversion.
Definition: csl_dssTop.h:210
CSL_DSS_CSC_RANGE_FULL
#define CSL_DSS_CSC_RANGE_FULL
Full range selected.
Definition: csl_dssTop.h:158
CSL_DssVidPipeVC1Cfg
DSS Video Pipe VC1 configuration.
Definition: csl_dssVideoPipe.h:332
CSL_DssVidPipeCfg::inFmt
Fvid2_Format inFmt
Definition: csl_dssVideoPipe.h:143
CSL_DssVidPipeDmaCfg::selfRefreshEnable
uint32_t selfRefreshEnable
Definition: csl_dssVideoPipe.h:287
NULL
#define NULL
Define NULL if not defined.
Definition: csl_types.h:100
CSL_DssVidPipeDmaCfg::bufLowThreshold
uint32_t bufLowThreshold
Definition: csl_dssVideoPipe.h:277
CSL_DssVidPipeAlphaCfg::globalAlpha
uint32_t globalAlpha
Definition: csl_dssVideoPipe.h:318
CSL_dssVidPipeAlphaCfgInit
static void CSL_dssVidPipeAlphaCfgInit(CSL_DssVidPipeAlphaCfg *alphaCfg)
CSL_DssVidPipeAlphaCfg structure init function.
Definition: csl_dssVideoPipe.h:615
CSL_dssVidPipeVC1CfgInit
static void CSL_dssVidPipeVC1CfgInit(CSL_DssVidPipeVC1Cfg *vc1Cfg)
CSL_DssVidPipeVC1Cfg structure init function.
Definition: csl_dssVideoPipe.h:625
CSL_dssVidPipeSetMflagConfig
void CSL_dssVidPipeSetMflagConfig(CSL_dss_pipeRegs *pipeRegs, const CSL_DssVidPipeMFlagCfg *mflagCfg)
Set the MFLAG configuration.
Fvid2Format_init
static void Fvid2Format_init(Fvid2_Format *fmt)
Fvid2_Format structure init function.
Definition: fvid2_dataTypes.h:2207
CSL_DssVidPipeLumaCfg::lumaKeyMinVal
uint32_t lumaKeyMinVal
Definition: csl_dssVideoPipe.h:305
CSL_DSS_VID_PIPE_PRELOAD_CONTROL_HW
#define CSL_DSS_VID_PIPE_PRELOAD_CONTROL_HW
HW pre-fetches pixels up to high threshold value.
Definition: csl_dssVideoPipe.h:100
CSL_DssVidPipeCfg::scEnable
uint32_t scEnable
Definition: csl_dssVideoPipe.h:238
FVID2_FLIP_TYPE_NONE
#define FVID2_FLIP_TYPE_NONE
Flip Type is None.
Definition: fvid2_dataTypes.h:241
CSL_DssVidPipeCfg::clutData
uint32_t clutData[CSL_DSS_NUM_LUT_ENTRIES]
Definition: csl_dssVideoPipe.h:254
CSL_dss_vidl1Regs
Definition: cslr_dss.h:1255
CSL_dssVidPipeEnableTransparency
void CSL_dssVidPipeEnableTransparency(CSL_dss_pipeRegs *pipeRegs, const CSL_DssVidPipeLumaCfg *lumaCfg)
Enable the Luma Key transparency matching and set luma params.
CSL_DssVidPipeMFlagCfg::thresholdLow
uint32_t thresholdLow
Definition: csl_dssVideoPipe.h:346
CSL_DssVidPipeDmaCfg::bufPreloadControl
uint32_t bufPreloadControl
Definition: csl_dssVideoPipe.h:271
CSL_dssVidPipeSetCSCCoeff
void CSL_dssVidPipeSetCSCCoeff(CSL_dss_pipeRegs *pipeRegs, const CSL_DssCscCoeff *coeff)
Configure the coefficients for Color Space Conversion.
CSL_dssCscCoeffInit
static void CSL_dssCscCoeffInit(CSL_DssCscCoeff *cscCoeff)
CSL_DssCscCoeff structure init function.
Definition: csl_dssTop.h:325
CSL_dssVidPipeEnable
void CSL_dssVidPipeEnable(CSL_dss_pipeRegs *pipeRegs, uint32_t enable)
Enable the DSS Video Pipe.
CSL_dssVidPipeDmaCfgInit
static void CSL_dssVidPipeDmaCfgInit(CSL_DssVidPipeDmaCfg *dmaCfg)
CSL_DssVidPipeDmaCfg structure init function.
Definition: csl_dssVideoPipe.h:590
CSL_DssCscCoeff::cscRange
uint32_t cscRange
Definition: csl_dssTop.h:211
CSL_DssVidPipeDmaCfg::arbitration
uint32_t arbitration
Definition: csl_dssVideoPipe.h:291
CSL_DssVidPipeLumaCfg
DSS Video Pipe Luma Key Config parameters.
Definition: csl_dssVideoPipe.h:300
CSL_DssVidPipeLumaCfg::lumaKeyMaxVal
uint32_t lumaKeyMaxVal
Definition: csl_dssVideoPipe.h:308
CSL_dssVidPipeLumaCfgInit
static void CSL_dssVidPipeLumaCfgInit(CSL_DssVidPipeLumaCfg *lumaCfg)
CSL_DssVidPipeLumaCfg structure init function.
Definition: csl_dssVideoPipe.h:604
CSL_DssVidPipeMFlagCfg
DSS Video Pipe MFLAG Config parameters.
Definition: csl_dssVideoPipe.h:345
CSL_DSS_NUM_LUT_ENTRIES
#define CSL_DSS_NUM_LUT_ENTRIES
Number of entries for CLUT/Gamma Correction.
Definition: csl_dssTop.h:197
CSL_DssVidPipeVC1Cfg::rangeY
uint32_t rangeY
Definition: csl_dssVideoPipe.h:335
CSL_DSS_VID_PIPE_REFRESH_CONTROL_SW
#define CSL_DSS_VID_PIPE_REFRESH_CONTROL_SW
Transition is controlled by SW.
Definition: csl_dssVideoPipe.h:125
CSL_DssVidPipeCfg::nibbleModeEnable
uint32_t nibbleModeEnable
Definition: csl_dssVideoPipe.h:256
CSL_dssVidPipeSetBuffAddr
void CSL_dssVidPipeSetBuffAddr(CSL_dss_pipeRegs *pipeRegs, uint32_t field, uint64_t baseAddrRGBY, uint64_t baseAddrUV)
Set the video buffer address.
CSL_DSS_VID_PIPE_YUV_ALIGN_LSB
#define CSL_DSS_VID_PIPE_YUV_ALIGN_LSB
Data is LSB aligned (MSB unused)
Definition: csl_dssVideoPipe.h:82
CSL_dssVidPipeSetAlphaConfig
void CSL_dssVidPipeSetAlphaConfig(CSL_dss_pipeRegs *pipeRegs, const CSL_DssVidPipeAlphaCfg *alphaCfg)
Set DSS Video Pipe Alpha parameters.
CSL_dssVidPipeSetDmaConfig
void CSL_dssVidPipeSetDmaConfig(CSL_dss_pipeRegs *pipeRegs, const CSL_DssVidPipeDmaCfg *dmaCfg)
Configure the Video Pipe DMA parameters.
Fvid2_Format
FVID2 video buffer format specification.
Definition: fvid2_dataTypes.h:1113
CSL_DSS_CSC_RANGE_CUSTOM
#define CSL_DSS_CSC_RANGE_CUSTOM
Custom range selected.
Definition: csl_dssTop.h:160
CSL_DssVidPipeVC1Cfg::rangeUV
uint32_t rangeUV
Definition: csl_dssVideoPipe.h:337
CSL_DssVidPipeDmaCfg::preloadVal
uint32_t preloadVal
Definition: csl_dssVideoPipe.h:275
CSL_DssVidPipeCfg::outWidth
uint32_t outWidth
Definition: csl_dssVideoPipe.h:234
CSL_dssVidPipeSetSafetySignSeedVal
void CSL_dssVidPipeSetSafetySignSeedVal(CSL_dss_pipeRegs *pipeRegs, uint32_t signSeedVal)
Set the seed value for the signature calculation.
CSL_DssVidPipeCfg::yuvAlign
uint32_t yuvAlign
Definition: csl_dssVideoPipe.h:231
CSL_DssVidPipeAlphaCfg
DSS Video Pipe Alpha Config parameters.
Definition: csl_dssVideoPipe.h:317
CSL_DssVidPipeCfg::pipeType
uint32_t pipeType
Definition: csl_dssVideoPipe.h:141
CSL_DssVidPipeVC1Cfg::vc1Enable
uint32_t vc1Enable
Definition: csl_dssVideoPipe.h:333
CSL_DssVidPipeCfg::gammaEnable
uint32_t gammaEnable
Definition: csl_dssVideoPipe.h:260
CSL_DssVidPipeCfg::outHeight
uint32_t outHeight
Definition: csl_dssVideoPipe.h:236
CSL_DssVidPipeDmaCfg::selfRefreshControl
uint32_t selfRefreshControl
Definition: csl_dssVideoPipe.h:283
CSL_DSS_VID_PIPE_TYPE_VIDL
#define CSL_DSS_VID_PIPE_TYPE_VIDL
Video Pipe is of type VIDL.
Definition: csl_dssTop.h:78
CSL_DssVidPipeDmaCfg::bufHighThreshold
uint32_t bufHighThreshold
Definition: csl_dssVideoPipe.h:280
CSL_dssVidPipeSetConfig
int32_t CSL_dssVidPipeSetConfig(CSL_dss_pipeRegs *pipeRegs, const CSL_DssVidPipeCfg *pipeCfg, const CSL_DssVidPipeVC1Cfg *vc1Cfg)
Configure the Video Pipe.
FALSE
#define FALSE
Definition: csl_types.h:62
CSL_dssVidPipeSetSafetyChkConfig
void CSL_dssVidPipeSetSafetyChkConfig(CSL_dss_pipeRegs *pipeRegs, const CSL_DssSafetyChkCfg *safetyCfg)
Configure the Safety Check Params.
CSL_DssVidPipeAlphaCfg::preMultiplyAlpha
uint32_t preMultiplyAlpha
Definition: csl_dssVideoPipe.h:321
CSL_DssVidPipeMFlagCfg::thresholdHigh
uint32_t thresholdHigh
Definition: csl_dssVideoPipe.h:348