AM62L FreeRTOS SDK  11.02.00
am62lx/dss_soc.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2025 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_VIDL1 (CSL_DSS_VID_PIPE_ID_VIDL1)
91 
93 #define DSS_DISP_INST_MAX (CSL_DSS_VID_PIPE_ID_MAX)
94 
96 #define DSS_DISP_INST_INVALID (CSL_DSS_VID_PIPE_ID_INVALID)
97 
108 #define DSS_DCTRL_NODE_TYPE_INVALID ((uint32_t) 0x0U)
109 #define DSS_DCTRL_NODE_TYPE_PIPE ((uint32_t) 0x1U)
110 #define DSS_DCTRL_NODE_TYPE_OVERLAY ((uint32_t) 0x2U)
111 #define DSS_DCTRL_NODE_TYPE_VP ((uint32_t) 0x3U)
112 #define DSS_DCTRL_NODE_TYPE_OUTPUT ((uint32_t) 0x4U)
113 
124 #define DSS_DCTRL_NODE_INVALID ((uint32_t) 0x0U)
125 #define DSS_DCTRL_NODE_VIDL1 ((uint32_t) 0x2U)
126 #define DSS_DCTRL_NODE_OVR1 ((uint32_t) 0x3U)
127 #define DSS_DCTRL_NODE_VP1 ((uint32_t) 0x5U)
128 #define DSS_DCTRL_NODE_DPI ((uint32_t) 0x8U)
129 
141 #define DSS_FWL_REGIONS_MAX (5U)
142 
144 #define DSS_FWL_COMMON0_ID CSL_STD_FW_DSS0_COMMON_ID
145 #define DSS_FWL_COMMON0_START CSL_STD_FW_DSS0_COMMON_COMMON_START
146 #define DSS_FWL_COMMON0_END CSL_STD_FW_DSS0_COMMON_COMMON_END
147 
149 #define DSS_FWL_COMMON1_ID CSL_STD_FW_DSS0_COMMON1_ID
150 #define DSS_FWL_COMMON1_START CSL_STD_FW_DSS0_COMMON1_COMMON1_START
151 #define DSS_FWL_COMMON1_END CSL_STD_FW_DSS0_COMMON1_COMMON1_END
152 
154 #define DSS_FWL_VIDL1_ID CSL_STD_FW_DSS0_VIDL1_ID
155 #define DSS_FWL_VIDL1_START CSL_STD_FW_DSS0_VIDL1_VIDL1_START
156 #define DSS_FWL_VIDL1_END CSL_STD_FW_DSS0_VIDL1_VIDL1_END
157 
159 #define DSS_FWL_OVR1_ID CSL_STD_FW_DSS0_OVR1_ID
160 #define DSS_FWL_OVR1_START CSL_STD_FW_DSS0_OVR1_OVR1_START
161 #define DSS_FWL_OVR1_END CSL_STD_FW_DSS0_OVR1_OVR1_END
162 
164 #define DSS_FWL_VP1_ID CSL_STD_FW_DSS0_VP1_ID
165 #define DSS_FWL_VP1_START CSL_STD_FW_DSS0_VP1_VP1_START
166 #define DSS_FWL_VP1_END CSL_STD_FW_DSS0_VP1_VP1_END
167 
172 #define DSS_DCTRL_MAX_NODES ((uint32_t) 9U)
173 
177 #define DSS_DCTRL_MAX_EDGES ((uint32_t) 8U)
178 
180 #define DSS_FUNC_IRQ_DEFAULT_NUM (CSLR_GICSS0_SPI_DSS0_DISPC_INTR_REQ_0_0)
181 
189 #define DSS_EVT_MGR_INST_ID_FUNC ((uint32_t) 0x00U)
190 
191 #define DSS_EVT_MGR_INST_ID_MAX ((uint32_t) 0x01U)
192 
193 #define DSS_EVT_MGR_INST_ID_INVALID ((uint32_t) 0xFFU)
194 
196 /*
197  * SOC specific IOCTLs.
198  */
199 
216 #define IOCTL_DSS_DCTRL_SET_OLDI_PARAMS (DSS_DCTRL_SOC_IOCTL_BASE + 0x01U)
217 
219 /* ========================================================================== */
220 /* Structure Declarations */
221 /* ========================================================================== */
222 
227 typedef struct
228 {
236  uint32_t numValidIrq;
240  uint32_t irqNum[DSS_EVT_MGR_INST_ID_MAX];
249 } Dss_IrqParams;
250 
255 typedef struct
256 {
257  uint32_t isCommRegAvailable[CSL_DSS_COMM_REG_ID_MAX];
259  uint32_t isPipeAvailable[CSL_DSS_VID_PIPE_ID_MAX];
261  uint32_t isOverlayAvailable[CSL_DSS_OVERLAY_ID_MAX];
263  uint32_t isPortAvailable[CSL_DSS_VP_ID_MAX];
265 } Dss_RmInfo;
266 
270 typedef struct
271 {
276 } Dss_SocParams;
277 
282 typedef struct
283 {
284  uint32_t vpId;
289 
290 /* ========================================================================== */
291 /* Internal/Private Function Declarations */
292 /* ========================================================================== */
293 
301 static inline uint32_t Dss_dispIsVidInst(uint32_t instId);
302 
310 static inline uint32_t Dss_dispIsVidLInst(uint32_t instId);
311 
318 static inline void Dss_irqParamsInit(Dss_IrqParams *irqParams);
319 
326 static inline void Dss_rmInfoInit(Dss_RmInfo *rmInfo);
327 
334 static inline void Dss_socParamsInit(Dss_SocParams *socParams);
335 
342 static inline void Dss_dctrlOldiParamsInit(Dss_DctrlOldiParams *oldiParams);
343 
344 /* ========================================================================== */
345 /* Function Declarations */
346 /* ========================================================================== */
347 
353 
361 void Dss_setOLDITxPowerDown(uint32_t oldiLinkMode, bool powerState);
362 /* ========================================================================== */
363 /* Static Function Definitions */
364 /* ========================================================================== */
365 
366 static inline uint32_t Dss_dispIsVidInst(uint32_t instId)
367 {
368  uint32_t isVidInst = FALSE;
369 
370  return (isVidInst);
371 }
372 
373 static inline uint32_t Dss_dispIsVidLInst(uint32_t instId)
374 {
375  uint32_t isVidLInst = FALSE;
376 
377  if(DSS_DISP_INST_VIDL1 == instId)
378  {
379  isVidLInst = TRUE;
380  }
381 
382  return (isVidLInst);
383 }
384 
385 static inline void Dss_irqParamsInit(Dss_IrqParams *irqParams)
386 {
387  if(NULL != irqParams)
388  {
392  }
393 }
394 
395 static inline void Dss_rmInfoInit(Dss_RmInfo *rmInfo)
396 {
397  uint32_t i = 0U;
398  if(NULL != rmInfo)
399  {
401  {
402  rmInfo->isCommRegAvailable[i] = TRUE;
403  }
405  {
406  rmInfo->isPipeAvailable[i] = TRUE;
407  }
409  {
410  rmInfo->isOverlayAvailable[i] = TRUE;
411  }
412  for(i=CSL_DSS_VP_ID_1; i<CSL_DSS_VP_ID_MAX; i++)
413  {
414  rmInfo->isPortAvailable[i] = TRUE;
415  }
416  }
417 }
418 
419 static inline void Dss_socParamsInit(Dss_SocParams *socParams)
420 {
421  if(NULL != socParams)
422  {
423  Dss_irqParamsInit(&(socParams->irqParams));
424  Dss_rmInfoInit(&(socParams->rmInfo));
425  }
426 }
427 
428 static inline void Dss_dctrlOldiParamsInit(Dss_DctrlOldiParams *oldiParams)
429 {
430  if(NULL != oldiParams)
431  {
432  oldiParams->vpId = CSL_DSS_VP_ID_1;
433  CSL_dssVpOldiCfgInit(&(oldiParams->oldiCfg));
434  }
435 }
436 
437 #ifdef __cplusplus
438 }
439 #endif
440 
441 #endif /* #ifndef DSS_SOC_VO_H_ */
442 
Dss_DctrlOldiParams
Structure containing OLDI configuration. This structure is used as an argument to IOCTL_DSS_DCTRL_SET...
Definition: am62lx/dss_soc.h:283
Dss_SocParams::irqParams
Dss_IrqParams irqParams
Definition: am62lx/dss_soc.h:272
CSL_DSS_OVERLAY_ID_1
#define CSL_DSS_OVERLAY_ID_1
Overlay 1.
Definition: csl_dssTop.h:119
CSL_DSS_COMM_REG_ID_0
#define CSL_DSS_COMM_REG_ID_0
Common Region 0.
Definition: csl_dssTop.h:89
DSS_EVT_MGR_INST_ID_MAX
#define DSS_EVT_MGR_INST_ID_MAX
Invalid Instance Id.
Definition: am62lx/dss_soc.h:191
CSL_DSS_VID_PIPE_ID_VIDL1
#define CSL_DSS_VID_PIPE_ID_VIDL1
Video Lite Pipeline 1.
Definition: csl_dssTop.h:104
Dss_dispIsVidInst
static uint32_t Dss_dispIsVidInst(uint32_t instId)
Check if the display driver instance is of type Video pipeline.
Definition: am62lx/dss_soc.h:366
Dss_RmInfo
Structure containing resources manager information. This enables display sharing between two differen...
Definition: am62lx/dss_soc.h:256
CSL_DssVpOldiCfg
OLDI Configuration.
Definition: csl_dssVideoPort.h:569
Dss_IrqParams::irqNum
uint32_t irqNum[DSS_EVT_MGR_INST_ID_MAX]
Definition: am62lx/dss_soc.h:240
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: am62lx/dss_soc.h:189
DSS_DISP_INST_VIDL1
#define DSS_DISP_INST_VIDL1
Video Lite 1 Pipeline display driver instance number.
Definition: am62lx/dss_soc.h:90
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:134
Dss_dctrlOldiParamsInit
static void Dss_dctrlOldiParamsInit(Dss_DctrlOldiParams *oldiParams)
Dss_DctrlOldiParams structure init function.
Definition: am62lx/dss_soc.h:428
Dss_RmInfo::isPipeAvailable
uint32_t isPipeAvailable[CSL_DSS_VID_PIPE_ID_MAX]
Definition: am62lx/dss_soc.h:259
Dss_SocParams::rmInfo
Dss_RmInfo rmInfo
Definition: am62lx/dss_soc.h:274
CSL_DSS_COMM_REG_ID_MAX
#define CSL_DSS_COMM_REG_ID_MAX
Common Region Max Id.
Definition: csl_dssTop.h:93
Dss_RmInfo::isOverlayAvailable
uint32_t isOverlayAvailable[CSL_DSS_OVERLAY_ID_MAX]
Definition: am62lx/dss_soc.h:261
Dss_irqParamsInit
static void Dss_irqParamsInit(Dss_IrqParams *irqParams)
Dss_IrqParams structure init function.
Definition: am62lx/dss_soc.h:385
CSL_DSS_VID_PIPE_ID_MAX
#define CSL_DSS_VID_PIPE_ID_MAX
Video Pipeline Max Id.
Definition: csl_dssTop.h:106
Dss_IrqParams::dssCommonRegionId
uint32_t dssCommonRegionId
Definition: am62lx/dss_soc.h:229
CSL_DSS_VP_ID_1
#define CSL_DSS_VP_ID_1
Video Port 1.
Definition: csl_dssTop.h:132
Dss_IrqParams
Structure containing DSS interrupt information. Events should be enabled only for available Video Por...
Definition: am62lx/dss_soc.h:228
Dss_DctrlOldiParams::vpId
uint32_t vpId
Definition: am62lx/dss_soc.h:284
Dss_DctrlOldiParams::oldiCfg
CSL_DssVpOldiCfg oldiCfg
Definition: am62lx/dss_soc.h:286
TRUE
#define TRUE
Definition: csl_types.h:61
Dss_SocParams
DSS SOC parameters.
Definition: am62lx/dss_soc.h:271
Dss_RmInfo::isCommRegAvailable
uint32_t isCommRegAvailable[CSL_DSS_COMM_REG_ID_MAX]
Definition: am62lx/dss_soc.h:257
Dss_dispIsVidLInst
static uint32_t Dss_dispIsVidLInst(uint32_t instId)
Check if the display driver instance is of type Video lite pipeline.
Definition: am62lx/dss_soc.h:373
Dss_RmInfo::isPortAvailable
uint32_t isPortAvailable[CSL_DSS_VP_ID_MAX]
Definition: am62lx/dss_soc.h:263
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:121
Dss_socParamsInit
static void Dss_socParamsInit(Dss_SocParams *socParams)
Dss_SocParams structure init function.
Definition: am62lx/dss_soc.h:419
Dss_IrqParams::numValidIrq
uint32_t numValidIrq
Definition: am62lx/dss_soc.h:236
Dss_rmInfoInit
static void Dss_rmInfoInit(Dss_RmInfo *rmInfo)
Dss_RmInfo structure init function.
Definition: am62lx/dss_soc.h:395
DSS_FUNC_IRQ_DEFAULT_NUM
#define DSS_FUNC_IRQ_DEFAULT_NUM
Definition: am62lx/dss_soc.h:180