PSDK QNX API Guide
UDMA Driver UTILS API

Files

file  udma_utils.h
 UDMA utility API to make TR, get TR descriptor memory requirement.
 

UDMA TR type

Various UDMA TR type supported

uint32_t UdmaUtils_getRingMemSize (uint8_t mode, uint32_t elemCnt, uint8_t elemSize)
 UDMA get ring size utility API. More...
 
static void UdmaUtils_makeTrpd (void *pTrpd, uint32_t trType, uint32_t trCnt, uint32_t cqRingNum)
 UDMA utility API to make TRPD. Other TRPD make APIs should be called only after this API. More...
 
uint32_t UdmaUtils_getTrSizeEncoded (uint32_t trType)
 Returns the size of TR (encoded) based on the type. More...
 
uint32_t UdmaUtils_getTrSizeBytes (uint32_t trType)
 Returns the size of TR in bytes based on the type. More...
 
CSL_UdmapTR1 * UdmaUtils_getTrpdTr1Pointer (uint8_t *trpdMem, uint32_t trIndex)
 Returns the TR1 pointer in the TRPD memory based on the index. More...
 
uint32_t Udma_trGetEolVal (uint16_t icnt0, uint32_t triggerType)
 Get EOL (End of Line) value based on trigger type and transfer counts. More...
 
#define UDMA_TR_TYPE_0   (CSL_UDMAP_TR_FLAGS_TYPE_1D_DATA_MOVE)
 
#define UDMA_TR_TYPE_1   (CSL_UDMAP_TR_FLAGS_TYPE_2D_DATA_MOVE)
 
#define UDMA_TR_TYPE_2   (CSL_UDMAP_TR_FLAGS_TYPE_3D_DATA_MOVE)
 
#define UDMA_TR_TYPE_3   (CSL_UDMAP_TR_FLAGS_TYPE_4D_DATA_MOVE)
 
#define UDMA_TR_TYPE_4   (CSL_UDMAP_TR_FLAGS_TYPE_4D_DATA_MOVE_FORMATTING)
 
#define UDMA_TR_TYPE_5   (CSL_UDMAP_TR_FLAGS_TYPE_4D_CACHE_WARM)
 
#define UDMA_TR_TYPE_8   (CSL_UDMAP_TR_FLAGS_TYPE_4D_BLOCK_MOVE)
 
#define UDMA_TR_TYPE_9   (CSL_UDMAP_TR_FLAGS_TYPE_4D_BLOCK_MOVE_REPACKING)
 
#define UDMA_TR_TYPE_10   (CSL_UDMAP_TR_FLAGS_TYPE_2D_BLOCK_MOVE)
 
#define UDMA_TR_TYPE_11   (CSL_UDMAP_TR_FLAGS_TYPE_2D_BLOCK_MOVE_REPACKING)
 
#define UDMA_TR_TYPE_15   (CSL_UDMAP_TR_FLAGS_TYPE_4D_BLOCK_MOVE_REPACKING_INDIRECTION)
 
#define UDMA_GET_TRPD_TR15_SIZE(n)   (UDMA_ALIGN_SIZE(sizeof(CSL_UdmapTR15) + ((n) * (sizeof(CSL_UdmapTR15) + 4U))))
 UDMA TR15 packet descriptor memory size in bytes. This contains the CSL_UdmapCppi5TRPD + Padding to sizeof(CSL_UdmapTR15) + N* Type_15 TR (CSL_UdmapTR15) + N* TR response of 4 bytes. Since CSL_UdmapCppi5TRPD header is less than CSL_UdmapTR15, CSL_UdmapTR15 itself is used for size alignment. More...
 
#define UDMA_TR1_OFFSET   (64U)
 Offset for TR1 type TR from TRPD start address. More...
 

Detailed Description

This is UDMA driver utilty parameters and API

Macro Definition Documentation

◆ UDMA_TR_TYPE_0

#define UDMA_TR_TYPE_0   (CSL_UDMAP_TR_FLAGS_TYPE_1D_DATA_MOVE)

◆ UDMA_TR_TYPE_1

#define UDMA_TR_TYPE_1   (CSL_UDMAP_TR_FLAGS_TYPE_2D_DATA_MOVE)

◆ UDMA_TR_TYPE_2

#define UDMA_TR_TYPE_2   (CSL_UDMAP_TR_FLAGS_TYPE_3D_DATA_MOVE)

◆ UDMA_TR_TYPE_3

#define UDMA_TR_TYPE_3   (CSL_UDMAP_TR_FLAGS_TYPE_4D_DATA_MOVE)

◆ UDMA_TR_TYPE_4

#define UDMA_TR_TYPE_4   (CSL_UDMAP_TR_FLAGS_TYPE_4D_DATA_MOVE_FORMATTING)

◆ UDMA_TR_TYPE_5

#define UDMA_TR_TYPE_5   (CSL_UDMAP_TR_FLAGS_TYPE_4D_CACHE_WARM)

◆ UDMA_TR_TYPE_8

