# Copyright (c) 2021, STMicroelectronics
# SPDX-License-Identifier: Apache-2.0

description: |
  STM32 DMA controller (V2bis) for the stm32F0, stm32F1 and stm32L1 soc families

  This DMA controller includes several channels with different requests.
  All the requests ar ORed before entering the DMA, so that only one request
  must be enabled at a time.
  DMA clients connected to the STM32 DMA controller must use the format
  described in the dma.txt file, using a 2-cell specifier for each
  channel: a phandle to the DMA controller plus the following four integer cells:
    1. channel: the dma stream from 1 to <dma-requests>
    2. channel-config: A 32bit mask specifying the DMA channel configuration
    which is device dependent:
        -bit 6-7 : Direction  (see dma.h)
               0x0: MEM to MEM
               0x1: MEM to PERIPH
               0x2: PERIPH to MEM
               0x3: reserved for PERIPH to PERIPH
        -bit 9 : Peripheral Increment Address
               0x0: no address increment between transfers
               0x1: increment address between transfers
        -bit 10 : Memory Increment Address
               0x0: no address increment between transfers
               0x1: increment address between transfers
        -bit 11-12 : Peripheral data size
               0x0: Byte (8 bits)
               0x1: Half-word (16 bits)
               0x2: Word (32 bits)
               0x3: reserved
        -bit 13-14 : Memory data size
               0x0: Byte (8 bits)
               0x1: Half-word (16 bits)
               0x2: Word (32 bits)
               0x3: reserved
        -bit 15: Reserved
        -bit 16-17 : Priority level
               0x0: low
               0x1: medium
               0x2: high
               0x3: very high
  Example of dma node for stm32f103
     dma1: dma-controller@40020400 {
         compatible = "st,stm32-dma-v2bis";
         ...
         dma-requests = <7>;
         status = "disabled";
         label = "DMA_1";
        };

  For the client part, example for stm32f103 on DMA1 instance
    Tx using channel 3
    Rx using channel 2
    spi1 {
     compatible = "st,stm32-spi";
     dmas = <&dma1 3 0x20440>,
            <&dma1 2 0x20480>;
     dma-names = "tx", "rx";
    };

compatible: "st,stm32-dma-v2bis"

include:
  - name: st,stm32-dma.yaml

properties:
    "#dma-cells":
      const: 2

# Parameter syntax of stm32 follows the dma client dts syntax
# in the Linux kernel declared in
# https://git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git/plain/Bindings/dma/st,stm32-dma.yaml

dma-cells:
  - channel
  - channel-config
