PDK API Guide for J721E
csl_udmap.h File Reference

Introduction

Header file containing various enumerations, structure definitions and function declarations for the Universal DMA Packet (UDMAP) IP.

Go to the source code of this file.

UDMAP channel direction

This enumerator defines the possible channel directions


#define CSL_UDMAP_CHAN_DIR_TX   ((uint32_t) 0U)
 
#define CSL_UDMAP_CHAN_DIR_RX   ((uint32_t) 1U)
 
typedef uint32_t CSL_UdmapChanDir
 

UDMAP channel burst size

This enumerator defines the nominal burst size and alignment for data transfers on a TX or RX channel


#define CSL_UDMAP_CHAN_BURST_SIZE_64_BYTES   ((uint32_t) 1U)
 
#define CSL_UDMAP_CHAN_BURST_SIZE_128_BYTES   ((uint32_t) 2U)
 
#define CSL_UDMAP_CHAN_BURST_SIZE_256_BYTES   ((uint32_t) 3U)
 
typedef uint32_t CSL_UdmapChanBurstSize
 

UDMAP descriptor type

This enumerator defines the possible descriptor types


#define CSL_UDMAP_DESC_TYPE_HOST   ((uint32_t) 0U)
 
#define CSL_UDMAP_DESC_TYPE_HOST_SB   ((uint32_t) 1U)
 
#define CSL_UDMAP_DESC_TYPE_MONOLITHIC   ((uint32_t) 2U)
 
#define CSL_UDMAP_DESC_TYPE_RESERVED   ((uint32_t) 3U)
 
typedef uint32_t CSL_UdmapDescType
 

UDMAP protocol-specific data location

This enumerator defines the ps location for the descriptor


#define CSL_UDMAP_PS_LOC_DESC   ((uint32_t) 0U)
 
#define CSL_UDMAP_PS_LOC_PACKET   ((uint32_t) 1U)
 
typedef uint32_t CSL_UdmapPsLoc
 

UDMAP address type

This enumerator defines the possible address types


#define CSL_UDMAP_ADDR_TYPE_PHYS   ((uint32_t) 0U)
 
#define CSL_UDMAP_ADDR_TYPE_INTER   ((uint32_t) 1U)
 
#define CSL_UDMAP_ADDR_TYPE_VIRT   ((uint32_t) 2U)
 
typedef uint32_t CSL_UdmapAddrType
 

UDMAP channel type

This enumerator defines the possible channel types


#define CSL_UDMAP_CHAN_TYPE_REF_PKT_RING   ((uint32_t) 2U)
 
#define CSL_UDMAP_CHAN_TYPE_REF_PKTSB_QUEUE   ((uint32_t) 3U)
 
#define CSL_UDMAP_CHAN_TYPE_REF_TR_RING   ((uint32_t) 10U)
 
#define CSL_UDMAP_CHAN_TYPE_VAL_TR_RING   ((uint32_t) 11U)
 
#define CSL_UDMAP_CHAN_TYPE_COPY_REF_TR_RING   ((uint32_t) 12U)
 
#define CSL_UDMAP_CHAN_TYPE_COPY_VAL_TR_RING   ((uint32_t) 13U)
 
typedef uint32_t CSL_UdmapChanType
 

UDMAP tag select

This enumerator defines how tag values are determined


#define CSL_UDMAP_TAG_SELECT_NO_OVERWRITE   ((uint32_t) 0U)
 
#define CSL_UDMAP_TAG_SELECT_OVERWRITE_WITH_VAL   ((uint32_t) 1U)
 
#define CSL_UDMAP_TAG_SELECT_OVERWRITE_WITH_FLOWID_7_0   ((uint32_t) 2U)
 
#define CSL_UDMAP_TAG_SELECT_OVERWRITE_WITH_FLOWID_15_8   ((uint32_t) 3U)
 
