~ruther/qmk_firmware

15df82cdf3f5b5d81af2cc235fbfe7643cd044b9 — Sergey Vlasov 5 years ago 1de39e5
Fix DMA stream ID calculation in ws2812_pwm (#10008)

Some STM32 chips have STM32_DMA1_STREAM1 as the first DMA stream, others
(F4xx, F7xx, H7xx) have STM32_DMA1_STREAM0.  Instead of those names, use
STM32_DMA_STREAM(0), which should always give the first stm32_dma_stream_t
structure in the DMA streams array, so that the stream ID would be
calculated correctly.
1 files changed, 1 insertions(+), 1 deletions(-)

M drivers/chibios/ws2812_pwm.c
M drivers/chibios/ws2812_pwm.c => drivers/chibios/ws2812_pwm.c +1 -1
@@ 180,7 180,7 @@ void ws2812_init(void) {

    // Configure DMA
    // dmaInit(); // Joe added this
    dmaStreamAlloc(WS2812_DMA_STREAM - STM32_DMA1_STREAM1, 10, NULL, NULL);
    dmaStreamAlloc(WS2812_DMA_STREAM - STM32_DMA_STREAM(0), 10, NULL, NULL);
    dmaStreamSetPeripheral(WS2812_DMA_STREAM, &(WS2812_PWM_DRIVER.tim->CCR[WS2812_PWM_CHANNEL - 1]));  // Ziel ist der An-Zeit im Cap-Comp-Register
    dmaStreamSetMemory0(WS2812_DMA_STREAM, ws2812_frame_buffer);
    dmaStreamSetTransactionSize(WS2812_DMA_STREAM, WS2812_BIT_N);