xref: /linux/Documentation/devicetree/bindings/dma/ti/k3-bcdma.yaml (revision 7c775c6056d07eb777f37c7ac1340115b27dc9f8)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2# Copyright (C) 2020 Texas Instruments Incorporated
3# Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
4%YAML 1.2
5---
6$id: http://devicetree.org/schemas/dma/ti/k3-bcdma.yaml#
7$schema: http://devicetree.org/meta-schemas/core.yaml#
8
9title: Texas Instruments K3 DMSS BCDMA
10
11maintainers:
12  - Peter Ujfalusi <peter.ujfalusi@gmail.com>
13
14description: |
15  The Block Copy DMA (BCDMA) is intended to perform similar functions as the TR
16  mode channels of K3 UDMA-P.
17  BCDMA includes block copy channels and Split channels.
18
19  Block copy channels mainly used for memory to memory transfers, but with
20  optional triggers a block copy channel can service peripherals by accessing
21  directly to memory mapped registers or area.
22
23  Split channels can be used to service PSI-L based peripherals.
24  The peripherals can be PSI-L native or legacy, non PSI-L native peripherals
25  with PDMAs. PDMA is tasked to act as a bridge between the PSI-L fabric and the
26  legacy peripheral.
27
28  PDMAs can be configured via BCDMA split channel's peer registers to match with
29  the configuration of the legacy peripheral.
30
31properties:
32  compatible:
33    enum:
34      - ti,am62a-dmss-bcdma-csirx
35      - ti,am64-dmss-bcdma
36      - ti,j721s2-dmss-bcdma-csi
37      - ti,j722s-dmss-bcdma-csi
38
39  reg:
40    minItems: 3
41    maxItems: 9
42
43  reg-names:
44    minItems: 3
45    maxItems: 9
46
47  "#dma-cells":
48    const: 3
49    description: |
50      cell 1: type of the BCDMA channel to be used to service the peripheral:
51        0 - split channel
52        1 - block copy channel using global trigger 1
53        2 - block copy channel using global trigger 2
54        3 - block copy channel using local trigger
55
56      cell 2: parameter for the channel:
57        if cell 1 is 0 (split channel):
58          PSI-L thread ID of the remote (to BCDMA) end.
59          Valid ranges for thread ID depends on the data movement direction:
60          for source thread IDs (rx): 0 - 0x7fff
61          for destination thread IDs (tx): 0x8000 - 0xffff
62
63          Please refer to the device documentation for the PSI-L thread map and
64          also the PSI-L peripheral chapter for the correct thread ID.
65        if cell 1 is 1 or 2 (block copy channel using global trigger):
66          Unused, ignored
67
68          The trigger must be configured for the channel externally to BCDMA,
69          channels using global triggers should not be requested directly, but
70          via DMA event router.
71        if cell 1 is 3 (block copy channel using local trigger):
72          bchan number of the locally triggered channel
73
74      cell 3: ASEL value for the channel
75
76  msi-parent: true
77
78  power-domains:
79    description:
80      Power domain if available
81    maxItems: 1
82
83  ti,asel:
84    $ref: /schemas/types.yaml#/definitions/uint32
85    description: ASEL value for non slave channels
86
87  ti,sci-rm-range-bchan:
88    $ref: /schemas/types.yaml#/definitions/uint32-array
89    description: |
90      Array of BCDMA block-copy channel resource subtypes for resource
91      allocation for this host
92    minItems: 1
93    # Should be enough
94    maxItems: 255
95    items:
96      maximum: 0x3f
97
98  ti,sci-rm-range-tchan:
99    $ref: /schemas/types.yaml#/definitions/uint32-array
100    description: |
101      Array of BCDMA split tx channel resource subtypes for resource allocation
102      for this host
103    minItems: 1
104    # Should be enough
105    maxItems: 255
106    items:
107      maximum: 0x3f
108
109  ti,sci-rm-range-rchan:
110    $ref: /schemas/types.yaml#/definitions/uint32-array
111    description: |
112      Array of BCDMA split rx channel resource subtypes for resource allocation
113      for this host
114    minItems: 1
115    # Should be enough
116    maxItems: 255
117    items:
118      maximum: 0x3f
119
120required:
121  - compatible
122  - "#dma-cells"
123  - reg
124  - reg-names
125  - msi-parent
126  - ti,sci
127  - ti,sci-dev-id
128  - ti,sci-rm-range-rchan
129
130allOf:
131  - $ref: /schemas/dma/dma-controller.yaml#
132  - $ref: /schemas/arm/keystone/ti,k3-sci-common.yaml#
133
134  - if:
135      properties:
136        compatible:
137          contains:
138            const: ti,am62a-dmss-bcdma-csirx
139    then:
140      properties:
141        ti,sci-rm-range-bchan: false
142        ti,sci-rm-range-tchan: false
143
144        reg:
145          items:
146            - description: BCDMA Control /Status Registers region
147            - description: RX Channel Realtime Registers region
148            - description: Ring Realtime Registers region
149
150        reg-names:
151          items:
152            - const: gcfg
153            - const: rchanrt
154            - const: ringrt
155
156      required:
157        - power-domains
158
159  - if:
160      properties:
161        compatible:
162          contains:
163            const: ti,am64-dmss-bcdma
164    then:
165      properties:
166        reg:
167          minItems: 5
168          items:
169            - description: BCDMA Control /Status Registers region
170            - description: Block Copy Channel Realtime Registers region
171            - description: RX Channel Realtime Registers region
172            - description: TX Channel Realtime Registers region
173            - description: Ring Realtime Registers region
174            - description: Ring Configuration Registers region
175            - description: TX Channel Configuration Registers region
176            - description: RX Channel Configuration Registers region
177            - description: Block Copy Channel Configuration Registers region
178
179        reg-names:
180          minItems: 5
181          items:
182            - const: gcfg
183            - const: bchanrt
184            - const: rchanrt
185            - const: tchanrt
186            - const: ringrt
187            - const: ring
188            - const: tchan
189            - const: rchan
190            - const: bchan
191
192      required:
193        - ti,sci-rm-range-bchan
194        - ti,sci-rm-range-tchan
195
196  - if:
197      properties:
198        compatible:
199          contains:
200            enum:
201              - ti,j721s2-dmss-bcdma-csi
202              - ti,j722s-dmss-bcdma-csi
203    then:
204      properties:
205        ti,sci-rm-range-bchan: false
206
207        reg:
208          items:
209            - description: BCDMA Control /Status Registers region
210            - description: RX Channel Realtime Registers region
211            - description: TX Channel Realtime Registers region
212            - description: Ring Realtime Registers region
213
214        reg-names:
215          items:
216            - const: gcfg
217            - const: rchanrt
218            - const: tchanrt
219            - const: ringrt
220
221      required:
222        - ti,sci-rm-range-tchan
223
224unevaluatedProperties: false
225
226examples:
227  - |+
228    cbass_main {
229        #address-cells = <2>;
230        #size-cells = <2>;
231
232        main_dmss {
233            compatible = "simple-mfd";
234            #address-cells = <2>;
235            #size-cells = <2>;
236            dma-ranges;
237            ranges;
238
239            ti,sci-dev-id = <25>;
240
241            main_bcdma: dma-controller@485c0100 {
242                compatible = "ti,am64-dmss-bcdma";
243
244                reg = <0x0 0x485c0100 0x0 0x100>,
245                      <0x0 0x4c000000 0x0 0x20000>,
246                      <0x0 0x4a820000 0x0 0x20000>,
247                      <0x0 0x4aa40000 0x0 0x20000>,
248                      <0x0 0x4bc00000 0x0 0x100000>,
249                      <0x0 0x48600000 0x0 0x8000>,
250                      <0x0 0x484a4000 0x0 0x2000>,
251                      <0x0 0x484c2000 0x0 0x2000>,
252                      <0x0 0x48420000 0x0 0x2000>;
253                reg-names = "gcfg", "bchanrt", "rchanrt", "tchanrt", "ringrt",
254                            "ring", "tchan", "rchan", "bchan";
255                msi-parent = <&inta_main_dmss>;
256                #dma-cells = <3>;
257
258                ti,sci = <&dmsc>;
259                ti,sci-dev-id = <26>;
260
261                ti,sci-rm-range-bchan = <0x20>; /* BLOCK_COPY_CHAN */
262                ti,sci-rm-range-rchan = <0x21>; /* SPLIT_TR_RX_CHAN */
263                ti,sci-rm-range-tchan = <0x22>; /* SPLIT_TR_TX_CHAN */
264            };
265        };
266    };
267