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