blob: 5da8291a7de09ea105268b5dca76502765e98a24 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: GPL-2.0-only
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/dma/snps,dma-spear1340.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Synopsys Designware DMA Controller
8
9maintainers:
10 - Viresh Kumar <vireshk@kernel.org>
11 - Andy Shevchenko <andriy.shevchenko@linux.intel.com>
12
13allOf:
14 - $ref: dma-controller.yaml#
15
16properties:
17 compatible:
18 oneOf:
19 - const: snps,dma-spear1340
20 - items:
21 - enum:
22 - renesas,r9a06g032-dma
23 - const: renesas,rzn1-dma
24
25
26 "#dma-cells":
27 minimum: 3
28 maximum: 4
29 description: |
30 First cell is a phandle pointing to the DMA controller. Second one is
31 the DMA request line number. Third cell is the memory master identifier
32 for transfers on dynamically allocated channel. Fourth cell is the
33 peripheral master identifier for transfers on an allocated channel. Fifth
34 cell is an optional mask of the DMA channels permitted to be allocated
35 for the corresponding client device.
36
37 reg:
38 maxItems: 1
39
40 interrupts:
41 maxItems: 1
42
43 clocks:
44 maxItems: 1
45
46 clock-names:
47 description: AHB interface reference clock.
48 const: hclk
49
50 dma-channels:
51 description: |
52 Number of DMA channels supported by the controller. In case if
53 not specified the driver will try to auto-detect this and
54 the rest of the optional parameters.
55 minimum: 1
56 maximum: 8
57
58 dma-requests:
59 minimum: 1
60 maximum: 16
61
62 dma-masters:
63 $ref: /schemas/types.yaml#/definitions/uint32
64 description: |
65 Number of DMA masters supported by the controller. In case if
66 not specified the driver will try to auto-detect this and
67 the rest of the optional parameters.
68 minimum: 1
69 maximum: 4
70
71 chan_allocation_order:
72 $ref: /schemas/types.yaml#/definitions/uint32
73 description: |
74 DMA channels allocation order specifier. Zero means ascending order
75 (first free allocated), while one - descending (last free allocated).
76 default: 0
77 enum: [0, 1]
78
79 chan_priority:
80 $ref: /schemas/types.yaml#/definitions/uint32
81 description: |
82 DMA channels priority order. Zero means ascending channels priority
83 so the very first channel has the highest priority. While 1 means
84 descending priority (the last channel has the highest priority).
85 default: 0
86 enum: [0, 1]
87
88 block_size:
89 $ref: /schemas/types.yaml#/definitions/uint32
90 description: Maximum block size supported by the DMA controller.
91 enum: [3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095]
92
93 data-width:
94 $ref: /schemas/types.yaml#/definitions/uint32-array
95 description: Data bus width per each DMA master in bytes.
96 items:
97 maxItems: 4
98 items:
99 enum: [4, 8, 16, 32]
100
101 data_width:
102 $ref: /schemas/types.yaml#/definitions/uint32-array
103 deprecated: true
104 description: |
105 Data bus width per each DMA master in (2^n * 8) bits. This property is
106 deprecated. It' usage is discouraged in favor of data-width one. Moreover
107 the property incorrectly permits to define data-bus width of 8 and 16
108 bits, which is impossible in accordance with DW DMAC IP-core data book.
109 items:
110 maxItems: 4
111 items:
112 enum:
113 - 0 # 8 bits
114 - 1 # 16 bits
115 - 2 # 32 bits
116 - 3 # 64 bits
117 - 4 # 128 bits
118 - 5 # 256 bits
119 default: 0
120
121 multi-block:
122 $ref: /schemas/types.yaml#/definitions/uint32-array
123 description: |
124 LLP-based multi-block transfer supported by hardware per
125 each DMA channel.
126 items:
127 maxItems: 8
128 items:
129 enum: [0, 1]
130 default: 1
131
132 snps,max-burst-len:
133 $ref: /schemas/types.yaml#/definitions/uint32-array
134 description: |
135 Maximum length of the burst transactions supported by the controller.
136 This property defines the upper limit of the run-time burst setting
137 (CTLx.SRC_MSIZE/CTLx.DST_MSIZE fields) so the allowed burst length
138 will be from 1 to max-burst-len words. It's an array property with one
139 cell per channel in the units determined by the value set in the
140 CTLx.SRC_TR_WIDTH/CTLx.DST_TR_WIDTH fields (data width).
141 items:
142 maxItems: 8
143 items:
144 enum: [4, 8, 16, 32, 64, 128, 256]
145 default: 256
146
147 snps,dma-protection-control:
148 $ref: /schemas/types.yaml#/definitions/uint32
149 description: |
150 Bits one-to-one passed to the AHB HPROT[3:1] bus. Each bit setting
151 indicates the following features: bit 0 - privileged mode,
152 bit 1 - DMA is bufferable, bit 2 - DMA is cacheable.
153 default: 0
154 minimum: 0
155 maximum: 7
156
157unevaluatedProperties: false
158
159required:
160 - compatible
161 - "#dma-cells"
162 - reg
163 - interrupts
164
165examples:
166 - |
167 dma-controller@fc000000 {
168 compatible = "snps,dma-spear1340";
169 reg = <0xfc000000 0x1000>;
170 interrupt-parent = <&vic1>;
171 interrupts = <12>;
172
173 dma-channels = <8>;
174 dma-requests = <16>;
175 dma-masters = <4>;
176 #dma-cells = <3>;
177
178 chan_allocation_order = <1>;
179 chan_priority = <1>;
180 block_size = <0xfff>;
181 data-width = <8 8>;
182 multi-block = <0 0 0 0 0 0 0 0>;
183 snps,max-burst-len = <16 16 4 4 4 4 4 4>;
184 };
185...