PDK API Guide for AM64x
csl_lcdma_ringacc.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2019-2020 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  */
69 #ifndef CSL_LCDMA_RINGACC_H_
70 #define CSL_LCDMA_RINGACC_H_
71 
72 #include <stdint.h>
73 #include <stdbool.h>
74 #include <ti/csl/cslr_lcdma_ringacc.h>
75 
76 #ifdef __cplusplus
77 extern "C" {
78 #endif
79 
99 /* The lcdma_ringacc has a hardcoded element size of 8 bytes */
100 #define CSL_LCDMA_RINGACC_RING_EL_SIZE_BYTES ((uint32_t) 8U)
101 
102 #define CSL_LCDMA_RINGACC_MAX_RINGS (1024U)
103 
105 #define CSL_LCDMA_RINGACC_MAX_MONITOR_INTRS (0U)
106 
107 #define CSL_LCDMA_RINGACC_CRED_PASSTHRU (0xFFFFFFFFU)
108 
109 #define CSL_LCDMA_RINGACC_ORDERID_BYPASS (0xFFFFFFFFU)
110 
111 #define CSL_LCDMA_RINGACC_RING_EVENT_DISABLE (0xFFFFU)
112 /* Map old CSL_lcdma_ringaccMakeDescAddr function to new CSL_lcdma_ringaccSetAselInAddr equivalent */
113 #define CSL_lcdma_ringaccMakeDescAddr CSL_lcdma_ringaccSetAselInAddr
114 
124 typedef uint32_t CSL_LcdmaRingaccRingMode;
126 #define CSL_LCDMA_RINGACC_RING_MODE_TX_RING ((uint32_t) 1U)
127 
128 #define CSL_LCDMA_RINGACC_RING_MODE_RX_RING ((uint32_t) 9U)
129 
130 #define CSL_LCDMA_RINGACC_RING_MODE_INVALID ((uint32_t) 10U)
131 /* @} */
132 
145 #define CSL_LCDMA_RINGACC_MONITOR_DATA_SRC_ELEMENT_CNT ((uint32_t) 0U)
146 
147 #define CSL_LCDMA_RINGACC_MONITOR_DATA_SRC_HEAD_PKT_SIZE ((uint32_t) 1U)
148 
149 #define CSL_LCDMA_RINGACC_MONITOR_DATA_SRC_ACCUM_QUEUE_SIZE ((uint32_t) 2U)
150 
151 #define CSL_LCDMA_RINGACC_MONITOR_DATA_SRC_INVALID ((uint32_t) 3U)
152 /* @} */
153 
165 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_DISABLED ((uint32_t) 0U)
166 
169 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_STATS ((uint32_t) 1U)
170 
174 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_THRESHOLD ((uint32_t) 2U)
175 
177 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_WATERMARK ((uint32_t) 3U)
178 
180 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_STARVATION ((uint32_t) 4U)
181 
182 #define CSL_LCDMA_RINGACC_MONITOR_TYPE_INVALID ((uint32_t) 5U)
183 /* @} */
184 
196 #define CSL_LCDMA_RINGACC_MEM_OPS_TYPE_WR ((uint32_t) 0U)
197 
198 #define CSL_LCDMA_RINGACC_MEM_OPS_TYPE_RD ((uint32_t) 1U)
199 /* @} */
200 
212 #define CSL_LCDMA_RINGACC_ASEL_ENDPOINT_PHYSADDR ((uint32_t) 0U)
213 #if defined (SOC_AM64X)
214 
215 #define CSL_LCDMA_RINGACC_ASEL_ENDPOINT_PCIE0 ((uint32_t) 1U)
216 
217 #define CSL_LCDMA_RINGACC_ASEL_ENDPOINT_ACP_WR_ALLOC ((uint32_t) 14U)
218 
219 #define CSL_LCDMA_RINGACC_ASEL_ENDPOINT_ACP_RD_ALLOC ((uint32_t) 15U)
220 #endif
221 /* @} */
222 
223 /* @} */
224 
248 typedef void (*CSL_lcdma_ringaccMemOpsFxnPtr)(void *pVirtAddr, uint32_t size, uint32_t opsType);
249 
251 typedef struct
252 {
253  CSL_lcdma_ringacc_ring_cfgRegs *pRingCfgRegs;
254  CSL_lcdma_ringacc_ringrtRegs *pRingRtRegs;
255  CSL_lcdma_ringacc_credRegs *pCredRegs;
256  uint32_t maxRings;
258 
260 typedef struct {
261  void *virtBase;
262  uint64_t physBase;
264  uint32_t elCnt;
265  uint32_t elSz;
266  uint32_t credChkSecure;
267  uint32_t credSecure;
268  uint32_t credPriv;
269  uint32_t credPrivId;
270  uint32_t credVirtId;
271  uint32_t ringNum;
272  uint32_t wrOcc;
273  uint32_t rdOcc;
274  uint32_t wrIdx;
275  uint32_t rdIdx;
276  uint32_t asel;
278 
279 /* @} */
280 
298 extern void CSL_lcdma_ringaccInitCfg( CSL_LcdmaRingaccCfg *pCfg );
299 
312 extern uint32_t CSL_lcdma_ringaccGetRevision( const CSL_LcdmaRingaccCfg *pCfg );
313 
327 
338 extern void CSL_lcdma_ringaccInitRingObj( uint32_t ringNum,
339  CSL_LcdmaRingaccRingCfg *pRing );
340 
372 extern int32_t CSL_lcdma_ringaccInitRing( CSL_LcdmaRingaccCfg *pCfg,
373  uint32_t ringNum,
374  CSL_LcdmaRingaccRingCfg *pRing );
375 
388 extern int32_t CSL_lcdma_ringaccSetEvent( CSL_LcdmaRingaccCfg *pCfg,
389  uint32_t ringNum,
390  uint32_t evtNum );
391 
403 extern uint32_t CSL_lcdma_ringaccGetRingNum( const CSL_LcdmaRingaccRingCfg *pRing );
404 
422 extern void CSL_lcdma_ringaccSetRingOrderId( CSL_LcdmaRingaccCfg *pCfg, const CSL_LcdmaRingaccRingCfg *pRing, uint32_t orderId );
423 
440 extern void CSL_lcdma_ringaccCfgRingCred( CSL_LcdmaRingaccCfg *pCfg, const CSL_LcdmaRingaccRingCfg *pRing, bool bEnable, bool bLock );
441 
460 
476 
495 
515 static inline int32_t CSL_lcdma_ringaccSetForwardDoorbell( CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, CSL_LcdmaRingaccRingMode mode, int32_t cnt );
516 
517 static inline int32_t CSL_lcdma_ringaccSetForwardDoorbell( CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, CSL_LcdmaRingaccRingMode mode, int32_t cnt )
518 {
519  CSL_REG32_WR( &pCfg->pRingRtRegs->RING[ringNum].FDB, CSL_FMK(LCDMA_RINGACC_RINGRT_RING_FDB_CNT, (uint32_t)cnt) );
520  return 0;
521 }
522 
539 static inline void CSL_lcdma_ringaccSetReverseDoorbell( CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, CSL_LcdmaRingaccRingMode mode, int32_t cnt );
540 
541 static inline void CSL_lcdma_ringaccSetReverseDoorbell( CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, CSL_LcdmaRingaccRingMode mode, int32_t cnt )
542 {
543  CSL_REG32_WR( &pCfg->pRingRtRegs->RING[ringNum].RDB, CSL_FMK(LCDMA_RINGACC_RINGRT_RING_RDB_CNT, (uint32_t)cnt) );
544 }
545 
546 
563 static inline void CSL_lcdma_ringaccCommitToForwardRing( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, int32_t cnt );
564 
566 {
567  int32_t cntLocal = cnt;
568  /*-------------------------------------------------------------------------
569  * Init thisDbRingCnt to the largest positive value that can be written to
570  * the forward doorbell field (a two's compliment value).
571  *-----------------------------------------------------------------------*/
572  int32_t thisDbRingCnt = (int32_t)((((uint32_t)CSL_LCDMA_RINGACC_RINGRT_RING_FDB_CNT_MAX + 1U) >> 1) - 1U);
573 
574  while( cntLocal > 0 )
575  {
576  if( cntLocal <= thisDbRingCnt )
577  {
578  thisDbRingCnt = cntLocal;
579  }
580  if( CSL_lcdma_ringaccSetForwardDoorbell( pCfg, pRing->ringNum, pRing->mode, thisDbRingCnt ) == 0 )
581  {
582  cntLocal -= thisDbRingCnt;
583  }
584  else
585  {
586  break;
587  }
588  }
589  pRing->wrOcc += (uint32_t)cnt;
590  pRing->wrIdx = (pRing->wrIdx + (uint32_t)cnt) % pRing->elCnt;
591 }
592 
609 static inline void CSL_lcdma_ringaccAckReverseRing( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, int32_t cnt );
610 
611 static inline void CSL_lcdma_ringaccAckReverseRing( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, int32_t cnt )
612 {
613  int32_t cntLocal = cnt;
614  /*-------------------------------------------------------------------------
615  * Init thisDbRingCnt to the most negative value that can be written to the
616  * reverse doorbell field (a two's compliment value). Keep this value
617  * positive for comparison and arithmetic operations. Negate it when
618  * writing to the reverse doorbell register.
619  *-----------------------------------------------------------------------*/
620  int32_t thisDbRingCnt = (int32_t)(((uint32_t)CSL_LCDMA_RINGACC_RINGRT_RING_RDB_CNT_MAX + 1U) >> 1);
621 
622  while( cntLocal > 0 )
623  {
624  if( cntLocal <= thisDbRingCnt )
625  {
626  thisDbRingCnt = cntLocal;
627  }
628  CSL_lcdma_ringaccSetReverseDoorbell( pCfg, pRing->ringNum, pRing->mode, 0-thisDbRingCnt );
629  cntLocal -= thisDbRingCnt;
630  }
631  pRing->rdOcc -= (uint32_t)cnt;
632  pRing->wrOcc -= (uint32_t)cnt;
633  pRing->rdIdx = (pRing->rdIdx + (uint32_t)cnt) % pRing->elCnt;
634 }
635 
651 extern uint32_t CSL_lcdma_ringaccGetForwardRingIdx( const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum );
652 
668 extern uint32_t CSL_lcdma_ringaccGetReverseRingIdx( const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum );
669 
688 extern uint32_t CSL_lcdma_ringaccGetForwardRingOcc( const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, CSL_LcdmaRingaccRingMode mode );
689 
708 extern uint32_t CSL_lcdma_ringaccGetReverseRingOcc( const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum, CSL_LcdmaRingaccRingMode mode );
709 
734 extern int32_t CSL_lcdma_ringaccCfgTrace( CSL_LcdmaRingaccCfg *pCfg, bool bTraceAll, bool bIncMsgData, uint32_t ringNum );
735 
750 extern int32_t CSL_lcdma_ringaccSetTraceEnable( CSL_LcdmaRingaccCfg *pCfg, bool bEnable );
751 
764 extern int32_t CSL_lcdma_ringaccEnableTrace( CSL_LcdmaRingaccCfg *pCfg );
765 
777 extern int32_t CSL_lcdma_ringaccDisableTrace( CSL_LcdmaRingaccCfg *pCfg );
778 
813  uint32_t monNum,
815  uint32_t ringNum,
816  uint32_t eventNum,
818  uint32_t data0Val,
819  uint32_t data1Val );
820 
844 extern int32_t CSL_lcdma_ringaccReadRingMonitor( const CSL_LcdmaRingaccCfg *pCfg, uint32_t monNum, uint32_t *pData0, uint32_t *pData1 );
845 
862 extern int32_t CSL_lcdma_ringaccPush32( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint32_t val, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
863 
880 extern int32_t CSL_lcdma_ringaccPop32( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint32_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
881 
905 extern int32_t CSL_lcdma_ringaccHwPop32( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint32_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
906 
923 extern int32_t CSL_lcdma_ringaccPeek32( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint32_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
924 
942 extern int32_t CSL_lcdma_ringaccPush64( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t val, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
943 
964 extern int32_t CSL_lcdma_ringaccPush64Multi( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVals, uint32_t numValues, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
965 
983 extern int32_t CSL_lcdma_ringaccPop64( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
984 
1006 extern int32_t CSL_lcdma_ringaccPop64Multi( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVals, uint32_t numValues, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
1007 
1032 extern int32_t CSL_lcdma_ringaccHwPop64( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
1033 
1051 extern int32_t CSL_lcdma_ringaccPeek64( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVal, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
1052 
1074 extern int32_t CSL_lcdma_ringaccWrData( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint8_t *pData, uint32_t numBytes, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
1075 
1094 extern int32_t CSL_lcdma_ringaccRdData( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint8_t *pData, uint32_t numBytes, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
1095 
1113 extern int32_t CSL_lcdma_ringaccPeekData( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint8_t *pData, uint32_t numBytes, CSL_lcdma_ringaccMemOpsFxnPtr pfMemOps );
1114 
1124 extern uint64_t CSL_lcdma_ringaccClrAselInAddr( uint64_t addr );
1125 
1137 
1152 extern bool CSL_lcdma_ringaccIsTeardownComplete( const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum );
1153 
1167 extern void CSL_lcdma_ringaccAckTeardown( const CSL_LcdmaRingaccCfg *pCfg, uint32_t ringNum );
1168 
1188 extern int32_t CSL_lcdma_ringaccDequeue( CSL_LcdmaRingaccCfg *pCfg, CSL_LcdmaRingaccRingCfg *pRing, uint64_t *pVal );
1189 
1190 /* @} */
1191 
1192 #ifdef __cplusplus
1193 }
1194 #endif
1195 
1196 #endif
1197 
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.