AM62Px MCU+ SDK  09.02.01
am62px/dss_soc.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2023 Texas Instruments Incorporated
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
47 #ifndef DSS_SOC_H_
48 #define DSS_SOC_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 
64 /*
65  * Macros for different driver instance numbers to be passed as instance ID
66  * at the time of driver create.
67  * Note: These are read only macros. Don't modify the value of these macros.
68  */
69 
77 #define DSS_DCTRL_INST_0 (0U)
78 
80 #define DSS_DCTRL_INST_MAX (1U)
81 
90 #define DSS_DISP_INST_VID1 (CSL_DSS_VID_PIPE_ID_VID1)
91 
93 #define DSS_DISP_INST_VIDL1 (CSL_DSS_VID_PIPE_ID_VIDL1)
94 
96 #define DSS_DISP_INST_MAX (CSL_DSS_VID_PIPE_ID_MAX)
97 
99 #define DSS_DISP_INST_INVALIUD (CSL_DSS_VID_PIPE_ID_INVALID)
100 
111 #define DSS_DCTRL_NODE_TYPE_INVALID ((uint32_t) 0x0U)
112 #define DSS_DCTRL_NODE_TYPE_PIPE ((uint32_t) 0x1U)
113 #define DSS_DCTRL_NODE_TYPE_OVERLAY ((uint32_t) 0x2U)
114 #define DSS_DCTRL_NODE_TYPE_VP ((uint32_t) 0x3U)
115 #define DSS_DCTRL_NODE_TYPE_OUTPUT ((uint32_t) 0x4U)
116 
127 #define DSS_DCTRL_NODE_INVALID ((uint32_t) 0x0U)
128 #define DSS_DCTRL_NODE_VID1 ((uint32_t) 0x1U)
129 #define DSS_DCTRL_NODE_VIDL1 ((uint32_t) 0x2U)
130 #define DSS_DCTRL_NODE_OVR1 ((uint32_t) 0x3U)
131 #define DSS_DCTRL_NODE_OVR2 ((uint32_t) 0x4U)
132 #define DSS_DCTRL_NODE_VP1 ((uint32_t) 0x5U)
133 #define DSS_DCTRL_NODE_VP2 ((uint32_t) 0x6U)
134 #define DSS_DCTRL_NODE_OLDI ((uint32_t) 0x7U)
135 #define DSS_DCTRL_NODE_DPI1 ((uint32_t) 0x8U)
136 
140 #define DSS_DCTRL_MAX_NODES ((uint32_t) 9U)
141 
145 #define DSS_DCTRL_MAX_EDGES ((uint32_t) 8U)
146 
148 #define DSS_FUNC_IRQ_DEFAULT_NUM (CSLR_WKUP_R5FSS0_CORE0_INTR_DSS0_DISPC_INTR_REQ_0_0)
149 
157 #define DSS_EVT_MGR_INST_ID_FUNC ((uint32_t) 0x00U)
158 
159 #define DSS_EVT_MGR_INST_ID_MAX ((uint32_t) 0x01U)
160 
161 #define DSS_EVT_MGR_INST_ID_INVALID ((uint32_t) 0xFFU)
162 
164 /*
165  * SOC specific IOCTLs.
166  */
167 
184 #define IOCTL_DSS_DCTRL_SET_OLDI_PARAMS (DSS_DCTRL_SOC_IOCTL_BASE + 0x01U)
185 
187 /* ========================================================================== */
188 /* Structure Declarations */
189 /* ========================================================================== */
190 
195 typedef struct
196 {
204  uint32_t numValidIrq;
208  uint32_t irqNum[DSS_EVT_MGR_INST_ID_MAX];
217 } Dss_IrqParams;
218 
223 typedef struct
224 {
225  uint32_t isCommRegAvailable[CSL_DSS_COMM_REG_ID_MAX];
227  uint32_t isPipeAvailable[CSL_DSS_VID_PIPE_ID_MAX];
229  uint32_t isOverlayAvailable[CSL_DSS_OVERLAY_ID_MAX];
231  uint32_t isPortAvailable[CSL_DSS_VP_ID_MAX];
233 } Dss_RmInfo;
234 
238 typedef struct
239 {
244 } Dss_SocParams;
245 
250 typedef struct
251 {
252  uint32_t vpId;
257 
258 /* ========================================================================== */
259 /* Internal/Private Function Declarations */
260 /* ========================================================================== */
261 
269 static inline uint32_t Dss_dispIsVidInst(uint32_t instId);
270 
278 static inline uint32_t Dss_dispIsVidLInst(uint32_t instId);
279 
286 static inline void Dss_irqParamsInit(Dss_IrqParams *irqParams);
287 
294 static inline void Dss_rmInfoInit(Dss_RmInfo *rmInfo);
295 
302 static inline void Dss_socParamsInit(Dss_SocParams *socParams);
303 
310 static inline void Dss_dctrlOldiParamsInit(Dss_DctrlOldiParams *oldiParams);
311 
312 /* ========================================================================== */
313 /* Function Declarations */
314 /* ========================================================================== */
315 
321 
329 void Dss_setOLDITxPowerDown(uint32_t oldiLinkMode, bool powerState);
330 /* ========================================================================== */
331 /* Static Function Definitions */
332 /* ========================================================================== */
333 
334 static inline uint32_t Dss_dispIsVidInst(uint32_t instId)
335 {
336  uint32_t isVidInst = FALSE;
337 
338  if(DSS_DISP_INST_VID1 == instId)
339  {
340  isVidInst = TRUE;
341  }
342 
343  return (isVidInst);
344 }
345 
346 static inline uint32_t Dss_dispIsVidLInst(uint32_t instId)
347 {
348  uint32_t isVidLInst = FALSE;
349 
350  if(DSS_DISP_INST_VIDL1 == instId)
351  {
352  isVidLInst = TRUE;
353  }
354 
355  return (isVidLInst);
356 }
357 
358 static inline void Dss_irqParamsInit(Dss_IrqParams *irqParams)
359 {
360  if(NULL != irqParams)
361  {
365  }
366 }
367 
368 static inline void Dss_rmInfoInit(Dss_RmInfo *rmInfo)
369 {
370  uint32_t i = 0U;
371  if(NULL != rmInfo)
372  {
374  {
375  rmInfo->isCommRegAvailable[i] = TRUE;
376  }
378  {
379  rmInfo->isPipeAvailable[i] = TRUE;
380  }
382  {
383  rmInfo->isOverlayAvailable[i] = TRUE;
384  }
385  for(i=CSL_DSS_VP_ID_1; i<CSL_DSS_VP_ID_MAX; i++)
386  {
387  rmInfo->isPortAvailable[i] = TRUE;
388  }
389  }
390 }
391 
392 static inline void Dss_socParamsInit(Dss_SocParams *socParams)
393 {
394  if(NULL != socParams)
395  {
396  Dss_irqParamsInit(&(socParams->irqParams));
397  Dss_rmInfoInit(&(socParams->rmInfo));
398  }
399 }
400 
401 static inline void Dss_dctrlOldiParamsInit(Dss_DctrlOldiParams *oldiParams)
402 {
403  if(NULL != oldiParams)
404  {
405  oldiParams->vpId = CSL_DSS_VP_ID_1;
406  CSL_dssVpOldiCfgInit(&(oldiParams->oldiCfg));
407  }
408 }
409 
410 #ifdef __cplusplus
411 }
412 #endif
413 
414 #endif /* #ifndef DSS_SOC_VO_H_ */
415 
Dss_DctrlOldiParams
Structure containing OLDI configuration. This structure is used as an argument to IOCTL_DSS_DCTRL_SET...
Definition: am62px/dss_soc.h:251
Dss_SocParams::irqParams
Dss_IrqParams irqParams
Definition: am62px/dss_soc.h:240
CSL_DSS_OVERLAY_ID_1
#define CSL_DSS_OVERLAY_ID_1
Overlay 1.
Definition: csl_dssTop.h:123
CSL_DSS_COMM_REG_ID_0
#define CSL_DSS_COMM_REG_ID_0
Common Region 0.
Definition: csl_dssTop.h:91
DSS_EVT_MGR_INST_ID_MAX
#define DSS_EVT_MGR_INST_ID_MAX
Invalid Instance Id.
Definition: am62px/dss_soc.h:159
Dss_dispIsVidInst
static uint32_t Dss_dispIsVidInst(uint32_t instId)
Check if the display driver instance is of type Video pipeline.
Definition: am62px/dss_soc.h:334
Dss_RmInfo
Structure containing resources manager information. This enables display sharing between two differen...
Definition: am62px/dss_soc.h:224
CSL_DssVpOldiCfg
OLDI Configuration.
Definition: csl_dssVideoPort.h:569
Dss_IrqParams::irqNum
uint32_t irqNum[DSS_EVT_MGR_INST_ID_MAX]
Definition: am62px/dss_soc.h:208
NULL
#define NULL
Define NULL if not defined.
Definition: csl_types.h:100
CSL_dssVpOldiCfgInit
static void CSL_dssVpOldiCfgInit(CSL_DssVpOldiCfg *oldiCfg)
CSL_DssVpOldiCfg structure init function.
Definition: csl_dssVideoPort.h:976
DSS_EVT_MGR_INST_ID_FUNC
#define DSS_EVT_MGR_INST_ID_FUNC
Instance Id for functional interrupts.
Definition: am62px/dss_soc.h:157
DSS_DISP_INST_VIDL1
#define DSS_DISP_INST_VIDL1
Video Lite 1 Pipeline display driver instance number.
Definition: am62px/dss_soc.h:93
Dss_setOLDITxPowerDown
void Dss_setOLDITxPowerDown(uint32_t oldiLinkMode, bool powerState)
Set OLDI Power Domain Control to power on and off OLDI TX.
Dss_setDssSoftReset
void Dss_setDssSoftReset(void)
Perform DSS Soft Reset.
CSL_DSS_VP_ID_MAX
#define CSL_DSS_VP_ID_MAX
Video Port Max Id.
Definition: csl_dssTop.h:142
Dss_dctrlOldiParamsInit
static void Dss_dctrlOldiParamsInit(Dss_DctrlOldiParams *oldiParams)
Dss_DctrlOldiParams structure init function.
Definition: am62px/dss_soc.h:401
Dss_RmInfo::isPipeAvailable
uint32_t isPipeAvailable[CSL_DSS_VID_PIPE_ID_MAX]
Definition: am62px/dss_soc.h:227
Dss_SocParams::rmInfo
Dss_RmInfo rmInfo
Definition: am62px/dss_soc.h:242
CSL_DSS_VID_PIPE_ID_VID1
#define CSL_DSS_VID_PIPE_ID_VID1
Video Pipeline 1.
Definition: csl_dssTop.h:106
CSL_DSS_COMM_REG_ID_MAX
#define CSL_DSS_COMM_REG_ID_MAX
Common Region Max Id.
Definition: csl_dssTop.h:95
Dss_RmInfo::isOverlayAvailable
uint32_t isOverlayAvailable[CSL_DSS_OVERLAY_ID_MAX]
Definition: am62px/dss_soc.h:229
Dss_irqParamsInit
static void Dss_irqParamsInit(Dss_IrqParams *irqParams)
Dss_IrqParams structure init function.
Definition: am62px/dss_soc.h:358
CSL_DSS_VID_PIPE_ID_MAX
#define CSL_DSS_VID_PIPE_ID_MAX
Video Pipeline Max Id.
Definition: csl_dssTop.h:110
Dss_IrqParams::dssCommonRegionId
uint32_t dssCommonRegionId
Definition: am62px/dss_soc.h:197
CSL_DSS_VP_ID_1
#define CSL_DSS_VP_ID_1
Video Port 1.
Definition: csl_dssTop.h:138
Dss_IrqParams
Structure containing DSS interrupt information. Events should be enabled only for available Video Por...
Definition: am62px/dss_soc.h:196
Dss_DctrlOldiParams::vpId
uint32_t vpId
Definition: am62px/dss_soc.h:252
Dss_DctrlOldiParams::oldiCfg
CSL_DssVpOldiCfg oldiCfg
Definition: am62px/dss_soc.h:254
TRUE
#define TRUE
Definition: csl_types.h:61
Dss_SocParams
DSS SOC parameters.
Definition: am62px/dss_soc.h:239
Dss_RmInfo::isCommRegAvailable
uint32_t isCommRegAvailable[CSL_DSS_COMM_REG_ID_MAX]
Definition: am62px/dss_soc.h:225
Dss_dispIsVidLInst
static uint32_t Dss_dispIsVidLInst(uint32_t instId)
Check if the display driver instance is of type Video lite pipeline.
Definition: am62px/dss_soc.h:346
Dss_RmInfo::isPortAvailable
uint32_t isPortAvailable[CSL_DSS_VP_ID_MAX]
Definition: am62px/dss_soc.h:231
DSS_DISP_INST_VID1
#define DSS_DISP_INST_VID1
Video 1 Pipeline display driver instance number.
Definition: am62px/dss_soc.h:90
FALSE
#define FALSE
Definition: csl_types.h:62
CSL_DSS_OVERLAY_ID_MAX
#define CSL_DSS_OVERLAY_ID_MAX
Overlay Max Id.
Definition: csl_dssTop.h:127
Dss_socParamsInit
static void Dss_socParamsInit(Dss_SocParams *socParams)
Dss_SocParams structure init function.
Definition: am62px/dss_soc.h:392
Dss_IrqParams::numValidIrq
uint32_t numValidIrq
Definition: am62px/dss_soc.h:204
Dss_rmInfoInit
static void Dss_rmInfoInit(Dss_RmInfo *rmInfo)
Dss_RmInfo structure init function.
Definition: am62px/dss_soc.h:368
DSS_FUNC_IRQ_DEFAULT_NUM
#define DSS_FUNC_IRQ_DEFAULT_NUM
Definition: am62px/dss_soc.h:148