📄 csl_edma3.h
字号:
* its address is passed as a parameter to the CSL_edma3GetActivityStatus()
* /CSL_edma3GetHwStatus().
*/
typedef struct CSL_Edma3ActivityStat {
/** Number of outstanding completion requests */
Uint16 outstandingTcc;
/** BitMask of the que active in the Channel Controller */
CSL_BitMask16 queActive;
/** Indicates if the Channel Controller is active at all */
Bool active;
/** Indicates whether any QDMA events are active */
Bool qevtActive;
/** Indicates whether any EDMA events are active */
Bool evtActive;
/** Indicates whether the TR processing/submission logic is active*/
Bool trActive;
} CSL_Edma3ActivityStat;
/** @brief Edma Controller Que Status.
*
* An object of this type is allocated by the user and
* its address is passed as a parameter to the CSL_edma3GetQueStatus()
* /CSL_edma3GetHwStatus().
*/
typedef struct CSL_Edma3QueStat {
/** Input field: Event Que. This needs to be specified by the user
* before invocation of the above API
*/
CSL_Edma3Que que;
/** Output field: The number of valid entries in a queue has exceeded the
* threshold specified in QWMTHRA has been exceeded
*/
Bool exceed;
/** Output field: The most entries that have been in Que since reset/last
* time the watermark was cleared
*/
Uint8 waterMark;
/** Output field: Number of valid entries in Que N*/
Uint8 numVal;
/** Output field: Start pointer/Head of the queue */
Uint8 startPtr;
} CSL_Edma3QueStat;
/** @brief Edma Control/Query Command Structure for querying region specific
* attributes.
*
* An object of this type is allocated by the user and
* its address is passed as a parameter to the
* CSL_edma3GetHwStatus/CSL_edma3HwControl with the relevant command.
*/
typedef struct CSL_Edma3CmdRegion {
/** Input field:- this field needs to be initialized by the user before
* issuing the query/command
*/
Int region;
/** Input/Output field:-this needs to be filled by the user in case
* of issuing a COMMAND or it will be filled in by the CSL when
* used with a QUERY
*/
CSL_BitMask32 regionVal;
} CSL_Edma3CmdRegion;
/** @brief Edma Control/Query Command Structure for querying qdma region access
* enable attributes.
*
* An object of this type is allocated by the user and
* its address is passed as a parameter to the
* CSL_edma3GetHwStatus/CSL_edma3HwControl with the relevant command.
*/
typedef struct CSL_Edma3CmdQrae {
/** this field needs to be initialized by the user before issuing
* the query/command
*/
Int region;
/** this needs to be filled by the user in case of issuing a
* COMMAND or it will be filled in by the CSL when used with a QUERY
*/
CSL_BitMask32 qrae;
} CSL_Edma3CmdQrae;
/** @brief Edma Control/Query Control Command structure for issuing commands
* for Interrupt related APIs
* An object of this type is allocated by the user and
* its address is passed to the Control API.
*/
typedef struct CSL_Edma3CmdIntr{
/** Input field:- this field needs to be initialized by the user before
* issuing the query/command
*/
Int region;
/** Input/Output field:- this needs to be filled by the user in case
* of issuing a COMMAND or it will be filled in by the CSL when used with
* a QUERY
*/
CSL_BitMask32 intr;
/** Input/Output:- this needs to be filled by the user in case of issuing a
* COMMAND or it will be filled in by the CSL when used with a QUERY
*/
CSL_BitMask32 intrh;
} CSL_Edma3CmdIntr;
/** @brief Edma Command Structure for setting region specific
* attributes.
*
* An object of this type is allocated by the user and
* its address is passed as a parameter to the CSL_edma3GetHwStatus
* when
*/
typedef struct CSL_Edma3CmdDrae {
/** this field needs to be initialiazed by the user before issuing
* the command specifying the region for which attributes need to be set
*/
Int region;
/** DRAE Setting for the region */
CSL_BitMask32 drae;
/** DRAEH Setting for the region */
CSL_BitMask32 draeh;
} CSL_Edma3CmdDrae;
/** @brief Edma Command Structure used for setting Event Que priority level
*
* An object of this type is allocated by the user and
* its address is passed as a parameter to the CSL_edma3HwControl API.
*/
typedef struct CSL_Edma3CmdQuePri {
/** Specifies the Que that needs a priority change */
CSL_Edma3Que que;
/** Que priority */
CSL_Edma3QuePri pri;
} CSL_Edma3CmdQuePri;
/** @brief Edma Command Structure used for setting Event Que threshold level
*
* An object of this type is allocated by the user and
* its address is passed as a parameter to the CSL_edma3HwControl API.
*/
typedef struct CSL_Edma3CmdQueThr {
/** Specifies the Que that needs a change in the threshold setting */
CSL_Edma3Que que;
/** Que threshold setting */
CSL_Edma3QueThr threshold;
} CSL_Edma3CmdQueThr;
/** @brief This will have the base-address information for the module
* instance
*/
typedef struct {
/** Base-address of the peripheral registers */
CSL_Edma3ccRegsOvly regs;
} CSL_Edma3ModuleBaseAddress;
/** @brief Edma Channel parameter structure used for opening a channel
*/
typedef struct {
/** Region Number */
Int regionNum;
/** Channel number */
Int chaNum;
} CSL_Edma3ChannelAttr;
/** @brief Edma Channel Error .
*
* An object of this type is allocated by the user and
* its address is passed as a parameter to the CSL_edma3GetChannelError()
* /CSL_edma3GetHwStatus()/ CSL_edma3ChannelErrorClear()
* /CSL_edma3HwChannelControl().
*/
typedef struct CSL_Edma3ChannelErr {
/** a TRUE indicates an event is missed on this channel. */
Bool missed;
/** a TRUE indicates an event that no events on this channel will be
* prioritized till this is cleared. This being TRUE does NOT necessarily
* mean it is an error. ONLY if both missed and ser are set, this kind of
* error need to be cleared.
*/
Bool secEvt;
} CSL_Edma3ChannelErr;
/** @brief QDMA Edma Channel Setup
*
* An array of such objects are allocated by the user and
* address initialized in the CSL_Edma3HwSetup structure which is passed
* CSL_edma3HwSetup()
*/
typedef struct CSL_Edma3HwQdmaChannelSetup {
/** Que number for the channel */
CSL_Edma3Que que;
/** Parameter set mapping for the channel. */
Uint16 paramNum;
/** Trigger word for the QDMA channels. */
Uint8 triggerWord;
} CSL_Edma3HwQdmaChannelSetup;
/** @brief QDMA Edma Channel Setup
*
* An array of such objects are allocated by the user and
* address initialized in the CSL_Edma3HwSetup structure which is passed
* CSL_edma3HwSetup()
*/
typedef struct CSL_Edma3HwDmaChannelSetup {
/** Que number for the channel */
CSL_Edma3Que que;
#ifdef CSL_EDMA3_CHMAPEXIST
/** Parameter set mapping for the channel. This may not be initialized
* for Edma channels on devices that do not have CHMAPEXIST.
*/
Uint16 paramNum;
#endif
} CSL_Edma3HwDmaChannelSetup;
/** @brief Edma Hw Setup Structure
*/
typedef struct {
/** Edma Hw Channel setup */
CSL_Edma3HwDmaChannelSetup *dmaChaSetup;
/** QEdma Hw Channel setup */
CSL_Edma3HwQdmaChannelSetup *qdmaChaSetup;
} CSL_Edma3HwSetup;
/**************************************************************************\
* EDMA global function declarations
\**************************************************************************/
/*
* =============================================================================
* @func CSL_edma3Init
*
* @desc
* This is EDMA module's init function. This initializes the context Object
* variables.Needs to be invoked before using EDMA module.
*
* @arg pContext
* Context information for edma
*
* @ret CSL_Status
* CSL_SOK - Always returns
*
* @eg
* CSL_edma3Init (NULL);
* =============================================================================
*/
extern CSL_Status CSL_edma3Init (
CSL_Edma3Context *pContext
);
/*
*============================================================================
* @func CSL_edma3Open
*
* @desc
* Returns a handle to the EDMA Module. This handle is further used
* for invoking all module level control APIs.This call enables
* the relocatability of code since the handle can be subsequently used for
* Module level control commands rather than the usage of of the register
* layer base address directly.
*
* @arg edmaObj
* Pointer to the object to which a handle is returned.
*
* @arg edmaNum
* Instance Number of the EDMA
*
* @arg param
* Pointer to module specific parameters
*
* @arg status
* pointer for returning status of the function call
*
* @ret CSL_Edma3Handle
* Valid edma handle will be returned if status value is equal to
* CSL_SOK
*
* @eg
* CSL_Edma3Handle hModule;
CSL_Edma3Obj edmaObj;
CSL_Edma3Context context;
CSL_Status status;
// Module Initialization
CSL_edma3Init(&context);
// Module Level Open
hModule = CSL_edma3Open(&edmaObj,CSL_EDMA3,NULL,&status);
*
* ===========================================================================
*/
extern CSL_Edma3Handle CSL_edma3Open (
CSL_Edma3Obj *edmaObj,
CSL_InstNum edmaNum,
CSL_Edma3ModuleAttr *attr,
CSL_Status *status
);
/*
*============================================================================
* @func CSL_edma3Close
*
* @desc
* The EDMA module handle is invalidated and in order to use the EDMA module
* it needs to be opened again.
*
* @arg hEdma
* Handle to the EDMA module
*
* @ret CSL_Status
* CSL_SOK - Close successful
* CSL_ESYS_BADHANDLE - Invalid handle
*
* @eg
* CSL_Edma3Handle hModule;
CSL_Edma3Obj edmaObj;
CSL_Edma3Context context;
CSL_Status status;
// Module Initialization
CSL_edma3Init(&context);
// Module Level Open
hModule = CSL_edma3Open(&edmaObj,CSL_EDMA3,NULL,&status);
// Close Module
CSL_edma3Close(hModule);
*
* ===========================================================================
*/
extern CSL_Status CSL_edma3Close (
CSL_Edma3Handle hEdma
);
/*
* =============================================================================
* @func CSL_edma3HwSetup
*
* @desc
* Does a module level HW setup of EDMA. This programs the
* Channel to Param mapping, Channel to Que map and the trigger
* word (if applicable) of ALL channels (DMA, QDMA).
*
* @arg hMod
* Edma Module Handle
*
* @arg setup
* Pointer to hardware setup structure containing the setup parameters
* of all DMA, QDMA channels.
*
* @ret CSL_Status
* CSL_SOK - Hardware setup successful
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -