51 #ifndef ti_dl_dl_m0p_dma__include 52 #define ti_dl_dl_m0p_dma__include 57 #include <ti/devices/msp/msp.h> 64 #if (DMA_SYS_N_DMA_FULL_CHANNEL > 0) 68 #define DEVICE_HAS_DMA_FULL_CHANNEL 71 #ifdef DMA_SYS_MMR_LLONG 75 #define DEVICE_HAS_LLONG_ACCESS 79 #define DEVICE_HAS_AUTO_AND_GATHER 90 #define DL_DMA_INTERRUPT_CHANNEL0 (DMA_CPU_INT_IMASK_DMACH0_SET) 95 #define DL_DMA_INTERRUPT_CHANNEL1 (DMA_CPU_INT_IMASK_DMACH1_SET) 100 #define DL_DMA_INTERRUPT_CHANNEL2 (DMA_CPU_INT_IMASK_DMACH2_SET) 105 #define DL_DMA_INTERRUPT_CHANNEL3 (DMA_CPU_INT_IMASK_DMACH3_SET) 110 #define DL_DMA_INTERRUPT_CHANNEL4 (DMA_CPU_INT_IMASK_DMACH4_SET) 115 #define DL_DMA_INTERRUPT_CHANNEL5 (DMA_CPU_INT_IMASK_DMACH5_SET) 120 #define DL_DMA_INTERRUPT_CHANNEL6 (DMA_CPU_INT_IMASK_DMACH6_SET) 125 #define DL_DMA_INTERRUPT_CHANNEL7 (DMA_CPU_INT_IMASK_DMACH7_SET) 130 #define DL_DMA_INTERRUPT_CHANNEL8 (DMA_CPU_INT_IMASK_DMACH8_SET) 135 #define DL_DMA_INTERRUPT_CHANNEL9 (DMA_CPU_INT_IMASK_DMACH9_SET) 140 #define DL_DMA_INTERRUPT_CHANNEL10 (DMA_CPU_INT_IMASK_DMACH10_SET) 145 #define DL_DMA_INTERRUPT_CHANNEL12 (DMA_CPU_INT_IMASK_DMACH12_SET) 150 #define DL_DMA_INTERRUPT_CHANNEL13 (DMA_CPU_INT_IMASK_DMACH13_SET) 155 #define DL_DMA_INTERRUPT_CHANNEL14 (DMA_CPU_INT_IMASK_DMACH14_SET) 160 #define DL_DMA_INTERRUPT_CHANNEL15 (DMA_CPU_INT_IMASK_DMACH15_SET) 162 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL 167 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL0 (DMA_CPU_INT_IMASK_PREIRQCH0_SET) 173 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL1 (DMA_CPU_INT_IMASK_PREIRQCH1_SET) 179 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL2 (DMA_CPU_INT_IMASK_PREIRQCH2_SET) 185 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL3 (DMA_CPU_INT_IMASK_PREIRQCH3_SET) 191 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL4 (DMA_CPU_INT_IMASK_PREIRQCH4_SET) 197 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL5 (DMA_CPU_INT_IMASK_PREIRQCH5_SET) 203 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL6 (DMA_CPU_INT_IMASK_PREIRQCH6_SET) 209 #define DL_DMA_FULL_CH_INTERRUPT_EARLY_CHANNEL7 (DMA_CPU_INT_IMASK_PREIRQCH7_SET) 215 #define DL_DMA_INTERRUPT_ADDR_ERROR (DMA_CPU_INT_IMASK_ADDRERR_SET) 219 #define DL_DMA_INTERRUPT_DATA_ERROR (DMA_CPU_INT_IMASK_DATAERR_SET) 229 #define DL_DMA_EVENT_CHANNEL0 (DMA_GEN_EVENT_IMASK_DMACH0_SET) 234 #define DL_DMA_EVENT_CHANNEL1 (DMA_GEN_EVENT_IMASK_DMACH1_SET) 239 #define DL_DMA_EVENT_CHANNEL2 (DMA_GEN_EVENT_IMASK_DMACH2_SET) 244 #define DL_DMA_EVENT_CHANNEL3 (DMA_GEN_EVENT_IMASK_DMACH3_SET) 249 #define DL_DMA_EVENT_CHANNEL4 (DMA_GEN_EVENT_IMASK_DMACH4_SET) 254 #define DL_DMA_EVENT_CHANNEL5 (DMA_GEN_EVENT_IMASK_DMACH5_SET) 259 #define DL_DMA_EVENT_CHANNEL6 (DMA_GEN_EVENT_IMASK_DMACH6_SET) 264 #define DL_DMA_EVENT_CHANNEL7 (DMA_GEN_EVENT_IMASK_DMACH7_SET) 269 #define DL_DMA_EVENT_CHANNEL8 (DMA_GEN_EVENT_IMASK_DMACH8_SET) 274 #define DL_DMA_EVENT_CHANNEL9 (DMA_GEN_EVENT_IMASK_DMACH9_SET) 279 #define DL_DMA_EVENT_CHANNEL10 (DMA_GEN_EVENT_IMASK_DMACH10_SET) 284 #define DL_DMA_EVENT_CHANNEL12 (DMA_GEN_EVENT_IMASK_DMACH12_SET) 289 #define DL_DMA_EVENT_CHANNEL13 (DMA_GEN_EVENT_IMASK_DMACH13_SET) 294 #define DL_DMA_EVENT_CHANNEL14 (DMA_GEN_EVENT_IMASK_DMACH14_SET) 299 #define DL_DMA_EVENT_CHANNEL15 (DMA_GEN_EVENT_IMASK_DMACH15_SET) 301 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL 306 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL0 (DMA_GEN_EVENT_IMASK_PREIRQCH0_SET) 312 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL1 (DMA_GEN_EVENT_IMASK_PREIRQCH1_SET) 318 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL2 (DMA_GEN_EVENT_IMASK_PREIRQCH2_SET) 324 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL3 (DMA_GEN_EVENT_IMASK_PREIRQCH3_SET) 330 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL4 (DMA_GEN_EVENT_IMASK_PREIRQCH4_SET) 336 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL5 (DMA_GEN_EVENT_IMASK_PREIRQCH5_SET) 342 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL6 (DMA_GEN_EVENT_IMASK_PREIRQCH6_SET) 348 #define DL_DMA_FULL_CH_EVENT_EARLY_CHANNEL7 (DMA_GEN_EVENT_IMASK_PREIRQCH7_SET) 354 #define DL_DMA_EVENT_ADDR_ERROR (DMA_GEN_EVENT_IMASK_ADDRERR_SET) 358 #define DL_DMA_EVENT_DATA_ERROR (DMA_GEN_EVENT_IMASK_DATAERR_SET) 368 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL 371 DL_DMA_FULL_CH_REPEAT_SINGLE_TRANSFER_MODE = DMA_DMACTL_DMATM_RPTSNGL,
374 DL_DMA_FULL_CH_REPEAT_BLOCK_TRANSFER_MODE = DMA_DMACTL_DMATM_RPTBLCK,
382 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL 383 #ifdef DEVICE_HAS_AUTO_AND_GATHER 387 DL_DMA_FULL_CH_GATHER_MODE = DMA_DMACTL_DMAEM_GATHERMODE,
391 DL_DMA_FULL_CH_FILL_MODE = DMA_DMACTL_DMAEM_FILLMODE,
394 DL_DMA_FULL_CH_TABLE_MODE = DMA_DMACTL_DMAEM_TABLEMODE,
484 #ifdef DEVICE_HAS_LLONG_ACCESS 486 DL_DMA_WIDTH_LONG_LONG = DMA_DMACTL_DMASRCWDTH_LONGLONG,
526 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL 529 DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH0 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH0,
532 DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH1 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH1,
535 DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH2 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH2,
538 DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH3 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH3,
541 DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH4 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH4,
544 DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH5 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH5,
547 DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH6 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH6,
550 DL_DMA_FULL_CH_EVENT_IIDX_EARLY_IRQ_DMACH7 = DMA_GEN_EVENT_IIDX_STAT_PREIRQCH7,
577 #ifdef DEVICE_HAS_AUTO_AND_GATHER 579 DL_DMA_AUTOEN_DMASA = DMA_DMACTL_DMAAUTOEN_DMASA,
581 DL_DMA_AUTOEN_DMADA = DMA_DMACTL_DMAAUTOEN_DMADA,
583 DL_DMA_AUTOEN_DMASZ = DMA_DMACTL_DMAAUTOEN_DMASZ,
645 DMA_Regs *dma, uint8_t channelNum,
const DL_DMA_Config *config);
671 DL_DMA_TRANSFER_MODE transferMode, DL_DMA_EXTENDED_MODE extendedMode,
672 DL_DMA_WIDTH srcWidth, DL_DMA_WIDTH destWidth,
673 DL_DMA_INCREMENT srcIncrement, DL_DMA_INCREMENT destIncrement)
675 dma->DMACHAN[channelNum].DMACTL =
676 ((uint32_t) transferMode | (uint32_t) extendedMode |
677 (((uint32_t) destIncrement) << 4) | (uint32_t) srcIncrement |
678 ((uint32_t) destWidth << 4) | (uint32_t) srcWidth);
693 dma->DMAPRIO |= DMA_DMAPRIO_ROUNDROBIN_ENABLE;
708 dma->DMAPRIO &= ~(DMA_DMAPRIO_ROUNDROBIN_MASK);
723 return ((dma->DMAPRIO & DMA_DMAPRIO_ROUNDROBIN_MASK) ==
724 DMA_DMAPRIO_ROUNDROBIN_ENABLE);
744 DMA_Regs *dma, DL_DMA_BURST_SIZE burstSize)
747 &dma->DMAPRIO, (uint32_t) burstSize, DMA_DMAPRIO_BURSTSZ_MASK);
761 uint32_t burstSize = dma->DMAPRIO & DMA_DMAPRIO_BURSTSZ_MASK;
763 return (DL_DMA_BURST_SIZE)(burstSize);
774 dma->DMACHAN[channelNum].DMACTL |= DMA_DMACTL_DMAEN_ENABLE;
785 dma->DMACHAN[channelNum].DMACTL &= ~(DMA_DMACTL_DMAEN_MASK);
800 const DMA_Regs *dma, uint8_t channelNum)
802 return ((dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMAEN_MASK) ==
803 DMA_DMACTL_DMAEN_ENABLE);
821 DL_DMA_TRANSFER_MODE transferMode, DL_DMA_EXTENDED_MODE extendedMode)
824 (uint32_t) transferMode | (uint32_t) extendedMode,
825 DMA_DMACTL_DMATM_MASK | DMA_DMACTL_DMAEM_MASK);
842 DMA_Regs *dma, uint8_t channelNum, DL_DMA_TRANSFER_MODE transferMode)
845 (uint32_t) transferMode, DMA_DMACTL_DMATM_MASK);
859 const DMA_Regs *dma, uint8_t channelNum)
861 uint32_t mode = (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMATM_MASK);
863 return (DL_DMA_TRANSFER_MODE)(mode);
878 DMA_Regs *dma, uint8_t channelNum, DL_DMA_EXTENDED_MODE extendedMode)
881 (uint32_t) extendedMode, DMA_DMACTL_DMAEM_MASK);
895 const DMA_Regs *dma, uint8_t channelNum)
897 uint32_t mode = (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMAEM_MASK);
899 return (DL_DMA_EXTENDED_MODE)(mode);
910 dma->DMACHAN[channelNum].DMACTL |= DMA_DMACTL_DMAREQ_REQUEST;
926 uint8_t trigger, DL_DMA_TRIGGER_TYPE triggerType)
929 trigger | (uint32_t) triggerType,
930 DMA_DMATCTL_DMATSEL_MASK | DMA_DMATCTL_DMATINT_MASK);
945 const DMA_Regs *dma, uint8_t channelNum)
947 return (dma->DMATRIG[channelNum].DMATCTL & DMA_DMATCTL_DMATSEL_MASK);
962 const DMA_Regs *dma, uint8_t channelNum)
964 uint32_t triggerType =
965 (dma->DMATRIG[channelNum].DMATCTL & DMA_DMATCTL_DMATINT_MASK);
967 return (DL_DMA_TRIGGER_TYPE)(triggerType);
984 DMA_Regs *dma, uint8_t channelNum, uint32_t srcAddr)
986 dma->DMACHAN[channelNum].DMASA = srcAddr;
998 const DMA_Regs *dma, uint8_t channelNum)
1000 return dma->DMACHAN[channelNum].DMASA;
1018 DMA_Regs *dma, uint8_t channelNum, uint32_t destAddr)
1020 dma->DMACHAN[channelNum].DMADA = destAddr;
1032 const DMA_Regs *dma, uint8_t channelNum)
1034 return dma->DMACHAN[channelNum].DMADA;
1055 DMA_Regs *dma, uint8_t channelNum, uint16_t size)
1057 dma->DMACHAN[channelNum].DMASZ = size;
1071 const DMA_Regs *dma, uint8_t channelNum)
1073 return (uint16_t)(dma->DMACHAN[channelNum].DMASZ & DMA_DMASZ_SIZE_MASK);
1097 DMA_Regs *dma, uint8_t channelNum, DL_DMA_INCREMENT srcIncrement)
1100 (uint32_t) srcIncrement, DMA_DMACTL_DMASRCINCR_MASK);
1114 const DMA_Regs *dma, uint8_t channelNum)
1116 uint32_t incrementAmount =
1117 (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMASRCINCR_MASK);
1119 return (DL_DMA_INCREMENT)(incrementAmount);
1143 DMA_Regs *dma, uint8_t channelNum, DL_DMA_INCREMENT destIncrement)
1147 ((uint32_t) destIncrement) << 4, DMA_DMACTL_DMADSTINCR_MASK);
1161 const DMA_Regs *dma, uint8_t channelNum)
1164 uint32_t incrementAmount =
1165 (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMADSTINCR_MASK) >> 4;
1167 return (DL_DMA_INCREMENT)(incrementAmount);
1181 DMA_Regs *dma, uint8_t channelNum, DL_DMA_WIDTH srcWidth)
1184 DMA_DMACTL_DMASRCWDTH_MASK);
1198 const DMA_Regs *dma, uint8_t channelNum)
1201 (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMASRCWDTH_MASK);
1203 return (DL_DMA_WIDTH)(width);
1217 DMA_Regs *dma, uint8_t channelNum, DL_DMA_WIDTH destWidth)
1221 ((uint32_t) destWidth) << 4, DMA_DMACTL_DMADSTWDTH_MASK);
1235 const DMA_Regs *dma, uint8_t channelNum)
1239 (dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMADSTWDTH_MASK) >> 4;
1241 return (DL_DMA_WIDTH)(width);
1243 #ifdef DEVICE_HAS_DMA_FULL_CHANNEL 1272 __STATIC_INLINE
void DL_DMA_Full_Ch_setEarlyInterruptThreshold(DMA_Regs *dma,
1273 uint8_t channelNum, DL_DMA_EARLY_INTERRUPT_THRESHOLD threshold)
1276 DMA_DMACTL_DMAPREIRQ_MASK);
1294 __STATIC_INLINE DL_DMA_EARLY_INTERRUPT_THRESHOLD
1295 DL_DMA_Full_Ch_getEarlyInterruptThreshold(
1296 const DMA_Regs *dma, uint8_t channelNum)
1298 uint32_t threshold =
1299 dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMAPREIRQ_MASK;
1301 return (DL_DMA_EARLY_INTERRUPT_THRESHOLD)(threshold);
1314 DMA_Regs *dma, uint32_t interruptMask)
1316 dma->CPU_INT.IMASK |= interruptMask;
1328 DMA_Regs *dma, uint32_t interruptMask)
1330 dma->CPU_INT.IMASK &= ~(interruptMask);
1346 const DMA_Regs *dma, uint32_t interruptMask)
1348 return (dma->CPU_INT.IMASK & interruptMask);
1369 const DMA_Regs *dma, uint32_t interruptMask)
1371 return (dma->CPU_INT.MIS & interruptMask);
1390 const DMA_Regs *dma, uint32_t interruptMask)
1392 return (dma->CPU_INT.RIS & interruptMask);
1409 const DMA_Regs *dma)
1411 return (DL_DMA_EVENT_IIDX) dma->CPU_INT.IIDX;
1423 DMA_Regs *dma, uint32_t interruptMask)
1425 dma->CPU_INT.ICLR = interruptMask;
1440 volatile uint32_t *pReg = &dma->FPUB_1;
1442 *(pReg + (uint32_t) index) = (chanID & DMA_FPUB_1_CHANID_MAXIMUM);
1458 volatile uint32_t *pReg = &dma->FPUB_1;
1460 return ((uint8_t)(*(pReg + (uint32_t) index) & DMA_FPUB_1_CHANID_MASK));
1475 volatile uint32_t *pReg = &dma->FSUB_0;
1477 *(pReg + (uint32_t) index) = (chanID & DMA_FSUB_0_CHANID_MAXIMUM);
1493 volatile uint32_t *pReg = &dma->FSUB_0;
1495 return ((uint8_t)(*(pReg + (uint32_t) index) & DMA_FSUB_0_CHANID_MASK));
1508 dma->GEN_EVENT.IMASK |= (eventMask);
1521 dma->GEN_EVENT.IMASK &= ~(eventMask);
1537 const DMA_Regs *dma, uint32_t eventMask)
1539 return (dma->GEN_EVENT.IMASK & eventMask);
1560 const DMA_Regs *dma, uint32_t eventMask)
1562 return (dma->GEN_EVENT.MIS & ~(eventMask));
1581 const DMA_Regs *dma, uint32_t eventMask)
1583 return (dma->GEN_EVENT.RIS & ~(eventMask));
1595 DMA_Regs *dma, uint32_t eventMask)
1597 dma->GEN_EVENT.ICLR |= (eventMask);
1600 #ifdef DEVICE_HAS_AUTO_AND_GATHER 1608 __STATIC_INLINE
void DL_DMA_enableAutoEnable(
1609 DMA_Regs *dma, DL_DMA_AUTOEN mode, uint8_t channelNum)
1611 dma->DMACHAN[channelNum].DMACTL |= mode;
1621 __STATIC_INLINE
void DL_DMA_disableAutoEnable(
1622 DMA_Regs *dma, uint8_t channelNum)
1624 dma->DMACHAN[channelNum].DMACTL &= ~(DMA_DMACTL_DMAAUTOEN_MASK);
1638 __STATIC_INLINE
bool DL_DMA_isAutoEnableEnabled(
1639 const DMA_Regs *dma, uint8_t channelNum)
1641 return ((dma->DMACHAN[channelNum].DMACTL & DMA_DMACTL_DMAAUTOEN_MASK) !=
1642 DMA_DMACTL_DMAAUTOEN_DISABLE);
__STATIC_INLINE uint32_t DL_DMA_getRawInterruptStatus(const DMA_Regs *dma, uint32_t interruptMask)
Check interrupt flag of any DMA interrupt.
Definition: dl_dma.h:1389
__STATIC_INLINE void DL_Common_updateReg(volatile uint32_t *reg, uint32_t val, uint32_t mask)
Writes value to specified register - retaining bits unaffected by mask.
Definition: dl_common.h:63
__STATIC_INLINE uint32_t DL_DMA_getEnabledEvents(const DMA_Regs *dma, uint32_t eventMask)
Check which dma events triggers are enabled.
Definition: dl_dma.h:1536
__STATIC_INLINE void DL_DMA_disableChannel(DMA_Regs *dma, uint8_t channelNum)
Disable a DMA channel for transfers.
Definition: dl_dma.h:783
__STATIC_INLINE uint32_t DL_DMA_getTrigger(const DMA_Regs *dma, uint8_t channelNum)
Get the current trigger for a DMA channel.
Definition: dl_dma.h:944
__STATIC_INLINE void DL_DMA_disableRoundRobinPriority(DMA_Regs *dma)
Disable round-robin priority for the DMA.
Definition: dl_dma.h:706
__STATIC_INLINE void DL_DMA_setBurstSize(DMA_Regs *dma, DL_DMA_BURST_SIZE burstSize)
Set the burst size for block transfers.
Definition: dl_dma.h:743
DL_DMA_EXTENDED_MODE
Definition: dl_dma.h:379
__STATIC_INLINE uint8_t DL_DMA_getSubscriberChanID(DMA_Regs *dma, DL_DMA_SUBSCRIBER_INDEX index)
Gets the event subscriber channel id.
Definition: dl_dma.h:1490
__STATIC_INLINE void DL_DMA_setDestAddr(DMA_Regs *dma, uint8_t channelNum, uint32_t destAddr)
Set a DMA channel's destination address.
Definition: dl_dma.h:1017
DL_DMA_WIDTH destWidth
Definition: dl_dma.h:619
DL_DMA_WIDTH srcWidth
Definition: dl_dma.h:616
__STATIC_INLINE DL_DMA_INCREMENT DL_DMA_getSrcIncrement(const DMA_Regs *dma, uint8_t channelNum)
Return a channel's source address increment amount.
Definition: dl_dma.h:1113
__STATIC_INLINE void DL_DMA_setPublisherChanID(DMA_Regs *dma, DL_DMA_PUBLISHER_INDEX index, uint8_t chanID)
Sets the event publisher channel id.
Definition: dl_dma.h:1437
__STATIC_INLINE void DL_DMA_setSrcIncrement(DMA_Regs *dma, uint8_t channelNum, DL_DMA_INCREMENT srcIncrement)
Set a channel's source address increment amount.
Definition: dl_dma.h:1096
DL_DMA_INCREMENT
Definition: dl_dma.h:399
__STATIC_INLINE void DL_DMA_enableChannel(DMA_Regs *dma, uint8_t channelNum)
Enable a DMA channel for transfers.
Definition: dl_dma.h:772
DL_DMA_TRIGGER_TYPE triggerType
Definition: dl_dma.h:603
__STATIC_INLINE DL_DMA_WIDTH DL_DMA_getSrcWidth(const DMA_Regs *dma, uint8_t channelNum)
Get the width of the DMA source address for a channel.
Definition: dl_dma.h:1197
Configuration struct for DL_DMA_initChannel.
Definition: dl_dma.h:592
__STATIC_INLINE void DL_DMA_setDestWidth(DMA_Regs *dma, uint8_t channelNum, DL_DMA_WIDTH destWidth)
Set the width of the DMA destination address for a channel.
Definition: dl_dma.h:1216
DL_DMA_INCREMENT srcIncrement
Definition: dl_dma.h:625
__STATIC_INLINE bool DL_DMA_isRoundRobinPriorityEnabled(const DMA_Regs *dma)
Check if round-robin priority is enabled for the DMA.
Definition: dl_dma.h:721
DL_DMA_SUBSCRIBER_INDEX
Definition: dl_dma.h:566
DL_DMA_EXTENDED_MODE extendedMode
Definition: dl_dma.h:613
__STATIC_INLINE void DL_DMA_enableRoundRobinPriority(DMA_Regs *dma)
Configure the DMA for round-robin priority.
Definition: dl_dma.h:691
__STATIC_INLINE DL_DMA_INCREMENT DL_DMA_getDestIncrement(const DMA_Regs *dma, uint8_t channelNum)
Return a channel's destination address increment amount.
Definition: dl_dma.h:1160
__STATIC_INLINE void DL_DMA_clearInterruptStatus(DMA_Regs *dma, uint32_t interruptMask)
Clear pending DMA interrupts.
Definition: dl_dma.h:1422
__STATIC_INLINE DL_DMA_TRANSFER_MODE DL_DMA_getTransferMode(const DMA_Regs *dma, uint8_t channelNum)
Get a DMA channel's transfer mode.
Definition: dl_dma.h:858
__STATIC_INLINE void DL_DMA_disableInterrupt(DMA_Regs *dma, uint32_t interruptMask)
Disable DMA interrupts.
Definition: dl_dma.h:1327
__STATIC_INLINE uint32_t DL_DMA_getDestAddr(const DMA_Regs *dma, uint8_t channelNum)
Get a DMA channel's destination address.
Definition: dl_dma.h:1031
__STATIC_INLINE bool DL_DMA_isChannelEnabled(const DMA_Regs *dma, uint8_t channelNum)
Check if a DMA channel is enabled for transfers.
Definition: dl_dma.h:799
__STATIC_INLINE void DL_DMA_enableEvent(DMA_Regs *dma, uint32_t eventMask)
Enable DMA event.
Definition: dl_dma.h:1506
__STATIC_INLINE void DL_DMA_setTrigger(DMA_Regs *dma, uint8_t channelNum, uint8_t trigger, DL_DMA_TRIGGER_TYPE triggerType)
Set a channel's trigger for a DMA transfer.
Definition: dl_dma.h:925
DL_DMA_PUBLISHER_INDEX
Definition: dl_dma.h:560
__STATIC_INLINE uint32_t DL_DMA_getRawEventsStatus(const DMA_Regs *dma, uint32_t eventMask)
Check event flag of any dma event.
Definition: dl_dma.h:1580
__STATIC_INLINE void DL_DMA_setTransferMode(DMA_Regs *dma, uint8_t channelNum, DL_DMA_TRANSFER_MODE transferMode)
Set a DMA channel's transfer mode.
Definition: dl_dma.h:841
DL_DMA_WIDTH
Definition: dl_dma.h:475
DL_DMA_INCREMENT destIncrement
Definition: dl_dma.h:631
__STATIC_INLINE void DL_DMA_clearEventsStatus(DMA_Regs *dma, uint32_t eventMask)
Clear pending dma events.
Definition: dl_dma.h:1594
__STATIC_INLINE void DL_DMA_disableEvent(DMA_Regs *dma, uint32_t eventMask)
Disable DMA event.
Definition: dl_dma.h:1519
__STATIC_INLINE void DL_DMA_setExtendedMode(DMA_Regs *dma, uint8_t channelNum, DL_DMA_EXTENDED_MODE extendedMode)
Set a DMA channel's extended mode.
Definition: dl_dma.h:877
__STATIC_INLINE void DL_DMA_setTransferSize(DMA_Regs *dma, uint8_t channelNum, uint16_t size)
Set the size of a block for a DMA transfer.
Definition: dl_dma.h:1054
__STATIC_INLINE DL_DMA_BURST_SIZE DL_DMA_getBurstSize(const DMA_Regs *dma)
Get the burst size for block transfers.
Definition: dl_dma.h:759
void DL_DMA_initChannel(DMA_Regs *dma, uint8_t channelNum, const DL_DMA_Config *config)
Initialize a DMA channel.
__STATIC_INLINE DL_DMA_WIDTH DL_DMA_getDestWidth(const DMA_Regs *dma, uint8_t channelNum)
Get the width of the DMA destination address for a channel.
Definition: dl_dma.h:1234
DL_DMA_TRIGGER_TYPE
Definition: dl_dma.h:467
__STATIC_INLINE void DL_DMA_setSrcWidth(DMA_Regs *dma, uint8_t channelNum, DL_DMA_WIDTH srcWidth)
Set the width of the DMA source address for a channel.
Definition: dl_dma.h:1180
__STATIC_INLINE void DL_DMA_startTransfer(DMA_Regs *dma, uint8_t channelNum)
Start a DMA transfer using software.
Definition: dl_dma.h:908
__STATIC_INLINE uint8_t DL_DMA_getPublisherChanID(DMA_Regs *dma, DL_DMA_PUBLISHER_INDEX index)
Gets the event publisher channel id.
Definition: dl_dma.h:1455
__STATIC_INLINE uint32_t DL_DMA_getEnabledInterrupts(const DMA_Regs *dma, uint32_t interruptMask)
Check which DMA interrupts are enabled.
Definition: dl_dma.h:1345
DL_DMA_TRANSFER_MODE transferMode
Definition: dl_dma.h:610
__STATIC_INLINE DL_DMA_TRIGGER_TYPE DL_DMA_getTriggerType(const DMA_Regs *dma, uint8_t channelNum)
Get the current trigger type for a DMA channel.
Definition: dl_dma.h:961
__STATIC_INLINE void DL_DMA_configTransfer(DMA_Regs *dma, uint8_t channelNum, DL_DMA_TRANSFER_MODE transferMode, DL_DMA_EXTENDED_MODE extendedMode, DL_DMA_WIDTH srcWidth, DL_DMA_WIDTH destWidth, DL_DMA_INCREMENT srcIncrement, DL_DMA_INCREMENT destIncrement)
Configure a DMA channel for a transfer.
Definition: dl_dma.h:670
__STATIC_INLINE void DL_DMA_enableInterrupt(DMA_Regs *dma, uint32_t interruptMask)
Enable DMA interrupts.
Definition: dl_dma.h:1313
DL_DMA_EARLY_INTERRUPT_THRESHOLD
Definition: dl_dma.h:433
uint8_t trigger
Definition: dl_dma.h:597
__STATIC_INLINE uint32_t DL_DMA_getEnabledEventStatus(const DMA_Regs *dma, uint32_t eventMask)
Check event flag of enabled dma event.
Definition: dl_dma.h:1559
__STATIC_INLINE void DL_DMA_configMode(DMA_Regs *dma, uint8_t channelNum, DL_DMA_TRANSFER_MODE transferMode, DL_DMA_EXTENDED_MODE extendedMode)
Configure the mode for a DMA channel.
Definition: dl_dma.h:820
__STATIC_INLINE uint32_t DL_DMA_getSrcAddr(const DMA_Regs *dma, uint8_t channelNum)
Get a DMA channel's source address.
Definition: dl_dma.h:997
DL_DMA_BURST_SIZE
Definition: dl_dma.h:454
DL_DMA_AUTOEN
Definition: dl_dma.h:574
__STATIC_INLINE uint16_t DL_DMA_getTransferSize(const DMA_Regs *dma, uint8_t channelNum)
Get a channel's size of block of data for a DMA transfer.
Definition: dl_dma.h:1070
__STATIC_INLINE void DL_DMA_setSubscriberChanID(DMA_Regs *dma, DL_DMA_SUBSCRIBER_INDEX index, uint8_t chanID)
Sets the event subscriber channel id.
Definition: dl_dma.h:1472
__STATIC_INLINE void DL_DMA_setSrcAddr(DMA_Regs *dma, uint8_t channelNum, uint32_t srcAddr)
Set a DMA channel's source address.
Definition: dl_dma.h:983
__STATIC_INLINE uint32_t DL_DMA_getEnabledInterruptStatus(const DMA_Regs *dma, uint32_t interruptMask)
Check interrupt flag of enabled DMA interrupts.
Definition: dl_dma.h:1368
DL_DMA_TRANSFER_MODE
Definition: dl_dma.h:363
__STATIC_INLINE void DL_DMA_setDestIncrement(DMA_Regs *dma, uint8_t channelNum, DL_DMA_INCREMENT destIncrement)
Set a channel's destination address increment amount.
Definition: dl_dma.h:1142
__STATIC_INLINE DL_DMA_EVENT_IIDX DL_DMA_getPendingInterrupt(const DMA_Regs *dma)
Get highest priority pending DMA interrupt.
Definition: dl_dma.h:1408
__STATIC_INLINE DL_DMA_EXTENDED_MODE DL_DMA_getExtendedMode(const DMA_Regs *dma, uint8_t channelNum)
Get a DMA channel's extended mode.
Definition: dl_dma.h:894
DL_DMA_EVENT_IIDX
Definition: dl_dma.h:491