From 5be87f1e22620b2980b99e442f7e845c1bbb8a48 Mon Sep 17 00:00:00 2001 From: Andrew Scheller Date: Fri, 21 Jun 2024 20:29:47 +0100 Subject: [PATCH] Clarify that DMA timer fraction must be <= 1 (#1723) --- src/rp2_common/hardware_dma/include/hardware/dma.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/rp2_common/hardware_dma/include/hardware/dma.h b/src/rp2_common/hardware_dma/include/hardware/dma.h index fe4b97ec..f6643a26 100644 --- a/src/rp2_common/hardware_dma/include/hardware/dma.h +++ b/src/rp2_common/hardware_dma/include/hardware/dma.h @@ -867,7 +867,8 @@ bool dma_timer_is_claimed(uint timer); * \ingroup hardware_dma * * The timer will run at the system_clock_freq * numerator / denominator, so this is the speed - * that data elements will be transferred at via a DMA channel using this timer as a DREQ + * that data elements will be transferred at via a DMA channel using this timer as a DREQ. The + * multiplier must be less than or equal to one. * * \param timer the dma timer * \param numerator the fraction's numerator @@ -875,6 +876,7 @@ bool dma_timer_is_claimed(uint timer); */ static inline void dma_timer_set_fraction(uint timer, uint16_t numerator, uint16_t denominator) { check_dma_timer_param(timer); + invalid_params_if(DMA, numerator > denominator); dma_hw->timer[timer] = (((uint32_t)numerator) << DMA_TIMER0_X_LSB) | (((uint32_t)denominator) << DMA_TIMER0_Y_LSB); }