AM62Px MCU+ SDK  09.01.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_VID1_MASK ((uint32_t) 0x10U)
83 
84 #define CSL_DSS_DISPC_INTR_VP2_MASK ((uint32_t) 0x02U)
85 
86 #define CSL_DSS_DISPC_INTR_VP1_MASK ((uint32_t) 0x01U)
87 
96 #define CSL_DSS_VID_PIPE_INTR_SAFETYVIOLATION_MASK \
97  ((uint32_t) CSL_DSS_COMMON_VID_IRQENABLE_0_SAFETYREGION_EN_MASK)
98 
99 #define CSL_DSS_VID_PIPE_INTR_WINDOWEND_MASK \
100  ((uint32_t) CSL_DSS_COMMON_VID_IRQENABLE_0_VIDENDWINDOW_EN_MASK)
101 
102 #define CSL_DSS_VID_PIPE_INTR_BUFUNDERFLOW_MASK \
103  ((uint32_t) CSL_DSS_COMMON_VID_IRQENABLE_0_VIDBUFFERUNDERFLOW_EN_MASK)
104 
105 #define CSL_DSS_VID_PIPE_INTR_ALL_MASK \
106  (CSL_DSS_VID_PIPE_INTR_SAFETYVIOLATION_MASK | \
107  CSL_DSS_VID_PIPE_INTR_WINDOWEND_MASK | \
108  CSL_DSS_VID_PIPE_INTR_BUFUNDERFLOW_MASK)
109 
118 #define CSL_DSS_VP_INTR_FRAMEDONE_MASK \
119  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPFRAMEDONE_EN_MASK)
120 
121 #define CSL_DSS_VP_INTR_VSYNC_MASK \
122  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPVSYNC_EN_MASK)
123 
124 #define CSL_DSS_VP_INTR_ODDVSYNC_MASK \
125  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPVSYNC_ODD_EN_MASK)
126 
127 #define CSL_DSS_VP_INTR_PROGLINENUM_MASK \
128  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPPROGRAMMEDLINENUMBER_EN_MASK)
129 
130 #define CSL_DSS_VP_INTR_SYNCLOST_MASK \
131  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPSYNCLOST_EN_MASK)
132 
133 #define CSL_DSS_VP_INTR_ACBIASCOUNT_MASK \
134  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_ACBIASCOUNTSTATUS_EN_MASK)
135 
136 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION0_MASK \
137  ((uint32_t) 0x40U)
138 
139 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION1_MASK \
140  ((uint32_t) 0x80U)
141 
142 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION2_MASK \
143  ((uint32_t) 0x100U)
144 
145 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION3_MASK \
146  ((uint32_t) 0x200U)
147 
148 #define CSL_DSS_VP_INTR_SECURITYVIOLATION_MASK \
149  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_SECURITYVIOLATION_EN_MASK)
150 
151 #define CSL_DSS_VP_INTR_GOBITCLEAR_MASK \
152  ((uint32_t) CSL_DSS_COMMON_VP_IRQENABLE_0_VPSYNC_EN_MASK)
153 
154 #define CSL_DSS_VP_INTR_ALL_MASK \
155  (CSL_DSS_VP_INTR_FRAMEDONE_MASK | \
156  CSL_DSS_VP_INTR_VSYNC_MASK | \
157  CSL_DSS_VP_INTR_ODDVSYNC_MASK | \
158  CSL_DSS_VP_INTR_PROGLINENUM_MASK | \
159  CSL_DSS_VP_INTR_SYNCLOST_MASK | \
160  CSL_DSS_VP_INTR_ACBIASCOUNT_MASK | \
161  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION0_MASK | \
162  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION1_MASK | \
163  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION2_MASK | \
164  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION3_MASK | \
165  CSL_DSS_VP_INTR_SECURITYVIOLATION_MASK | \
166  CSL_DSS_VP_INTR_GOBITCLEAR_MASK)
167 
176 #define CSL_DSS_MFLAG_START_NORMAL \
177  ((uint32_t) CSL_DSS_COMMON_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_START_VAL_MFLAGNORMALSTARTMODE)
178 
179 #define CSL_DSS_MFLAG_START_FORCED \
180  ((uint32_t) CSL_DSS_COMMON_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_START_VAL_MFLAGFORCESTARTMODE)
181 
190 #define CSL_DSS_MFLAG_CTRL_DISABLED \
191  ((uint32_t) CSL_DSS_COMMON_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_CTRL_VAL_MFLAGDIS)
192 
193 #define CSL_DSS_MFLAG_CTRL_FORCE_ENABLE \
194  ((uint32_t) CSL_DSS_COMMON_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_CTRL_VAL_MFLAGFORCE)
195 
196 #define CSL_DSS_MFLAG_CTRL_DYNAMIC \
197  ((uint32_t) CSL_DSS_COMMON_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_CTRL_VAL_MFLAGEN)
198 
200 /* ========================================================================== */
201 /* Structure Declarations */
202 /* ========================================================================== */
203 
207 typedef struct
208 {
213  uint32_t globalMflagCtrl;
217 
221 typedef struct
222 {
223  uint32_t priHigh;
226  uint32_t priLow;
229 } CSL_DssCbaCfg;
230 
231 /* ========================================================================== */
232 /* Function Declarations */
233 /* ========================================================================== */
234 
244 
253 uint32_t CSL_dssIsOldiResetDone(const CSL_dss_commRegs *commRegs);
254 
268  uint32_t intrMask,
269  uint32_t intrEnable);
270 
287  uint32_t vidPipeId,
288  uint32_t intrMask,
289  uint32_t intrEnable);
290 
307  uint32_t portId,
308  uint32_t intrMask,
309  uint32_t intrEnable);
310 
321  uint32_t intrMask);
322 
336  uint32_t vidPipeId,
337  uint32_t intrMask);
338 
352  uint32_t portId,
353  uint32_t intrMask);
354 
363 uint32_t CSL_dssGetDispcIntrStatus(const CSL_dss_commRegs *commRegs);
364 
376  uint32_t vidPipeId);
377 
388 uint32_t CSL_dssGetVpIntrStatus(const CSL_dss_commRegs *commRegs,
389  uint32_t portId);
390 
401  const CSL_DssGlobalMFlagCfg *mflagCfg);
402 
418  uint32_t portIdMask,
419  uint32_t enable);
420 
433  uint32_t portIdMask);
434 
445  const CSL_DssCbaCfg *cbaCfg);
446 
447 /* ========================================================================== */
448 /* Static Function Declarations */
449 /* ========================================================================== */
450 
457 static inline void CSL_dssGlobalMFlagCfgInit(
458  CSL_DssGlobalMFlagCfg *mflagCfg);
459 
466 static inline void CSL_dssCbaCfgInit(
467  CSL_DssCbaCfg *cbaCfg);
468 
469 /* ========================================================================== */
470 /* Static Function Definitions */
471 /* ========================================================================== */
472 
473 static inline void CSL_dssGlobalMFlagCfgInit(
474  CSL_DssGlobalMFlagCfg *mflagCfg)
475 {
476  if(NULL != mflagCfg)
477  {
480  }
481 }
482 
483 static inline void CSL_dssCbaCfgInit(
484  CSL_DssCbaCfg *cbaCfg)
485 {
486  if(NULL != cbaCfg)
487  {
488  cbaCfg->priHigh = 0x1U;
489  cbaCfg->priLow = 0x4U;
490  }
491 }
492 
493 #ifdef __cplusplus
494 }
495 #endif
496 
497 #endif /* #ifndef CSL_DSSCOMMON_H_ */
498 
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:483
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:190
CSL_DssCbaCfg::priLow
uint32_t priLow
Definition: csl_dssCommon.h:226
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:223
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:53
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:473
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:176
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:208
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:213
CSL_DssGlobalMFlagCfg::globalMflagStart
uint32_t globalMflagStart
Definition: csl_dssCommon.h:209
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:222
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.