#define CSL_UDMAP_TAG_SELECT_OVERWRITE_WITH_TAG_7_0   ((uint32_t) 4U)
 
#define CSL_UDMAP_TAG_SELECT_OVERWRITE_WITH_TAG_15_8   ((uint32_t) 5U)
 
#define CSL_UDMAP_TAG_SELECT_INVALID   ((uint32_t) 6U)
 
typedef uint32_t CSL_UdmapTagSelect
 

UDMAP channel schedling priority

This enumerator selects which scheduling bin the channel will be placed in for bandwidth allocation of the DMA units


#define CSL_UDMAP_CHAN_SCHED_PRI_HIGH   ((uint32_t) 0U)
 
#define CSL_UDMAP_CHAN_SCHED_PRI_MED_HIGH   ((uint32_t) 1U)
 
#define CSL_UDMAP_CHAN_SCHED_PRI_MED_LOW   ((uint32_t) 2U)
 
#define CSL_UDMAP_CHAN_SCHED_PRI_LOW   ((uint32_t) 3U)
 
typedef uint32_t CSL_UdmapChanSchedPri
 

UDMAP automatic dynamic clock gate block ID

This enumerator defines the UDMAP internal sub-blocks that have automatic dynamic clock gating support for power savings.


UDMAP revision 2.2.0.0 and later provides automatic dynamic clock gating support for internal sub-blocks based on real-time monitoring of activity.

#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_EDC   (((uint64_t)1U)<<63)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_STATS   (((uint64_t)1U)<<62)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_PROXY   (((uint64_t)1U)<<61)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_PSILIF   (((uint64_t)1U)<<60)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_P2P   (((uint64_t)1U)<<59)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_EPSILIF   (((uint64_t)1U)<<58)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_EHANDLER   (((uint64_t)1U)<<57)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RINGPEND   (((uint64_t)1U)<<56)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PER_CHANNEL_FIFO   (((uint64_t)1U)<<55)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PER_CHANNEL_FIFO   (((uint64_t)1U)<<54)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PREFETCH_CFG   (((uint64_t)1U)<<53)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PREFETCH_CFG   (((uint64_t)1U)<<52)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_PM_TX_PACKET_DMA_UNIT   (((uint64_t)1U)<<51)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_CFG_STATE_RAM_BLK   (((uint64_t)1U)<<50)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PREFETCH_BUFFER   (((uint64_t)1U)<<49)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PREFETCH_BUFFER   (((uint64_t)1U)<<48)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_FLOW_FIREWALL   (((uint64_t)1U)<<47)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_EXTERNAL_CHANNEL_COHERENCY_UNIT   (((uint64_t)1U)<<46)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PACKET_COHERENCY_UNIT   (((uint64_t)1U)<<45)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PACKET_COHERENCY_UNIT   (((uint64_t)1U)<<44)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_TR_COHERENCY_UNIT   (((uint64_t)1U)<<43)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_TR_COHERENCY_UNIT   (((uint64_t)1U)<<42)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_EVENT_COHERENCY_UNIT   (((uint64_t)1U)<<41)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_EVENT_COHERENCY_UNIT   (((uint64_t)1U)<<40)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_UTC_WRITE_UNIT3   (((uint64_t)1U)<<39)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_UTC_WRITE_UNIT2   (((uint64_t)1U)<<38)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_UTC_WRITE_UNIT1   (((uint64_t)1U)<<37)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_UTC_WRITE_UNIT0   (((uint64_t)1U)<<36)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_UTC_READ_UNIT3   (((uint64_t)1U)<<35)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_UTC_READ_UNIT2   (((uint64_t)1U)<<34)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_UTC_READ_UNIT1   (((uint64_t)1U)<<33)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_UTC_READ_UNIT0   (((uint64_t)1U)<<32)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PACKET_DMA_UNIT3   (((uint64_t)1U)<<31)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PACKET_DMA_UNIT2   (((uint64_t)1U)<<30)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PACKET_DMA_UNIT1   (((uint64_t)1U)<<29)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PACKET_DMA_UNIT0   (((uint64_t)1U)<<28)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PACKET_DMA_UNIT3   (((uint64_t)1U)<<27)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PACKET_DMA_UNIT2   (((uint64_t)1U)<<26)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PACKET_DMA_UNIT1   (((uint64_t)1U)<<25)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PACKET_DMA_UNIT0   (((uint64_t)1U)<<24)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PREFETCH_UNIT3   (((uint64_t)1U)<<23)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PREFETCH_UNIT2   (((uint64_t)1U)<<22)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PREFETCH_UNIT1   (((uint64_t)1U)<<21)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RX_PREFETCH_UNIT0   (((uint64_t)1U)<<20)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PREFETCH_UNIT3   (((uint64_t)1U)<<19)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PREFETCH_UNIT2   (((uint64_t)1U)<<18)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PREFETCH_UNIT1   (((uint64_t)1U)<<17)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_TX_PREFETCH_UNIT0   (((uint64_t)1U)<<16)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RSVD3   (((uint64_t)1U)<<15)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_READ_DECODER2   (((uint64_t)1U)<<14)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_READ_DECODER1   (((uint64_t)1U)<<13)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_READ_DECODER0   (((uint64_t)1U)<<12)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_WRITE_STATUS_DECODER3   (((uint64_t)1U)<<11)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RSVD2   (((uint64_t)1U)<<10)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_WRITE_STATUS_DECODER1   (((uint64_t)1U)<<9)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_WRITE_STATUS_DECODER0   (((uint64_t)1U)<<8)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_WRITE_ARBITER3   (((uint64_t)1U)<<7)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_RSVD1   (((uint64_t)1U)<<6)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_WRITE_ARBITER1   (((uint64_t)1U)<<5)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_WRITE_ARBITER0   (((uint64_t)1U)<<4)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_COMMAND_ARBITER3   (((uint64_t)1U)<<3)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_COMMAND_ARBITER2   (((uint64_t)1U)<<2)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_COMMAND_ARBITER1   (((uint64_t)1U)<<1)
 
