|
AM263x MCU+ SDK
08.02.00
|
|
Go to the documentation of this file.
72 #include <drivers/hw_include/cslr_edma.h>
73 #include <drivers/hw_include/cslr_soc.h>
74 #include <drivers/hw_include/tistdtypes.h>
85 #define EDMACC_DMAQNUM_CLR(chNum) \
86 (~((uint32_t) 0x7U << (((chNum) % 8U) * 4U)))
88 #define EDMACC_DMAQNUM_SET(chNum, queNum) \
89 (((uint32_t) 0x7U & (queNum)) << (((chNum) % 8U) * 4U))
91 #define EDMACC_QDMAQNUM_CLR(chNum) \
92 (~((uint32_t) 0x7U << ((chNum) * 4U)))
94 #define EDMACC_QDMAQNUM_SET(chNum, queNum) \
95 (((uint32_t) 0x7U & (queNum)) << ((chNum) * 4U))
103 #define EDMACC_QCHMAP_PAENTRY_CLR ((uint32_t) (~((uint32_t)EDMA_TPCC_QCHMAPN_PAENTRY_MASK)))
105 #define EDMACC_QCHMAP_PAENTRY_SET(paRAMId) \
106 (((EDMA_TPCC_QCHMAPN_PAENTRY_MASK >> EDMA_TPCC_QCHMAPN_PAENTRY_SHIFT) \
107 & (paRAMId)) << EDMA_TPCC_QCHMAPN_PAENTRY_SHIFT) \
109 #define EDMACC_QCHMAP_TRWORD_CLR ((uint32_t) (~((uint32_t)EDMA_TPCC_QCHMAPN_TRWORD_MASK)))
111 #define EDMACC_QCHMAP_TRWORD_SET(paRAMId) \
112 (((EDMA_TPCC_QCHMAPN_TRWORD_MASK >> EDMA_TPCC_QCHMAPN_TRWORD_SHIFT) & \
113 (paRAMId)) << EDMA_TPCC_QCHMAPN_TRWORD_SHIFT)
121 #define EDMA_TRIG_MODE_MANUAL ((uint32_t) 0U)
123 #define EDMA_TRIG_MODE_QDMA ((uint32_t) 1U)
125 #define EDMA_TRIG_MODE_EVENT ((uint32_t) 2U)
135 #define EDMA_CHANNEL_TYPE_DMA ((uint32_t) 0U)
137 #define EDMA_CHANNEL_TYPE_QDMA ((uint32_t) 1U)
147 #define EDMA_XFER_COMPLETE ((uint32_t) 0U)
149 #define EDMA_CC_DMA_EVT_MISS ((uint32_t) 1U)
151 #define EDMA_CC_QDMA_EVT_MISS ((uint32_t) 2U)
163 #define EDMA_SYNC_A ((uint32_t) 0U)
165 #define EDMA_SYNC_AB ((uint32_t) 1U)
176 #define EDMA_ADDRESSING_MODE_LINEAR ((uint32_t) 0U)
178 #define EDMA_ADDRESSING_MODE_FIFO_WRAP ((uint32_t) 1U)
189 #define EDMA_FIFO_WIDTH_8BIT ((uint32_t) EDMA_TPCC_OPT_FWID_FIFOWIDTH8BIT)
191 #define EDMA_FIFO_WIDTH_16BIT ((uint32_t) EDMA_TPCC_OPT_FWID_FIFOWIDTH16BIT)
193 #define EDMA_FIFO_WIDTH_32BIT ((uint32_t) EDMA_TPCC_OPT_FWID_FIFOWIDTH32BIT)
195 #define EDMA_FIFO_WIDTH_64BIT ((uint32_t) EDMA_TPCC_OPT_FWID_FIFOWIDTH64BIT)
197 #define EDMA_FIFO_WIDTH_128BIT ((uint32_t) EDMA_TPCC_OPT_FWID_FIFOWIDTH128BIT)
199 #define EDMA_FIFO_WIDTH_256BIT ((uint32_t) DMA_TPCC_OPT_FWID_FIFOWIDTH256BIT)
209 #define EDMACC_CLR_TCCERR ((uint32_t) EDMA_TPCC_CCERRCLR_TCERR_MASK)
211 #define EDMACC_CLR_QTHRQ0 ((uint32_t) EDMA_TPCC_CCERRCLR_QTHRXCD0_MASK)
213 #define EDMACC_CLR_QTHRQ1 ((uint32_t) EDMA_TPCC_CCERRCLR_QTHRXCD1_MASK)
222 #define EDMA_OPT_TCCHEN_MASK ((uint32_t) EDMA_TPCC_OPT_TCCHEN_MASK)
224 #define EDMA_OPT_ITCCHEN_MASK ((uint32_t) EDMA_TPCC_OPT_ITCCHEN_MASK)
226 #define EDMA_OPT_TCINTEN_MASK ((uint32_t) EDMA_TPCC_OPT_TCINTEN_MASK)
228 #define EDMA_OPT_ITCINTEN_MASK ((uint32_t) EDMA_TPCC_OPT_ITCINTEN_MASK)
230 #define EDMA_OPT_TCC_MASK ((uint32_t) EDMA_TPCC_OPT_TCC_MASK)
232 #define EDMA_OPT_TCC_SHIFT ((uint32_t) EDMA_TPCC_OPT_TCC_SHIFT)
234 #define EDMA_OPT_SYNCDIM_MASK ((uint32_t) EDMA_TPCC_OPT_SYNCDIM_MASK)
236 #define EDMA_OPT_SYNCDIM_SHIFT ((uint32_t) EDMA_TPCC_OPT_SYNCDIM_SHIFT)
238 #define EDMA_OPT_STATIC_MASK ((uint32_t) EDMA_TPCC_OPT_STATIC_MASK)
240 #define EDMA_OPT_STATIC_SHIFT ((uint32_t) EDMA_TPCC_OPT_STATIC_SHIFT)
242 #define EDMACC_OPT_TCC_CLR ((uint32_t) (~EDMA_TPCC_OPT_TCC_MASK))
244 #define EDMACC_OPT_TCC_SET(tcc) \
245 (((EDMA_TPCC_OPT_TCC_MASK >> EDMA_TPCC_OPT_TCC_SHIFT) & (tcc)) << \
246 EDMA_TPCC_OPT_TCC_SHIFT)
255 #define EDMACC_PARAM_ENTRY_OPT ((uint32_t) 0x0U)
257 #define EDMACC_PARAM_ENTRY_SRC ((uint32_t) 0x1U)
259 #define EDMACC_PARAM_ENTRY_ACNT_BCNT ((uint32_t) 0x2U)
261 #define EDMACC_PARAM_ENTRY_DST ((uint32_t) 0x3U)
263 #define EDMACC_PARAM_ENTRY_SRC_DST_BIDX ((uint32_t) 0x4U)
265 #define EDMACC_PARAM_ENTRY_LINK_BCNTRLD ((uint32_t) 0x5U)
267 #define EDMACC_PARAM_ENTRY_SRC_DST_CIDX ((uint32_t) 0x6U)
269 #define EDMACC_PARAM_ENTRY_CCNT ((uint32_t) 0x7U)
271 #define EDMACC_PARAM_FIELD_OFFSET ((uint32_t) 0x4U)
273 #define EDMACC_PARAM_ENTRY_FIELDS ((uint32_t) 0x8U)
278 #define EDMA_NUM_TCC ((uint32_t) SOC_EDMA_NUM_DMACH)
288 #define EDMA_RESOURCE_TYPE_DMA ((uint32_t) 0U)
290 #define EDMA_RESOURCE_TYPE_QDMA ((uint32_t) 1U)
292 #define EDMA_RESOURCE_TYPE_TCC ((uint32_t) 2U)
294 #define EDMA_RESOURCE_TYPE_PARAM ((uint32_t) 3U)
296 #define EDMA_RESOURCE_ALLOC_ANY ((uint32_t) 0xFFFFU)
300 #define EDMA_SET_ALL_BITS ((uint32_t) 0xFFFFFFFFU)
302 #define EDMA_CLR_ALL_BITS ((uint32_t) 0x00000000U)
304 #define EDMACC_COMPL_HANDLER_RETRY_COUNT ((uint32_t) 10U)
306 #define EDMACC_ERR_HANDLER_RETRY_COUNT ((uint32_t) 10U)
397 uint32_t initParamSet;
431 typedef struct Edma_IntrObject_t
487 uint32_t compIntrNumber;
489 uint32_t intrAggEnableAddr;
491 uint32_t intrAggEnableMask;
493 uint32_t intrAggStatusAddr;
495 uint32_t intrAggClearMask;
692 const uint32_t *paRAMId);
982 EDMACCPaRAMEntry *currPaRAM);
999 EDMACCPaRAMEntry *currPaRAM);
1022 const EDMACCPaRAMEntry *newPaRAM);
1046 const EDMACCPaRAMEntry *newPaRAM);
1078 uint32_t paRAMEntry,
1079 uint32_t newPaRAMEntryVal);
1115 uint32_t paRAMEntry);
1145 uint32_t paRAMEntry,
1146 uint32_t newPaRAMEntryVal);
1182 uint32_t paRAMEntry);
1524 uint32_t chainOptions);
1559 void EDMA_linkChannel(uint32_t baseAddr, uint32_t paRAMId1, uint32_t paRAMId2);
int32_t EDMA_registerIntr(EDMA_Handle handle, Edma_IntrObject *intrObj)
Function to register callback function for a TCC.
EDMA Instance Configuration. Pointer to this object is returned as handle by driver open.
Definition: edma/v0/edma.h:520
void EDMA_enableEvtIntrRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum)
Enables the user to enable the transfer completion interrupt generation by the EDMACC for all DMA/QDM...
uint32_t EDMA_peripheralIdGet(uint32_t baseAddr)
This API return the revision Id of the peripheral.
uint32_t EDMA_readIntrStatusRegion(uint32_t baseAddr, uint32_t regionId, uint32_t tccNum)
This function reads interrupt status.
uint32_t EDMA_disableTransferRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum, uint32_t trigMode)
Disable DMA transfer on the specified channel.
EDMA resource allocation structure.
Definition: edma/v0/edma.h:384
uint32_t EDMA_errIntrHighStatusGet(uint32_t baseAddr)
This returns error interrupt status for those events whose event number is greater than 32.
#define SOC_EDMA_NUM_DMACH
Number of DMA Channels.
Definition: cslr_soc_defines.h:87
void EDMA_mapChToEvtQ(uint32_t baseAddr, uint32_t chType, uint32_t chNum, uint32_t evtQNum)
Map channel to Event Queue.
void EDMA_setEvtRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum)
Enables the user to Set an event. This API helps user to manually set events to initiate DMA transfer...
int32_t EDMA_freeTcc(EDMA_Handle handle, uint32_t *tcc)
Function to free the tcc Channel.
uint32_t EDMA_intrStatusHighGetRegion(uint32_t baseAddr, uint32_t regionId)
This function returns interrupt status of those events which are greater than 32.
void EDMA_disableDmaEvtRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum)
Enables the user to Disable an DMA event.
void EDMA_getPaRAM(uint32_t baseAddr, uint32_t paRAMId, EDMACCPaRAMEntry *currPaRAM)
Retrieve existing PaRAM set associated with specified logical channel (DMA/Link).
void EDMA_init(void)
This function initializes the EDMA driver object and controller.
EDMA interrupt configuration object. The object is passed to the EDMA_registerIntr() function....
Definition: edma/v0/edma.h:449
EDMA driver object.
Definition: edma/v0/edma.h:475
uint32_t EDMA_enableTransferRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum, uint32_t trigMode)
Start EDMA transfer on the specified channel.
int32_t EDMA_unregisterIntr(EDMA_Handle handle, Edma_IntrObject *intrObj)
Function to unregister callback function for a TCC.
uint32_t EDMA_getEnabledIntrHighRegion(uint32_t baseAddr, uint32_t regionId)
This function returns interrupt enable status of events which are more than 32.
uint32_t EDMA_getMappedPaRAM(uint32_t baseAddr, uint32_t chNum, uint32_t chType, uint32_t *paramId)
Returns the PaRAM associated with the DMA/QDMA channel.
uint32_t EDMA_getRegionId(EDMA_Handle handle)
Function to get the edma region.
void EDMA_enableChInShadowRegRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chType, uint32_t chNum)
Enable channel to Shadow region mapping.
void EDMA_linkChannel(uint32_t baseAddr, uint32_t paRAMId1, uint32_t paRAMId2)
Link two channels.
int32_t EDMA_freeDmaChannel(EDMA_Handle handle, uint32_t *dmaCh)
Function to free the Dma Channel.
void(* Edma_EventCallback)(Edma_IntrHandle intrHandle, void *appData)
EDMA interrupt callback function prototype.
Definition: edma/v0/edma.h:438
void EDMA_clrIntrRegion(uint32_t baseAddr, uint32_t regionId, uint32_t value)
Enables the user to Clear an Interrupt.
void EDMA_clrEvtRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum)
Enables the user to Clear an event.
uint32_t EDMA_getBaseAddr(EDMA_Handle handle)
Function to get the edma base address.
uint32_t EDMA_getCCErrStatus(uint32_t baseAddr)
This returns EDMA CC error status.
#define SOC_EDMA_NUM_PARAMSETS
Number of PaRAM Sets available.
Definition: cslr_soc_defines.h:91
void EDMA_clearErrorBitsRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum, uint32_t evtQNum)
Clears Event Register and Error Register for a specific DMA channel and brings back EDMA to its initi...
int32_t EDMA_allocDmaChannel(EDMA_Handle handle, uint32_t *dmaCh)
Function to allocate the Dma Channel.
void EDMA_close(EDMA_Handle handle)
Function to close a EDMA peripheral specified by the EDMA handle.
void EDMA_dmaSetPaRAMEntry(uint32_t baseAddr, uint32_t paRAMId, uint32_t paRAMEntry, uint32_t newPaRAMEntryVal)
Set a particular PaRAM set entry of the specified PaRAM set.
void EDMA_qdmaSetPaRAM(uint32_t baseAddr, uint32_t paRAMId, const EDMACCPaRAMEntry *newPaRAM)
Copy the user specified PaRAM Set onto the PaRAM Set associated with the logical channel (QDMA only).
EDMA instance attributes - used during init time.
Definition: edma/v0/edma.h:496
void EDMA_clrMissEvtRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum)
Enables the user to Clear any missed event.
void EDMA_clrCCErr(uint32_t baseAddr, uint32_t flags)
Enables the user to Clear any Channel controller Errors.
void EDMA_enableDmaEvtRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum)
Enables the user to enable an DMA event.
uint32_t gEdmaConfigNum
Externally defined driver configuration array size.
uint32_t EDMA_getIntrStatusRegion(uint32_t baseAddr, uint32_t regionId)
This function returns interrupts status of those events which is less than 32.
int32_t EDMA_allocQdmaChannel(EDMA_Handle handle, uint32_t *qdmaCh)
Function to allocate the Dma Channel.
void EDMA_channelToParamMap(uint32_t baseAddr, uint32_t channel, uint32_t paramSet)
This function maps DMA channel to any of the PaRAM sets in the PaRAM memory map.
uint32_t EDMA_freeChannelRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chType, uint32_t chNum, uint32_t trigMode, uint32_t tccNum, uint32_t evtQNum)
Free the specified channel (DMA/QDMA/Link) and its associated resources (PaRAM Set,...
void EDMA_enableQdmaEvtRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum)
Enables the user to enable an QDMA event.
void EDMA_initParamsInit(EDMA_InitParams *initParam)
Structure initialization function for EDMA_InitParams.
EDMA initialization structure used for EDMAInitialize.
Definition: edma/v0/edma.h:408
void EDMA_setQdmaTrigWord(uint32_t baseAddr, uint32_t chNum, uint32_t trigWord)
Assign a Trigger Word to the specified QDMA channel.
struct Edma_IntrObject_t * Edma_IntrHandle
EDMA interrupt handle returned from EDMA_registerIntr() function.
Definition: edma/v0/edma.h:433
#define EDMA_NUM_TCC
Definition: edma/v0/edma.h:295
void EDMA_unmapChToEvtQ(uint32_t baseAddr, uint32_t chType, uint32_t chNum)
Remove Mapping of channel to Event Queue.
uint32_t EDMA_qdmaGetErrIntrStatus(uint32_t baseAddr)
This returns QDMA error interrupt status.
Opaque Hwi object used with the Hwi APIs.
Definition: HwiP.h:91
int32_t EDMA_freeParam(EDMA_Handle handle, uint32_t *param)
Function to free the Param.
EDMA_Handle EDMA_open(uint32_t index, const EDMA_Params *prms)
This function opens a given EDMA instance.
void EDMA_chainChannel(uint32_t baseAddr, uint32_t paRAMId1, uint32_t chId2, uint32_t chainOptions)
Chain the two specified channels.
void EDMA_qdmaGetPaRAM(uint32_t baseAddr, uint32_t paRAMId, EDMACCPaRAMEntry *currPaRAM)
Retrieve existing PaRAM set associated with specified logical channel (QDMA).
uint32_t EDMA_getErrIntrStatus(uint32_t baseAddr)
This returns error interrupt status for those events whose event number is less than 32.
EDMA Parameter RAM Set in User Configurable format This is a mapping of the EDMA PaRAM set provided t...
Definition: edma/v0/edma.h:334
void * EDMA_Handle
A handle that is returned from a EDMA_open() call.
Definition: edma/v0/edma.h:469
void EDMA_qdmaClrMissEvtRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum)
Enables the user to Clear any QDMA missed event.
uint32_t EDMA_configureChannelRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chType, uint32_t chNum, uint32_t tccNum, uint32_t paramId, uint32_t evtQNum)
Request a DMA/QDMA/Link channel.
int32_t EDMA_allocParam(EDMA_Handle handle, uint32_t *param)
Function to allocate the TCC.
void EDMA_deinit(void)
This function Deinitializes the EDMA driver object and controller.
EDMA_Handle EDMA_getHandle(uint32_t index)
This function returns the handle of an open EDMA Instance from the instance index.
uint32_t EDMA_dmaGetPaRAMEntry(uint32_t baseAddr, uint32_t paRAMId, uint32_t paRAMEntry)
Get a particular PaRAM entry of the specified PaRAM set.
int32_t EDMA_freeQdmaChannel(EDMA_Handle handle, uint32_t *qdmaCh)
Function to free the Qdma Channel.
uint32_t EDMA_getEnabledIntrRegion(uint32_t baseAddr, uint32_t regionId)
This function returns interrupt enable status of events which are less than 32.
void EDMA_setPaRAM(uint32_t baseAddr, uint32_t paRAMId, const EDMACCPaRAMEntry *newPaRAM)
Copy the user specified PaRAM Set onto the PaRAM Set associated with the logical channel (DMA/Link).
void EDMA_mapQdmaChToPaRAM(uint32_t baseAddr, uint32_t chNum, const uint32_t *paRAMId)
Enables the user to map a QDMA channel to PaRAM set This API Needs to be called before programming th...
EDMA open parameters passed to EDMA_open() function.
Definition: edma/v0/edma.h:425
EDMA_Config gEdmaConfig[]
Externally defined driver configuration array.
uint32_t EDMA_qdmaGetPaRAMEntry(uint32_t baseAddr, uint32_t paRAMId, uint32_t paRAMEntry)
Get a particular PaRAM entry of the specified PaRAM set.
EDMA_InitParams gEdmaInitParams[]
Externally defined driver init parameters array.
uint32_t EDMA_isInterruptEnabled(EDMA_Handle handle)
Function to check if EDMA interrupt is enabled.
void EDMA_disableQdmaEvtRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum)
Enables the user to disable an QDMA event.
void EDMA_ccPaRAMEntry_init(EDMACCPaRAMEntry *paramEntry)
Clear a PaRAM Set .
void EDMA_qdmaSetPaRAMEntry(uint32_t baseAddr, uint32_t paRAMId, uint32_t paRAMEntry, uint32_t newPaRAMEntryVal)
Set a particular PaRAM set entry of the specified PaRAM set.
void EDMA_disableChInShadowRegRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chType, uint32_t chNum)
Disable channel to Shadow region mapping.
void EDMA_disableEvtIntrRegion(uint32_t baseAddr, uint32_t regionId, uint32_t chNum)
Enables the user to clear CC interrupts.
int32_t EDMA_allocTcc(EDMA_Handle handle, uint32_t *tcc)
Function to allocate the Qdma Channel.