PDK API Guide for J721E
csl_dru.h File Reference

Introduction

This is the include file for the DRU (Data Routing Unit/Engine) CSL-F module. The functions contained in this module are used to setup the DRU, either in the TB by writing to the BFM for the MSG Bus or performing direct TR writes from the processor.

Go to the source code of this file.

Data Structures

struct  CSL_DruCapabilities
 This structure contains the capabilities of DRU. More...
 
struct  CSL_DruQueueConfig
 This structure contains the parameters to setup the DRU queue. More...
 
struct  CSL_DruChConfig
 This structure contains the parameters to setup the DRU channel. More...
 
struct  CSL_DruQueueStatus
 This structure contains Queue status information. More...
 

Macros

#define CSL_DRU_MAX_CH   (512U)
 Maximum number of channels supported by DRU. This is just the maximum registers supported for programming. The actual channel supported is given by CSL_DRU_NUM_CH macro. More...
 
#define CSL_DRU_NUM_CH   (64U)
 Number of channels supported by the DRU. More...
 
#define CSL_DRU_MAX_QUEUE   (8U)
 Maximum number of queues supported by DRU. This is just the maximum registers supported for programming. The actual channel supported is given by CSL_DRU_NUM_QUEUE macro. More...
 
#define CSL_DRU_NUM_QUEUE   (5U)
 Number of queues supported by the DRU. More...
 
#define CSL_DRU_MAX_CORE   (4U)
 Maximum number of core submission set supported by the DRU. This is just the maximum registers supported for programming. The actual channel supported is given by CSL_DRU_NUM_CORE macro. More...
 
#define CSL_DRU_NUM_CORE   (3U)
 Number of core submission set supported by the DRU. More...
 
DRU Owner - Direct TR submission or UDMA-C TR submission

DRU owner.

#define CSL_DRU_OWNER_DIRECT_TR   ((uint64_t) 0x0000U)
 Direct TR - SUBMISSION registers must be written to submit TR. More...
 
#define CSL_DRU_OWNER_UDMAC_TR   ((uint64_t) 0x0001U)
 UDMA-C TR - TR will be received through PSIL. More...
 
DRU Queue ID

DRU queue ID. 0th queue is a priority queue. All others are round robin queues.

#define CSL_DRU_QUEUE_ID_0   ((uint32_t) 0x0000U)
 
#define CSL_DRU_QUEUE_ID_1   ((uint32_t) 0x0001U)
 
#define CSL_DRU_QUEUE_ID_2   ((uint32_t) 0x0002U)
 
#define CSL_DRU_QUEUE_ID_3   ((uint32_t) 0x0003U)
 
#define CSL_DRU_QUEUE_ID_4   ((uint32_t) 0x0004U)
 
#define CSL_DRU_QUEUE_ID_5   ((uint32_t) 0x0005U)
 
#define CSL_DRU_QUEUE_ID_6   ((uint32_t) 0x0006U)
 
#define CSL_DRU_QUEUE_ID_7   ((uint32_t) 0x0007U)
 
DRU Core ID

DRU core ID used to submit non-atomic TR submission. Note: There are only three core ID set present in the AM65xx and J721E SOC.

#define CSL_DRU_CORE_ID_0   ((uint32_t) 0x0000U)
 
#define CSL_DRU_CORE_ID_1   ((uint32_t) 0x0001U)
 
#define CSL_DRU_CORE_ID_2   ((uint32_t) 0x0002U)
 
#define CSL_DRU_CORE_ID_3   ((uint32_t) 0x0003U)
 

Functions

int32_t CSL_druGetCapabilities (const CSL_DRU_t *pRegs, CSL_DruCapabilities *druCap)
 This API returns the DRU capabilities. More...
 
int32_t CSL_druQueueConfig (const CSL_DRU_t *pRegs, uint32_t queueId, const CSL_DruQueueConfig *queueCfg)
 This API configures the DRU queue non-real time configurations. More...
 
int32_t CSL_druChConfig (const CSL_DRU_t *pRegs, uint32_t chId, const CSL_DruChConfig *chCfg)
 This API configures the DRU channel non-real time configurations. More...
 
int32_t CSL_druChSetEvent (const CSL_DRU_t *pRegs, uint32_t chId, uint64_t evtNum)
 This API configures the DRU channel event. More...
 
int32_t CSL_druChEnable (const CSL_DRU_t *pRegs, uint32_t chId)
 This API enables the DRU channel using the real time registers. More...
 
int32_t CSL_druChDisable (const CSL_DRU_t *pRegs, uint32_t chId)
 This API disables the DRU channel using the real time registers. More...
 
int32_t CSL_druChTeardown (const CSL_DRU_t *pRegs, uint32_t chId)
 This API teardowns the specified channel. More...
 
uint32_t CSL_druChIsTeardownComplete (const CSL_DRU_t *pRegs, uint32_t chId)
 This API checks if a teardown is complete for specified channel. More...
 
int32_t CSL_druChPause (const CSL_DRU_t *pRegs, uint32_t chId)
 This API pauses the specified channel. More...
 
int32_t CSL_druChResume (const CSL_DRU_t *pRegs, uint32_t chId)
 This API resumes the specified channel. More...
 
static void CSL_druChSubmitTr (const CSL_DRU_t *pRegs, uint32_t chId, uint32_t coreId, const CSL_UdmapTR *tr)
 This API does a direct TR submission to the specified channel and core ID. More...
 
volatile uint64_t * CSL_druChGetTriggerRegAddr (CSL_DRU_t *pRegs, uint32_t chId)
 This API get the triggers register address for the channel. More...
 
static void CSL_druChSetLocalTrigger0Raw (volatile uint64_t *pSwTrigReg)
 This API triggers the local event 0 for the specified channel. More...
 
static void CSL_druChSetGlobalTrigger0Raw (volatile uint64_t *pSwTrigReg)
 This API triggers the global event 0 for the specified channel. More...
 
static void CSL_druChSetGlobalTrigger1Raw (volatile uint64_t *pSwTrigReg)
 This API triggers the global event 1 for the specified channel. More...
 
int32_t CSL_druChSetLocalTrigger0 (CSL_DRU_t *pRegs, uint32_t chId)
 This API triggers the local event 0 for the specified channel. More...
 
int32_t CSL_druChSetGlobalTrigger0 (CSL_DRU_t *pRegs, uint32_t chId)
 This API triggers the global event 0 for the specified channel. More...
 
int32_t CSL_druChSetGlobalTrigger1 (CSL_DRU_t *pRegs, uint32_t chId)
 This API triggers the global event 1 for the specified channel. More...
 
int32_t CSL_druGetQueueStatus (const CSL_DRU_t *pRegs, uint32_t queueId, CSL_DruQueueStatus *status)
 This API returns the status of the specified queue. More...