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