PDK API Guide for J721E
csl_ringacc.h File Reference

Introduction

Header file containing various enumerations, structure definitions and function declarations for the Ring Accelerator IP.

Go to the source code of this file.

Ringacc ring mode

This enumerator defines the possible modes for a ring or queue


#define CSL_RINGACC_RING_MODE_RING   ((uint32_t) 0U)
 
#define CSL_RINGACC_RING_MODE_MESSAGE   ((uint32_t) 1U)
 
#define CSL_RINGACC_RING_MODE_CREDENTIALS   ((uint32_t) 2U)
 
#define CSL_RINGACC_RING_MODE_QM   ((uint32_t) 3U)
 
#define CSL_RINGACC_RING_MODE_INVALID   ((uint32_t) 4U)
 
typedef uint32_t CSL_RingAccRingMode
 

Ringacc monitor data source

This enumerator defines the possible data sources that can be monitored


#define CSL_RINGACC_MONITOR_DATA_SRC_ELEMENT_CNT   ((uint32_t) 0U)
 
#define CSL_RINGACC_MONITOR_DATA_SRC_HEAD_PKT_SIZE   ((uint32_t) 1U)
 
#define CSL_RINGACC_MONITOR_DATA_SRC_ACCUM_QUEUE_SIZE   ((uint32_t) 2U)
 
#define CSL_RINGACC_MONITOR_DATA_SRC_INVALID   ((uint32_t) 3U)
 
typedef uint32_t CSL_RingAccMonitorDataSrc
 

Ringacc monitor type

This enumerator defines the possible monitor types


#define CSL_RINGACC_MONITOR_TYPE_DISABLED   ((uint32_t) 0U)
 
#define CSL_RINGACC_MONITOR_TYPE_STATS   ((uint32_t) 1U)
 
#define CSL_RINGACC_MONITOR_TYPE_THRESHOLD   ((uint32_t) 2U)
 
#define CSL_RINGACC_MONITOR_TYPE_WATERMARK   ((uint32_t) 3U)
 
#define CSL_RINGACC_MONITOR_TYPE_STARVATION   ((uint32_t) 4U)
 
#define CSL_RINGACC_MONITOR_TYPE_INVALID   ((uint32_t) 5U)
 
typedef uint32_t CSL_RingAccMonitorType
 

Ringacc Ops type

This enumerator defines the possible memory operation types


#define CSL_RINGACC_MEM_OPS_TYPE_WR   ((uint32_t) 0U)
 
#define CSL_RINGACC_MEM_OPS_TYPE_RD   ((uint32_t) 1U)
 
typedef uint32_t CSL_RingAccMemoryOpsType
 

Data Structures

struct  CSL_RingAccCfg
 CSL_RingAccCfg contains information to configure the ring accelerator. More...
 
struct  CSL_RingAccRingCfg
 CSL_RingAccRingCfg contains information to configure a ring. More...
 

Macros

#define CSL_RINGACC_MAX_RINGS   (1024U)
 
#define CSL_RINGACC_MAX_MONITORS   (64U)
 
#define CSL_RINGACC_MAX_MONITOR_INTRS   (32U)
 
#define CSL_RINGACC_CRED_PASSTHRU   (0xFFFFFFFFU)
 
#define CSL_RINGACC_ORDERID_BYPASS   (0xFFFFFFFFU)
 
#define CSL_RINGACC_RING_EVENT_DISABLE   (0xFFFFU)
 

Typedefs

typedef void(* CSL_ringaccMemOpsFxnPtr) (void *pVirtAddr, uint32_t size, uint32_t opsType)
 User-provided memory fence call-back function to perform memory sync operations. The operation to perform depends on the opsType flag and also on the CPU/cache architecture. More...
 

Functions

uint32_t CSL_ringaccGetRevision (const CSL_RingAccCfg *pCfg)
 Return revision of the RingAcc module. More...
 
void CSL_ringaccInitRingCfg (CSL_RingAccRingCfg *pRingCfg)
 Initialize a CSL_RingAccRingCfg structure. More...
 
void CSL_ringaccInitRingObj (uint32_t ringNum, CSL_RingAccRingCfg *pRing)
 Initialize the ring object. More...
 
int32_t CSL_ringaccInitRing (CSL_RingAccCfg *pCfg, uint32_t ringNum, CSL_RingAccRingCfg *pRing)
 Initialize a ring. More...
 
int32_t CSL_ringaccSetEvent (CSL_RingAccCfg *pCfg, uint32_t ringNum, uint32_t evtNum)
 Set the ring event. More...
 
uint32_t CSL_ringaccGetRingNum (const CSL_RingAccRingCfg *pRing)
 Get the ring number associated with a ring. More...
 
void CSL_ringaccSetRingOrderId (CSL_RingAccCfg *pCfg, const CSL_RingAccRingCfg *pRing, uint32_t orderId)
 Specify the orderid value for a ring. More...
 
void CSL_ringaccCfgRingCred (CSL_RingAccCfg *pCfg, const CSL_RingAccRingCfg *pRing, bool bEnable, bool bLock)
 Configure the security credentials for a ring. More...
 
void CSL_ringaccResetRing (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing)
 Reset a ring. More...
 
void * CSL_ringaccGetCmdRingPtr (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing)
 Get pointer to next free command ring element. More...
 
void * CSL_ringaccGetRspRingPtr (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing)
 Get pointer to next available response ring element. More...
 
static int32_t CSL_ringaccSetRingDoorbell (CSL_RingAccCfg *pCfg, uint32_t ringNum, int32_t cnt)
 Write to the ring doorbell. More...
 
static void CSL_ringaccCommitToCmdRing (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, int32_t cnt)
 Commit elements written to a ring. More...
 
void CSL_ringaccAckRspRing (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, int32_t cnt)
 Acknowledge elements read from a ring. More...
 
int32_t CSL_ringaccCfgTrace (CSL_RingAccCfg *pCfg, bool bTraceAll, bool bIncMsgData, uint32_t ringNum)
 Configure trace support. More...
 
int32_t CSL_ringaccSetTraceEnable (CSL_RingAccCfg *pCfg, bool bEnable)
 Enable or disable trace support. More...
 
int32_t CSL_ringaccEnableTrace (CSL_RingAccCfg *pCfg)
 Enable trace support. More...
 
int32_t CSL_ringaccDisableTrace (CSL_RingAccCfg *pCfg)
 Disable trace support. More...
 
uint32_t CSL_ringaccGetRingIdx (const CSL_RingAccCfg *pCfg, uint32_t ringNum)
 Get the current ring read/write index. More...
 
uint32_t CSL_ringaccGetRingHwIdx (const CSL_RingAccCfg *pCfg, uint32_t ringNum)
 Get the current ring hardware read/write index (for debug). More...
 
uint32_t CSL_ringaccGetRingOcc (const CSL_RingAccCfg *pCfg, uint32_t ringNum)
 Get the current ring occupancy. More...
 
uint32_t CSL_ringaccGetRingHwOcc (const CSL_RingAccCfg *pCfg, uint32_t ringNum)
 Get the current ring hardware occupancy (for debug). More...
 
int32_t CSL_ringaccCfgRingMonitor (CSL_RingAccCfg *pCfg, uint32_t monNum, CSL_RingAccMonitorType monType, uint32_t ringNum, uint32_t eventNum, CSL_RingAccMonitorDataSrc dataSrc, uint32_t data0Val, uint32_t data1Val)
 Configure a ring monitor. More...
 
int32_t CSL_ringaccReadRingMonitor (const CSL_RingAccCfg *pCfg, uint32_t monNum, uint32_t *pData0, uint32_t *pData1)
 Read a ring monitor. More...
 
int32_t CSL_ringaccPush32 (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, uint32_t val, CSL_ringaccMemOpsFxnPtr pfMemOps)
 Push a 32-bit value to the tail of a ring. More...
 
int32_t CSL_ringaccPop32 (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, uint32_t *pVal, CSL_ringaccMemOpsFxnPtr pfMemOps)
 Pop a 32-bit value from the head of a ring. More...
 
int32_t CSL_ringaccHwPop32 (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, uint32_t *pVal, CSL_ringaccMemOpsFxnPtr pfMemOps)
 Mimic a hardware pop of a 32-bit value from the head of a ring. More...
 
int32_t CSL_ringaccPeek32 (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, uint32_t *pVal, CSL_ringaccMemOpsFxnPtr pfMemOps)
 Peek at a 32-bit value from the head of a ring. More...
 
int32_t CSL_ringaccPush64 (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, uint64_t val, CSL_ringaccMemOpsFxnPtr pfMemOps)
 Push a 64-bit value to the tail of a ring. More...
 
int32_t CSL_ringaccPop64 (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, uint64_t *pVal, CSL_ringaccMemOpsFxnPtr pfMemOps)
 Pop a 64-bit value from the head of a ring. More...
 
int32_t CSL_ringaccHwPop64 (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, uint64_t *pVal, CSL_ringaccMemOpsFxnPtr pfMemOps)
 Mimic a hardware pop of a 64-bit value from the head of a ring. More...
 
int32_t CSL_ringaccPeek64 (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, uint64_t *pVal, CSL_ringaccMemOpsFxnPtr pfMemOps)
 Peek at a 64-bit value from the head of a ring. More...
 
int32_t CSL_ringaccWrData (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, uint8_t *pData, uint32_t numBytes, CSL_ringaccMemOpsFxnPtr pfMemOps)
 Write data into a ring (ring mode only) More...
 
int32_t CSL_ringaccRdData (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, uint8_t *pData, uint32_t numBytes, CSL_ringaccMemOpsFxnPtr pfMemOps)
 Read data from a ring (ring mode only) More...
 
int32_t CSL_ringaccPeekData (CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, uint8_t *pData, uint32_t numBytes, CSL_ringaccMemOpsFxnPtr pfMemOps)
 Peek at data from a ring (ring mode only) More...