PDK API Guide for J721E
UDMA Driver DRU API

Introduction

This is UDMA driver DRU related configuration parameters and API

Files

file  udma_dru.h
 UDMA DRU related parameters and API.
 

Functions

void Udma_chDruSubmitTr (Udma_ChHandle chHandle, const CSL_UdmapTR *tr)
 This API does a direct TR submission to the specified channel and core ID. More...
 
uint32_t Udma_druGetNumQueue (Udma_DrvHandle drvHandle, uint32_t utcId)
 This API returns the number of queues present in a DRU. More...
 
int32_t Udma_druQueueConfig (Udma_DrvHandle drvHandle, uint32_t utcId, uint32_t queueId, const CSL_DruQueueConfig *queueCfg)
 This API configures the DRU queue non-real time configurations. More...
 
volatile uint64_t * Udma_druGetTriggerRegAddr (Udma_ChHandle chHandle)
 This API returns the software triggers register address for the DRU channel. More...
 
void UdmaDruQueueConfig_init (CSL_DruQueueConfig *queueCfg)
 CSL_DruQueueConfig structure init function. More...
 

UDMA UTC Type

This represents the various types of UTC present in the SOC.

#define UDMA_UTC_TYPE_DRU   (0U)
 
#define UDMA_UTC_TYPE_DRU_VHWA   (1U)
 

Macro Definition Documentation

◆ UDMA_UTC_TYPE_DRU

#define UDMA_UTC_TYPE_DRU   (0U)

◆ UDMA_UTC_TYPE_DRU_VHWA

#define UDMA_UTC_TYPE_DRU_VHWA   (1U)

Function Documentation

◆ Udma_chDruSubmitTr()

void Udma_chDruSubmitTr ( Udma_ChHandle  chHandle,
const CSL_UdmapTR *  tr 
)

This API does a direct TR submission to the specified channel and core ID.

Note: No error checks are performed by this API to get maximum performance

Requirement: DOX_REQ_TAG(PDK-2593)

Parameters
chHandle[IN] UDMA channel handle. This parameter can't be NULL.
tr[IN] Pointer to TR to be submitted.

◆ Udma_druGetNumQueue()

uint32_t Udma_druGetNumQueue ( Udma_DrvHandle  drvHandle,
uint32_t  utcId 
)

This API returns the number of queues present in a DRU.

This could be used to configure all the queues in a DRU after UDMA init.

Requirement: TODO

Parameters
drvHandle[IN] UDMA driver handle pointer passed during Udma_init
utcId[IN] The UTC instance ID. Refer Udma_UtcIdSoc macro for details.
Returns
Udma_ErrorCodes

◆ Udma_druQueueConfig()

int32_t Udma_druQueueConfig ( Udma_DrvHandle  drvHandle,
uint32_t  utcId,
uint32_t  queueId,
const CSL_DruQueueConfig queueCfg 
)

This API configures the DRU queue non-real time configurations.

Note: DRU queue configuration should be done before any data transfer is initiated in a system. So this should be done preferably after Udma_init is called.

Requirement: TODO

Parameters
drvHandle[IN] UDMA driver handle pointer passed during Udma_init
utcId[IN] The UTC instance ID. Refer Udma_UtcIdSoc macro for details.
queueId[IN] Queue ID - 0 to (CSL_DRU_NUM_QUEUE - 1). Refer CSL_DruQueueId. All the DRUs only have 5 queues implemented in the current design. 1 Priority queue and 4 round robin queues. The priority queue is queue 0 the round robin queues are queues 1 - 4.
queueCfg[IN] Pointer to queue configuration.
Returns
Udma_ErrorCodes

◆ Udma_druGetTriggerRegAddr()

volatile uint64_t* Udma_druGetTriggerRegAddr ( Udma_ChHandle  chHandle)

This API returns the software triggers register address for the DRU channel.

This can be used to directly write to the register to trigger the channel through software.

Requirement: DOX_REQ_TAG(PDK-2594)

Parameters
chHandle[IN] UDMA channel handle. This parameter can't be NULL.
Returns
Udma_ErrorCodes

◆ UdmaDruQueueConfig_init()

void UdmaDruQueueConfig_init ( CSL_DruQueueConfig queueCfg)

CSL_DruQueueConfig structure init function.

Parameters
queueCfg[IN] Pointer to CSL_DruQueueConfig structure.