69 #ifndef CSL_LCDMA_RINGACC_H_ 70 #define CSL_LCDMA_RINGACC_H_ 74 #include <ti/csl/cslr_lcdma_ringacc.h> 100 #define CSL_LCDMA_RINGACC_RING_EL_SIZE_BYTES ((uint32_t) 8U) 102 #define CSL_LCDMA_RINGACC_MAX_RINGS (1024U) 105 #define CSL_LCDMA_RINGACC_MAX_MONITOR_INTRS (0U) 107 #define CSL_LCDMA_RINGACC_CRED_PASSTHRU (0xFFFFFFFFU) 109 #define CSL_LCDMA_RINGACC_ORDERID_BYPASS (0xFFFFFFFFU) 111 #define CSL_LCDMA_RINGACC_RING_EVENT_DISABLE (0xFFFFU) 113 #define CSL_lcdma_ringaccMakeDescAddr CSL_lcdma_ringaccSetAselInAddr 126 #define CSL_LCDMA_RINGACC_RING_MODE_TX_RING ((uint32_t) 1U) 128 #define CSL_LCDMA_RINGACC_RING_MODE_RX_RING ((uint32_t) 9U) 130 #define CSL_LCDMA_RINGACC_RING_MODE_INVALID ((uint32_t) 10U) 145 #define CSL_LCDMA_RINGACC_MONITOR_DATA_SRC_ELEMENT_CNT ((uint32_t) 0U) 147 #define CSL_LCDMA_RINGACC_MONITOR_DATA_SRC_HEAD_PKT_SIZE ((uint32_t) 1U) 149 #define CSL_LCDMA_RINGACC_MONITOR_DATA_SRC_ACCUM_QUEUE_SIZE ((uint32_t) 2U) 151 #define CSL_LCDMA_RINGACC_MONITOR_DATA_SRC_INVALID ((uint32_t) 3U) 165 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_DISABLED ((uint32_t) 0U) 169 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_STATS ((uint32_t) 1U) 174 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_THRESHOLD ((uint32_t) 2U) 177 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_WATERMARK ((uint32_t) 3U) 180 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_STARVATION ((uint32_t) 4U) 182 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_INVALID ((uint32_t) 5U) 196 #define CSL_LCDMA_RINGACC_MEM_OPS_TYPE_WR ((uint32_t) 0U) 198 #define CSL_LCDMA_RINGACC_MEM_OPS_TYPE_RD ((uint32_t) 1U) 212 #define CSL_LCDMA_RINGACC_ASEL_ENDPOINT_PHYSADDR ((uint32_t) 0U) 213 #if defined (SOC_AM64X) 215 #define CSL_LCDMA_RINGACC_ASEL_ENDPOINT_PCIE0 ((uint32_t) 1U) 217 #define CSL_LCDMA_RINGACC_ASEL_ENDPOINT_ACP_WR_ALLOC ((uint32_t) 14U) 219 #define CSL_LCDMA_RINGACC_ASEL_ENDPOINT_ACP_RD_ALLOC ((uint32_t) 15U) 519 CSL_REG32_WR( &pCfg->
pRingRtRegs->RING[ringNum].FDB, CSL_FMK(LCDMA_RINGACC_RINGRT_RING_FDB_CNT, (uint32_t)cnt) );
543 CSL_REG32_WR( &pCfg->
pRingRtRegs->RING[ringNum].RDB, CSL_FMK(LCDMA_RINGACC_RINGRT_RING_RDB_CNT, (uint32_t)cnt) );
567 int32_t cntLocal = cnt;
572 int32_t thisDbRingCnt = (int32_t)((((uint32_t)CSL_LCDMA_RINGACC_RINGRT_RING_FDB_CNT_MAX + 1U) >> 1) - 1U);
574 while( cntLocal > 0 )
576 if( cntLocal <= thisDbRingCnt )
578 thisDbRingCnt = cntLocal;
582 cntLocal -= thisDbRingCnt;
589 pRing->
wrOcc += (uint32_t)cnt;
613 int32_t cntLocal = cnt;
620 int32_t thisDbRingCnt = (int32_t)(((uint32_t)CSL_LCDMA_RINGACC_RINGRT_RING_RDB_CNT_MAX + 1U) >> 1);
622 while( cntLocal > 0 )
624 if( cntLocal <= thisDbRingCnt )
626 thisDbRingCnt = cntLocal;
629 cntLocal -= thisDbRingCnt;
631 pRing->
rdOcc -= (uint32_t)cnt;
632 pRing->
wrOcc -= (uint32_t)cnt;
static int32_t CSL_lcdma_ringaccSetForwardDoorbell(CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, CSL_LcdmaRingaccRingMode mode, int32_t cnt)
Write to the ring foward doorbell.
Definition: csl_lcdma_ringacc.h:517
void CSL_lcdma_ringaccCfgRingCred(CSL_LcdmaRingaccCfg *pCfg, const CSL_LcdmaRingaccRingCfg *pRing, bool bEnable, bool bLock)
[ringacc_only] Configure the security credentials for a ring
int32_t CSL_lcdma_ringaccSetEvent(CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, uint32_t evtNum)
[ringacc_only] Set the ring event
int32_t CSL_lcdma_ringaccCfgRingMonitor(CSL_LcdmaRingaccCfg *pCfg, uint32_t monNum, CSL_LcdmaRingAccMonitorType monType, uint32_t ringNum, uint32_t eventNum, CSL_LcdmaRingAccMonitorDataSrc dataSrc, uint32_t data0Val, uint32_t data1Val)
[ringacc_only] Configure a ring monitor.
int32_t CSL_lcdma_ringaccDisableTrace(CSL_LcdmaRingaccCfg *pCfg)
[ringacc_only] Disable trace support
uint32_t CSL_lcdma_ringaccGetReverseRingOcc(const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, CSL_LcdmaRingaccRingMode mode)
Get the reverse occupancy of a ring.
void CSL_lcdma_ringaccResetRing(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing)
Reset a ring.
uint32_t ringNum
Definition: csl_lcdma_ringacc.h:271
int32_t CSL_lcdma_ringaccPush32(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint32_t val, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
Push a 32-bit value to a ring.
uint32_t CSL_lcdma_ringaccGetRingNum(const CSL_LcdmaRingaccRingCfg *pRing)
Get the ring number associated with a ring.
int32_t CSL_lcdma_ringaccPeek32(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint32_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
Peek at a 32-bit value from a ring.
int32_t CSL_lcdma_ringaccCfgTrace(CSL_LcdmaRingaccCfg *pCfg, bool bTraceAll, bool bIncMsgData, uint32_t ringNum)
[ringacc_only] Configure trace support
void CSL_lcdma_ringaccInitRingObj(uint32_t ringNum, CSL_LcdmaRingaccRingCfg *pRing)
Initialize the ring object.
uint32_t credChkSecure
Definition: csl_lcdma_ringacc.h:266
void * CSL_lcdma_ringaccGetReverseRingPtr(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing)
Get pointer to next available reverse ring element.
CSL_lcdma_ringacc_ringrtRegs * pRingRtRegs
Definition: csl_lcdma_ringacc.h:254
uint64_t CSL_lcdma_ringaccClrAselInAddr(uint64_t addr)
Clear the asel field in an address.
uint8_t asel
Definition: tisci_rm_ra.h:171
uint32_t credPrivId
Definition: csl_lcdma_ringacc.h:269
int32_t CSL_lcdma_ringaccInitRing(CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, CSL_LcdmaRingaccRingCfg *pRing)
Initialize a ring.
uint32_t rdOcc
Definition: csl_lcdma_ringacc.h:273
int32_t CSL_lcdma_ringaccDequeue(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVal)
Dequeue a value pushed to a ring in FIFO order.
uint32_t elSz
Definition: csl_lcdma_ringacc.h:265
uint32_t CSL_LcdmaRingAccMemoryOpsType
Definition: csl_lcdma_ringacc.h:194
int32_t CSL_lcdma_ringaccSetTraceEnable(CSL_LcdmaRingaccCfg *pCfg, bool bEnable)
Enable or disable trace support.
int32_t CSL_lcdma_ringaccPush64(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t val, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
Push a 64-bit value to a ring.
uint64_t physBase
Definition: csl_lcdma_ringacc.h:262
static void CSL_lcdma_ringaccSetReverseDoorbell(CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, CSL_LcdmaRingaccRingMode mode, int32_t cnt)
Write to the ring reverse doorbell.
Definition: csl_lcdma_ringacc.h:541
int32_t CSL_lcdma_ringaccPeek64(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
Peek at a 64-bit value from a ring.
uint32_t credSecure
Definition: csl_lcdma_ringacc.h:267
int32_t CSL_lcdma_ringaccWrData(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint8_t *pData, uint32_t numBytes, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
Write data into a ring.
static void CSL_lcdma_ringaccAckReverseRing(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, int32_t cnt)
Acknowledge elements read from a ring.
Definition: csl_lcdma_ringacc.h:611
void CSL_lcdma_ringaccInitRingCfg(CSL_LcdmaRingaccRingCfg *pRingCfg)
Initialize a CSL_LcdmaRingaccRingCfg structure.
static void CSL_lcdma_ringaccCommitToForwardRing(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, int32_t cnt)
Commit elements written to a ring.
Definition: csl_lcdma_ringacc.h:565
void CSL_lcdma_ringaccSetRingOrderId(CSL_LcdmaRingaccCfg *pCfg, const CSL_LcdmaRingaccRingCfg *pRing, uint32_t orderId)
[ringacc_only] Specify the orderid value for a ring
uint32_t CSL_LcdmaRingAccAselEndpoint
Definition: csl_lcdma_ringacc.h:210
int32_t CSL_lcdma_ringaccRdData(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint8_t *pData, uint32_t numBytes, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
Read data from a ring.
uint32_t credPriv
Definition: csl_lcdma_ringacc.h:268
uint32_t asel
Definition: csl_lcdma_ringacc.h:276
uint32_t rdIdx
Definition: csl_lcdma_ringacc.h:275
int32_t CSL_lcdma_ringaccPush64Multi(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVals, uint32_t numValues, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
Push multiple 64-bit values to a ring.
CSL_LcdmaRingaccRingMode mode
Definition: csl_lcdma_ringacc.h:263
uint32_t CSL_LcdmaRingAccMonitorDataSrc
Definition: csl_lcdma_ringacc.h:143
void CSL_lcdma_ringaccAckTeardown(const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum)
Acknowledge teardown completion of a ring.
char mode[32]
Definition: tisci_pm_core.h:130
uint32_t elCnt
Definition: csl_lcdma_ringacc.h:264
int32_t CSL_lcdma_ringaccPop32(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint32_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
Pop a 32-bit value from a ring.
CSL_lcdma_ringacc_ring_cfgRegs * pRingCfgRegs
Definition: csl_lcdma_ringacc.h:253
uint64_t CSL_lcdma_ringaccSetAselInAddr(uint64_t addr, CSL_LcdmaRingAccAselEndpoint asel)
Set the asel field in an address.
void * virtBase
Definition: csl_lcdma_ringacc.h:261
CSL_lcdma_ringacc_credRegs * pCredRegs
Definition: csl_lcdma_ringacc.h:255
uint32_t wrOcc
Definition: csl_lcdma_ringacc.h:272
uint32_t CSL_lcdma_ringaccGetRevision(const CSL_LcdmaRingaccCfg *pCfg)
[ringacc_only] Return revision of the RingAcc module.
uint32_t credVirtId
Definition: csl_lcdma_ringacc.h:270
void CSL_lcdma_ringaccInitCfg(CSL_LcdmaRingaccCfg *pCfg)
[lcdma_ringacc_only] Initialize a CSL_LcdmaRingaccCfg structure
int32_t CSL_lcdma_ringaccPeekData(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint8_t *pData, uint32_t numBytes, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
Peek at data from a ring.
void(* CSL_lcdma_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_lcdma_ringacc.h:248
int32_t CSL_lcdma_ringaccReadRingMonitor(const CSL_LcdmaRingaccCfg *pCfg, uint32_t monNum, uint32_t *pData0, uint32_t *pData1)
[ringacc_only] Read a ring monitor.
uint32_t CSL_LcdmaRingAccMonitorType
Definition: csl_lcdma_ringacc.h:163
uint64_t addr
Definition: csl_bcdma.h:1291
uint32_t CSL_lcdma_ringaccGetReverseRingIdx(const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum)
[ringacc_only] Get the current reverse ring index.
uint32_t maxRings
Definition: csl_lcdma_ringacc.h:256
int32_t CSL_lcdma_ringaccPop64Multi(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVals, uint32_t numValues, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
Pop multiple 64-bit values from a ring.
int32_t CSL_lcdma_ringaccHwPop64(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
[ringacc_only] Mimic a hardware pop of a 64-bit value from the head of a ring
uint32_t wrIdx
Definition: csl_lcdma_ringacc.h:274
uint16_t size
Definition: tisci_boardcfg.h:112
void * CSL_lcdma_ringaccGetForwardRingPtr(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing)
Get pointer to next free forward ring element.
uint32_t CSL_LcdmaRingaccRingMode
Definition: csl_lcdma_ringacc.h:124
CSL_LcdmaRingaccRingCfg contains information to configure a ring.
Definition: csl_lcdma_ringacc.h:260
int32_t CSL_lcdma_ringaccHwPop32(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint32_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
[ringacc_only] Mimic a hardware pop of a 32-bit value from the head of a ring
bool CSL_lcdma_ringaccIsTeardownComplete(const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum)
Return teardown completion status of a ring.
CSL_LcdmaRingaccCfg contains information to configure the ring accelerator.
Definition: csl_lcdma_ringacc.h:251
uint32_t CSL_lcdma_ringaccGetForwardRingIdx(const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum)
[ringacc_only] Get the current forward ring index.
int32_t CSL_lcdma_ringaccEnableTrace(CSL_LcdmaRingaccCfg *pCfg)
[ringacc_only] Enable trace support
int32_t CSL_lcdma_ringaccPop64(CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps)
Pop a 64-bit value from a ring.
uint32_t CSL_lcdma_ringaccGetForwardRingOcc(const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, CSL_LcdmaRingaccRingMode mode)
Get the forward occupancy of a ring.