# Copyright (c) 2022, TOKITA Hiroshi <tokita.hiroshi@gmail.com>
# SPDX-License-Identifier: Apache-2.0

description: |
  GD32 DMA controller with FIFO

  channel: Select channel for data transmitting

  slot: Select peripheral to connect DMA

  config: A 32bit mask specifying the DMA channel configuration
    - bit 6-7:   Direction  (see dma.h)
                 - 0x0: MEMORY to MEMORY
                 - 0x1: MEMORY to PERIPH
                 - 0x2: PERIPH to MEMORY
                 - 0x3: reserved for PERIPH to PERIPH

    - bit 9:     Peripheral address increase
                 - 0x0: no address increment between transfers
                 - 0x1: increment address between transfers

    - bit 10:    Memory address increase
                 - 0x0: no address increase between transfers
                 - 0x1: increase address between transfers

    - bit 11-12: Peripheral data width
                 - 0x0: 8 bits
                 - 0x1: 16 bits
                 - 0x2: 32 bits
                 - 0x3: reserved

    - bit 13-14: Memory data width
                 - 0x0: 8 bits
                 - 0x1: 16 bits
                 - 0x2: 32 bits
                 - 0x3: reserved

    - bit 15:    Peripheral Increment Offset Size
                 - 0x0: offset size is linked to the peripheral bus width
                 - 0x1: offset size is fixed to 4 (32-bit alignment)

    - bit 16-17: Priority
                 - 0x0: low
                 - 0x1: medium
                 - 0x2: high
                 - 0x3: very high

  fifo-threshold: A 32bit bitfield value specifying FIFO threshold
    - bit 0-1:   Depth of DMA's FIFO used by burst-transfer.
                 - 0x0: 1 word
                 - 0x1: 2 word
                 - 0x2: 3 word
                 - 0x3: 4 word


  Example of devicetree configuration

  &spi0 {
        status = "okay";
        pinctrl-0 = <&spi0_default>;
        pinctrl-names = "default";
        cs-gpios = <&gpioa 4 GPIO_ACTIVE_LOW>;

        dmas = <&dma1 0 3 0 0>, <&dma1 5 3 GD32_DMA_PRIORITY_HIGH 0>
        dma-names = "rx", "tx";
  };

  "spi0" uses dma1 for transmitting and receiving in the example.
  Each is named "rx" and "tx".
  The first cell assigns channel 0 to receive and channel 5 to transmit.
  The second cell is slot. Both channels select 3.
  What the slot number '3' means depends on the DMA controller and channel.
  See the Hardware manual.
  The config that places on the third can take various configs.
  But the setting used depends on each driver implementation.
  Set the priority for the transmitting channel as HIGH, LOW(the default) for receive channel.
  The fifo-threshold cell that places the fourth is configuring FIFO threshold.
  The behavior of burst transfer determines by data-width in the config cell,
  burst-length in the dma_config struct, and fifo-threshold.
  A single burst transfer transfers [(4 * fifo-threshold)] bytes using with DMA's FIFO.
  Where (data-width * burst-length) must be multiple numbers of burst transfer size.
  For example, In the case of data-width is 'byte' and burst-length is 8.
  If the fifo-threshold is a 2-word case, it runs one burst transfer to transfer 8 bytes.
  Or the fifo-threshold is a 4-word case, runs two times burst transfer to transferring 8 bytes each
  time.

compatible: "gd,gd32-dma-v1"

include: ["reset-device.yaml", "gd,gd32-dma-base.yaml"]

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

dma-cells:
  - channel
  - slot
  - config
  - fifo-threshold
