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

description: |
  STM32 DMA controller for the stm32U5 soc family

  It is present on stm32U5 devices as a GP DMA
  This controller includes several channels with different requests.
  DMA clients connected to the STM32 DMA controller must use a three-cell
  specifier for each channel.
  For the client part, example for stm32u585 on GPDMA1 instance
    Tx using channel 0 with request 7
    Rx using channel 1 with request 6
    spi1 {
     dmas = <&gpdma1 0 7 0x10440>,
            <&gpdma1 1 6 0x10480>;
     dma-names = "tx", "rx";
    };
  It is a phandle to the DMA controller plus the following three integer cells
    1. channel: the stream or channel from 0 to (<dma-channels> - 1).
    2. slot: DMA periph request ID, which is written in the REQSEL bits of the CxTR2
    the slot is a value between <0> .. (<dma-requests> - 1).
    3. 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

compatible: "st,stm32u5-dma"

include: st,stm32-dma.yaml

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

dma-cells:
  - channel
  - slot
  - channel-config