#define CSL_UDMAP_AUTO_CLKGATE_BLOCK_COMMAND_ARBITER0   (((uint64_t)1U)<<0)
 
typedef uint64_t CSL_UdmapAutoClkgateBlock
 

UDMAP VBUSM master interface identification

This enumerator defines the VBUSM master interfaces whose command dispatching threashold can be tuned via virtualization tuning registers.


UDMAP revision 2.1.32.0 and later provides support for setting command dispatching threasholds of UDMAP VBUSM master interfaces via virtualization tuning registers.

#define CSL_UDMAP_MASTER_INTERFACE_PKTDMA_0   ((uint32_t) 0U)
 
#define CSL_UDMAP_MASTER_INTERFACE_PKTDMA_1   ((uint32_t) 1U)
 
#define CSL_UDMAP_MASTER_INTERFACE_UTC_READ   ((uint32_t) 2U)
 
#define CSL_UDMAP_MASTER_INTERFACE_UTC_WRITE   ((uint32_t) 3U)
 
typedef uint32_t CSL_UdmapMasterInterface
 

Data Structures

struct  CSL_UdmapRxFdqThresh
 Receive free descriptor queue threshold information. More...
 
struct  CSL_UdmapRouteTag
 Routing tag information. More...
 
struct  CSL_UdmapRevision
 Module revision information. More...
 
struct  CSL_UdmapRxFlowCfg
 Receive flow configuration information. More...
 
struct  CSL_UdmapTxChanCfg
 Transmit channel configuration information. More...
 
struct  CSL_UdmapRxChanCfg
 Receive channel configuration information. More...
 
struct  CSL_UdmapRT
 Channel runtime configuration information. More...
 
struct  CSL_UdmapCfg
 UDMAP configuration structure. More...
 
