PDK API Guide for J721E
csl_dssCommon.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_DSSCOMMON_H_
48 #define CSL_DSSCOMMON_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 
69 typedef CSL_dss_common_mRegs CSL_dss_commRegs;
70 
78 #define CSL_DSS_DISPC_INTR_WB_MASK ((uint32_t) 0x4000U)
79 
80 #define CSL_DSS_DISPC_INTR_VIDL2_MASK ((uint32_t) 0x80U)
81 
82 #define CSL_DSS_DISPC_INTR_VID2_MASK ((uint32_t) 0x40U)
83 
84 #define CSL_DSS_DISPC_INTR_VIDL1_MASK ((uint32_t) 0x20U)
85 
86 #define CSL_DSS_DISPC_INTR_VID1_MASK ((uint32_t) 0x10U)
87 
88 #define CSL_DSS_DISPC_INTR_VP4_MASK ((uint32_t) 0x08U)
89 
90 #define CSL_DSS_DISPC_INTR_VP3_MASK ((uint32_t) 0x04U)
91 
92 #define CSL_DSS_DISPC_INTR_VP2_MASK ((uint32_t) 0x02U)
93 
94 #define CSL_DSS_DISPC_INTR_VP1_MASK ((uint32_t) 0x01U)
95 /* @} */
96 
104 #define CSL_DSS_VID_PIPE_INTR_FBDC_ILLEGALTILE_MASK \
105  ((uint32_t) CSL_DSS_COMMON_M_VID_IRQENABLE_0_FBDC_ILLEGALTILEREQ_EN_MASK)
106 
107 #define CSL_DSS_VID_PIPE_INTR_FBDC_CORRUPTTILE_MASK \
108  ((uint32_t) CSL_DSS_COMMON_M_VID_IRQENABLE_0_FBDC_CORRUPTTILE_EN_MASK)
109 
110 #define CSL_DSS_VID_PIPE_INTR_SAFETYVIOLATION_MASK \
111  ((uint32_t) CSL_DSS_COMMON_M_VID_IRQENABLE_0_SAFETYREGION_EN_MASK)
112 
113 #define CSL_DSS_VID_PIPE_INTR_WINDOWEND_MASK \
114  ((uint32_t) CSL_DSS_COMMON_M_VID_IRQENABLE_0_VIDENDWINDOW_EN_MASK)
115 
116 #define CSL_DSS_VID_PIPE_INTR_BUFUNDERFLOW_MASK \
117  ((uint32_t) CSL_DSS_COMMON_M_VID_IRQENABLE_0_VIDBUFFERUNDERFLOW_EN_MASK)
118 
119 #define CSL_DSS_VID_PIPE_INTR_ALL_MASK \
120  (CSL_DSS_VID_PIPE_INTR_FBDC_ILLEGALTILE_MASK | \
121  CSL_DSS_VID_PIPE_INTR_FBDC_CORRUPTTILE_MASK | \
122  CSL_DSS_VID_PIPE_INTR_SAFETYVIOLATION_MASK | \
123  CSL_DSS_VID_PIPE_INTR_WINDOWEND_MASK | \
124  CSL_DSS_VID_PIPE_INTR_BUFUNDERFLOW_MASK)
125 /* @} */
126 
134 #define CSL_DSS_VP_INTR_FRAMEDONE_MASK \
135  ((uint32_t) CSL_DSS_COMMON_M_VP_IRQENABLE_0_VPFRAMEDONE_EN_MASK)
136 
137 #define CSL_DSS_VP_INTR_VSYNC_MASK \
138  ((uint32_t) CSL_DSS_COMMON_M_VP_IRQENABLE_0_VPVSYNC_EN_MASK)
139 
140 #define CSL_DSS_VP_INTR_ODDVSYNC_MASK \
141  ((uint32_t) CSL_DSS_COMMON_M_VP_IRQENABLE_0_VPVSYNC_ODD_EN_MASK)
142 
143 #define CSL_DSS_VP_INTR_PROGLINENUM_MASK \
144  ((uint32_t) CSL_DSS_COMMON_M_VP_IRQENABLE_0_VPPROGRAMMEDLINENUMBER_EN_MASK)
145 
146 #define CSL_DSS_VP_INTR_SYNCLOST_MASK \
147  ((uint32_t) CSL_DSS_COMMON_M_VP_IRQENABLE_0_VPSYNCLOST_EN_MASK)
148 
149 #define CSL_DSS_VP_INTR_ACBIASCOUNT_MASK \
150  ((uint32_t) CSL_DSS_COMMON_M_VP_IRQENABLE_0_ACBIASCOUNTSTATUS_EN_MASK)
151 
152 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION0_MASK \
153  ((uint32_t) 0x40U)
154 
155 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION1_MASK \
156  ((uint32_t) 0x80U)
157 
158 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION2_MASK \
159  ((uint32_t) 0x100U)
160 
161 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION3_MASK \
162  ((uint32_t) 0x200U)
163 
164 #define CSL_DSS_VP_INTR_SECURITYVIOLATION_MASK \
165  ((uint32_t) CSL_DSS_COMMON_M_VP_IRQENABLE_0_SECURITYVIOLATION_EN_MASK)
166 
167 #define CSL_DSS_VP_INTR_GOBITCLEAR_MASK \
168  ((uint32_t) CSL_DSS_COMMON_M_VP_IRQENABLE_0_VPSYNC_EN_MASK)
169 
170 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION4_MASK \
171  ((uint32_t) 0x2000U)
172 
173 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION5_MASK \
174  ((uint32_t) 0x4000U)
175 
176 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION6_MASK \
177  ((uint32_t) 0x8000U)
178 
179 #define CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION7_MASK \
180  ((uint32_t) 0x10000U)
181 
182 #define CSL_DSS_VP_INTR_ALL_MASK \
183  (CSL_DSS_VP_INTR_FRAMEDONE_MASK | \
184  CSL_DSS_VP_INTR_VSYNC_MASK | \
185  CSL_DSS_VP_INTR_ODDVSYNC_MASK | \
186  CSL_DSS_VP_INTR_PROGLINENUM_MASK | \
187  CSL_DSS_VP_INTR_SYNCLOST_MASK | \
188  CSL_DSS_VP_INTR_ACBIASCOUNT_MASK | \
189  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION0_MASK | \
190  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION1_MASK | \
191  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION2_MASK | \
192  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION3_MASK | \
193  CSL_DSS_VP_INTR_SECURITYVIOLATION_MASK | \
194  CSL_DSS_VP_INTR_GOBITCLEAR_MASK | \
195  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION4_MASK | \
196  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION5_MASK | \
197  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION6_MASK | \
198  CSL_DSS_VP_INTR_SAFETYVIOLATION_REGION7_MASK)
199 /* @} */
200 
208 #define CSL_DSS_WB_PIPE_INTR_WBSYNC_MASK \
209  ((uint32_t) CSL_DSS_COMMON_M_WB_IRQENABLE_WBSYNC_EN_MASK)
210 
211 #define CSL_DSS_WB_PIPE_INTR_SECURITYVIOLATION_MASK \
212  ((uint32_t) CSL_DSS_COMMON_M_WB_IRQENABLE_SECURITYVIOLATION_EN_MASK)
213 
214 #define CSL_DSS_WB_PIPE_INTR_FRAMEDONE_MASK \
215  ((uint32_t) CSL_DSS_COMMON_M_WB_IRQENABLE_WBFRAMEDONE_EN_MASK)
216 
217 #define CSL_DSS_WB_PIPE_INTR_INCOMPLETE_MASK \
218  ((uint32_t) CSL_DSS_COMMON_M_WB_IRQENABLE_WBUNCOMPLETEERROR_EN_MASK)
219 
220 #define CSL_DSS_WB_PIPE_INTR_OVERFLOW_MASK \
221  ((uint32_t) CSL_DSS_COMMON_M_WB_IRQENABLE_WBBUFFEROVERFLOW_EN_MASK)
222 
223 #define CSL_DSS_WB_PIPE_INTR_ALL_MASK \
224  (CSL_DSS_WB_PIPE_INTR_WBSYNC_MASK | \
225  CSL_DSS_WB_PIPE_INTR_SECURITYVIOLATION_MASK | \
226  CSL_DSS_WB_PIPE_INTR_FRAMEDONE_MASK | \
227  CSL_DSS_WB_PIPE_INTR_UNCOMPLETE_MASK | \
228  CSL_DSS_WB_PIPE_INTR_OVERFLOW_MASK)
229 /* @} */
230 
238 #define CSL_DSS_MFLAG_START_NORMAL \
239  ((uint32_t) CSL_DSS_COMMON_M_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_START_VAL_MFLAGNORMALSTARTMODE)
240 
241 #define CSL_DSS_MFLAG_START_FORCED \
242  ((uint32_t) CSL_DSS_COMMON_M_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_START_VAL_MFLAGFORCESTARTMODE)
243 /* @} */
244 
252 #define CSL_DSS_MFLAG_CTRL_DISABLED \
253  ((uint32_t) CSL_DSS_COMMON_M_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_CTRL_VAL_MFLAGDIS)
254 
255 #define CSL_DSS_MFLAG_CTRL_FORCE_ENABLE \
256  ((uint32_t) CSL_DSS_COMMON_M_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_CTRL_VAL_MFLAGFORCE)
257 
258 #define CSL_DSS_MFLAG_CTRL_DYNAMIC \
259  ((uint32_t) CSL_DSS_COMMON_M_DISPC_GLOBAL_MFLAG_ATTRIBUTE_MFLAG_CTRL_VAL_MFLAGEN)
260 /* @} */
261 
269 #define CSL_DSS_WB_INPUT_DISABLED \
270  ((uint32_t) CSL_DSS_COMMON_M_DISPC_CONNECTIONS_WB_CONN_VAL_NULL)
271 
272 #define CSL_DSS_WB_INPUT_VIDL2 \
273  ((uint32_t) CSL_DSS_COMMON_M_DISPC_CONNECTIONS_WB_CONN_VAL_VIDL2)
274 
275 #define CSL_DSS_WB_INPUT_OVERLAY1 \
276  ((uint32_t) CSL_DSS_COMMON_M_DISPC_CONNECTIONS_WB_CONN_VAL_OVR1)
277 
278 #define CSL_DSS_WB_INPUT_OVERLAY2 \
279  ((uint32_t) CSL_DSS_COMMON_M_DISPC_CONNECTIONS_WB_CONN_VAL_OVR2)
280 
281 #define CSL_DSS_WB_INPUT_OVERLAY3 \
282  ((uint32_t) CSL_DSS_COMMON_M_DISPC_CONNECTIONS_WB_CONN_VAL_OVR3)
283 
284 #define CSL_DSS_WB_INPUT_OVERLAY4 \
285  ((uint32_t) CSL_DSS_COMMON_M_DISPC_CONNECTIONS_WB_CONN_VAL_OVR4)
286 /* @} */
287 
288 /* ========================================================================== */
289 /* Structure Declarations */
290 /* ========================================================================== */
291 
295 typedef struct
296 {
301  uint32_t globalMflagCtrl;
305 
309 typedef struct
310 {
311  uint32_t priHigh;
314  uint32_t priLow;
317 } CSL_DssCbaCfg;
318 
319 /* ========================================================================== */
320 /* Function Declarations */
321 /* ========================================================================== */
322 
332 void CSL_dssModuleReset(CSL_dss_commRegs *commRegs);
333 
348  uint32_t intrMask,
349  uint32_t intrEnable);
350 
370  uint32_t vidPipeId,
371  uint32_t intrMask,
372  uint32_t intrEnable);
373 
393  uint32_t portId,
394  uint32_t intrMask,
395  uint32_t intrEnable);
396 
413  uint32_t wbPipeId,
414  uint32_t intrMask,
415  uint32_t intrEnable);
416 
428  uint32_t intrMask);
429 
446  uint32_t vidPipeId,
447  uint32_t intrMask);
448 
464 void CSL_dssClearVpIntr(CSL_dss_commRegs *commRegs,
465  uint32_t portId,
466  uint32_t intrMask);
467 
480 void CSL_dssClearWbIntr(CSL_dss_commRegs *commRegs,
481  uint32_t wbPipeId,
482  uint32_t intrMask);
483 
492 uint32_t CSL_dssGetDispcIntrStatus(const CSL_dss_commRegs *commRegs);
493 
506 uint32_t CSL_dssGetPipeIntrStatus(const CSL_dss_commRegs *commRegs,
507  uint32_t vidPipeId);
508 
521 uint32_t CSL_dssGetVpIntrStatus(const CSL_dss_commRegs *commRegs,
522  uint32_t portId);
523 
533 uint32_t CSL_dssGetWbIntrStatus(const CSL_dss_commRegs *commRegs,
534  uint32_t wbPipeId);
535 
547  const CSL_DssGlobalMFlagCfg *mflagCfg);
548 
565  uint32_t portIdMask,
566  uint32_t enable);
567 
581  uint32_t portIdMask);
582 
594  const CSL_DssCbaCfg *cbaCfg);
595 
610 int32_t CSL_dssConnectVpToDpi(CSL_dss_commRegs *commRegs,
611  uint32_t portId,
612  uint32_t dpiId);
613 
625  uint32_t inputCh);
626 
627 /* ========================================================================== */
628 /* Static Function Declarations */
629 /* ========================================================================== */
630 
638 static inline void CSL_dssGlobalMFlagCfgInit(
639  CSL_DssGlobalMFlagCfg *mflagCfg);
640 
648 static inline void CSL_dssCbaCfgInit(
649  CSL_DssCbaCfg *cbaCfg);
650 
651 /* ========================================================================== */
652 /* Static Function Definitions */
653 /* ========================================================================== */
654 
655 static inline void CSL_dssGlobalMFlagCfgInit(
656  CSL_DssGlobalMFlagCfg *mflagCfg)
657 {
658  if(NULL != mflagCfg)
659  {
662  }
663 }
664 
665 static inline void CSL_dssCbaCfgInit(
666  CSL_DssCbaCfg *cbaCfg)
667 {
668  if(NULL != cbaCfg)
669  {
670  cbaCfg->priHigh = 0x1U;
671  cbaCfg->priLow = 0x4U;
672  }
673 }
674 
675 #ifdef __cplusplus
676 }
677 #endif
678 
679 #endif /* #ifndef CSL_DSSCOMMON_H_ */
680 
681 /* @} */
void CSL_dssSetGlobalMflagConfig(CSL_dss_commRegs *commRegs, const CSL_DssGlobalMFlagCfg *mflagCfg)
Set the global MFLAG configuration.
static void CSL_dssCbaCfgInit(CSL_DssCbaCfg *cbaCfg)
CSL_DssCbaCfg structure init function.
Definition: csl_dssCommon.h:665
DSS CBA Config parameters.
Definition: csl_dssCommon.h:309
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...
#define CSL_DSS_MFLAG_CTRL_DISABLED
Mflag is disabled.
Definition: csl_dssCommon.h:252
void CSL_dssModuleReset(CSL_dss_commRegs *commRegs)
Reset the DSS Module. Application should make sure Video Ports are disabled before calling this API.
void CSL_dssClearPipeIntr(CSL_dss_commRegs *commRegs, uint32_t vidPipeId, uint32_t intrMask)
Clear the interrupts for Video Pipe.
uint32_t CSL_dssGetPipeIntrStatus(const CSL_dss_commRegs *commRegs, uint32_t vidPipeId)
Get the interrupt status of Video Pipe.
CSL_dss_common_mRegs CSL_dss_commRegs
DSS Common Registers.
Definition: csl_dssCommon.h:69
uint32_t priHigh
Definition: csl_dssCommon.h:311
void CSL_dssEnablePipeIntr(CSL_dss_commRegs *commRegs, uint32_t vidPipeId, uint32_t intrMask, uint32_t intrEnable)
Enable/disable the interrupts for Video Pipe.
static void CSL_dssGlobalMFlagCfgInit(CSL_DssGlobalMFlagCfg *mflagCfg)
CSL_DssGlobalMFlagCfg structure init function.
Definition: csl_dssCommon.h:655
uint32_t CSL_dssGetVpIntrStatus(const CSL_dss_commRegs *commRegs, uint32_t portId)
Get the interrupt status of Video Port.
void CSL_dssEnableVpIntr(CSL_dss_commRegs *commRegs, uint32_t portId, uint32_t intrMask, uint32_t intrEnable)
Enable/disable the interrupts for Video Port.
#define NULL
Define NULL if not defined.
Definition: csl_types.h:107
void CSL_dssSetWbInputCh(CSL_dss_commRegs *commRegs, uint32_t inputCh)
This API is used to set the write back input channel.
#define CSL_DSS_MFLAG_START_NORMAL
Mflag of each pipe is kept at 0 until preload is reached.
Definition: csl_dssCommon.h:238
void CSL_dssClearDispcIntr(CSL_dss_commRegs *commRegs, uint32_t intrMask)
Clear the interrupts at DSS top level.
DSS Global MFLAG Config parameters.
Definition: csl_dssCommon.h:295
uint32_t globalMflagCtrl
Definition: csl_dssCommon.h:301
uint32_t priLow
Definition: csl_dssCommon.h:314
uint32_t CSL_dssGetWbIntrStatus(const CSL_dss_commRegs *commRegs, uint32_t wbPipeId)
Get the interrupt status of Write Back Pipe.
uint32_t globalMflagStart
Definition: csl_dssCommon.h:297
void CSL_dssEnableDispcIntr(CSL_dss_commRegs *commRegs, uint32_t intrMask, uint32_t intrEnable)
Enable/disable the interrupts at DSS top level.
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....
void CSL_dssEnableWbIntr(CSL_dss_commRegs *commRegs, uint32_t wbPipeId, uint32_t intrMask, uint32_t intrEnable)
Enable/disable the interrupts for Write Back Pipe.
int32_t CSL_dssConnectVpToDpi(CSL_dss_commRegs *commRegs, uint32_t portId, uint32_t dpiId)
This API can be used to select the VP connection to DPI.
uint32_t CSL_dssGetDispcIntrStatus(const CSL_dss_commRegs *commRegs)
Get the top level interrupt status of DSS.
void CSL_dssClearVpIntr(CSL_dss_commRegs *commRegs, uint32_t portId, uint32_t intrMask)
Clear the interrupts for Video Port.
void CSL_dssClearWbIntr(CSL_dss_commRegs *commRegs, uint32_t wbPipeId, uint32_t intrMask)
Clear the interrupts for Write Back Pipe.
void CSL_dssSetCbaConfig(CSL_dss_commRegs *commRegs, const CSL_DssCbaCfg *cbaCfg)
Set the CBA configuration.