DMA improvements.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14224 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
parent
8e0f307e75
commit
0353abddd1
|
@ -267,11 +267,24 @@ __STATIC_INLINE void dmaChannelSetModeX(const rp_dma_channel_t *dmachp,
|
|||
DMA_CTRL_TRIG_CHAIN_TO(dmachp->chnidx);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Aborts the current transfer on a DMA channel.
|
||||
*
|
||||
* @param[in] dmachp pointer to a rp_dma_channel_t structure
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
__STATIC_INLINE void dmaChannelAbortX(const rp_dma_channel_t *dmachp) {
|
||||
|
||||
dmachp->dma->SET.CHAN_ABORT = dmachp->chnmask;
|
||||
while ((dmachp->dma->CHAN_ABORT & dmachp->chnmask) != 0U) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Enables a DMA channel.
|
||||
*
|
||||
* @param[in] dmachp pointer to a rp_dma_channel_t structure
|
||||
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
|
@ -280,19 +293,29 @@ __STATIC_INLINE void dmaChannelEnableX(const rp_dma_channel_t *dmachp) {
|
|||
dmachp->channel->CTRL_TRIG |= DMA_CTRL_TRIG_EN;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Suspends a DMA channel.
|
||||
*
|
||||
* @param[in] dmachp pointer to a rp_dma_channel_t structure
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
__STATIC_INLINE void dmaChanneSuspendX(const rp_dma_channel_t *dmachp) {
|
||||
|
||||
dmachp->channel->CTRL_TRIG &= ~DMA_CTRL_TRIG_EN;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disables a DMA channel aborting the current transfer.
|
||||
*
|
||||
* @param[in] dmachp pointer to a rp_dma_channel_t structure
|
||||
|
||||
*
|
||||
* @special
|
||||
*/
|
||||
__STATIC_INLINE void dmaChannelDisableX(const rp_dma_channel_t *dmachp) {
|
||||
|
||||
dmachp->dma->CHAN_ABORT |= dmachp->chnmask;
|
||||
while ((dmachp->dma->CHAN_ABORT & dmachp->chnmask) != 0U) {
|
||||
}
|
||||
dmaChanneSuspendX(dmachp);
|
||||
dmaChannelAbortX(dmachp);
|
||||
(void) dmaChannelGetAndClearInterrupts(dmachp);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue