47 #ifndef CSL_RINGACC_H_ 48 #define CSL_RINGACC_H_ 52 #include <ti/csl/cslr_ringacc.h> 78 #define CSL_RINGACC_MAX_RINGS (1024U) 80 #define CSL_RINGACC_MAX_MONITORS (64U) 82 #define CSL_RINGACC_MAX_MONITOR_INTRS (32U) 84 #define CSL_RINGACC_CRED_PASSTHRU (0xFFFFFFFFU) 86 #define CSL_RINGACC_ORDERID_BYPASS (0xFFFFFFFFU) 88 #define CSL_RINGACC_RING_EVENT_DISABLE (0xFFFFU) 101 #define CSL_RINGACC_RING_MODE_RING ((uint32_t) 0U) 104 #define CSL_RINGACC_RING_MODE_MESSAGE ((uint32_t) 1U) 110 #define CSL_RINGACC_RING_MODE_CREDENTIALS ((uint32_t) 2U) 118 #define CSL_RINGACC_RING_MODE_QM ((uint32_t) 3U) 120 #define CSL_RINGACC_RING_MODE_INVALID ((uint32_t) 4U) 135 #define CSL_RINGACC_MONITOR_DATA_SRC_ELEMENT_CNT ((uint32_t) 0U) 137 #define CSL_RINGACC_MONITOR_DATA_SRC_HEAD_PKT_SIZE ((uint32_t) 1U) 139 #define CSL_RINGACC_MONITOR_DATA_SRC_ACCUM_QUEUE_SIZE ((uint32_t) 2U) 141 #define CSL_RINGACC_MONITOR_DATA_SRC_INVALID ((uint32_t) 3U) 155 #define CSL_RINGACC_MONITOR_TYPE_DISABLED ((uint32_t) 0U) 159 #define CSL_RINGACC_MONITOR_TYPE_STATS ((uint32_t) 1U) 164 #define CSL_RINGACC_MONITOR_TYPE_THRESHOLD ((uint32_t) 2U) 167 #define CSL_RINGACC_MONITOR_TYPE_WATERMARK ((uint32_t) 3U) 170 #define CSL_RINGACC_MONITOR_TYPE_STARVATION ((uint32_t) 4U) 172 #define CSL_RINGACC_MONITOR_TYPE_INVALID ((uint32_t) 5U) 186 #define CSL_RINGACC_MEM_OPS_TYPE_WR ((uint32_t) 0U) 188 #define CSL_RINGACC_MEM_OPS_TYPE_RD ((uint32_t) 1U) 232 typedef struct CSL_RingAccRing_t {
483 if( ringNum < pCfg->maxRings )
485 CSL_REG32_WR( &pCfg->
pRtRegs->RINGRT[ringNum].DB, CSL_FMK(RINGACC_RT_RINGRT_DB_CNT, (uint32_t)cnt) );
515 int32_t cntLocal = cnt;
void CSL_ringaccAckRspRing(CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, int32_t cnt)
Acknowledge elements read from a ring.
int32_t CSL_ringaccSetEvent(CSL_RingAccCfg *pCfg, uint32_t ringNum, uint32_t evtNum)
Set the ring event.
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.
uint32_t CSL_ringaccGetRingHwIdx(const CSL_RingAccCfg *pCfg, uint32_t ringNum)
Get the current ring hardware read/write index (for debug).
void CSL_ringaccResetRing(CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing)
Reset a ring.
int32_t CSL_ringaccEnableTrace(CSL_RingAccCfg *pCfg)
Enable trace support.
CSL_RingAccRingMode mode
Definition: csl_ringacc.h:235
void CSL_ringaccInitRingObj(uint32_t ringNum, CSL_RingAccRingCfg *pRing)
Initialize the ring object.
void * CSL_ringaccGetRspRingPtr(CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing)
Get pointer to next available response ring element.
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.
uint64_t physBase
Definition: csl_ringacc.h:234
uint32_t CSL_RingAccMonitorDataSrc
Definition: csl_ringacc.h:133
int32_t waiting
Definition: csl_ringacc.h:246
uint32_t maxMonitors
Definition: csl_ringacc.h:227
uint32_t rwIdx
Definition: csl_ringacc.h:245
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)
uint32_t ringNum
Definition: csl_ringacc.h:243
int32_t CSL_ringaccCfgTrace(CSL_RingAccCfg *pCfg, bool bTraceAll, bool bIncMsgData, uint32_t ringNum)
Configure trace support.
uint32_t credPriv
Definition: csl_ringacc.h:240
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.
uint32_t evtNum
Definition: csl_ringacc.h:238
CSL_RingAccCfg contains information to configure the ring accelerator.
Definition: csl_ringacc.h:219
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.
int32_t CSL_ringaccSetTraceEnable(CSL_RingAccCfg *pCfg, bool bEnable)
Enable or disable trace support.
uint32_t CSL_RingAccMonitorType
Definition: csl_ringacc.h:153
uint32_t CSL_RingAccRingMode
Definition: csl_ringacc.h:99
uint32_t CSL_ringaccGetRingNum(const CSL_RingAccRingCfg *pRing)
Get the ring number associated with a ring.
CSL_ringacc_iscRegs * pIscRegs
Definition: csl_ringacc.h:225
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 per...
Definition: csl_ringacc.h:216
void * CSL_ringaccGetCmdRingPtr(CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing)
Get pointer to next free command ring element.
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.
uint32_t credPrivId
Definition: csl_ringacc.h:241
static int32_t CSL_ringaccSetRingDoorbell(CSL_RingAccCfg *pCfg, uint32_t ringNum, int32_t cnt)
Write to the ring doorbell.
Definition: csl_ringacc.h:479
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.
uint32_t maxRings
Definition: csl_ringacc.h:226
uint32_t CSL_ringaccGetRingHwOcc(const CSL_RingAccCfg *pCfg, uint32_t ringNum)
Get the current ring hardware occupancy (for debug).
uint32_t CSL_RingAccMemoryOpsType
Definition: csl_ringacc.h:184
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.
uint32_t credSecure
Definition: csl_ringacc.h:239
CSL_ringacc_gcfgRegs * pGlbRegs
Definition: csl_ringacc.h:220
CSL_RingAccRingCfg contains information to configure a ring.
Definition: csl_ringacc.h:232
uint32_t CSL_ringaccGetRingIdx(const CSL_RingAccCfg *pCfg, uint32_t ringNum)
Get the current ring read/write index.
void CSL_ringaccSetRingOrderId(CSL_RingAccCfg *pCfg, const CSL_RingAccRingCfg *pRing, uint32_t orderId)
Specify the orderid value for a ring.
int32_t CSL_ringaccReadRingMonitor(const CSL_RingAccCfg *pCfg, uint32_t monNum, uint32_t *pData0, uint32_t *pData1)
Read a ring monitor.
CSL_ringacc_cfgRegs * pCfgRegs
Definition: csl_ringacc.h:221
static void CSL_ringaccCommitToCmdRing(CSL_RingAccCfg *pCfg, CSL_RingAccRingCfg *pRing, int32_t cnt)
Commit elements written to a ring.
Definition: csl_ringacc.h:513
CSL_ringacc_rtRegs * pRtRegs
Definition: csl_ringacc.h:222
int32_t CSL_ringaccInitRing(CSL_RingAccCfg *pCfg, uint32_t ringNum, CSL_RingAccRingCfg *pRing)
Initialize a ring.
void * virtBase
Definition: csl_ringacc.h:233
uint32_t occ
Definition: csl_ringacc.h:247
void CSL_ringaccCfgRingCred(CSL_RingAccCfg *pCfg, const CSL_RingAccRingCfg *pRing, bool bEnable, bool bLock)
Configure the security credentials for a ring.
uint32_t credVirtId
Definition: csl_ringacc.h:242
CSL_ringacc_fifosRegs * pFifoRegs
Definition: csl_ringacc.h:224
bool bTraceSupported
Definition: csl_ringacc.h:228
void CSL_ringaccInitRingCfg(CSL_RingAccRingCfg *pRingCfg)
Initialize a CSL_RingAccRingCfg structure.
uint16_t size
Definition: tisci_boardcfg.h:112
uint32_t elCnt
Definition: csl_ringacc.h:236
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.
CSL_ringacc_monitorRegs * pMonRegs
Definition: csl_ringacc.h:223
uint32_t CSL_ringaccGetRevision(const CSL_RingAccCfg *pCfg)
Return revision of the RingAcc module.
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)
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)
int32_t CSL_ringaccDisableTrace(CSL_RingAccCfg *pCfg)
Disable trace support.
uint32_t CSL_ringaccGetRingOcc(const CSL_RingAccCfg *pCfg, uint32_t ringNum)
Get the current ring occupancy.
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.
struct CSL_RingAccRing_t * pPair
Definition: csl_ringacc.h:244
uint32_t elSz
Definition: csl_ringacc.h:237