# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/dma/cirrus,ep9301-dma-m2m.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Cirrus Logic ep93xx SoC DMA controller

maintainers:
  - Alexander Sverdlin <alexander.sverdlin@gmail.com>
  - Nikita Shubin <nikita.shubin@maquefel.me>

allOf:
  - $ref: dma-controller.yaml#

properties:
  compatible:
    oneOf:
      - const: cirrus,ep9301-dma-m2m
      - items:
          - enum:
              - cirrus,ep9302-dma-m2m
              - cirrus,ep9307-dma-m2m
              - cirrus,ep9312-dma-m2m
              - cirrus,ep9315-dma-m2m
          - const: cirrus,ep9301-dma-m2m

  reg:
    items:
      - description: m2m0 channel registers
      - description: m2m1 channel registers

  clocks:
    items:
      - description: m2m0 channel gate clock
      - description: m2m1 channel gate clock

  clock-names:
    items:
      - const: m2m0
      - const: m2m1

  interrupts:
    items:
      - description: m2m0 channel interrupt
      - description: m2m1 channel interrupt

  '#dma-cells':
    const: 2
    description: |
      The first cell is the unique device channel number as indicated by this
      table for ep93xx:

      10: SPI controller
      11: IDE controller

      The second cell is the DMA direction line number:

      1: Memory to device
      2: Device to memory

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - interrupts

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/cirrus,ep9301-syscon.h>
    dma-controller@80000100 {
        compatible = "cirrus,ep9301-dma-m2m";
        reg = <0x80000100 0x0040>,
              <0x80000140 0x0040>;
        clocks = <&syscon EP93XX_CLK_M2M0>,
                 <&syscon EP93XX_CLK_M2M1>;
        clock-names = "m2m0", "m2m1";
        interrupt-parent = <&vic0>;
        interrupts = <17>, <18>;
        #dma-cells = <2>;
    };
