1cfa1927fSPeng Fan# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2cfa1927fSPeng Fan%YAML 1.2
3cfa1927fSPeng Fan---
4cfa1927fSPeng Fan$id: http://devicetree.org/schemas/dma/fsl,edma.yaml#
5cfa1927fSPeng Fan$schema: http://devicetree.org/meta-schemas/core.yaml#
6cfa1927fSPeng Fan
7cfa1927fSPeng Fantitle: Freescale enhanced Direct Memory Access(eDMA) Controller
8cfa1927fSPeng Fan
9cfa1927fSPeng Fandescription: |
10cfa1927fSPeng Fan  The eDMA channels have multiplex capability by programmable
11cfa1927fSPeng Fan  memory-mapped registers. channels are split into two groups, called
12cfa1927fSPeng Fan  DMAMUX0 and DMAMUX1, specific DMA request source can only be multiplexed
13cfa1927fSPeng Fan  by any channel of certain group, DMAMUX0 or DMAMUX1, but not both.
14cfa1927fSPeng Fan
15cfa1927fSPeng Fanmaintainers:
16cfa1927fSPeng Fan  - Peng Fan <peng.fan@nxp.com>
17cfa1927fSPeng Fan
18cfa1927fSPeng Fanproperties:
19cfa1927fSPeng Fan  compatible:
20cfa1927fSPeng Fan    oneOf:
21cfa1927fSPeng Fan      - enum:
22cfa1927fSPeng Fan          - fsl,vf610-edma
23cfa1927fSPeng Fan          - fsl,imx7ulp-edma
246eb439dfSFrank Li          - fsl,imx8qm-adma
256eb439dfSFrank Li          - fsl,imx8qm-edma
266eb439dfSFrank Li          - fsl,imx93-edma3
276eb439dfSFrank Li          - fsl,imx93-edma4
28cfa1927fSPeng Fan      - items:
29cfa1927fSPeng Fan          - const: fsl,ls1028a-edma
30cfa1927fSPeng Fan          - const: fsl,vf610-edma
31cfa1927fSPeng Fan
32cfa1927fSPeng Fan  reg:
336eb439dfSFrank Li    minItems: 1
34cfa1927fSPeng Fan    maxItems: 3
35cfa1927fSPeng Fan
36cfa1927fSPeng Fan  interrupts:
376eb439dfSFrank Li    minItems: 1
386eb439dfSFrank Li    maxItems: 64
39cfa1927fSPeng Fan
40cfa1927fSPeng Fan  interrupt-names:
416eb439dfSFrank Li    minItems: 1
426eb439dfSFrank Li    maxItems: 64
43cfa1927fSPeng Fan
44cfa1927fSPeng Fan  "#dma-cells":
456eb439dfSFrank Li    enum:
466eb439dfSFrank Li      - 2
476eb439dfSFrank Li      - 3
48cfa1927fSPeng Fan
49cfa1927fSPeng Fan  dma-channels:
50*63f894deSKrzysztof Kozlowski    minimum: 1
51*63f894deSKrzysztof Kozlowski    maximum: 64
52cfa1927fSPeng Fan
53cfa1927fSPeng Fan  clocks:
546eb439dfSFrank Li    minItems: 1
55cfa1927fSPeng Fan    maxItems: 2
56cfa1927fSPeng Fan
57cfa1927fSPeng Fan  clock-names:
586eb439dfSFrank Li    minItems: 1
59cfa1927fSPeng Fan    maxItems: 2
60cfa1927fSPeng Fan
61cfa1927fSPeng Fan  big-endian:
62cfa1927fSPeng Fan    description: |
63cfa1927fSPeng Fan      If present registers and hardware scatter/gather descriptors of the
64cfa1927fSPeng Fan      eDMA are implemented in big endian mode, otherwise in little mode.
65cfa1927fSPeng Fan    type: boolean
66cfa1927fSPeng Fan
67cfa1927fSPeng Fanrequired:
68cfa1927fSPeng Fan  - "#dma-cells"
69cfa1927fSPeng Fan  - compatible
70cfa1927fSPeng Fan  - reg
71cfa1927fSPeng Fan  - interrupts
72cfa1927fSPeng Fan  - clocks
73cfa1927fSPeng Fan  - dma-channels
74cfa1927fSPeng Fan
75cfa1927fSPeng FanallOf:
7610cafa2dSKrzysztof Kozlowski  - $ref: dma-controller.yaml#
77cfa1927fSPeng Fan  - if:
78cfa1927fSPeng Fan      properties:
79cfa1927fSPeng Fan        compatible:
80cfa1927fSPeng Fan          contains:
816eb439dfSFrank Li            enum:
826eb439dfSFrank Li              - fsl,imx8qm-adma
836eb439dfSFrank Li              - fsl,imx8qm-edma
846eb439dfSFrank Li              - fsl,imx93-edma3
856eb439dfSFrank Li              - fsl,imx93-edma4
866eb439dfSFrank Li    then:
876eb439dfSFrank Li      properties:
886eb439dfSFrank Li        "#dma-cells":
896eb439dfSFrank Li          const: 3
906eb439dfSFrank Li        # It is not necessary to write the interrupt name for each channel.
916eb439dfSFrank Li        # instead, you can simply maintain the sequential IRQ numbers as
926eb439dfSFrank Li        # defined for the DMA channels.
936eb439dfSFrank Li        interrupt-names: false
946eb439dfSFrank Li        clock-names:
956eb439dfSFrank Li          items:
966eb439dfSFrank Li            - const: dma
976eb439dfSFrank Li        clocks:
986eb439dfSFrank Li          maxItems: 1
996eb439dfSFrank Li
1006eb439dfSFrank Li  - if:
1016eb439dfSFrank Li      properties:
1026eb439dfSFrank Li        compatible:
1036eb439dfSFrank Li          contains:
104cfa1927fSPeng Fan            const: fsl,vf610-edma
105cfa1927fSPeng Fan    then:
106cfa1927fSPeng Fan      properties:
1076eb439dfSFrank Li        clocks:
1086eb439dfSFrank Li          minItems: 2
109cfa1927fSPeng Fan        clock-names:
110cfa1927fSPeng Fan          items:
111cfa1927fSPeng Fan            - const: dmamux0
112cfa1927fSPeng Fan            - const: dmamux1
113cfa1927fSPeng Fan        interrupts:
1146eb439dfSFrank Li          minItems: 2
115cfa1927fSPeng Fan          maxItems: 2
116cfa1927fSPeng Fan        interrupt-names:
117cfa1927fSPeng Fan          items:
118cfa1927fSPeng Fan            - const: edma-tx
119cfa1927fSPeng Fan            - const: edma-err
120cfa1927fSPeng Fan        reg:
1216eb439dfSFrank Li          minItems: 2
122cfa1927fSPeng Fan          maxItems: 3
1236eb439dfSFrank Li        "#dma-cells":
1246eb439dfSFrank Li          const: 2
1256eb439dfSFrank Li        dma-channels:
1266eb439dfSFrank Li          const: 32
127cfa1927fSPeng Fan
128cfa1927fSPeng Fan  - if:
129cfa1927fSPeng Fan      properties:
130cfa1927fSPeng Fan        compatible:
131cfa1927fSPeng Fan          contains:
132cfa1927fSPeng Fan            const: fsl,imx7ulp-edma
133cfa1927fSPeng Fan    then:
134cfa1927fSPeng Fan      properties:
1356eb439dfSFrank Li        clock:
1366eb439dfSFrank Li          minItems: 2
137cfa1927fSPeng Fan        clock-names:
138cfa1927fSPeng Fan          items:
139cfa1927fSPeng Fan            - const: dma
140cfa1927fSPeng Fan            - const: dmamux0
141cfa1927fSPeng Fan        interrupts:
1426eb439dfSFrank Li          minItems: 2
143cfa1927fSPeng Fan          maxItems: 17
144cfa1927fSPeng Fan        reg:
1456eb439dfSFrank Li          minItems: 2
146cfa1927fSPeng Fan          maxItems: 2
1476eb439dfSFrank Li        "#dma-cells":
1486eb439dfSFrank Li          const: 2
1496eb439dfSFrank Li        dma-channels:
1506eb439dfSFrank Li          const: 32
151cfa1927fSPeng Fan
152cfa1927fSPeng FanunevaluatedProperties: false
153cfa1927fSPeng Fan
154cfa1927fSPeng Fanexamples:
155cfa1927fSPeng Fan  - |
156cfa1927fSPeng Fan    #include <dt-bindings/interrupt-controller/arm-gic.h>
157cfa1927fSPeng Fan    #include <dt-bindings/clock/vf610-clock.h>
158cfa1927fSPeng Fan
159cfa1927fSPeng Fan    edma0: dma-controller@40018000 {
160cfa1927fSPeng Fan      #dma-cells = <2>;
161cfa1927fSPeng Fan      compatible = "fsl,vf610-edma";
162cfa1927fSPeng Fan      reg = <0x40018000 0x2000>,
163cfa1927fSPeng Fan            <0x40024000 0x1000>,
164cfa1927fSPeng Fan            <0x40025000 0x1000>;
165cfa1927fSPeng Fan      interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>,
166cfa1927fSPeng Fan                   <0 9 IRQ_TYPE_LEVEL_HIGH>;
167cfa1927fSPeng Fan      interrupt-names = "edma-tx", "edma-err";
168cfa1927fSPeng Fan      dma-channels = <32>;
169cfa1927fSPeng Fan      clock-names = "dmamux0", "dmamux1";
170cfa1927fSPeng Fan      clocks = <&clks VF610_CLK_DMAMUX0>, <&clks VF610_CLK_DMAMUX1>;
171cfa1927fSPeng Fan    };
172cfa1927fSPeng Fan
173cfa1927fSPeng Fan  - |
174cfa1927fSPeng Fan    #include <dt-bindings/interrupt-controller/arm-gic.h>
175cfa1927fSPeng Fan    #include <dt-bindings/clock/imx7ulp-clock.h>
176cfa1927fSPeng Fan
177cfa1927fSPeng Fan    edma1: dma-controller@40080000 {
178cfa1927fSPeng Fan      #dma-cells = <2>;
179cfa1927fSPeng Fan      compatible = "fsl,imx7ulp-edma";
180cfa1927fSPeng Fan      reg = <0x40080000 0x2000>,
181cfa1927fSPeng Fan            <0x40210000 0x1000>;
182cfa1927fSPeng Fan      dma-channels = <32>;
183cfa1927fSPeng Fan      interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
184cfa1927fSPeng Fan                   <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
185cfa1927fSPeng Fan                   <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
186cfa1927fSPeng Fan                   <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
187cfa1927fSPeng Fan                   <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
188cfa1927fSPeng Fan                   <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
189cfa1927fSPeng Fan                   <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
190cfa1927fSPeng Fan                   <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
191cfa1927fSPeng Fan                   <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
192cfa1927fSPeng Fan                   <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
193cfa1927fSPeng Fan                   <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
194cfa1927fSPeng Fan                   <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
195cfa1927fSPeng Fan                   <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
196cfa1927fSPeng Fan                   <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
197cfa1927fSPeng Fan                   <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
198cfa1927fSPeng Fan                   <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
199cfa1927fSPeng Fan                   /* last is eDMA2-ERR interrupt */
200cfa1927fSPeng Fan                   <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
201cfa1927fSPeng Fan       clock-names = "dma", "dmamux0";
202cfa1927fSPeng Fan       clocks = <&pcc2 IMX7ULP_CLK_DMA1>, <&pcc2 IMX7ULP_CLK_DMA_MUX1>;
203cfa1927fSPeng Fan    };
2046eb439dfSFrank Li
2056eb439dfSFrank Li  - |
2066eb439dfSFrank Li    #include <dt-bindings/interrupt-controller/arm-gic.h>
2076eb439dfSFrank Li    #include <dt-bindings/clock/imx93-clock.h>
2086eb439dfSFrank Li
2096eb439dfSFrank Li    dma-controller@44000000 {
2106eb439dfSFrank Li      compatible = "fsl,imx93-edma3";
2116eb439dfSFrank Li      reg = <0x44000000 0x200000>;
2126eb439dfSFrank Li      #dma-cells = <3>;
2136eb439dfSFrank Li      dma-channels = <31>;
2146eb439dfSFrank Li      interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
2156eb439dfSFrank Li                   <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
2166eb439dfSFrank Li                   <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
2176eb439dfSFrank Li                   <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
2186eb439dfSFrank Li                   <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
2196eb439dfSFrank Li                   <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
2206eb439dfSFrank Li                   <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
2216eb439dfSFrank Li                   <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
2226eb439dfSFrank Li                   <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
2236eb439dfSFrank Li                   <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
2246eb439dfSFrank Li                   <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
2256eb439dfSFrank Li                   <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
2266eb439dfSFrank Li                   <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
2276eb439dfSFrank Li                   <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
2286eb439dfSFrank Li                   <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
2296eb439dfSFrank Li                   <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
2306eb439dfSFrank Li                   <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>,
2316eb439dfSFrank Li                   <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
2326eb439dfSFrank Li                   <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
2336eb439dfSFrank Li                   <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
2346eb439dfSFrank Li                   <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
2356eb439dfSFrank Li                   <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
2366eb439dfSFrank Li                   <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
2376eb439dfSFrank Li                   <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
2386eb439dfSFrank Li                   <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
2396eb439dfSFrank Li                   <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
2406eb439dfSFrank Li                   <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
2416eb439dfSFrank Li                   <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
2426eb439dfSFrank Li                   <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
2436eb439dfSFrank Li                   <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
2446eb439dfSFrank Li                   <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
2456eb439dfSFrank Li        clocks = <&clk IMX93_CLK_EDMA1_GATE>;
2466eb439dfSFrank Li        clock-names = "dma";
2476eb439dfSFrank Li    };
248