PDK API Guide for J721E
csl_dssVideoPipe.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Texas Instruments Incorporated 2018
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 
47 #ifndef CSL_DSSVIDEOPIPE_H_
48 #define CSL_DSSVIDEOPIPE_H_
49 
50 /* ========================================================================== */
51 /* Include Files */
52 /* ========================================================================== */
53 
54 /* None */
55 
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59 
60 /* ========================================================================== */
61 /* Macros & Typedefs */
62 /* ========================================================================== */
63 
71 typedef CSL_dss_vid1Regs CSL_dss_pipeRegs;
72 
81 #define CSL_DSS_VID_PIPE_YUV_ALIGN_LSB \
82  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES2_YUV_ALIGN_VAL_LSB)
83 
84 #define CSL_DSS_VID_PIPE_YUV_ALIGN_MSB \
85  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES2_YUV_ALIGN_VAL_MSB)
86 /* @} */
87 
95 #define CSL_DSS_VID_PIPE_SC_DISABLED \
96  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES_RESIZEENABLE_VAL_RESIZEPROC)
97 
98 #define CSL_DSS_VID_PIPE_SC_ENABLED_H \
99  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES_RESIZEENABLE_VAL_HRESIZE)
100 
101 #define CSL_DSS_VID_PIPE_SC_ENABLED_V \
102  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES_RESIZEENABLE_VAL_VRESIZE)
103 
104 #define CSL_DSS_VID_PIPE_SC_ENABLED_HV \
105  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES_RESIZEENABLE_VAL_HVRESIZE)
106 /* @} */
107 
116 #define CSL_DSS_VID_PIPE_PRELOAD_CONTROL_SW \
117  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES_BUFPRELOAD_VAL_DEFVAL)
118 
119 #define CSL_DSS_VID_PIPE_PRELOAD_CONTROL_HW \
120  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES_BUFPRELOAD_VAL_HIGHTHRES)
121 /* @} */
122 
130 #define CSL_DSS_VID_PIPE_PRIORITY_NORMAL \
131  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES_ARBITRATION_VAL_NORMALPRIO)
132 
133 #define CSL_DSS_VID_PIPE_PRIORITY_HIGH \
134  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES_ARBITRATION_VAL_HIGHPRIO)
135 /* @} */
136 
144 #define CSL_DSS_VID_PIPE_REFRESH_CONTROL_SW \
145  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES_SELFREFRESHAUTO_VAL_SELFREFRESHAUTODIS)
146 
147 #define CSL_DSS_VID_PIPE_REFRESH_CONTROL_HW \
148  ((uint32_t) CSL_DSS_VID1_ATTRIBUTES_SELFREFRESHAUTO_VAL_SELFREFRESHAUTOEN)
149 /* @} */
150 
151 /* ========================================================================== */
152 /* Structure Declarations */
153 /* ========================================================================== */
154 
158 typedef struct
159 {
160  uint32_t pipeType;
242  uint32_t pixelInc;
249  uint32_t yuvAlign;
252  uint32_t outWidth;
254  uint32_t outHeight;
256  uint32_t scEnable;
260  uint32_t cscRange;
263  uint32_t flipType;
266  uint32_t clutData[CSL_DSS_NUM_LUT_ENTRIES];
272  uint32_t gammaEnable;
277 
281 typedef struct
282 {
287  uint32_t preloadVal;
289  uint32_t bufLowThreshold;
303  uint32_t arbitration;
307 
311 typedef struct
312 {
313  uint32_t lumaKeyEnable;
317  uint32_t lumaKeyMinVal;
320  uint32_t lumaKeyMaxVal;
324 
328 typedef struct
329 {
330  uint32_t globalAlpha;
339 
343 typedef struct
344 {
345  uint32_t vc1Enable;
347  uint32_t rangeY;
349  uint32_t rangeUV;
352 
356 typedef struct
357 {
358  uint32_t thresholdLow;
360  uint32_t thresholdHigh;
363 
364 /* ========================================================================== */
365 /* Function Declarations */
366 /* ========================================================================== */
367 
380 int32_t CSL_dssVidPipeSetConfig(CSL_dss_pipeRegs *pipeRegs,
381  const CSL_DssVidPipeCfg *pipeCfg,
382  const CSL_DssVidPipeVC1Cfg *vc1Cfg);
383 
395  const CSL_DssVidPipeDmaCfg *dmaCfg);
396 
408  const CSL_DssVidPipeLumaCfg *lumaCfg);
409 
421  const CSL_DssVidPipeAlphaCfg *alphaCfg);
422 
434  const CSL_DssCscCoeff *coeff);
435 
449  uint32_t field,
450  uint64_t baseAddrRGBY,
451  uint64_t baseAddrUV);
452 
463 void CSL_dssVidPipeEnable(CSL_dss_pipeRegs *pipeRegs, uint32_t enable);
464 
475  uint32_t signSeedVal);
476 
487  uint32_t referenceSign);
488 
500  const CSL_DssSafetyChkCfg *safetyCfg);
501 
510 uint32_t CSL_dssVidPipeGetSafetySign(const CSL_dss_pipeRegs *pipeRegs);
511 
523  const CSL_DssVidPipeMFlagCfg *mflagCfg);
524 
538  const Fvid2_EdgeCropConfig *cropCfg,
539  uint32_t cropEnable);
540 
541 /* ========================================================================== */
542 /* Static Function Declarations */
543 /* ========================================================================== */
544 
552 static inline void CSL_dssVidPipeCfgInit(
553  CSL_DssVidPipeCfg *pipeCfg);
554 
562 static inline void CSL_dssVidPipeDmaCfgInit(
563  CSL_DssVidPipeDmaCfg *dmaCfg);
564 
572 static inline void CSL_dssVidPipeLumaCfgInit(
573  CSL_DssVidPipeLumaCfg *lumaCfg);
574 
582 static inline void CSL_dssVidPipeAlphaCfgInit(
583  CSL_DssVidPipeAlphaCfg *alphaCfg);
584 
592 static inline void CSL_dssVidPipeVC1CfgInit(
593  CSL_DssVidPipeVC1Cfg *vc1Cfg);
594 
602 static inline void CSL_dssVidPipeMFlagCfgInit(
603  CSL_DssVidPipeMFlagCfg *mflagCfg);
604 
605 /* ========================================================================== */
606 /* Static Function Definitions */
607 /* ========================================================================== */
608 
609 static inline void CSL_dssVidPipeCfgInit(
610  CSL_DssVidPipeCfg *pipeCfg)
611 {
612  uint32_t i;
613  if(NULL != pipeCfg)
614  {
615  Fvid2Format_init(&pipeCfg->inFmt);
617  pipeCfg->pixelInc = 1U;
619  pipeCfg->outWidth = 800U;
620  pipeCfg->outHeight = 480U;
622  pipeCfg->cscRange = CSL_DSS_CSC_RANGE_FULL;
623  pipeCfg->flipType = FVID2_FLIP_TYPE_NONE;
624  for(i=0U; i<CSL_DSS_NUM_LUT_ENTRIES; i++)
625  {
626  pipeCfg->clutData[i] = 0x0U;
627  }
628  pipeCfg->nibbleModeEnable = FALSE;
629  pipeCfg->gammaEnable = FALSE;
630  }
631 }
632 
633 static inline void CSL_dssVidPipeDmaCfgInit(
634  CSL_DssVidPipeDmaCfg *dmaCfg)
635 {
636  if(NULL != dmaCfg)
637  {
639  dmaCfg->bufLowThreshold = 0x09FFU;
640  dmaCfg->bufHighThreshold = 0x09F8U;
642  dmaCfg->selfRefreshEnable = FALSE;
644  }
645 }
646 
647 static inline void CSL_dssVidPipeLumaCfgInit(
648  CSL_DssVidPipeLumaCfg *lumaCfg)
649 {
650  if(NULL != lumaCfg)
651  {
652  lumaCfg->lumaKeyEnable = FALSE;
653  lumaCfg->lumaKeyMinVal = 0U;
654  lumaCfg->lumaKeyMaxVal = 0U;
655  }
656 }
657 
658 static inline void CSL_dssVidPipeAlphaCfgInit(
659  CSL_DssVidPipeAlphaCfg *alphaCfg)
660 {
661  if(NULL != alphaCfg)
662  {
663  alphaCfg->globalAlpha = 0xFFU;
664  alphaCfg->preMultiplyAlpha = FALSE;
665  }
666 }
667 
668 static inline void CSL_dssVidPipeVC1CfgInit(
669  CSL_DssVidPipeVC1Cfg *vc1Cfg)
670 {
671  if(NULL != vc1Cfg)
672  {
673  vc1Cfg->vc1Enable = FALSE;
674  vc1Cfg->rangeY = 0U;
675  vc1Cfg->rangeUV = 0U;
676  }
677 }
678 
679 static inline void CSL_dssVidPipeMFlagCfgInit(
680  CSL_DssVidPipeMFlagCfg *mflagCfg)
681 {
682  if(NULL != mflagCfg)
683  {
684  mflagCfg->thresholdLow = 0U;
685  mflagCfg->thresholdHigh = 0U;
686  }
687 }
688 
689 #ifdef __cplusplus
690 }
691 #endif
692 
693 #endif /* #ifndef CSL_DSSVIDEOPIPE_H_ */
694 
695 /* @} */
uint32_t pixelInc
Definition: csl_dssVideoPipe.h:242
DSS Video Pipe VC1 configuration.
Definition: csl_dssVideoPipe.h:343
static void CSL_dssVidPipeAlphaCfgInit(CSL_DssVidPipeAlphaCfg *alphaCfg)
CSL_DssVidPipeAlphaCfg structure init function.
Definition: csl_dssVideoPipe.h:658
DSS Video Pipe MFLAG Config parameters.
Definition: csl_dssVideoPipe.h:356
static void CSL_dssVidPipeMFlagCfgInit(CSL_DssVidPipeMFlagCfg *mflagCfg)
CSL_DssVidPipeMFlagCfg structure init function.
Definition: csl_dssVideoPipe.h:679
uint32_t cscRange
Definition: csl_dssVideoPipe.h:260
#define FALSE
Definition: csl_types.h:55
uint32_t outHeight
Definition: csl_dssVideoPipe.h:254
uint32_t CSL_dssVidPipeGetSafetySign(const CSL_dss_pipeRegs *pipeRegs)
Get the Safety Signature.
Fvid2_Format inFmt
Definition: csl_dssVideoPipe.h:162
DSS Video Pipe DMA related Config parameters.
Definition: csl_dssVideoPipe.h:281
void CSL_dssVidPipeSetCropConfig(CSL_dss_pipeRegs *pipeRegs, const Fvid2_EdgeCropConfig *cropCfg, uint32_t cropEnable)
Enable/disable the crop in DSS Video Pipe.
void CSL_dssVidPipeEnableTransparency(CSL_dss_pipeRegs *pipeRegs, const CSL_DssVidPipeLumaCfg *lumaCfg)
Enable the Luma Key transparency matching and set luma params.
uint32_t vc1Enable
Definition: csl_dssVideoPipe.h:345
uint32_t rangeY
Definition: csl_dssVideoPipe.h:347
DSS Video Pipe Alpha Config parameters.
Definition: csl_dssVideoPipe.h:328
uint32_t lumaKeyMinVal
Definition: csl_dssVideoPipe.h:317
uint32_t selfRefreshEnable
Definition: csl_dssVideoPipe.h:299
CSL_dss_vid1Regs CSL_dss_pipeRegs
DSS Video Pipe Registers.
Definition: csl_dssVideoPipe.h:71
Configuration for DSS Video Pipe.
Definition: csl_dssVideoPipe.h:158
void CSL_dssVidPipeSetAlphaConfig(CSL_dss_pipeRegs *pipeRegs, const CSL_DssVidPipeAlphaCfg *alphaCfg)
Set DSS Video Pipe Alpha parameters.
uint32_t bufLowThreshold
Definition: csl_dssVideoPipe.h:289
Structure containing edge crop configuration - used in DSS.
Definition: csl_fvid2_dataTypes.h:1323
uint32_t lumaKeyMaxVal
Definition: csl_dssVideoPipe.h:320
uint32_t bufPreloadControl
Definition: csl_dssVideoPipe.h:283
uint32_t nibbleModeEnable
Definition: csl_dssVideoPipe.h:268
uint32_t flipType
Definition: csl_dssVideoPipe.h:263
uint32_t scEnable
Definition: csl_dssVideoPipe.h:256
uint32_t preMultiplyAlpha
Definition: csl_dssVideoPipe.h:333
#define CSL_DSS_VID_PIPE_REFRESH_CONTROL_SW
Transition is controlled by SW.
Definition: csl_dssVideoPipe.h:144
#define NULL
Define NULL if not defined.
Definition: csl_types.h:107
#define FVID2_FLIP_TYPE_NONE
Flip Type is None.
Definition: csl_fvid2_dataTypes.h:232
void CSL_dssVidPipeSetDmaConfig(CSL_dss_pipeRegs *pipeRegs, const CSL_DssVidPipeDmaCfg *dmaCfg)
Configure the Video Pipe DMA parameters.
static void CSL_dssVidPipeVC1CfgInit(CSL_DssVidPipeVC1Cfg *vc1Cfg)
CSL_DssVidPipeVC1Cfg structure init function.
Definition: csl_dssVideoPipe.h:668
#define CSL_DSS_VID_PIPE_TYPE_VID
Video Pipe is of type VID.
Definition: csl_dssTop.h:94
Structure containing coefficients for Color Space Conversion.
Definition: csl_dssTop.h:288
uint32_t selfRefreshControl
Definition: csl_dssVideoPipe.h:295
#define CSL_DSS_NUM_LUT_ENTRIES
Number of entries for CLUT/Gamma Correction.
Definition: csl_dssTop.h:276
uint32_t clutData[CSL_DSS_NUM_LUT_ENTRIES]
Definition: csl_dssVideoPipe.h:266
static void CSL_dssVidPipeCfgInit(CSL_DssVidPipeCfg *pipeCfg)
CSL_DssVidPipeCfg structure init function.
Definition: csl_dssVideoPipe.h:609
uint32_t bufHighThreshold
Definition: csl_dssVideoPipe.h:292
int32_t CSL_dssVidPipeSetConfig(CSL_dss_pipeRegs *pipeRegs, const CSL_DssVidPipeCfg *pipeCfg, const CSL_DssVidPipeVC1Cfg *vc1Cfg)
Configure the Video Pipe.
void CSL_dssVidPipeEnable(CSL_dss_pipeRegs *pipeRegs, uint32_t enable)
Enable the DSS Video Pipe.
uint32_t gammaEnable
Definition: csl_dssVideoPipe.h:272
#define CSL_DSS_VID_PIPE_YUV_ALIGN_LSB
Data is LSB aligned (MSB unused)
Definition: csl_dssVideoPipe.h:81
uint32_t arbitration
Definition: csl_dssVideoPipe.h:303
uint32_t outWidth
Definition: csl_dssVideoPipe.h:252
#define CSL_DSS_VID_PIPE_SC_DISABLED
Scaler is disabled.
Definition: csl_dssVideoPipe.h:95
DSS Video Pipe Luma Key Config parameters.
Definition: csl_dssVideoPipe.h:311
FVID2 video buffer format specification.
Definition: csl_fvid2_dataTypes.h:1069
uint32_t preloadVal
Definition: csl_dssVideoPipe.h:287
uint32_t globalAlpha
Definition: csl_dssVideoPipe.h:330
#define CSL_DSS_CSC_RANGE_FULL
Full range selected.
Definition: csl_dssTop.h:215
void CSL_dssVidPipeSetBuffAddr(CSL_dss_pipeRegs *pipeRegs, uint32_t field, uint64_t baseAddrRGBY, uint64_t baseAddrUV)
Set the video buffer address.
void CSL_dssVidPipeSetSafetySignSeedVal(CSL_dss_pipeRegs *pipeRegs, uint32_t signSeedVal)
Set the seed value for the signature calculation.
void CSL_dssVidPipeSetSafetyReferenceSign(CSL_dss_pipeRegs *pipeRegs, uint32_t referenceSign)
Set the reference safety signature for data correctness check.
void CSL_dssVidPipeSetCSCCoeff(CSL_dss_pipeRegs *pipeRegs, const CSL_DssCscCoeff *coeff)
Configure the coefficients for Color Space Conversion.
void CSL_dssVidPipeSetMflagConfig(CSL_dss_pipeRegs *pipeRegs, const CSL_DssVidPipeMFlagCfg *mflagCfg)
Set the MFLAG configuration.
uint32_t pipeType
Definition: csl_dssVideoPipe.h:160
#define CSL_DSS_VID_PIPE_PRIORITY_NORMAL
Priority of video pipeline is normal.
Definition: csl_dssVideoPipe.h:130
static void Fvid2Format_init(Fvid2_Format *fmt)
Fvid2_Format structure init function.
Definition: csl_fvid2_dataTypes.h:2156
Configuration for doing safety checks.
Definition: csl_dssTop.h:328
static void CSL_dssVidPipeDmaCfgInit(CSL_DssVidPipeDmaCfg *dmaCfg)
CSL_DssVidPipeDmaCfg structure init function.
Definition: csl_dssVideoPipe.h:633
uint32_t rangeUV
Definition: csl_dssVideoPipe.h:349
uint32_t yuvAlign
Definition: csl_dssVideoPipe.h:249
void CSL_dssVidPipeSetSafetyChkConfig(CSL_dss_pipeRegs *pipeRegs, const CSL_DssSafetyChkCfg *safetyCfg)
Configure the Safety Check Params.
static void CSL_dssVidPipeLumaCfgInit(CSL_DssVidPipeLumaCfg *lumaCfg)
CSL_DssVidPipeLumaCfg structure init function.
Definition: csl_dssVideoPipe.h:647
#define CSL_DSS_VID_PIPE_PRELOAD_CONTROL_HW
HW pre-fetches pixels up to high threshold value.
Definition: csl_dssVideoPipe.h:119
uint32_t lumaKeyEnable
Definition: csl_dssVideoPipe.h:313
uint32_t thresholdHigh
Definition: csl_dssVideoPipe.h:360
uint32_t thresholdLow
Definition: csl_dssVideoPipe.h:358