AM62Px MCU+ SDK  09.02.01
csl_dssVideoPipe.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 
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_VID_ATTRIBUTES2_YUV_ALIGN_VAL_LSB)
84 
85 #define CSL_DSS_VID_PIPE_YUV_ALIGN_MSB \
86  ((uint32_t) CSL_DSS_VID_ATTRIBUTES2_YUV_ALIGN_VAL_MSB)
87 
96 #define CSL_DSS_VID_PIPE_SC_DISABLED \
97  ((uint32_t) CSL_DSS_VID_ATTRIBUTES_RESIZEENABLE_VAL_RESIZEPROC)
98 
99 #define CSL_DSS_VID_PIPE_SC_ENABLED_H \
100  ((uint32_t) CSL_DSS_VID_ATTRIBUTES_RESIZEENABLE_VAL_HRESIZE)
101 
102 #define CSL_DSS_VID_PIPE_SC_ENABLED_V \
103  ((uint32_t) CSL_DSS_VID_ATTRIBUTES_RESIZEENABLE_VAL_VRESIZE)
104 
105 #define CSL_DSS_VID_PIPE_SC_ENABLED_HV \
106  ((uint32_t) CSL_DSS_VID_ATTRIBUTES_RESIZEENABLE_VAL_HVRESIZE)
107 
117 #define CSL_DSS_VID_PIPE_PRELOAD_CONTROL_SW \
118  ((uint32_t) CSL_DSS_VID_ATTRIBUTES_BUFPRELOAD_VAL_DEFVAL)
119 
120 #define CSL_DSS_VID_PIPE_PRELOAD_CONTROL_HW \
121  ((uint32_t) CSL_DSS_VID_ATTRIBUTES_BUFPRELOAD_VAL_HIGHTHRES)
122 
131 #define CSL_DSS_VID_PIPE_PRIORITY_NORMAL \
132  ((uint32_t) CSL_DSS_VID_ATTRIBUTES_ARBITRATION_VAL_NORMALPRIO)
133 
134 #define CSL_DSS_VID_PIPE_PRIORITY_HIGH \
135  ((uint32_t) CSL_DSS_VID_ATTRIBUTES_ARBITRATION_VAL_HIGHPRIO)
136 
145 #define CSL_DSS_VID_PIPE_REFRESH_CONTROL_SW \
146  ((uint32_t) CSL_DSS_VID_ATTRIBUTES_SELFREFRESHAUTO_VAL_SELFREFRESHAUTODIS)
147 
148 #define CSL_DSS_VID_PIPE_REFRESH_CONTROL_HW \
149  ((uint32_t) CSL_DSS_VID_ATTRIBUTES_SELFREFRESHAUTO_VAL_SELFREFRESHAUTOEN)
150 
152 /* ========================================================================== */
153 /* Structure Declarations */
154 /* ========================================================================== */
155 
159 typedef struct
160 {
161  uint32_t pipeType;
243  uint32_t pixelInc;
250  uint32_t yuvAlign;
253  uint32_t outWidth;
255  uint32_t outHeight;
257  uint32_t scEnable;
261  uint32_t cscRange;
270  uint32_t flipType;
273  uint32_t clutData[CSL_DSS_NUM_LUT_ENTRIES];
279  uint32_t gammaEnable;
284 
288 typedef struct
289 {
294  uint32_t preloadVal;
296  uint32_t bufLowThreshold;
310  uint32_t arbitration;
314 
318 typedef struct
319 {
320  uint32_t lumaKeyEnable;
324  uint32_t lumaKeyMinVal;
327  uint32_t lumaKeyMaxVal;
331 
335 typedef struct
336 {
337  uint32_t globalAlpha;
346 
350 typedef struct
351 {
352  uint32_t vc1Enable;
354  uint32_t rangeY;
356  uint32_t rangeUV;
359 
363 typedef struct
364 {
365  uint32_t thresholdLow;
367  uint32_t thresholdHigh;
370 
371 /* ========================================================================== */
372 /* Function Declarations */
373 /* ========================================================================== */
374 
388  const CSL_DssVidPipeCfg *pipeCfg,
389  const CSL_DssVidPipeVC1Cfg *vc1Cfg);
390 
401  const CSL_DssVidPipeDmaCfg *dmaCfg);
402 
413  const CSL_DssVidPipeLumaCfg *lumaCfg);
414 
425  const CSL_DssVidPipeAlphaCfg *alphaCfg);
426 
437  const CSL_DssCscCoeff *coeff);
438 
451  uint32_t field,
452  uint64_t baseAddrRGBY,
453  uint64_t baseAddrUV);
454 
464 void CSL_dssVidPipeEnable(CSL_dss_pipeRegs *pipeRegs, uint32_t enable);
465 
475  uint32_t signSeedVal);
476 
486  uint32_t referenceSign);
487 
498  const CSL_DssSafetyChkCfg *safetyCfg);
499 
509 
520  const CSL_DssVidPipeMFlagCfg *mflagCfg);
521 
522 /* ========================================================================== */
523 /* Static Function Declarations */
524 /* ========================================================================== */
525 
532 static inline void CSL_dssVidPipeCfgInit(
533  CSL_DssVidPipeCfg *pipeCfg);
534 
541 static inline void CSL_dssVidPipeDmaCfgInit(
542  CSL_DssVidPipeDmaCfg *dmaCfg);
543 
550 static inline void CSL_dssVidPipeLumaCfgInit(
551  CSL_DssVidPipeLumaCfg *lumaCfg);
552 
559 static inline void CSL_dssVidPipeAlphaCfgInit(
560  CSL_DssVidPipeAlphaCfg *alphaCfg);
561 
568 static inline void CSL_dssVidPipeVC1CfgInit(
569  CSL_DssVidPipeVC1Cfg *vc1Cfg);
570 
577 static inline void CSL_dssVidPipeMFlagCfgInit(
578  CSL_DssVidPipeMFlagCfg *mflagCfg);
579 
580 /* ========================================================================== */
581 /* Static Function Definitions */
582 /* ========================================================================== */
583 
584 static inline void CSL_dssVidPipeCfgInit(
585  CSL_DssVidPipeCfg *pipeCfg)
586 {
587  uint32_t i;
588  if(NULL != pipeCfg)
589  {
590  Fvid2Format_init(&pipeCfg->inFmt);
592  pipeCfg->pixelInc = 1U;
594  pipeCfg->outWidth = 800U;
595  pipeCfg->outHeight = 480U;
597  pipeCfg->cscRange = CSL_DSS_CSC_RANGE_FULL;
600  pipeCfg->flipType = FVID2_FLIP_TYPE_NONE;
601  for(i=0U; i<CSL_DSS_NUM_LUT_ENTRIES; i++)
602  {
603  pipeCfg->clutData[i] = 0x0U;
604  }
605  pipeCfg->nibbleModeEnable = FALSE;
606  pipeCfg->gammaEnable = FALSE;
607  }
608 }
609 
610 static inline void CSL_dssVidPipeDmaCfgInit(
611  CSL_DssVidPipeDmaCfg *dmaCfg)
612 {
613  if(NULL != dmaCfg)
614  {
616  dmaCfg->bufLowThreshold = 0x09FFU;
617  dmaCfg->bufHighThreshold = 0x09F8U;
619  dmaCfg->selfRefreshEnable = FALSE;
621  }
622 }
623 
624 static inline void CSL_dssVidPipeLumaCfgInit(
625  CSL_DssVidPipeLumaCfg *lumaCfg)
626 {
627  if(NULL != lumaCfg)
628  {
629  lumaCfg->lumaKeyEnable = FALSE;
630  lumaCfg->lumaKeyMinVal = 0U;
631  lumaCfg->lumaKeyMaxVal = 0U;
632  }
633 }
634 
635 static inline void CSL_dssVidPipeAlphaCfgInit(
636  CSL_DssVidPipeAlphaCfg *alphaCfg)
637 {
638  if(NULL != alphaCfg)
639  {
640  alphaCfg->globalAlpha = 0xFFU;
641  alphaCfg->preMultiplyAlpha = FALSE;
642  }
643 }
644 
645 static inline void CSL_dssVidPipeVC1CfgInit(
646  CSL_DssVidPipeVC1Cfg *vc1Cfg)
647 {
648  if(NULL != vc1Cfg)
649  {
650  vc1Cfg->vc1Enable = FALSE;
651  vc1Cfg->rangeY = 0U;
652  vc1Cfg->rangeUV = 0U;
653  }
654 }
655 
656 static inline void CSL_dssVidPipeMFlagCfgInit(
657  CSL_DssVidPipeMFlagCfg *mflagCfg)
658 {
659  if(NULL != mflagCfg)
660  {
661  mflagCfg->thresholdLow = 0U;
662  mflagCfg->thresholdHigh = 0U;
663  }
664 }
665 
666 #ifdef __cplusplus
667 }
668 #endif
669 
670 #endif /* #ifndef CSL_DSSVIDEOPIPE_H_ */
671 
CSL_DssVidPipeCfg::cscRange
uint32_t cscRange
Definition: csl_dssVideoPipe.h:261
CSL_DssSafetyChkCfg
Configuration for doing safety checks.
Definition: csl_dssTop.h:260
CSL_DssVidPipeLumaCfg::lumaKeyEnable
uint32_t lumaKeyEnable
Definition: csl_dssVideoPipe.h:320
CSL_DSS_VID_PIPE_PRIORITY_NORMAL
#define CSL_DSS_VID_PIPE_PRIORITY_NORMAL
Priority of video pipeline is normal.
Definition: csl_dssVideoPipe.h:131
CSL_DssVidPipeCfg::custCscCoeff
CSL_DssCscCoeff custCscCoeff
Definition: csl_dssVideoPipe.h:264
CSL_DssVidPipeCfg
Configuration for DSS Video Pipe.
Definition: csl_dssVideoPipe.h:160
CSL_DssVidPipeCfg::flipType
uint32_t flipType
Definition: csl_dssVideoPipe.h:270
CSL_dssVidPipeMFlagCfgInit
static void CSL_dssVidPipeMFlagCfgInit(CSL_DssVidPipeMFlagCfg *mflagCfg)
CSL_DssVidPipeMFlagCfg structure init function.
Definition: csl_dssVideoPipe.h:656
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:289
CSL_DssVidPipeCfg::pixelInc
uint32_t pixelInc
Definition: csl_dssVideoPipe.h:243
CSL_dssVidPipeCfgInit
static void CSL_dssVidPipeCfgInit(CSL_DssVidPipeCfg *pipeCfg)
CSL_DssVidPipeCfg structure init function.
Definition: csl_dssVideoPipe.h:584
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:220
CSL_DSS_CSC_RANGE_FULL
#define CSL_DSS_CSC_RANGE_FULL
Full range selected.
Definition: csl_dssTop.h:168
CSL_DssVidPipeVC1Cfg
DSS Video Pipe VC1 configuration.
Definition: csl_dssVideoPipe.h:351
CSL_DssVidPipeCfg::inFmt
Fvid2_Format inFmt
Definition: csl_dssVideoPipe.h:163
CSL_DssVidPipeDmaCfg::selfRefreshEnable
uint32_t selfRefreshEnable
Definition: csl_dssVideoPipe.h:306
NULL
#define NULL
Define NULL if not defined.
Definition: csl_types.h:100
CSL_DssVidPipeDmaCfg::bufLowThreshold
uint32_t bufLowThreshold
Definition: csl_dssVideoPipe.h:296
CSL_DssVidPipeAlphaCfg::globalAlpha
uint32_t globalAlpha
Definition: csl_dssVideoPipe.h:337
CSL_dssVidPipeAlphaCfgInit
static void CSL_dssVidPipeAlphaCfgInit(CSL_DssVidPipeAlphaCfg *alphaCfg)
CSL_DssVidPipeAlphaCfg structure init function.
Definition: csl_dssVideoPipe.h:635
CSL_dssVidPipeVC1CfgInit
static void CSL_dssVidPipeVC1CfgInit(CSL_DssVidPipeVC1Cfg *vc1Cfg)
CSL_DssVidPipeVC1Cfg structure init function.
Definition: csl_dssVideoPipe.h:645
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:2196
CSL_DssVidPipeLumaCfg::lumaKeyMinVal
uint32_t lumaKeyMinVal
Definition: csl_dssVideoPipe.h:324
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:120
CSL_DssVidPipeCfg::scEnable
uint32_t scEnable
Definition: csl_dssVideoPipe.h:257
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:273
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:365
CSL_DssVidPipeDmaCfg::bufPreloadControl
uint32_t bufPreloadControl
Definition: csl_dssVideoPipe.h:290
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:335
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:610
CSL_DssCscCoeff::cscRange
uint32_t cscRange
Definition: csl_dssTop.h:221
CSL_DssVidPipeDmaCfg::arbitration
uint32_t arbitration
Definition: csl_dssVideoPipe.h:310
CSL_DssVidPipeLumaCfg
DSS Video Pipe Luma Key Config parameters.
Definition: csl_dssVideoPipe.h:319
CSL_DssVidPipeLumaCfg::lumaKeyMaxVal
uint32_t lumaKeyMaxVal
Definition: csl_dssVideoPipe.h:327
CSL_dssVidPipeLumaCfgInit
static void CSL_dssVidPipeLumaCfgInit(CSL_DssVidPipeLumaCfg *lumaCfg)
CSL_DssVidPipeLumaCfg structure init function.
Definition: csl_dssVideoPipe.h:624
CSL_DssVidPipeMFlagCfg
DSS Video Pipe MFLAG Config parameters.
Definition: csl_dssVideoPipe.h:364
CSL_dss_pipeRegs
CSL_dss_vidRegs CSL_dss_pipeRegs
DSS Video Pipe Registers.
Definition: csl_dssVideoPipe.h:72
CSL_DSS_NUM_LUT_ENTRIES
#define CSL_DSS_NUM_LUT_ENTRIES
Number of entries for CLUT/Gamma Correction.
Definition: csl_dssTop.h:207
CSL_DssVidPipeVC1Cfg::rangeY
uint32_t rangeY
Definition: csl_dssVideoPipe.h:354
CSL_DSS_VID_PIPE_TYPE_VID
#define CSL_DSS_VID_PIPE_TYPE_VID
Video Pipe is of type VID.
Definition: csl_dssTop.h:78
CSL_DSS_VID_PIPE_REFRESH_CONTROL_SW
#define CSL_DSS_VID_PIPE_REFRESH_CONTROL_SW
Transition is controlled by SW.
Definition: csl_dssVideoPipe.h:145
CSL_DssVidPipeCfg::nibbleModeEnable
uint32_t nibbleModeEnable
Definition: csl_dssVideoPipe.h:275
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_DSS_VID_PIPE_SC_DISABLED
#define CSL_DSS_VID_PIPE_SC_DISABLED
Scaler is disabled.
Definition: csl_dssVideoPipe.h:96
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:1104
CSL_DSS_CSC_RANGE_CUSTOM
#define CSL_DSS_CSC_RANGE_CUSTOM
Custom range selected.
Definition: csl_dssTop.h:170
CSL_DssVidPipeVC1Cfg::rangeUV
uint32_t rangeUV
Definition: csl_dssVideoPipe.h:356
CSL_DssVidPipeDmaCfg::preloadVal
uint32_t preloadVal
Definition: csl_dssVideoPipe.h:294
CSL_DssVidPipeCfg::outWidth
uint32_t outWidth
Definition: csl_dssVideoPipe.h:253
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:250
CSL_DssVidPipeAlphaCfg
DSS Video Pipe Alpha Config parameters.
Definition: csl_dssVideoPipe.h:336
CSL_DssVidPipeCfg::pipeType
uint32_t pipeType
Definition: csl_dssVideoPipe.h:161
CSL_DssVidPipeVC1Cfg::vc1Enable
uint32_t vc1Enable
Definition: csl_dssVideoPipe.h:352
CSL_dss_vidRegs
Definition: cslr_dss.h:2594
CSL_DssVidPipeCfg::gammaEnable
uint32_t gammaEnable
Definition: csl_dssVideoPipe.h:279
CSL_DssVidPipeCfg::outHeight
uint32_t outHeight
Definition: csl_dssVideoPipe.h:255
CSL_DssVidPipeDmaCfg::selfRefreshControl
uint32_t selfRefreshControl
Definition: csl_dssVideoPipe.h:302
CSL_DssVidPipeDmaCfg::bufHighThreshold
uint32_t bufHighThreshold
Definition: csl_dssVideoPipe.h:299
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:340
CSL_DssVidPipeMFlagCfg::thresholdHigh
uint32_t thresholdHigh
Definition: csl_dssVideoPipe.h:367