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