struct  CSL_UdmapRxFlowIdFirewallStatus
 UDMAP receive flow id firewall status. More...
 
struct  CSL_UdmapChanStats
 Transmit / receive channel statistics. More...
 

Macros

#define CSL_UDMAP_RXFDQ_CNT   (4U)
 
#define CSL_UDMAP_RXFDQ_THRESH_CNT   (4U)
 
#define CSL_UDMAP_NO_EVENT   (0xFFFFU)
 

Functions

uint32_t CSL_udmapGetRevision (const CSL_UdmapCfg *pCfg)
 Return revision of the UDMAP module. More...
 
int32_t CSL_udmapGetRevisionInfo (const CSL_UdmapCfg *pCfg, CSL_UdmapRevision *pRev)
 Return revision information of the UDMAP module. More...
 
void CSL_udmapGetCfg (CSL_UdmapCfg *pCfg)
 Return UDMAP configuration information. More...
 
void CSL_udmapInitTxChanCfg (CSL_UdmapTxChanCfg *pTxChanCfg)
 Initialize a CSL_UdmapTxChanCfg structure. More...
 
void CSL_udmapInitRxChanCfg (CSL_UdmapRxChanCfg *pRxChanCfg)
 Initialize a CSL_UdmapRxChanCfg structure. More...
 
void CSL_udmapInitRxFlowCfg (CSL_UdmapRxFlowCfg *pFlow)
 Initialize a CSL_UdmapRxFlowCfg structure. More...
 
void CSL_udmapSetPerfCtrl (CSL_UdmapCfg *pCfg, uint32_t rxRetryTimeoutCnt)
 Set performance control parmeters. More...
 
void CSL_udmapSetUtcCtrl (CSL_UdmapCfg *pCfg, uint32_t startingThreadNum)
 Set UTC control parmeters. More...
 
int32_t CSL_udmapRxFlowCfg (CSL_UdmapCfg *pCfg, uint32_t flow, const CSL_UdmapRxFlowCfg *pFlow)
 Configure an RX flow. More...
 
int32_t CSL_udmapRxChanCfg (CSL_UdmapCfg *pCfg, uint32_t chanIdx, const CSL_UdmapRxChanCfg *pRxChanCfg)
 Configure an RX channel. More...
 
int32_t CSL_udmapTxChanCfg (CSL_UdmapCfg *pCfg, uint32_t chanIdx, const CSL_UdmapTxChanCfg *pTxChanCfg)
 Configure a TX channel. More...
 
int32_t CSL_udmapRxChanSetTrEvent (CSL_UdmapCfg *pCfg, uint32_t chanIdx, uint32_t trEventNum)
 Configure an RX channel TR event. More...
 
int32_t CSL_udmapTxChanSetTrEvent (CSL_UdmapCfg *pCfg, uint32_t chanIdx, uint32_t trEventNum)
 Configure an TX channel TR event. More...
 
int32_t CSL_udmapRxChanSetBurstSize (CSL_UdmapCfg *pCfg, uint32_t chanIdx, CSL_UdmapChanBurstSize burstSize)
 Configure RX channel burst size. More...
 
int32_t CSL_udmapTxChanSetBurstSize (CSL_UdmapCfg *pCfg, uint32_t chanIdx, CSL_UdmapChanBurstSize burstSize)
 Configure TX channel burst size. More...
 
int32_t CSL_udmapGetRxRT (const CSL_UdmapCfg *pCfg, uint32_t chanIdx, CSL_UdmapRT *pRT)
 Get an RX channel's real-time register values. More...
 
int32_t CSL_udmapGetTxRT (const CSL_UdmapCfg *pCfg, uint32_t chanIdx, CSL_UdmapRT *pRT)
 Get a TX channel's real-time register values. More...
 
int32_t CSL_udmapSetRxRT (CSL_UdmapCfg *pCfg, uint32_t chanIdx, const CSL_UdmapRT *pRT)
 Set an RX channel's real-time register values. More...
 
int32_t CSL_udmapSetTxRT (CSL_UdmapCfg *pCfg, uint32_t chanIdx, const CSL_UdmapRT *pRT)
 Set a TX channel's real-time register values. More...
 
int32_t CSL_udmapEnableTxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Enable a transmit channel. More...
 
int32_t CSL_udmapDisableTxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Disable a transmit channel. More...
 
int32_t CSL_udmapTeardownTxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx, bool bForce, bool bWait)
 Teardown a transmit channel. More...
 
int32_t CSL_udmapPauseTxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Pause a transmit channel. More...
 
int32_t CSL_udmapUnpauseTxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Un-pause a transmit channel. More...
 
int32_t CSL_udmapTriggerTxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Send a trigger event to a TX channel. More...
 
void CSL_udmapClearTxChanError (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Clear error indication in a transmit channel. More...
 
int32_t CSL_udmapEnableRxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Enable a receive channel. More...
 
int32_t CSL_udmapDisableRxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Disable a receive channel. More...
 
int32_t CSL_udmapTeardownRxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx, bool bForce, bool bWait)
 Teardown a receive channel. More...
 
int32_t CSL_udmapPauseRxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Pause a receive channel. More...
 
int32_t CSL_udmapUnpauseRxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Un-pause a receive channel. More...
 
int32_t CSL_udmapTriggerRxChan (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Send a trigger event to an RX channel. More...
 
void CSL_udmapClearRxChanError (CSL_UdmapCfg *pCfg, uint32_t chanIdx)
 Clear error indication in a receive channel. More...
 
void CSL_udmapCfgRxFlowIdFirewall (CSL_UdmapCfg *pCfg, uint32_t outEvtNum)
 Configure the receive flow ID range firewall. More...
 
bool CSL_udmapGetRxFlowIdFirewallStatus (CSL_UdmapCfg *pCfg, CSL_UdmapRxFlowIdFirewallStatus *pRxFlowIdFwStatus)
 Get receive flow ID range firewall status information. More...
 
void CSL_udmapGetChanStats (const CSL_UdmapCfg *pCfg, uint32_t chanIdx, CSL_UdmapChanDir chanDir, CSL_UdmapChanStats *pChanStats)
 Get channel statistics. More...
 
void CSL_udmapDecChanStats (CSL_UdmapCfg *pCfg, uint32_t chanIdx, CSL_UdmapChanDir chanDir, const CSL_UdmapChanStats *pChanStats)
 Decrement channel statistics. More...
 
int32_t CSL_udmapGetChanPeerReg (const CSL_UdmapCfg *pCfg, uint32_t chanIdx, CSL_UdmapChanDir chanDir, uint32_t regIdx, uint32_t *pVal)
 Read a channel peer register. More...
 
int32_t CSL_udmapSetChanPeerReg (const CSL_UdmapCfg *pCfg, uint32_t chanIdx, CSL_UdmapChanDir chanDir, uint32_t regIdx, uint32_t *pVal)
 Write a TX channel peer register. More...
 
int32_t CSL_udmapEnableLink (CSL_UdmapCfg *pCfg, uint32_t chanIdx, CSL_UdmapChanDir chanDir)
 Enable a directional data flow for a paired link. More...
 
int32_t CSL_udmapSetAutoClockGatingEnable (CSL_UdmapCfg *pCfg, CSL_UdmapAutoClkgateBlock blockIds, bool bEnable)
 Enable or disable automatic dynamic clock gating for one or more blocks. More...
 
int32_t CSL_udmapSetCommandThrottleThreshold (CSL_UdmapCfg *pCfg, CSL_UdmapMasterInterface interfaceId, uint32_t readCountThresh, uint32_t writeCountThresh)
 Set the command throttle threshold for a UDMAP VBUSM master interface. More...