1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/dma/snps,dw-axi-dmac.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Synopsys DesignWare AXI DMA Controller
8
9maintainers:
10  - Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
11
12description:
13  Synopsys DesignWare AXI DMA Controller DT Binding
14
15allOf:
16  - $ref: dma-controller.yaml#
17
18properties:
19  compatible:
20    enum:
21      - snps,axi-dma-1.01a
22      - intel,kmb-axi-dma
23      - starfive,jh7110-axi-dma
24
25  reg:
26    minItems: 1
27    items:
28      - description: Address range of the DMAC registers
29      - description: Address range of the DMAC APB registers
30
31  reg-names:
32    items:
33      - const: axidma_ctrl_regs
34      - const: axidma_apb_regs
35
36  interrupts:
37    description:
38      If the IP-core synthesis parameter DMAX_INTR_IO_TYPE is set to 1, this
39      will be per-channel interrupts. Otherwise, this is a single combined IRQ
40      for all channels.
41    minItems: 1
42    maxItems: 8
43
44  clocks:
45    items:
46      - description: Bus Clock
47      - description: Module Clock
48
49  clock-names:
50    items:
51      - const: core-clk
52      - const: cfgr-clk
53
54  '#dma-cells':
55    const: 1
56
57  dma-channels:
58    minimum: 1
59    maximum: 8
60
61  resets:
62    minItems: 1
63    maxItems: 2
64
65  snps,dma-masters:
66    description: |
67      Number of AXI masters supported by the hardware.
68    $ref: /schemas/types.yaml#/definitions/uint32
69    enum: [1, 2]
70
71  snps,data-width:
72    description: |
73      AXI data width supported by hardware.
74      (0 - 8bits, 1 - 16bits, 2 - 32bits, ..., 6 - 512bits)
75    $ref: /schemas/types.yaml#/definitions/uint32
76    enum: [0, 1, 2, 3, 4, 5, 6]
77
78  snps,priority:
79    description: |
80      Channel priority specifier associated with the DMA channels.
81    $ref: /schemas/types.yaml#/definitions/uint32-array
82    minItems: 1
83    maxItems: 8
84
85  snps,block-size:
86    description: |
87      Channel block size specifier associated with the DMA channels.
88    $ref: /schemas/types.yaml#/definitions/uint32-array
89    minItems: 1
90    maxItems: 8
91
92  snps,axi-max-burst-len:
93    description: |
94      Restrict master AXI burst length by value specified in this property.
95      If this property is missing the maximum AXI burst length supported by
96      DMAC is used.
97    $ref: /schemas/types.yaml#/definitions/uint32
98    minimum: 1
99    maximum: 256
100
101required:
102  - compatible
103  - reg
104  - clocks
105  - clock-names
106  - interrupts
107  - '#dma-cells'
108  - dma-channels
109  - snps,dma-masters
110  - snps,data-width
111  - snps,priority
112  - snps,block-size
113
114if:
115  properties:
116    compatible:
117      contains:
118        enum:
119          - starfive,jh7110-axi-dma
120then:
121  properties:
122    resets:
123      minItems: 2
124      items:
125        - description: AXI reset line
126        - description: AHB reset line
127        - description: module reset
128else:
129  properties:
130    resets:
131      maxItems: 1
132
133additionalProperties: false
134
135examples:
136  - |
137    #include <dt-bindings/interrupt-controller/arm-gic.h>
138    #include <dt-bindings/interrupt-controller/irq.h>
139    /* example with snps,dw-axi-dmac */
140    dma-controller@80000 {
141        compatible = "snps,axi-dma-1.01a";
142        reg = <0x80000 0x400>;
143        clocks = <&core_clk>, <&cfgr_clk>;
144        clock-names = "core-clk", "cfgr-clk";
145        interrupt-parent = <&intc>;
146        interrupts = <27>;
147        #dma-cells = <1>;
148        dma-channels = <4>;
149        snps,dma-masters = <2>;
150        snps,data-width = <3>;
151        snps,block-size = <4096 4096 4096 4096>;
152        snps,priority = <0 1 2 3>;
153        snps,axi-max-burst-len = <16>;
154    };
155