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

title: Freescale enhanced Direct Memory Access(eDMA) Controller

description: |
  The eDMA channels have multiplex capability by programmable
  memory-mapped registers. channels are split into two groups, called
  DMAMUX0 and DMAMUX1, specific DMA request source can only be multiplexed
  by any channel of certain group, DMAMUX0 or DMAMUX1, but not both.

maintainers:
  - Peng Fan <peng.fan@nxp.com>

properties:
  compatible:
    oneOf:
      - enum:
          - fsl,vf610-edma
          - fsl,imx7ulp-edma
          - fsl,imx8qm-edma
          - fsl,imx8ulp-edma
          - fsl,imx93-edma3
          - fsl,imx93-edma4
          - fsl,imx95-edma5
      - items:
          - const: fsl,ls1028a-edma
          - const: fsl,vf610-edma

  reg:
    minItems: 1
    maxItems: 3

  interrupts:
    minItems: 1
    maxItems: 64

  interrupt-names:
    minItems: 1
    maxItems: 64

  "#dma-cells":
    description: |
      Specifies the number of cells needed to encode an DMA channel.

      Encode for cells number 2:
        cell 0: index of dma channel mux instance.
        cell 1: peripheral dma request id.

      Encode for cells number 3:
        cell 0: peripheral dma request id.
        cell 1: dma channel priority.
        cell 2: bitmask, defined at include/dt-bindings/dma/fsl-edma.h
    enum:
      - 2
      - 3

  dma-channels:
    minimum: 1
    maximum: 64

  clocks:
    minItems: 1
    maxItems: 33

  clock-names:
    minItems: 1
    maxItems: 33

  power-domains:
    description:
      The number of power domains matches the number of channels, arranged
      in ascending order according to their associated DMA channels.
    minItems: 1
    maxItems: 64

  big-endian:
    description: |
      If present registers and hardware scatter/gather descriptors of the
      eDMA are implemented in big endian mode, otherwise in little mode.
    type: boolean

required:
  - "#dma-cells"
  - compatible
  - reg
  - interrupts
  - dma-channels

allOf:
  - $ref: dma-controller.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - fsl,imx8qm-edma
              - fsl,imx93-edma3
              - fsl,imx93-edma4
              - fsl,imx95-edma5
    then:
      properties:
        "#dma-cells":
          const: 3
        # It is not necessary to write the interrupt name for each channel.
        # instead, you can simply maintain the sequential IRQ numbers as
        # defined for the DMA channels.
        interrupt-names: false
        clock-names:
          items:
            - const: dma
        clocks:
          maxItems: 1

  - if:
      properties:
        compatible:
          contains:
            const: fsl,vf610-edma
    then:
      properties:
        clocks:
          minItems: 2
          maxItems: 2
        clock-names:
          items:
            - const: dmamux0
            - const: dmamux1
        interrupts:
          minItems: 2
          maxItems: 2
        interrupt-names:
          items:
            - const: edma-tx
            - const: edma-err
        reg:
          minItems: 2
          maxItems: 3
        "#dma-cells":
          const: 2
        dma-channels:
          const: 32

  - if:
      properties:
        compatible:
          contains:
            const: fsl,imx7ulp-edma
    then:
      properties:
        clock:
          minItems: 2
          maxItems: 2
        clock-names:
          items:
            - const: dma
            - const: dmamux0
        interrupts:
          minItems: 2
          maxItems: 17
        reg:
          minItems: 2
          maxItems: 2
        "#dma-cells":
          const: 2
        dma-channels:
          const: 32

  - if:
      properties:
        compatible:
          contains:
            const: fsl,imx8ulp-edma
    then:
      properties:
        clocks:
          minItems: 33
        clock-names:
          minItems: 33
          items:
            oneOf:
              - const: dma
              - pattern: "^ch(0[0-9]|[1-2][0-9]|3[01])$"

        interrupt-names: false
        interrupts:
          minItems: 32
        "#dma-cells":
          const: 3

  - if:
      properties:
        compatible:
          contains:
            enum:
              - fsl,vf610-edma
              - fsl,imx7ulp-edma
              - fsl,imx93-edma3
              - fsl,imx93-edma4
              - fsl,imx95-edma5
              - fsl,imx8ulp-edma
              - fsl,ls1028a-edma
    then:
      required:
        - clocks

  - if:
      properties:
        compatible:
          contains:
            enum:
              - fsl,imx8qm-adma
              - fsl,imx8qm-edma
    then:
      required:
        - power-domains
    else:
      properties:
        power-domains: false

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/vf610-clock.h>

    edma0: dma-controller@40018000 {
      #dma-cells = <2>;
      compatible = "fsl,vf610-edma";
      reg = <0x40018000 0x2000>,
            <0x40024000 0x1000>,
            <0x40025000 0x1000>;
      interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>,
                   <0 9 IRQ_TYPE_LEVEL_HIGH>;
      interrupt-names = "edma-tx", "edma-err";
      dma-channels = <32>;
      clock-names = "dmamux0", "dmamux1";
      clocks = <&clks VF610_CLK_DMAMUX0>, <&clks VF610_CLK_DMAMUX1>;
    };

  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/imx7ulp-clock.h>

    edma1: dma-controller@40080000 {
      #dma-cells = <2>;
      compatible = "fsl,imx7ulp-edma";
      reg = <0x40080000 0x2000>,
            <0x40210000 0x1000>;
      dma-channels = <32>;
      interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
                   /* last is eDMA2-ERR interrupt */
                   <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
       clock-names = "dma", "dmamux0";
       clocks = <&pcc2 IMX7ULP_CLK_DMA1>, <&pcc2 IMX7ULP_CLK_DMA_MUX1>;
    };

  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/firmware/imx/rsrc.h>

    dma-controller@5a9f0000 {
      compatible = "fsl,imx8qm-edma";
      reg = <0x5a9f0000 0x90000>;
      #dma-cells = <3>;
      dma-channels = <8>;
      interrupts = <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>,
                   <GIC_SPI 431 IRQ_TYPE_LEVEL_HIGH>;
      power-domains = <&pd IMX_SC_R_DMA_3_CH0>,
                      <&pd IMX_SC_R_DMA_3_CH1>,
                      <&pd IMX_SC_R_DMA_3_CH2>,
                      <&pd IMX_SC_R_DMA_3_CH3>,
                      <&pd IMX_SC_R_DMA_3_CH4>,
                      <&pd IMX_SC_R_DMA_3_CH5>,
                      <&pd IMX_SC_R_DMA_3_CH6>,
                      <&pd IMX_SC_R_DMA_3_CH7>;
    };
