17#ifndef FSL_COMPONENT_ID
18#define FSL_COMPONENT_ID "platform.drivers.edma"
21#define EDMA_TRANSFER_ENABLED_MASK 0x80U
41#if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
47static const IRQn_Type
s_edmaIRQNumber[][FSL_FEATURE_EDMA_MODULE_CHANNEL] = DMA_CHN_IRQS;
83 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
85 assert(((uint32_t)tcd & 0x1FU) == 0);
119#if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
126 base->INT = 0xFFFFFFFFU;
127 base->ERR = 0xFFFFFFFFU;
130 tmpreg &= ~(DMA_CR_ERCA_MASK | DMA_CR_HOE_MASK | DMA_CR_CLM_MASK | DMA_CR_EDBG_MASK);
131 tmpreg |= (DMA_CR_ERCA(
config->enableRoundRobinArbitration) | DMA_CR_HOE(
config->enableHaltOnError) |
132 DMA_CR_CLM(
config->enableContinuousLinkMode) | DMA_CR_EDBG(
config->enableDebugMode) | DMA_CR_EMLM(
true));
145#if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
172 config->enableRoundRobinArbitration =
false;
173 config->enableHaltOnError =
true;
174 config->enableContinuousLinkMode =
false;
175 config->enableDebugMode =
false;
191 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
223 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
225 assert(((uint32_t)nextTcd & 0x1FU) == 0);
242 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
247 tmpreg = base->TCD[
channel].NBYTES_MLOFFYES;
248 tmpreg &= ~(DMA_NBYTES_MLOFFYES_SMLOE_MASK | DMA_NBYTES_MLOFFYES_DMLOE_MASK | DMA_NBYTES_MLOFFYES_MLOFF_MASK);
250 (DMA_NBYTES_MLOFFYES_SMLOE(
config->enableSrcMinorOffset) |
251 DMA_NBYTES_MLOFFYES_DMLOE(
config->enableDestMinorOffset) | DMA_NBYTES_MLOFFYES_MLOFF(
config->minorOffset));
252 base->TCD[
channel].NBYTES_MLOFFYES = tmpreg;
273 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
274 assert(linkedChannel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
295 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
297 base->TCD[
channel].CSR = (base->TCD[
channel].CSR & (~DMA_CSR_BWC_MASK)) | DMA_CSR_BWC(bandWidth);
314 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
318 tmpreg = base->TCD[
channel].ATTR & (~(DMA_ATTR_SMOD_MASK | DMA_ATTR_DMOD_MASK));
319 base->TCD[
channel].ATTR = tmpreg | DMA_ATTR_DMOD(destModulo) | DMA_ATTR_SMOD(srcModulo);
332 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
337 base->EEI |= (0x1U <<
channel);
343 base->TCD[
channel].CSR |= DMA_CSR_INTMAJOR_MASK;
349 base->TCD[
channel].CSR |= DMA_CSR_INTHALF_MASK;
363 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
368 base->EEI &= ~(0x1U <<
channel);
374 base->TCD[
channel].CSR &= ~DMA_CSR_INTMAJOR_MASK;
380 base->TCD[
channel].CSR &= ~DMA_CSR_INTHALF_MASK;
395 assert(((uint32_t)tcd & 0x1FU) == 0);
408 tcd->
CSR = DMA_CSR_DREQ(
true);
442 assert(((uint32_t)tcd & 0x1FU) == 0);
444 assert(((uint32_t)nextTcd & 0x1FU) == 0);
451 tcd->
ATTR = DMA_ATTR_SSIZE(
config->srcTransferSize) | DMA_ATTR_DSIZE(
config->destTransferSize);
475 tcd->
CSR = (tcd->
CSR | DMA_CSR_ESG_MASK) & ~DMA_CSR_DREQ_MASK;
491 assert(((uint32_t)tcd & 0x1FU) == 0);
496 ~(DMA_NBYTES_MLOFFYES_SMLOE_MASK | DMA_NBYTES_MLOFFYES_DMLOE_MASK | DMA_NBYTES_MLOFFYES_MLOFF_MASK);
498 (DMA_NBYTES_MLOFFYES_SMLOE(
config->enableSrcMinorOffset) |
499 DMA_NBYTES_MLOFFYES_DMLOE(
config->enableDestMinorOffset) | DMA_NBYTES_MLOFFYES_MLOFF(
config->minorOffset));
521 assert(((uint32_t)tcd & 0x1FU) == 0);
522 assert(linkedChannel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
529 tcd->
CITER |= DMA_CITER_ELINKYES_ELINK_MASK;
530 tcd->
BITER |= DMA_BITER_ELINKYES_ELINK_MASK;
532 tmpreg = tcd->
CITER & (~DMA_CITER_ELINKYES_LINKCH_MASK);
533 tmpreg |= DMA_CITER_ELINKYES_LINKCH(linkedChannel);
535 tmpreg = tcd->
BITER & (~DMA_BITER_ELINKYES_LINKCH_MASK);
536 tmpreg |= DMA_BITER_ELINKYES_LINKCH(linkedChannel);
544 tcd->
CSR |= DMA_CSR_MAJORELINK_MASK;
546 tmpreg = tcd->
CSR & (~DMA_CSR_MAJORLINKCH_MASK);
547 tcd->
CSR = tmpreg | DMA_CSR_MAJORLINKCH(linkedChannel);
551 tcd->
CITER &= ~DMA_CITER_ELINKYES_ELINK_MASK;
552 tcd->
BITER &= ~DMA_BITER_ELINKYES_ELINK_MASK;
553 tcd->
CSR &= ~DMA_CSR_MAJORELINK_MASK;
571 assert(((uint32_t)tcd & 0x1FU) == 0);
575 tmpreg = tcd->
ATTR & (~(DMA_ATTR_SMOD_MASK | DMA_ATTR_DMOD_MASK));
576 tcd->
ATTR = tmpreg | DMA_ATTR_DMOD(destModulo) | DMA_ATTR_SMOD(srcModulo);
593 tcd->
CSR |= DMA_CSR_INTMAJOR_MASK;
599 tcd->
CSR |= DMA_CSR_INTHALF_MASK;
617 tcd->
CSR &= ~DMA_CSR_INTMAJOR_MASK;
623 tcd->
CSR &= ~DMA_CSR_INTHALF_MASK;
650 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
652 uint32_t remainingCount = 0;
654 if (DMA_CSR_DONE_MASK & base->TCD[
channel].CSR)
661 if (base->TCD[
channel].CITER_ELINKNO & DMA_CITER_ELINKNO_ELINK_MASK)
664 (base->TCD[
channel].CITER_ELINKYES & DMA_CITER_ELINKYES_CITER_MASK) >> DMA_CITER_ELINKYES_CITER_SHIFT;
669 (base->TCD[
channel].CITER_ELINKNO & DMA_CITER_ELINKNO_CITER_MASK) >> DMA_CITER_ELINKNO_CITER_SHIFT;
673 return remainingCount;
686 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
691 retval |= ((base->TCD[
channel].CSR & DMA_CSR_DONE_MASK) >> DMA_CSR_DONE_SHIFT);
693 retval |= (((base->ERR >>
channel) & 0x1U) << 1U);
695 retval |= (((base->INT >>
channel) & 0x1U) << 2U);
710 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
731 static uint8_t StartInstanceNum;
743 return StartInstanceNum;
759 assert(handle != NULL);
760 assert(
channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
762 uint32_t edmaInstance;
763 uint32_t channelIndex;
764 uint8_t StartInstance;
768 memset(handle, 0,
sizeof(*handle));
775 channelIndex = ((edmaInstance - StartInstance) * FSL_FEATURE_EDMA_MODULE_CHANNEL) +
channel;
814 assert(handle != NULL);
815 assert(((uint32_t)tcdPool & 0x1FU) == 0);
838 assert(handle != NULL);
866 uint32_t bytesEachRequest,
867 uint32_t transferBytes,
871 assert(srcAddr != NULL);
872 assert(destAddr != NULL);
873 assert((srcWidth == 1U) || (srcWidth == 2U) || (srcWidth == 4U) || (srcWidth == 16U) || (srcWidth == 32U));
874 assert((destWidth == 1U) || (destWidth == 2U) || (destWidth == 4U) || (destWidth == 16U) || (destWidth == 32U));
875 assert(transferBytes % bytesEachRequest == 0);
880 config->destAddr = (uint32_t)destAddr;
881 config->srcAddr = (uint32_t)srcAddr;
882 config->minorLoopBytes = bytesEachRequest;
883 config->majorLoopCounts = transferBytes / bytesEachRequest;
927 config->destOffset = destWidth;
928 config->srcOffset = srcWidth;
932 config->srcOffset = srcWidth;
935 config->destOffset = destWidth;
958 assert(handle != NULL);
970 if ((tcdRegs->
CSR != 0) && ((tcdRegs->
CSR & DMA_CSR_DONE_MASK) == 0))
978 handle->
base->TCD[handle->
channel].CSR |= DMA_CSR_DREQ_MASK;
980 handle->
base->TCD[handle->
channel].CSR |= DMA_CSR_INTMAJOR_MASK;
994 primask = DisableGlobalIRQ();
997 EnableGlobalIRQ(primask);
1001 currentTcd = handle->
tail;
1004 nextTcd = currentTcd + 1U;
1005 if (nextTcd == handle->
tcdSize)
1010 handle->
tail = nextTcd;
1011 EnableGlobalIRQ(primask);
1013 previousTcd = currentTcd ? currentTcd - 1U : handle->
tcdSize - 1U;
1018 handle->
tcdPool[currentTcd].
CSR |= DMA_CSR_INTMAJOR_MASK;
1022 if (currentTcd != previousTcd)
1025 csr = (handle->
tcdPool[previousTcd].
CSR | DMA_CSR_ESG_MASK) & ~DMA_CSR_DREQ_MASK;
1036 tcdRegs->
CSR |= DMA_CSR_DREQ_MASK;
1038 csr = tcdRegs->
CSR | DMA_CSR_ESG_MASK;
1051 if (tcdRegs->
CSR & DMA_CSR_ESG_MASK)
1053 tcdRegs->
CSR &= ~DMA_CSR_DREQ_MASK;
1086 if (handle->
flags & EDMA_TRANSFER_ENABLED_MASK)
1088 handle->
base->SERQ = DMA_SERQ_SERQ(handle->
channel);
1105 assert(handle != NULL);
1109 handle->
base->SERQ = DMA_SERQ_SERQ(handle->
channel);
1116 handle->
flags |= EDMA_TRANSFER_ENABLED_MASK;
1121 primask = DisableGlobalIRQ();
1123 if ((handle->
base->ERQ & (1U << handle->
channel)) == 0U)
1126 if ((!(tcdRegs->
CSR & DMA_CSR_DONE_MASK)) || (tcdRegs->
CSR & DMA_CSR_ESG_MASK))
1132 handle->
base->SERQ = DMA_SERQ_SERQ(handle->
channel);
1135 EnableGlobalIRQ(primask);
1150 assert(handle != NULL);
1152 handle->
flags &= (~EDMA_TRANSFER_ENABLED_MASK);
1153 handle->
base->CERQ = DMA_CERQ_CERQ(handle->
channel);
1166 handle->
base->CERQ = DMA_CERQ_CERQ(handle->
channel);
1215 assert(handle != NULL);
1225 uint32_t sga = handle->
base->TCD[handle->
channel].DLAST_SGA;
1232 transfer_done = ((handle->
base->TCD[handle->
channel].CSR & DMA_CSR_DONE_MASK) != 0);
1234 sga -= (uint32_t)handle->
tcdPool;
1241 new_header = sga_index;
1246 new_header = sga_index ? sga_index - 1U : handle->
tcdSize - 1U;
1249 if (new_header == handle->
header)
1263 tcds_done = new_header - handle->
header;
1270 handle->
header = new_header;
1295#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL == 8U
1310#if defined __CORTEX_M && (__CORTEX_M == 4U)
1327#if defined __CORTEX_M && (__CORTEX_M == 4U)
1344#if defined __CORTEX_M && (__CORTEX_M == 4U)
1361#if defined __CORTEX_M && (__CORTEX_M == 4U)
1382#if defined __CORTEX_M && (__CORTEX_M == 4U)
1399#if defined __CORTEX_M && (__CORTEX_M == 4U)
1416#if defined __CORTEX_M && (__CORTEX_M == 4U)
1433#if defined __CORTEX_M && (__CORTEX_M == 4U)
1451#if defined __CORTEX_M && (__CORTEX_M == 4U)
1468#if defined __CORTEX_M && (__CORTEX_M == 4U)
1485#if defined __CORTEX_M && (__CORTEX_M == 4U)
1502#if defined __CORTEX_M && (__CORTEX_M == 4U)
1511#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL == 16U
1525#if defined __CORTEX_M && (__CORTEX_M == 4U)
1542#if defined __CORTEX_M && (__CORTEX_M == 4U)
1559#if defined __CORTEX_M && (__CORTEX_M == 4U)
1576#if defined __CORTEX_M && (__CORTEX_M == 4U)
1593#if defined __CORTEX_M && (__CORTEX_M == 4U)
1610#if defined __CORTEX_M && (__CORTEX_M == 4U)
1627#if defined __CORTEX_M && (__CORTEX_M == 4U)
1644#if defined __CORTEX_M && (__CORTEX_M == 4U)
1662#if defined __CORTEX_M && (__CORTEX_M == 4U)
1679#if defined __CORTEX_M && (__CORTEX_M == 4U)
1696#if defined __CORTEX_M && (__CORTEX_M == 4U)
1713#if defined __CORTEX_M && (__CORTEX_M == 4U)
1730#if defined __CORTEX_M && (__CORTEX_M == 4U)
1747#if defined __CORTEX_M && (__CORTEX_M == 4U)
1764#if defined __CORTEX_M && (__CORTEX_M == 4U)
1781#if defined __CORTEX_M && (__CORTEX_M == 4U)
1789#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL == 32U
1803#if defined __CORTEX_M && (__CORTEX_M == 4U)
1820#if defined __CORTEX_M && (__CORTEX_M == 4U)
1837#if defined __CORTEX_M && (__CORTEX_M == 4U)
1854#if defined __CORTEX_M && (__CORTEX_M == 4U)
1871#if defined __CORTEX_M && (__CORTEX_M == 4U)
1888#if defined __CORTEX_M && (__CORTEX_M == 4U)
1905#if defined __CORTEX_M && (__CORTEX_M == 4U)
1922#if defined __CORTEX_M && (__CORTEX_M == 4U)
1939#if defined __CORTEX_M && (__CORTEX_M == 4U)
1956#if defined __CORTEX_M && (__CORTEX_M == 4U)
1973#if defined __CORTEX_M && (__CORTEX_M == 4U)
1990#if defined __CORTEX_M && (__CORTEX_M == 4U)
2007#if defined __CORTEX_M && (__CORTEX_M == 4U)
2024#if defined __CORTEX_M && (__CORTEX_M == 4U)
2041#if defined __CORTEX_M && (__CORTEX_M == 4U)
2058#if defined __CORTEX_M && (__CORTEX_M == 4U)
2065#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL == 32U
2079#if defined __CORTEX_M && (__CORTEX_M == 4U)
2096#if defined __CORTEX_M && (__CORTEX_M == 4U)
2113#if defined __CORTEX_M && (__CORTEX_M == 4U)
2130#if defined __CORTEX_M && (__CORTEX_M == 4U)
2147#if defined __CORTEX_M && (__CORTEX_M == 4U)
2164#if defined __CORTEX_M && (__CORTEX_M == 4U)
2181#if defined __CORTEX_M && (__CORTEX_M == 4U)
2198#if defined __CORTEX_M && (__CORTEX_M == 4U)
2215#if defined __CORTEX_M && (__CORTEX_M == 4U)
2232#if defined __CORTEX_M && (__CORTEX_M == 4U)
2249#if defined __CORTEX_M && (__CORTEX_M == 4U)
2266#if defined __CORTEX_M && (__CORTEX_M == 4U)
2283#if defined __CORTEX_M && (__CORTEX_M == 4U)
2300#if defined __CORTEX_M && (__CORTEX_M == 4U)
2317#if defined __CORTEX_M && (__CORTEX_M == 4U)
2334#if defined __CORTEX_M && (__CORTEX_M == 4U)
2341#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL > 0
2348#if defined __CORTEX_M && (__CORTEX_M == 4U)
2358#if defined __CORTEX_M && (__CORTEX_M == 4U)
2368#if defined __CORTEX_M && (__CORTEX_M == 4U)
2378#if defined __CORTEX_M && (__CORTEX_M == 4U)
2384#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL > 4U
2391#if defined __CORTEX_M && (__CORTEX_M == 4U)
2401#if defined __CORTEX_M && (__CORTEX_M == 4U)
2411#if defined __CORTEX_M && (__CORTEX_M == 4U)
2421#if defined __CORTEX_M && (__CORTEX_M == 4U)
2428#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL > 8U
2435#if defined __CORTEX_M && (__CORTEX_M == 4U)
2445#if defined __CORTEX_M && (__CORTEX_M == 4U)
2455#if defined __CORTEX_M && (__CORTEX_M == 4U)
2465#if defined __CORTEX_M && (__CORTEX_M == 4U)
2475#if defined __CORTEX_M && (__CORTEX_M == 4U)
2485#if defined __CORTEX_M && (__CORTEX_M == 4U)
2495#if defined __CORTEX_M && (__CORTEX_M == 4U)
2505#if defined __CORTEX_M && (__CORTEX_M == 4U)
2512#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL > 16U
2519#if defined __CORTEX_M && (__CORTEX_M == 4U)
2529#if defined __CORTEX_M && (__CORTEX_M == 4U)
2539#if defined __CORTEX_M && (__CORTEX_M == 4U)
2549#if defined __CORTEX_M && (__CORTEX_M == 4U)
2559#if defined __CORTEX_M && (__CORTEX_M == 4U)
2569#if defined __CORTEX_M && (__CORTEX_M == 4U)
2579#if defined __CORTEX_M && (__CORTEX_M == 4U)
2589#if defined __CORTEX_M && (__CORTEX_M == 4U)
2599#if defined __CORTEX_M && (__CORTEX_M == 4U)
2609#if defined __CORTEX_M && (__CORTEX_M == 4U)
2619#if defined __CORTEX_M && (__CORTEX_M == 4U)
2629#if defined __CORTEX_M && (__CORTEX_M == 4U)
2639#if defined __CORTEX_M && (__CORTEX_M == 4U)
2649#if defined __CORTEX_M && (__CORTEX_M == 4U)
2659#if defined __CORTEX_M && (__CORTEX_M == 4U)
2669#if defined __CORTEX_M && (__CORTEX_M == 4U)
static BenchController instance
static constexpr persistent_config_s * config
void DMA0_10_14_DriverIRQHandler(void)
void DMA26_DriverIRQHandler(void)
void DMA17_DriverIRQHandler(void)
void DMA1_614_DriverIRQHandler(void)
void DMA29_DriverIRQHandler(void)
void DMA12_DriverIRQHandler(void)
void DMA30_DriverIRQHandler(void)
void DMA24_DriverIRQHandler(void)
void DMA8_DMA24_DriverIRQHandler(void)
void DMA0_3_7_DriverIRQHandler(void)
static DMA_Type *const s_edmaBases[]
Array to map EDMA instance number to base pointer.
void DMA0_614_DriverIRQHandler(void)
void DMA0_27_31_DriverIRQHandler(void)
void DMA27_DriverIRQHandler(void)
void DMA0_311_DriverIRQHandler(void)
void DMA3_DriverIRQHandler(void)
void DMA14_DMA30_DriverIRQHandler(void)
void DMA1_15_DriverIRQHandler(void)
void DMA25_DriverIRQHandler(void)
void DMA10_DriverIRQHandler(void)
void DMA0_08_DriverIRQHandler(void)
void DMA0_DMA16_DriverIRQHandler(void)
void DMA31_DriverIRQHandler(void)
void DMA10_DMA26_DriverIRQHandler(void)
void DMA11_DMA27_DriverIRQHandler(void)
void DMA1_513_DriverIRQHandler(void)
void DMA15_DriverIRQHandler(void)
static const IRQn_Type s_edmaIRQNumber[][FSL_FEATURE_EDMA_MODULE_CHANNEL]
Array to map EDMA instance number to IRQ number.
void DMA7_DMA23_DriverIRQHandler(void)
void DMA0_9_13_DriverIRQHandler(void)
void DMA0_1_5_DriverIRQHandler(void)
void DMA1_19_DriverIRQHandler(void)
void DMA1_311_DriverIRQHandler(void)
void DMA1_412_DriverIRQHandler(void)
void DMA4_DriverIRQHandler(void)
void DMA9_DriverIRQHandler(void)
void DMA6_DMA22_DriverIRQHandler(void)
void DMA16_DriverIRQHandler(void)
void DMA1_210_DriverIRQHandler(void)
void DMA0_16_20_DriverIRQHandler(void)
static edma_handle_t * s_EDMAHandle[FSL_FEATURE_EDMA_MODULE_CHANNEL *FSL_FEATURE_SOC_EDMA_COUNT]
Pointers to transfer handle for each EDMA channel.
void DMA1_715_DriverIRQHandler(void)
void DMA21_DriverIRQHandler(void)
void DMA0_2_6_DriverIRQHandler(void)
void DMA13_DMA29_DriverIRQHandler(void)
void DMA19_DriverIRQHandler(void)
void DMA12_DMA28_DriverIRQHandler(void)
void DMA18_DriverIRQHandler(void)
void DMA9_DMA25_DriverIRQHandler(void)
void DMA4_DMA20_DriverIRQHandler(void)
void DMA1_08_DriverIRQHandler(void)
void DMA1_37_DriverIRQHandler(void)
void DMA0_412_DriverIRQHandler(void)
void DMA2_DMA18_DriverIRQHandler(void)
void DMA5_DMA21_DriverIRQHandler(void)
void DMA1_26_DriverIRQHandler(void)
void DMA7_DriverIRQHandler(void)
void DMA0_37_DriverIRQHandler(void)
void DMA0_17_21_DriverIRQHandler(void)
void DMA13_DriverIRQHandler(void)
void DMA20_DriverIRQHandler(void)
void DMA22_DriverIRQHandler(void)
void DMA0_19_23_DriverIRQHandler(void)
static uint32_t EDMA_GetInstance(DMA_Type *base)
Get instance number for EDMA.
void DMA0_513_DriverIRQHandler(void)
void DMA11_DriverIRQHandler(void)
void DMA5_DriverIRQHandler(void)
static uint8_t Get_StartInstance(void)
void DMA0_24_28_DriverIRQHandler(void)
static const clock_ip_name_t s_edmaClockName[]
Array to map EDMA instance number to clock name.
void DMA3_DMA19_DriverIRQHandler(void)
void DMA0_210_DriverIRQHandler(void)
void DMA15_DMA31_DriverIRQHandler(void)
void DMA2_DriverIRQHandler(void)
void DMA0_19_DriverIRQHandler(void)
void DMA1_04_DriverIRQHandler(void)
void DMA0_26_DriverIRQHandler(void)
void DMA0_15_DriverIRQHandler(void)
void DMA0_11_15_DriverIRQHandler(void)
void DMA0_DriverIRQHandler(void)
void DMA0_715_DriverIRQHandler(void)
void DMA0_04_DriverIRQHandler(void)
void DMA14_DriverIRQHandler(void)
void DMA0_26_30_DriverIRQHandler(void)
void DMA8_DriverIRQHandler(void)
void DMA1_DMA17_DriverIRQHandler(void)
void DMA0_8_12_DriverIRQHandler(void)
void DMA28_DriverIRQHandler(void)
void DMA0_18_22_DriverIRQHandler(void)
void DMA0_0_4_DriverIRQHandler(void)
void DMA1_DriverIRQHandler(void)
void DMA6_DriverIRQHandler(void)
void DMA0_25_29_DriverIRQHandler(void)
void DMA23_DriverIRQHandler(void)
enum _clock_ip_name clock_ip_name_t
Peripheral clock name difinition used for clock gate, clock source and clock divider setting....
static void CLOCK_DisableClock(clock_ip_name_t name)
Disable the clock for specific IP.
static void CLOCK_EnableClock(clock_ip_name_t name)
Enable the clock for specific IP.
uint32_t EDMA_GetRemainingMajorLoopCount(DMA_Type *base, uint32_t channel)
Gets the remaining major loop count from the eDMA current channel TCD.
void EDMA_EnableChannelInterrupts(DMA_Type *base, uint32_t channel, uint32_t mask)
Enables the interrupt source for the eDMA transfer.
struct _edma_tcd edma_tcd_t
eDMA TCD.
void EDMA_TcdDisableInterrupts(edma_tcd_t *tcd, uint32_t mask)
Disables the interrupt source for the eDMA TCD.
void EDMA_AbortTransfer(edma_handle_t *handle)
eDMA aborts transfer.
void EDMA_InstallTCD(DMA_Type *base, uint32_t channel, edma_tcd_t *tcd)
Push content of TCD structure into hardware TCD register.
void EDMA_DisableChannelInterrupts(DMA_Type *base, uint32_t channel, uint32_t mask)
Disables the interrupt source for the eDMA transfer.
void EDMA_StopTransfer(edma_handle_t *handle)
eDMA stops transfer.
void EDMA_Deinit(DMA_Type *base)
Deinitializes the eDMA peripheral.
void EDMA_TcdReset(edma_tcd_t *tcd)
Sets all fields to default values for the TCD structure.
void EDMA_ClearChannelStatusFlags(DMA_Type *base, uint32_t channel, uint32_t mask)
Clears the eDMA channel status flags.
void EDMA_TcdSetMinorOffsetConfig(edma_tcd_t *tcd, const edma_minor_offset_config_t *config)
Configures the eDMA TCD minor offset feature.
void EDMA_InstallTCDMemory(edma_handle_t *handle, edma_tcd_t *tcdPool, uint32_t tcdSize)
Installs the TCDs memory pool into the eDMA handle.
enum _edma_modulo edma_modulo_t
eDMA modulo configuration
uint32_t EDMA_GetChannelStatusFlags(DMA_Type *base, uint32_t channel)
Gets the eDMA channel status flags.
void EDMA_SetChannelLink(DMA_Type *base, uint32_t channel, edma_channel_link_type_t type, uint32_t linkedChannel)
Sets the channel link for the eDMA transfer.
status_t EDMA_SubmitTransfer(edma_handle_t *handle, const edma_transfer_config_t *config)
Submits the eDMA transfer request.
void EDMA_SetCallback(edma_handle_t *handle, edma_callback callback, void *userData)
Installs a callback function for the eDMA transfer.
void EDMA_GetDefaultConfig(edma_config_t *config)
Gets the eDMA default configuration structure.
void EDMA_TcdSetModulo(edma_tcd_t *tcd, edma_modulo_t srcModulo, edma_modulo_t destModulo)
Sets the source modulo and the destination modulo for the eDMA TCD.
void EDMA_PrepareTransfer(edma_transfer_config_t *config, void *srcAddr, uint32_t srcWidth, void *destAddr, uint32_t destWidth, uint32_t bytesEachRequest, uint32_t transferBytes, edma_transfer_type_t type)
Prepares the eDMA transfer structure.
void EDMA_SetModulo(DMA_Type *base, uint32_t channel, edma_modulo_t srcModulo, edma_modulo_t destModulo)
Sets the source modulo and the destination modulo for the eDMA transfer.
void EDMA_SetTransferConfig(DMA_Type *base, uint32_t channel, const edma_transfer_config_t *config, edma_tcd_t *nextTcd)
Configures the eDMA transfer attribute.
void EDMA_StartTransfer(edma_handle_t *handle)
eDMA starts transfer.
void EDMA_TcdSetChannelLink(edma_tcd_t *tcd, edma_channel_link_type_t type, uint32_t linkedChannel)
Sets the channel link for the eDMA TCD.
enum _edma_bandwidth edma_bandwidth_t
Bandwidth control.
enum _edma_channel_link_type edma_channel_link_type_t
Channel link type.
void EDMA_TcdSetTransferConfig(edma_tcd_t *tcd, const edma_transfer_config_t *config, edma_tcd_t *nextTcd)
Configures the eDMA TCD transfer attribute.
void(* edma_callback)(struct _edma_handle *handle, void *userData, bool transferDone, uint32_t tcds)
Define callback function for eDMA.
enum _edma_transfer_type edma_transfer_type_t
eDMA transfer type
void EDMA_CreateHandle(edma_handle_t *handle, DMA_Type *base, uint32_t channel)
Creates the eDMA handle.
void EDMA_SetMinorOffsetConfig(DMA_Type *base, uint32_t channel, const edma_minor_offset_config_t *config)
Configures the eDMA minor offset feature.
void EDMA_HandleIRQ(edma_handle_t *handle)
eDMA IRQ handler for the current major loop transfer completion.
void EDMA_ResetChannel(DMA_Type *base, uint32_t channel)
Sets all TCD registers to default values.
void EDMA_SetBandWidth(DMA_Type *base, uint32_t channel, edma_bandwidth_t bandWidth)
Sets the bandwidth for the eDMA transfer.
void EDMA_Init(DMA_Type *base, const edma_config_t *config)
Initializes the eDMA peripheral.
void EDMA_TcdEnableInterrupts(edma_tcd_t *tcd, uint32_t mask)
Enables the interrupt source for the eDMA TCD.
@ kEDMA_PeripheralToMemory
@ kEDMA_MemoryToPeripheral
@ kEDMA_MajorInterruptEnable
@ kEDMA_HalfInterruptEnable
@ kEDMA_ErrorInterruptEnable
@ kEDMA_TransferSize16Bytes
@ kEDMA_TransferSize4Bytes
@ kEDMA_TransferSize2Bytes
@ kEDMA_TransferSize1Bytes
@ kEDMA_TransferSize32Bytes
int32_t status_t
Type used for all status and error return values.
eDMA global configuration structure.
eDMA transfer handle structure
eDMA minor offset configuration
eDMA transfer configuration