#define UDMA_TR_TYPE_8   (CSL_UDMAP_TR_FLAGS_TYPE_4D_BLOCK_MOVE)

◆ UDMA_TR_TYPE_9

#define UDMA_TR_TYPE_9   (CSL_UDMAP_TR_FLAGS_TYPE_4D_BLOCK_MOVE_REPACKING)

◆ UDMA_TR_TYPE_10

#define UDMA_TR_TYPE_10   (CSL_UDMAP_TR_FLAGS_TYPE_2D_BLOCK_MOVE)

◆ UDMA_TR_TYPE_11

#define UDMA_TR_TYPE_11   (CSL_UDMAP_TR_FLAGS_TYPE_2D_BLOCK_MOVE_REPACKING)

◆ UDMA_TR_TYPE_15

#define UDMA_TR_TYPE_15   (CSL_UDMAP_TR_FLAGS_TYPE_4D_BLOCK_MOVE_REPACKING_INDIRECTION)

◆ UDMA_GET_TRPD_TR15_SIZE

#define UDMA_GET_TRPD_TR15_SIZE (   n)    (UDMA_ALIGN_SIZE(sizeof(CSL_UdmapTR15) + ((n) * (sizeof(CSL_UdmapTR15) + 4U))))

UDMA TR15 packet descriptor memory size in bytes. This contains the CSL_UdmapCppi5TRPD + Padding to sizeof(CSL_UdmapTR15) + N* Type_15 TR (CSL_UdmapTR15) + N* TR response of 4 bytes. Since CSL_UdmapCppi5TRPD header is less than CSL_UdmapTR15, CSL_UdmapTR15 itself is used for size alignment.

n - Number of TR's present in the TRPD

◆ UDMA_TR1_OFFSET

#define UDMA_TR1_OFFSET   (64U)

Offset for TR1 type TR from TRPD start address.

Function Documentation

◆ UdmaUtils_getRingMemSize()

uint32_t UdmaUtils_getRingMemSize ( uint8_t  mode,
uint32_t  elemCnt,
uint8_t  elemSize 
)

UDMA get ring size utility API.

Parameters
mode[IN] Ring mode. Refer tisci_msg_rm_ring_cfg_req::mode
elemCnt[IN] Ring element count.
elemSize[IN] Ring element size. Refer Udma_RingElemSize
Returns
Size of the ring memory required in bytes

◆ UdmaUtils_makeTrpd()

static void UdmaUtils_makeTrpd ( void *  pTrpd,
uint32_t  trType,
uint32_t  trCnt,
uint32_t  cqRingNum 
)
inlinestatic

UDMA utility API to make TRPD. Other TRPD make APIs should be called only after this API.

Note: This sets the most commonly used value for all the fields. User can override the fields after calling this API if required.

Parameters
pTrpd[IN] Pointer to TRPD memory
trType[IN] TR type. Refer Udma_TrType
trCnt[IN] Number of TR entries present in the TRPD
cqRingNum[IN] Completion ring number where the TRPD is returned after processing

◆ UdmaUtils_getTrSizeEncoded()

uint32_t UdmaUtils_getTrSizeEncoded ( uint32_t  trType)

Returns the size of TR (encoded) based on the type.

Parameters
trType[IN] TR type. Refer Udma_TrType
Returns
Size of the TR record in encoded value to be programmed in TRPD.

◆ UdmaUtils_getTrSizeBytes()

uint32_t UdmaUtils_getTrSizeBytes ( uint32_t  trType)

Returns the size of TR in bytes based on the type.

Parameters
trType[IN] TR type. Refer Udma_TrType
Returns
Size of the TR record in bytes.

◆ UdmaUtils_getTrpdTr1Pointer()

CSL_UdmapTR1* UdmaUtils_getTrpdTr1Pointer ( uint8_t *  trpdMem,
uint32_t  trIndex 
)

Returns the TR1 pointer in the TRPD memory based on the index.

Parameters
trpdMem[IN] TRPD memory pointer
trIndex[IN] Index to the TR to get the TR1 pointer address
Returns
TR1 pointer address

◆ Udma_trGetEolVal()

uint32_t Udma_trGetEolVal ( uint16_t  icnt0,
uint32_t  triggerType 
)

Get EOL (End of Line) value based on trigger type and transfer counts.

Calculates the appropriate EOL value for UDMA transfer to prevent burst buffer stalls. For triggered transfers, returns the EOL value corresponding to the trigger dimension. Errata i2234/i2159: Returns appropriate EOL setting based on transfer trigger type. For triggered transfers, EOL is determined by trigger type. For non-triggered transfers, checks if icnt0 < 64B to flush burst buffer.

Parameters
icnt0[IN] Inner count dimension 0 (size in bytes for ICNT0 dimension)
triggerType[IN] Trigger type. Refer CSL_UdmapTrFlagsTriggerType
Returns
EOL value to be programmed in TR flags field. Usage: pTr->flags |= CSL_FMK(UDMAP_TR_FLAGS_EOL, Udma_trGetEolVal(pTr->icnt0, triggerType));