PDK API Guide for J721E
UDMA Driver API

Introduction

This is UDMA driver init, deinit and common API.

Files

file  udma.h
 UDMA Driver API/interface file.
 

Data Structures

struct  Udma_InitPrms
 UDMA initialization parameters. More...
 
struct  Udma_DrvHandle
 UDMA driver object. More...
 

Functions

int32_t Udma_init (Udma_DrvHandle drvHandle, const Udma_InitPrms *initPrms)
 UDMA init function. More...
 
int32_t Udma_deinit (Udma_DrvHandle drvHandle)
 UDMA deinit function. More...
 
void UdmaInitPrms_init (uint32_t instId, Udma_InitPrms *initPrms)
 Udma_InitPrms structure init function. More...
 
static uint64_t Udma_defaultVirtToPhyFxn (const void *virtAddr, uint32_t chNum, void *appData)
 Default virtual to physical translation function. More...
 
static void * Udma_defaultPhyToVirtFxn (uint64_t phyAddr, uint32_t chNum, void *appData)
 Default physical to virtual translation function. More...
 

Typedefs

typedef uint64_t(* Udma_VirtToPhyFxn) (const void *virtAddr, uint32_t chNum, void *appData)
 UDMA Virtual to Physical address translation callback function. More...
 
typedef void *(* Udma_PhyToVirtFxn) (uint64_t phyAddr, uint32_t chNum, void *appData)
 UDMA Physical to Virtual address translation callback function. More...
 
typedef void(* Udma_PrintFxn) (const char *str)
 UDMA info/debug print function prototype. More...
 

UDMA Ring Local API's function prototypes

Function prototypes for various local UDMA Ring API's. For Normal RA / LCDMA RA, function pointers will be used to call the appropriate function.

typedef void(* Udma_ringHandleClearRegsFxn) (Udma_RingHandle ringHandle)
 UDMA Ring handle clear register function protype. More...
 
typedef void(* Udma_ringSetDoorBellFxn) (Udma_RingHandle ringHandle, int32_t count)
 UDMA Ring set doorbell function protype. More...
 
typedef void(* Udma_ringPrimeFxn) (Udma_RingHandle ringHandle, uint64_t phyDescMem)
 UDMA Ring prime function protype. More...
 
typedef void(* Udma_ringPrimeReadFxn) (Udma_RingHandle ringHandle, uint64_t *phyDescMem)
 UDMA Ring prime read function protype. More...
 
typedef void *(* Udma_ringGetMemPtrFxn) (Udma_RingHandle ringHandle)
 UDMA Ring get mem pointer function protype. More...
 
typedef uint32_t(* Udma_ringGetModeFxn) (Udma_RingHandle ringHandle)
 UDMA Ring get ring mode function protype. More...
 
typedef uint32_t(* Udma_ringGetElementCntFxn) (Udma_RingHandle ringHandle)
 UDMA Ring get element count function protype. More...
 
typedef uint32_t(* Udma_ringGetForwardRingOccFxn) (Udma_RingHandle ringHandle)
 UDMA Ring get forward ring occupancy function protype. More...
 
typedef uint32_t(* Udma_ringGetReverseRingOccFxn) (Udma_RingHandle ringHandle)
 UDMA Ring get reverse ring occupancy function protype. More...
 
typedef uint32_t(* Udma_ringGetWrIdxFxn) (Udma_RingHandle ringHandle)
 UDMA Ring get write index value function protype. More...
 
typedef uint32_t(* Udma_ringGetRdIdxFxn) (Udma_RingHandle ringHandle)
 UDMA Ring get read index value function protype. More...
 
typedef int32_t(* Udma_ringDequeueRawFxn) (Udma_DrvHandle drvHandle, Udma_RingHandle ringHandle, uint64_t *phyDescMem)
 UDMA Ring dequeue raw function protype. More...
 
typedef int32_t(* Udma_ringQueueRawFxn) (Udma_DrvHandle drvHandle, Udma_RingHandle ringHandle, uint64_t phyDescMem)
 UDMA Ring queue raw function protype. More...
 
typedef int32_t(* Udma_ringFlushRawFxn) (Udma_DrvHandle drvHandle, Udma_RingHandle ringHandle, uint64_t *phyDescMem)
 UDMA Ring flush raw function protype. More...
 
typedef void(* Udma_ringSetCfgFxn) (Udma_DrvHandle drvHandle, Udma_RingHandle ringHandle, const Udma_RingPrms *ringPrms)
 UDMA Ring set Cfg function protype. More...
 

Typedef Documentation

typedef uint64_t(* Udma_VirtToPhyFxn) (const void *virtAddr, uint32_t chNum, void *appData)

UDMA Virtual to Physical address translation callback function.

This function is used by the driver to convert virtual address to physical address.

Parameters
virtAddr[IN] Virtual address
chNum[IN] Channel number passed during channel open
appData[IN] Callback pointer passed during channel open
Returns
Corresponding physical address
typedef void*(* Udma_PhyToVirtFxn) (uint64_t phyAddr, uint32_t chNum, void *appData)

UDMA Physical to Virtual address translation callback function.

This function is used by the driver to convert physical address to virtual address.

