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 37 reg: 38 minItems: 3 39 maxItems: 5 40 41 reg-names: 42 minItems: 3 43 maxItems: 5 44 45 "#dma-cells": 46 const: 3 47 description: | 48 cell 1: type of the BCDMA channel to be used to service the peripheral: 49 0 - split channel 50 1 - block copy channel using global trigger 1 51 2 - block copy channel using global trigger 2 52 3 - block copy channel using local trigger 53 54 cell 2: parameter for the channel: 55 if cell 1 is 0 (split channel): 56 PSI-L thread ID of the remote (to BCDMA) end. 57 Valid ranges for thread ID depends on the data movement direction: 58 for source thread IDs (rx): 0 - 0x7fff 59 for destination thread IDs (tx): 0x8000 - 0xffff 60 61 Please refer to the device documentation for the PSI-L thread map and 62 also the PSI-L peripheral chapter for the correct thread ID. 63 if cell 1 is 1 or 2 (block copy channel using global trigger): 64 Unused, ignored 65 66 The trigger must be configured for the channel externally to BCDMA, 67 channels using global triggers should not be requested directly, but 68 via DMA event router. 69 if cell 1 is 3 (block copy channel using local trigger): 70 bchan number of the locally triggered channel 71 72 cell 3: ASEL value for the channel 73 74 msi-parent: true 75 76 power-domains: 77 description: 78 Power domain if available 79 maxItems: 1 80 81 ti,asel: 82 $ref: /schemas/types.yaml#/definitions/uint32 83 description: ASEL value for non slave channels 84 85 ti,sci-rm-range-bchan: 86 $ref: /schemas/types.yaml#/definitions/uint32-array 87 description: | 88 Array of BCDMA block-copy channel resource subtypes for resource 89 allocation for this host 90 minItems: 1 91 # Should be enough 92 maxItems: 255 93 items: 94 maximum: 0x3f 95 96 ti,sci-rm-range-tchan: 97 $ref: /schemas/types.yaml#/definitions/uint32-array 98 description: | 99 Array of BCDMA split tx channel resource subtypes for resource allocation 100 for this host 101 minItems: 1 102 # Should be enough 103 maxItems: 255 104 items: 105 maximum: 0x3f 106 107 ti,sci-rm-range-rchan: 108 $ref: /schemas/types.yaml#/definitions/uint32-array 109 description: | 110 Array of BCDMA split rx channel resource subtypes for resource allocation 111 for this host 112 minItems: 1 113 # Should be enough 114 maxItems: 255 115 items: 116 maximum: 0x3f 117 118required: 119 - compatible 120 - "#dma-cells" 121 - reg 122 - reg-names 123 - msi-parent 124 - ti,sci 125 - ti,sci-dev-id 126 - ti,sci-rm-range-rchan 127 128allOf: 129 - $ref: /schemas/dma/dma-controller.yaml# 130 - $ref: /schemas/arm/keystone/ti,k3-sci-common.yaml# 131 132 - if: 133 properties: 134 compatible: 135 contains: 136 const: ti,am62a-dmss-bcdma-csirx 137 then: 138 properties: 139 ti,sci-rm-range-bchan: false 140 ti,sci-rm-range-tchan: false 141 142 reg: 143 maxItems: 3 144 145 reg-names: 146 items: 147 - const: gcfg 148 - const: rchanrt 149 - const: ringrt 150 151 required: 152 - power-domains 153 154 else: 155 properties: 156 reg: 157 minItems: 5 158 159 reg-names: 160 items: 161 - const: gcfg 162 - const: bchanrt 163 - const: rchanrt 164 - const: tchanrt 165 - const: ringrt 166 167 required: 168 - ti,sci-rm-range-bchan 169 - ti,sci-rm-range-tchan 170 171unevaluatedProperties: false 172 173examples: 174 - |+ 175 cbass_main { 176 #address-cells = <2>; 177 #size-cells = <2>; 178 179 main_dmss { 180 compatible = "simple-mfd"; 181 #address-cells = <2>; 182 #size-cells = <2>; 183 dma-ranges; 184 ranges; 185 186 ti,sci-dev-id = <25>; 187 188 main_bcdma: dma-controller@485c0100 { 189 compatible = "ti,am64-dmss-bcdma"; 190 191 reg = <0x0 0x485c0100 0x0 0x100>, 192 <0x0 0x4c000000 0x0 0x20000>, 193 <0x0 0x4a820000 0x0 0x20000>, 194 <0x0 0x4aa40000 0x0 0x20000>, 195 <0x0 0x4bc00000 0x0 0x100000>; 196 reg-names = "gcfg", "bchanrt", "rchanrt", "tchanrt", "ringrt"; 197 msi-parent = <&inta_main_dmss>; 198 #dma-cells = <3>; 199 200 ti,sci = <&dmsc>; 201 ti,sci-dev-id = <26>; 202 203 ti,sci-rm-range-bchan = <0x20>; /* BLOCK_COPY_CHAN */ 204 ti,sci-rm-range-rchan = <0x21>; /* SPLIT_TR_RX_CHAN */ 205 ti,sci-rm-range-tchan = <0x22>; /* SPLIT_TR_TX_CHAN */ 206 }; 207 }; 208 }; 209