1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/dma/ti/k3-udma.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Texas Instruments K3 NAVSS Unified DMA Device Tree Bindings 8 9maintainers: 10 - Peter Ujfalusi <peter.ujfalusi@ti.com> 11 12description: | 13 The UDMA-P is intended to perform similar (but significantly upgraded) 14 functions as the packet-oriented DMA used on previous SoC devices. The UDMA-P 15 module supports the transmission and reception of various packet types. 16 The UDMA-P architecture facilitates the segmentation and reassembly of SoC DMA 17 data structure compliant packets to/from smaller data blocks that are natively 18 compatible with the specific requirements of each connected peripheral. 19 Multiple Tx and Rx channels are provided within the DMA which allow multiple 20 segmentation or reassembly operations to be ongoing. The DMA controller 21 maintains state information for each of the channels which allows packet 22 segmentation and reassembly operations to be time division multiplexed between 23 channels in order to share the underlying DMA hardware. An external DMA 24 scheduler is used to control the ordering and rate at which this multiplexing 25 occurs for Transmit operations. The ordering and rate of Receive operations 26 is indirectly controlled by the order in which blocks are pushed into the DMA 27 on the Rx PSI-L interface. 28 29 The UDMA-P also supports acting as both a UTC and UDMA-C for its internal 30 channels. Channels in the UDMA-P can be configured to be either Packet-Based 31 or Third-Party channels on a channel by channel basis. 32 33 All transfers within NAVSS is done between PSI-L source and destination 34 threads. 35 The peripherals serviced by UDMA can be PSI-L native (sa2ul, cpsw, etc) or 36 legacy, non PSI-L native peripherals. In the later case a special, small PDMA 37 is tasked to act as a bridge between the PSI-L fabric and the legacy 38 peripheral. 39 40 PDMAs can be configured via UDMAP peer registers to match with the 41 configuration of the legacy peripheral. 42 43allOf: 44 - $ref: "../dma-controller.yaml#" 45 46properties: 47 "#dma-cells": 48 const: 1 49 description: | 50 The cell is the PSI-L thread ID of the remote (to UDMAP) end. 51 Valid ranges for thread ID depends on the data movement direction: 52 for source thread IDs (rx): 0 - 0x7fff 53 for destination thread IDs (tx): 0x8000 - 0xffff 54 55 Please refer to the device documentation for the PSI-L thread map and also 56 the PSI-L peripheral chapter for the correct thread ID. 57 58 compatible: 59 enum: 60 - ti,am654-navss-main-udmap 61 - ti,am654-navss-mcu-udmap 62 - ti,j721e-navss-main-udmap 63 - ti,j721e-navss-mcu-udmap 64 65 reg: 66 maxItems: 3 67 68 reg-names: 69 items: 70 - const: gcfg 71 - const: rchanrt 72 - const: tchanrt 73 74 msi-parent: true 75 76 ti,sci: 77 description: phandle to TI-SCI compatible System controller node 78 allOf: 79 - $ref: /schemas/types.yaml#/definitions/phandle 80 81 ti,sci-dev-id: 82 description: TI-SCI device id of UDMAP 83 allOf: 84 - $ref: /schemas/types.yaml#/definitions/uint32 85 86 ti,ringacc: 87 description: phandle to the ring accelerator node 88 allOf: 89 - $ref: /schemas/types.yaml#/definitions/phandle 90 91 ti,sci-rm-range-tchan: 92 description: | 93 Array of UDMA tchan resource subtypes for resource allocation for this 94 host 95 allOf: 96 - $ref: /schemas/types.yaml#/definitions/uint32-array 97 minItems: 1 98 # Should be enough 99 maxItems: 255 100 101 ti,sci-rm-range-rchan: 102 description: | 103 Array of UDMA rchan resource subtypes for resource allocation for this 104 host 105 allOf: 106 - $ref: /schemas/types.yaml#/definitions/uint32-array 107 minItems: 1 108 # Should be enough 109 maxItems: 255 110 111 ti,sci-rm-range-rflow: 112 description: | 113 Array of UDMA rflow resource subtypes for resource allocation for this 114 host 115 allOf: 116 - $ref: /schemas/types.yaml#/definitions/uint32-array 117 minItems: 1 118 # Should be enough 119 maxItems: 255 120 121required: 122 - compatible 123 - "#dma-cells" 124 - reg 125 - reg-names 126 - msi-parent 127 - ti,sci 128 - ti,sci-dev-id 129 - ti,ringacc 130 - ti,sci-rm-range-tchan 131 - ti,sci-rm-range-rchan 132 - ti,sci-rm-range-rflow 133 134examples: 135 - |+ 136 cbass_main { 137 #address-cells = <2>; 138 #size-cells = <2>; 139 140 cbass_main_navss: navss@30800000 { 141 compatible = "simple-mfd"; 142 #address-cells = <2>; 143 #size-cells = <2>; 144 dma-coherent; 145 dma-ranges; 146 ranges; 147 148 ti,sci-dev-id = <118>; 149 150 main_udmap: dma-controller@31150000 { 151 compatible = "ti,am654-navss-main-udmap"; 152 reg = <0x0 0x31150000 0x0 0x100>, 153 <0x0 0x34000000 0x0 0x100000>, 154 <0x0 0x35000000 0x0 0x100000>; 155 reg-names = "gcfg", "rchanrt", "tchanrt"; 156 #dma-cells = <1>; 157 158 ti,ringacc = <&ringacc>; 159 160 msi-parent = <&inta_main_udmass>; 161 162 ti,sci = <&dmsc>; 163 ti,sci-dev-id = <188>; 164 165 ti,sci-rm-range-tchan = <0x1>, /* TX_HCHAN */ 166 <0x2>; /* TX_CHAN */ 167 ti,sci-rm-range-rchan = <0x4>, /* RX_HCHAN */ 168 <0x5>; /* RX_CHAN */ 169 ti,sci-rm-range-rflow = <0x6>; /* GP RFLOW */ 170 }; 171 }; 172 173 mcasp0: mcasp@02B00000 { 174 dmas = <&main_udmap 0xc400>, <&main_udmap 0x4400>; 175 dma-names = "tx", "rx"; 176 }; 177 178 crypto: crypto@4E00000 { 179 compatible = "ti,sa2ul-crypto"; 180 181 dmas = <&main_udmap 0xc000>, <&main_udmap 0x4000>, <&main_udmap 0x4001>; 182 dma-names = "tx", "rx1", "rx2"; 183 }; 184 }; 185