Parameters
phyAddr[IN] Physical address
chNum[IN] Channel number passed during channel open
appData[IN] Callback pointer passed during channel open
Returns
Corresponding virtual address
typedef void(* Udma_PrintFxn) (const char *str)

UDMA info/debug print function prototype.

This function is used by the driver to print info/debug messages.

Parameters
str[OUT] Info string to print.
typedef void(* Udma_ringHandleClearRegsFxn) (Udma_RingHandle ringHandle)

UDMA Ring handle clear register function protype.

typedef void(* Udma_ringSetDoorBellFxn) (Udma_RingHandle ringHandle, int32_t count)

UDMA Ring set doorbell function protype.

typedef void(* Udma_ringPrimeFxn) (Udma_RingHandle ringHandle, uint64_t phyDescMem)

UDMA Ring prime function protype.

typedef void(* Udma_ringPrimeReadFxn) (Udma_RingHandle ringHandle, uint64_t *phyDescMem)

UDMA Ring prime read function protype.

typedef void*(* Udma_ringGetMemPtrFxn) (Udma_RingHandle ringHandle)

UDMA Ring get mem pointer function protype.

typedef uint32_t(* Udma_ringGetModeFxn) (Udma_RingHandle ringHandle)

UDMA Ring get ring mode function protype.

typedef uint32_t(* Udma_ringGetElementCntFxn) (Udma_RingHandle ringHandle)

UDMA Ring get element count function protype.

typedef uint32_t(* Udma_ringGetForwardRingOccFxn) (Udma_RingHandle ringHandle)

UDMA Ring get forward ring occupancy function protype.

typedef uint32_t(* Udma_ringGetReverseRingOccFxn) (Udma_RingHandle ringHandle)

UDMA Ring get reverse ring occupancy function protype.

typedef uint32_t(* Udma_ringGetWrIdxFxn) (Udma_RingHandle ringHandle)

UDMA Ring get write index value function protype.

typedef uint32_t(* Udma_ringGetRdIdxFxn) (Udma_RingHandle ringHandle)

UDMA Ring get read index value function protype.

typedef int32_t(* Udma_ringDequeueRawFxn) (Udma_DrvHandle drvHandle, Udma_RingHandle ringHandle, uint64_t *phyDescMem)

UDMA Ring dequeue raw function protype.

typedef int32_t(* Udma_ringQueueRawFxn) (Udma_DrvHandle drvHandle, Udma_RingHandle ringHandle, uint64_t phyDescMem)

UDMA Ring queue raw function protype.

typedef int32_t(* Udma_ringFlushRawFxn) (Udma_DrvHandle drvHandle, Udma_RingHandle ringHandle, uint64_t *phyDescMem)

UDMA Ring flush raw function protype.

typedef void(* Udma_ringSetCfgFxn) (Udma_DrvHandle drvHandle, Udma_RingHandle ringHandle, const Udma_RingPrms *ringPrms)

UDMA Ring set Cfg function protype.

Function Documentation

int32_t Udma_init ( Udma_DrvHandle  drvHandle,
const Udma_InitPrms initPrms 
)

UDMA init function.

Initializes the UDMA drivers. This function should be called before calling any of driver API's and should be called only once.

Requirement: DOX_REQ_TAG(PDK-2576)

Parameters
drvHandle[IN] UDMA driver handle - static memory needs to allocated by caller. This is used by the driver to maintain the driver states. This cannot be NULL.
initPrms[IN] UDMA Initialization parameters. If NULL is passed, the default parameters will be assumed - address translation disabled.
Returns
Udma_ErrorCodes
int32_t Udma_deinit ( Udma_DrvHandle  drvHandle)

UDMA deinit function.

Uninitializes the drivers and the hardware and should be called during system shutdown. Should not be called if Udma_init() is not called.

Requirement: DOX_REQ_TAG(PDK-2577)

Parameters
drvHandle[IN] UDMA driver handle pointer passed during Udma_init
Returns
Udma_ErrorCodes
void UdmaInitPrms_init ( uint32_t  instId,
Udma_InitPrms initPrms 
)

Udma_InitPrms structure init function.

Parameters
instId[IN] Udma_InstanceId
initPrms[IN] Pointer to Udma_InitPrms structure.
static uint64_t Udma_defaultVirtToPhyFxn ( const void *  virtAddr,
uint32_t  chNum,
void *  appData 
)
inlinestatic

Default virtual to physical translation function.

Parameters
virtAddr[IN] Virtual address
chNum[IN] Channel number passed during channel open. Note: When called for functions which is not channel dependent (like ring alloc), this parameter will be set to UDMA_DMA_CH_INVALID.
appData[IN] Callback pointer passed during channel open. Note: When called for functions which is not channel dependent (like ring alloc), this parameter will be set to NULL.
Returns
Corresponding physical address
static void * Udma_defaultPhyToVirtFxn ( uint64_t  phyAddr,
uint32_t  chNum,
void *  appData 
)
inlinestatic

Default physical to virtual translation function.

Parameters
phyAddr[IN] Physical address
chNum[IN] Channel number passed during channel open. Note: When called for functions which is not channel dependent (like ring alloc), this parameter will be set to UDMA_DMA_CH_INVALID.
appData[IN] Callback pointer passed during channel open. Note: When called for functions which is not channel dependent (like ring alloc), this parameter will be set to NULL.
Returns
Corresponding virtual address