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
24cfa1927fSPeng Fan      - items:
25cfa1927fSPeng Fan          - const: fsl,ls1028a-edma
26cfa1927fSPeng Fan          - const: fsl,vf610-edma
27cfa1927fSPeng Fan
28cfa1927fSPeng Fan  reg:
29cfa1927fSPeng Fan    minItems: 2
30cfa1927fSPeng Fan    maxItems: 3
31cfa1927fSPeng Fan
32cfa1927fSPeng Fan  interrupts:
33cfa1927fSPeng Fan    minItems: 2
34cfa1927fSPeng Fan    maxItems: 17
35cfa1927fSPeng Fan
36cfa1927fSPeng Fan  interrupt-names:
37cfa1927fSPeng Fan    minItems: 2
38cfa1927fSPeng Fan    maxItems: 17
39cfa1927fSPeng Fan
40cfa1927fSPeng Fan  "#dma-cells":
41cfa1927fSPeng Fan    const: 2
42cfa1927fSPeng Fan
43cfa1927fSPeng Fan  dma-channels:
44cfa1927fSPeng Fan    const: 32
45cfa1927fSPeng Fan
46cfa1927fSPeng Fan  clocks:
47cfa1927fSPeng Fan    maxItems: 2
48cfa1927fSPeng Fan
49cfa1927fSPeng Fan  clock-names:
50cfa1927fSPeng Fan    maxItems: 2
51cfa1927fSPeng Fan
52cfa1927fSPeng Fan  big-endian:
53cfa1927fSPeng Fan    description: |
54cfa1927fSPeng Fan      If present registers and hardware scatter/gather descriptors of the
55cfa1927fSPeng Fan      eDMA are implemented in big endian mode, otherwise in little mode.
56cfa1927fSPeng Fan    type: boolean
57cfa1927fSPeng Fan
58cfa1927fSPeng Fanrequired:
59cfa1927fSPeng Fan  - "#dma-cells"
60cfa1927fSPeng Fan  - compatible
61cfa1927fSPeng Fan  - reg
62cfa1927fSPeng Fan  - interrupts
63cfa1927fSPeng Fan  - clocks
64cfa1927fSPeng Fan  - dma-channels
65cfa1927fSPeng Fan
66cfa1927fSPeng FanallOf:
67*10cafa2dSKrzysztof Kozlowski  - $ref: dma-controller.yaml#
68cfa1927fSPeng Fan  - if:
69cfa1927fSPeng Fan      properties:
70cfa1927fSPeng Fan        compatible:
71cfa1927fSPeng Fan          contains:
72cfa1927fSPeng Fan            const: fsl,vf610-edma
73cfa1927fSPeng Fan    then:
74cfa1927fSPeng Fan      properties:
75cfa1927fSPeng Fan        clock-names:
76cfa1927fSPeng Fan          items:
77cfa1927fSPeng Fan            - const: dmamux0
78cfa1927fSPeng Fan            - const: dmamux1
79cfa1927fSPeng Fan        interrupts:
80cfa1927fSPeng Fan          maxItems: 2
81cfa1927fSPeng Fan        interrupt-names:
82cfa1927fSPeng Fan          items:
83cfa1927fSPeng Fan            - const: edma-tx
84cfa1927fSPeng Fan            - const: edma-err
85cfa1927fSPeng Fan        reg:
86cfa1927fSPeng Fan          maxItems: 3
87cfa1927fSPeng Fan
88cfa1927fSPeng Fan  - if:
89cfa1927fSPeng Fan      properties:
90cfa1927fSPeng Fan        compatible:
91cfa1927fSPeng Fan          contains:
92cfa1927fSPeng Fan            const: fsl,imx7ulp-edma
93cfa1927fSPeng Fan    then:
94cfa1927fSPeng Fan      properties:
95cfa1927fSPeng Fan        clock-names:
96cfa1927fSPeng Fan          items:
97cfa1927fSPeng Fan            - const: dma
98cfa1927fSPeng Fan            - const: dmamux0
99cfa1927fSPeng Fan        interrupts:
100cfa1927fSPeng Fan          maxItems: 17
101cfa1927fSPeng Fan        reg:
102cfa1927fSPeng Fan          maxItems: 2
103cfa1927fSPeng Fan
104cfa1927fSPeng FanunevaluatedProperties: false
105cfa1927fSPeng Fan
106cfa1927fSPeng Fanexamples:
107cfa1927fSPeng Fan  - |
108cfa1927fSPeng Fan    #include <dt-bindings/interrupt-controller/arm-gic.h>
109cfa1927fSPeng Fan    #include <dt-bindings/clock/vf610-clock.h>
110cfa1927fSPeng Fan
111cfa1927fSPeng Fan    edma0: dma-controller@40018000 {
112cfa1927fSPeng Fan      #dma-cells = <2>;
113cfa1927fSPeng Fan      compatible = "fsl,vf610-edma";
114cfa1927fSPeng Fan      reg = <0x40018000 0x2000>,
115cfa1927fSPeng Fan            <0x40024000 0x1000>,
116cfa1927fSPeng Fan            <0x40025000 0x1000>;
117cfa1927fSPeng Fan      interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>,
118cfa1927fSPeng Fan                   <0 9 IRQ_TYPE_LEVEL_HIGH>;
119cfa1927fSPeng Fan      interrupt-names = "edma-tx", "edma-err";
120cfa1927fSPeng Fan      dma-channels = <32>;
121cfa1927fSPeng Fan      clock-names = "dmamux0", "dmamux1";
122cfa1927fSPeng Fan      clocks = <&clks VF610_CLK_DMAMUX0>, <&clks VF610_CLK_DMAMUX1>;
123cfa1927fSPeng Fan    };
124cfa1927fSPeng Fan
125cfa1927fSPeng Fan  - |
126cfa1927fSPeng Fan    #include <dt-bindings/interrupt-controller/arm-gic.h>
127cfa1927fSPeng Fan    #include <dt-bindings/clock/imx7ulp-clock.h>
128cfa1927fSPeng Fan
129cfa1927fSPeng Fan    edma1: dma-controller@40080000 {
130cfa1927fSPeng Fan      #dma-cells = <2>;
131cfa1927fSPeng Fan      compatible = "fsl,imx7ulp-edma";
132cfa1927fSPeng Fan      reg = <0x40080000 0x2000>,
133cfa1927fSPeng Fan            <0x40210000 0x1000>;
134cfa1927fSPeng Fan      dma-channels = <32>;
135cfa1927fSPeng Fan      interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
136cfa1927fSPeng Fan                   <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
137cfa1927fSPeng Fan                   <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
138cfa1927fSPeng Fan                   <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
139cfa1927fSPeng Fan                   <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
140cfa1927fSPeng Fan                   <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
141cfa1927fSPeng Fan                   <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
142cfa1927fSPeng Fan                   <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
143cfa1927fSPeng Fan                   <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
144cfa1927fSPeng Fan                   <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
145cfa1927fSPeng Fan                   <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
146cfa1927fSPeng Fan                   <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
147cfa1927fSPeng Fan                   <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
148cfa1927fSPeng Fan                   <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
149cfa1927fSPeng Fan                   <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
150cfa1927fSPeng Fan                   <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
151cfa1927fSPeng Fan                   /* last is eDMA2-ERR interrupt */
152cfa1927fSPeng Fan                   <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
153cfa1927fSPeng Fan       clock-names = "dma", "dmamux0";
154cfa1927fSPeng Fan       clocks = <&pcc2 IMX7ULP_CLK_DMA1>, <&pcc2 IMX7ULP_CLK_DMA_MUX1>;
155cfa1927fSPeng Fan    };
156