stm32: DMA: driver bindings new packaging

Francois RAMU

Hi all,


I'd like to inform STM32   DMA  users  that I'm pushing a change [1] to simplify the definition of the <dma—cells> properties for dma peripherals of the stm32 MCUs.

This change now proposes 3 versions of the dma plus the dmamux in the dts and selects the nb of elements for the <dma-cells>

It depends on the type of DMA instance of the stm32 MCU (from Ref. Man). With this :


DMA V1 : DMA with FIFO control

à the <dma-cells>   has 4 elements : ‘channel’, ‘slot’, ‘channel-config’, ‘feature’

for example on stm32F4 or stm32F2 MCUs


DMA V2 : DMA without FIFO control and selectable request for each channel

à  the <dma-cells>   has 3 elements : : ‘channel’, ‘slot’, ‘channel-config’

for example on stm32L4xx or stm32L0xx MCUs


DMA  V2bis : DMA without FIFO control and fixed request (slot) for each channel

à the <dma-cells>   has 2 elements : : ‘channel’,  ‘channel-config’

 For stm32L1 and stm32F1   MCUs


DMAMUX   multiplexing DMA channels : like a DMA V2

à does not require ‘feature’ parameter

For example on stm32G4 or stm32WB   MCUs



Benefit is to remove unused parameters in the DTS and simply the structure of the dma peripherals.


To declare a new peripheral client of the DMA, the version of the DMA must be first identify, according to the stm32  Ref Manual.

Then the <dma-cells> properties is filled with :

‘channel’ to select a free DMA channel for transfer

‘slot’ to select the peripheral request in DMA V1 or DMA V2 or DMAMUX versions

‘channel-config’,  to configure the dma channel

‘feature’  for configuring the FIFO in DMA V1 versions


This change will be hopefully integrated in the next Zephyr DV that will be released in October ‘21.