AM62L FreeRTOS SDK  11.00.00
csl_dssCommon.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 
49 #ifndef CSL_DSSCOMMON_H_
50 #define CSL_DSSCOMMON_H_
51 
52 /* ========================================================================== */
53 /* Include Files */
54 /* ========================================================================== */
55 
56 /* None */
57 
58 #ifdef __cplusplus
59 extern "C" {
60 #endif
61 
62 /* ========================================================================== */
63 /* Macros & Typedefs */
64 /* ========================================================================== */
65 
72 
80 #define CSL_DSS_DISPC_INTR_VIDL1_MASK ((uint32_t) 0x20U)
81 
82 #define CSL_DSS_DISPC_INTR_VP1_MASK ((uint32_t) 0x01U)
83 
92 #define CSL_DSS_VID_PIPE_INTR_SAFETYVIOLATION_MASK \
93  ((uint32_t) CSL_DSS_COMMON_VID_IRQENABLE_1_SAFETYREGION_EN_MASK)
94 
95 #define CSL_DSS_VID_PIPE_INTR_WINDOWEND_MASK \
96  ((uint32_t) CSL_DSS_COMMON_VID_IRQENABLE_1_VIDENDWINDOW_EN_MASK)
97 
98 #define CSL_DSS_VID_PIPE_INTR_BUFUNDERFLOW_MASK \
99  ((uint32_t) CSL_DSS_COMMON_VID_IRQENABLE_1_VIDBUFFERUNDERFLOW_EN_MASK)
100 
101 #define CSL_DSS_VID_PIPE_INTR_ALL_MASK \
102  (CSL_DSS_VID_PIPE_INTR_SAFETYVIOLATION_MASK | \
103  CSL_DSS_VID_PIPE_INTR_WINDOWEND_MASK | \
104  CSL_DSS_VID_PIPE_INTR_BUFUNDERFLOW_MASK)
105 
114 #define CSL_DSS_VP_INTR_FRAMEDONE_MASK \
115  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPFRAMEDONE_EN_MASK)
116 
117 #define CSL_DSS_VP_INTR_VSYNC_MASK \
118  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPVSYNC_EN_MASK)
119 
120 #define CSL_DSS_VP_INTR_ODDVSYNC_MASK \
121  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPVSYNC_ODD_EN_MASK)
122 
123 #define CSL_DSS_VP_INTR_PROGLINENUM_MASK \
124  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPPROGRAMMEDLINENUMBER_EN_MASK)
125 
126 #define CSL_DSS_VP_INTR_SYNCLOST_MASK \
127  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPSYNCLOST_EN_MASK)
128 
129 #define CSL_DSS_VP_INTR_ACBIASCOUNT_MASK \
130  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_ACBIASCOUNTSTATUS_EN_MASK)
131 
132 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION0_MASK \
133  ((uint32_t) 0x40U)
134 
135 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION1_MASK \
136  ((uint32_t) 0x80U)
137 
138 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION2_MASK \
139  ((uint32_t) 0x100U)
140 
141 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION3_MASK \
142  ((uint32_t) 0x200U)
143 
144 #define CSL_DSS_VP_INTR_SECURITYVIOLATION_MASK \
145  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_SECURITYVIOLATION_EN_MASK)
146 
147 #define CSL_DSS_VP_INTR_GOBITCLEAR_MASK \
148  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPSYNC_EN_MASK)
149 
150 #define CSL_DSS_VP_INTR_ALL_MASK \
151  (CSL_DSS_VP_INTR_FRAMEDONE_MASK | \
152  CSL_DSS_VP_INTR_VSYNC_MASK | \
153  CSL_DSS_VP_INTR_ODDVSYNC_MASK | \
154  CSL_DSS_VP_INTR_PROGLINENUM_MASK | \
155  CSL_DSS_VP_INTR_SYNCLOST_MASK | \
156  CSL_DSS_VP_INTR_ACBIASCOUNT_MASK | \
157  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION0_MASK | \
158  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION1_MASK | \
159  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION2_MASK | \
160  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION3_MASK | \
161  CSL_DSS_VP_INTR_SECURITYVIOLATION_MASK | \
162  CSL_DSS_VP_INTR_GOBITCLEAR_MASK)
163 
172 #define CSL_DSS_MFLAG_START_NORMAL \
173  ((uint32_t) CSL_DSS_COMMON_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_START_VAL_MFLAGNORMALSTARTMODE)
174 
175 #define CSL_DSS_MFLAG_START_FORCED \
176  ((uint32_t) CSL_DSS_COMMON_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_START_VAL_MFLAGFORCESTARTMODE)
177 
186 #define CSL_DSS_MFLAG_CTRL_DISABLED \
187  ((uint32_t) CSL_DSS_COMMON_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_CTRL_VAL_MFLAGDIS)
188 
189 #define CSL_DSS_MFLAG_CTRL_FORCE_ENABLE \
190  ((uint32_t) CSL_DSS_COMMON_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_CTRL_VAL_MFLAGFORCE)
191 
192 #define CSL_DSS_MFLAG_CTRL_DYNAMIC \
193  ((uint32_t) CSL_DSS_COMMON_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_CTRL_VAL_MFLAGEN)
194 
196 /* ========================================================================== */
197 /* Structure Declarations */
198 /* ========================================================================== */
199 
203 typedef struct
204 {
209  uint32_t globalMflagCtrl;
213 
217 typedef struct
218 {
219  uint32_t priHigh;
222  uint32_t priLow;
225 } CSL_DssCbaCfg;
226 
227 /* ========================================================================== */
228 /* Function Declarations */
229 /* ========================================================================== */
230 
240 
249 uint32_t CSL_dssIsOldiResetDone(const CSL_dss_commRegs *commRegs);
250 
264  uint32_t intrMask,
265  uint32_t intrEnable);
266 
283  uint32_t vidPipeId,
284  uint32_t intrMask,
285  uint32_t intrEnable);
286 
303  uint32_t portId,
304  uint32_t intrMask,
305  uint32_t intrEnable);
306 
317  uint32_t intrMask);
318 
332  uint32_t vidPipeId,
333  uint32_t intrMask);
334 
348  uint32_t portId,
349  uint32_t intrMask);
350 
359 uint32_t CSL_dssGetDispcIntrStatus(const CSL_dss_commRegs *commRegs);
360 
372  uint32_t vidPipeId);
373 
384 uint32_t CSL_dssGetVpIntrStatus(const CSL_dss_commRegs *commRegs,
385  uint32_t portId);
386 
397  const CSL_DssGlobalMFlagCfg *mflagCfg);
398 
414  uint32_t portIdMask,
415  uint32_t enable);
416 
429  uint32_t portIdMask);
430 
441  const CSL_DssCbaCfg *cbaCfg);
442 
443 /* ========================================================================== */
444 /* Static Function Declarations */
445 /* ========================================================================== */
446 
453 static inline void CSL_dssGlobalMFlagCfgInit(
454  CSL_DssGlobalMFlagCfg *mflagCfg);
455 
462 static inline void CSL_dssCbaCfgInit(
463  CSL_DssCbaCfg *cbaCfg);
464 
465 /* ========================================================================== */
466 /* Static Function Definitions */
467 /* ========================================================================== */
468 
469 static inline void CSL_dssGlobalMFlagCfgInit(
470  CSL_DssGlobalMFlagCfg *mflagCfg)
471 {
472  if(NULL != mflagCfg)
473  {
476  }
477 }
478 
479 static inline void CSL_dssCbaCfgInit(
480  CSL_DssCbaCfg *cbaCfg)
481 {
482  if(NULL != cbaCfg)
483  {
484  cbaCfg->priHigh = 0x1U;
485  cbaCfg->priLow = 0x4U;
486  }
487 }
488 
489 #ifdef __cplusplus
490 }
491 #endif
492 
493 #endif /* #ifndef CSL_DSSCOMMON_H_ */
494 
CSL_dssSetCbaConfig
void CSL_dssSetCbaConfig(CSL_dss_commRegs *commRegs, const CSL_DssCbaCfg *cbaCfg)
Set the CBA configuration.
CSL_dssGlobalVpGoBitEnable
void CSL_dssGlobalVpGoBitEnable(CSL_dss_commRegs *commRegs, uint32_t portIdMask)
Enable the global VP go bit. This allows setting multiple outputs synchronously. The 'OR' result of d...
CSL_dssCbaCfgInit
static void CSL_dssCbaCfgInit(CSL_DssCbaCfg *cbaCfg)
CSL_DssCbaCfg structure init function.
Definition: csl_dssCommon.h:479
CSL_dssModuleReset
void CSL_dssModuleReset(CSL_dss_commRegs *commRegs)
Reset the DSS Module. Application should make sure Video Ports are disabled before calling this API.
CSL_DSS_MFLAG_CTRL_DISABLED
#define CSL_DSS_MFLAG_CTRL_DISABLED
Mflag is disabled.
Definition: csl_dssCommon.h:186
CSL_DssCbaCfg::priLow
uint32_t priLow
Definition: csl_dssCommon.h:222
CSL_dssClearPipeIntr
void CSL_dssClearPipeIntr(CSL_dss_commRegs *commRegs, uint32_t vidPipeId, uint32_t intrMask)
Clear the interrupts for Video Pipe.
NULL
#define NULL
Define NULL if not defined.
Definition: csl_types.h:100
CSL_dss_commRegs
CSL_dss_commonRegs CSL_dss_commRegs
DSS Common Registers.
Definition: csl_dssCommon.h:71
CSL_DssCbaCfg::priHigh
uint32_t priHigh
Definition: csl_dssCommon.h:219
CSL_dssGetPipeIntrStatus
uint32_t CSL_dssGetPipeIntrStatus(const CSL_dss_commRegs *commRegs, uint32_t vidPipeId)
Get the interrupt status of Video Pipe.
CSL_dssIsOldiResetDone
uint32_t CSL_dssIsOldiResetDone(const CSL_dss_commRegs *commRegs)
Get OLDI reset status.
CSL_dss_commonRegs
Definition: cslr_dss.h:55
CSL_dssEnablePipeIntr
void CSL_dssEnablePipeIntr(CSL_dss_commRegs *commRegs, uint32_t vidPipeId, uint32_t intrMask, uint32_t intrEnable)
Enable/disable the interrupts for Video Pipe.
CSL_dssGlobalMFlagCfgInit
static void CSL_dssGlobalMFlagCfgInit(CSL_DssGlobalMFlagCfg *mflagCfg)
CSL_DssGlobalMFlagCfg structure init function.
Definition: csl_dssCommon.h:469
CSL_dssGetVpIntrStatus
uint32_t CSL_dssGetVpIntrStatus(const CSL_dss_commRegs *commRegs, uint32_t portId)
Get the interrupt status of Video Port.
CSL_DSS_MFLAG_START_NORMAL
#define CSL_DSS_MFLAG_START_NORMAL
Mflag of each pipe is kept at 0 until preload is reached.
Definition: csl_dssCommon.h:172
CSL_dssEnableVpIntr
void CSL_dssEnableVpIntr(CSL_dss_commRegs *commRegs, uint32_t portId, uint32_t intrMask, uint32_t intrEnable)
Enable/disable the interrupts for Video Port.
CSL_DssGlobalMFlagCfg
DSS Global MFLAG Config parameters.
Definition: csl_dssCommon.h:204
CSL_dssEnableDispcIntr
void CSL_dssEnableDispcIntr(CSL_dss_commRegs *commRegs, uint32_t intrMask, uint32_t intrEnable)
Enable/disable the interrupts at DSS top level.
CSL_dssClearDispcIntr
void CSL_dssClearDispcIntr(CSL_dss_commRegs *commRegs, uint32_t intrMask)
Clear the interrupts at DSS top level.
CSL_DssGlobalMFlagCfg::globalMflagCtrl
uint32_t globalMflagCtrl
Definition: csl_dssCommon.h:209
CSL_DssGlobalMFlagCfg::globalMflagStart
uint32_t globalMflagStart
Definition: csl_dssCommon.h:205
CSL_dssGlobalVpEnable
void CSL_dssGlobalVpEnable(CSL_dss_commRegs *commRegs, uint32_t portIdMask, uint32_t enable)
Enable the global VP enable bit. This allows setting multiple outputs synchronously....
CSL_DssCbaCfg
DSS CBA Config parameters.
Definition: csl_dssCommon.h:218
CSL_dssClearVpIntr
void CSL_dssClearVpIntr(CSL_dss_commRegs *commRegs, uint32_t portId, uint32_t intrMask)
Clear the interrupts for Video Port.
CSL_dssGetDispcIntrStatus
uint32_t CSL_dssGetDispcIntrStatus(const CSL_dss_commRegs *commRegs)
Get the top level interrupt status of DSS.
CSL_dssSetGlobalMflagConfig
void CSL_dssSetGlobalMflagConfig(CSL_dss_commRegs *commRegs, const CSL_DssGlobalMFlagCfg *mflagCfg)
Set the global MFLAG configuration.