From 071d5e01af89aae288458eb8f5ad73264dafd4ea Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 14 Feb 2019 07:10:55 +1100 Subject: [PATCH] HAL_ChibiOS: added DMAMUX channel assignment calls --- libraries/AP_HAL_ChibiOS/RCOutput.cpp | 3 +++ libraries/AP_HAL_ChibiOS/SoftSigReader.cpp | 3 +++ libraries/AP_HAL_ChibiOS/UARTDriver.cpp | 6 ++++++ 3 files changed, 12 insertions(+) diff --git a/libraries/AP_HAL_ChibiOS/RCOutput.cpp b/libraries/AP_HAL_ChibiOS/RCOutput.cpp index 16634994a43..645919e3971 100644 --- a/libraries/AP_HAL_ChibiOS/RCOutput.cpp +++ b/libraries/AP_HAL_ChibiOS/RCOutput.cpp @@ -823,6 +823,9 @@ void RCOutput::dma_allocate(Shared_DMA *ctx) chSysLock(); group.dma = dmaStreamAllocI(group.dma_up_stream_id, 10, dma_irq_callback, &group); chSysUnlock(); +#if STM32_DMA_SUPPORTS_DMAMUX + dmaSetRequestSource(group.dma, group.dma_up_channel); +#endif } } } diff --git a/libraries/AP_HAL_ChibiOS/SoftSigReader.cpp b/libraries/AP_HAL_ChibiOS/SoftSigReader.cpp index 3ce7552f51d..5f8879ebef4 100644 --- a/libraries/AP_HAL_ChibiOS/SoftSigReader.cpp +++ b/libraries/AP_HAL_ChibiOS/SoftSigReader.cpp @@ -44,6 +44,9 @@ bool SoftSigReader::attach_capture_timer(ICUDriver* icu_drv, icuchannel_t chan, (void *)this); osalDbgAssert(dma, "stream allocation failed"); chSysUnlock(); +#if STM32_DMA_SUPPORTS_DMAMUX + dmaSetRequestSource(dma, dma_channel); +#endif //setup address for full word transfer from Timer dmaStreamSetPeripheral(dma, &icu_drv->tim->DMAR); diff --git a/libraries/AP_HAL_ChibiOS/UARTDriver.cpp b/libraries/AP_HAL_ChibiOS/UARTDriver.cpp index 7d1809f63de..41401f8d94c 100644 --- a/libraries/AP_HAL_ChibiOS/UARTDriver.cpp +++ b/libraries/AP_HAL_ChibiOS/UARTDriver.cpp @@ -239,6 +239,9 @@ void UARTDriver::begin(uint32_t b, uint16_t rxS, uint16_t txS) #else dmaStreamSetPeripheral(rxdma, &((SerialDriver*)sdef.serial)->usart->DR); #endif // STM32F7 +#if STM32_DMA_SUPPORTS_DMAMUX + dmaSetRequestSource(rxdma, sdef.dma_rx_channel_id); +#endif } if (sdef.dma_tx) { // we only allow for sharing of the TX DMA channel, not the RX @@ -330,6 +333,9 @@ void UARTDriver::dma_tx_allocate(Shared_DMA *ctx) #else dmaStreamSetPeripheral(txdma, &((SerialDriver*)sdef.serial)->usart->DR); #endif // STM32F7 +#if STM32_DMA_SUPPORTS_DMAMUX + dmaSetRequestSource(txdma, sdef.dma_tx_channel_id); +#endif #endif // HAL_USE_SERIAL }