xref: /linux/Documentation/devicetree/bindings/soc/ti/keystone-navigator-dma.txt (revision e5451c8f8330e03ad3cfa16048b4daf961af434f)
1*8172296dSSantosh ShilimkarKeystone Navigator DMA Controller
2*8172296dSSantosh Shilimkar
3*8172296dSSantosh ShilimkarThis document explains the device tree bindings for the packet dma
4*8172296dSSantosh Shilimkaron keystone devices. The Keystone Navigator DMA driver sets up the dma
5*8172296dSSantosh Shilimkarchannels and flows for the QMSS(Queue Manager SubSystem) who triggers
6*8172296dSSantosh Shilimkarthe actual data movements across clients using destination queues. Every
7*8172296dSSantosh Shilimkarclient modules like  NETCP(Network Coprocessor), SRIO(Serial Rapid IO),
8*8172296dSSantosh ShilimkarCRYPTO Engines etc has its own instance of dma hardware. QMSS has also
9*8172296dSSantosh Shilimkaran internal packet DMA module which is used as an infrastructure DMA
10*8172296dSSantosh Shilimkarwith zero copy.
11*8172296dSSantosh Shilimkar
12*8172296dSSantosh ShilimkarNavigator DMA cloud layout:
13*8172296dSSantosh Shilimkar	------------------
14*8172296dSSantosh Shilimkar	| Navigator DMAs |
15*8172296dSSantosh Shilimkar	------------------
16*8172296dSSantosh Shilimkar		|
17*8172296dSSantosh Shilimkar		|-> DMA instance #0
18*8172296dSSantosh Shilimkar		|
19*8172296dSSantosh Shilimkar		|-> DMA instance #1
20*8172296dSSantosh Shilimkar			.
21*8172296dSSantosh Shilimkar			.
22*8172296dSSantosh Shilimkar		|
23*8172296dSSantosh Shilimkar		|-> DMA instance #n
24*8172296dSSantosh Shilimkar
25*8172296dSSantosh ShilimkarNavigator DMA properties:
26*8172296dSSantosh ShilimkarRequired properties:
27*8172296dSSantosh Shilimkar - compatible: Should be "ti,keystone-navigator-dma"
28*8172296dSSantosh Shilimkar - clocks: phandle to dma instances clocks. The clock handles can be as
29*8172296dSSantosh Shilimkar	many as the dma instances. The order should be maintained as per
30*8172296dSSantosh Shilimkar	the dma instances.
31*8172296dSSantosh Shilimkar - ti,navigator-cloud-address: Should contain base address for the multi-core
32*8172296dSSantosh Shilimkar	navigator cloud and number of addresses depends on SOC integration
33*8172296dSSantosh Shilimkar	configuration.. Navigator cloud global address needs to be programmed
34*8172296dSSantosh Shilimkar	into DMA and the DMA uses it as the physical addresses to reach queue
35*8172296dSSantosh Shilimkar	managers. Note that these addresses though points to queue managers,
36*8172296dSSantosh Shilimkar	they are relevant only from DMA perspective. The QMSS may not choose to
37*8172296dSSantosh Shilimkar	use them since it has a different address space view to reach all
38*8172296dSSantosh Shilimkar	its components.
39*8172296dSSantosh Shilimkar
40*8172296dSSantosh ShilimkarDMA instance properties:
41*8172296dSSantosh ShilimkarRequired properties:
42*8172296dSSantosh Shilimkar - reg: Should contain register location and length of the following dma
43*8172296dSSantosh Shilimkar	register regions. Register regions should be specified in the following
44*8172296dSSantosh Shilimkar	order.
45*8172296dSSantosh Shilimkar	- Global control register region (global).
46*8172296dSSantosh Shilimkar	- Tx DMA channel configuration register region (txchan).
47*8172296dSSantosh Shilimkar	- Rx DMA channel configuration register region (rxchan).
48*8172296dSSantosh Shilimkar	- Tx DMA channel Scheduler configuration register region (txsched).
49*8172296dSSantosh Shilimkar	- Rx DMA flow configuration register region (rxflow).
50*8172296dSSantosh Shilimkar
51*8172296dSSantosh ShilimkarOptional properties:
52*8172296dSSantosh Shilimkar - reg-names: Names for the register regions.
53*8172296dSSantosh Shilimkar - ti,enable-all: Enable all DMA channels vs clients opening specific channels
54*8172296dSSantosh Shilimkar	what they need. This property is useful for the userspace fast path
55*8172296dSSantosh Shilimkar	case where the linux drivers enables the channels used by userland
56*8172296dSSantosh Shilimkar	stack.
57*8172296dSSantosh Shilimkar - ti,loop-back: To loopback Tx streaming I/F to Rx streaming I/F. Used for
58*8172296dSSantosh Shilimkar	      infrastructure transfers.
59*8172296dSSantosh Shilimkar - ti,rx-retry-timeout: Number of dma cycles to wait before retry on buffer
60*8172296dSSantosh Shilimkar		     starvation.
61*8172296dSSantosh Shilimkar
62*8172296dSSantosh ShilimkarExample:
63*8172296dSSantosh Shilimkar
64*8172296dSSantosh Shilimkar	knav_dmas: knav_dmas@0 {
65*8172296dSSantosh Shilimkar		compatible = "ti,keystone-navigator-dma";
66*8172296dSSantosh Shilimkar		clocks = <&papllclk>, <&clkxge>;
67*8172296dSSantosh Shilimkar		#address-cells = <1>;
68*8172296dSSantosh Shilimkar		#size-cells = <1>;
69*8172296dSSantosh Shilimkar		ranges;
70*8172296dSSantosh Shilimkar		ti,navigator-cloud-address = <0x23a80000 0x23a90000
71*8172296dSSantosh Shilimkar					   0x23aa0000 0x23ab0000>;
72*8172296dSSantosh Shilimkar
73*8172296dSSantosh Shilimkar		dma_gbe: dma_gbe@0 {
74*8172296dSSantosh Shilimkar			reg = <0x2004000 0x100>,
75*8172296dSSantosh Shilimkar				  <0x2004400 0x120>,
76*8172296dSSantosh Shilimkar				  <0x2004800 0x300>,
77*8172296dSSantosh Shilimkar				  <0x2004c00 0x120>,
78*8172296dSSantosh Shilimkar				  <0x2005000 0x400>;
79*8172296dSSantosh Shilimkar			reg-names = "global", "txchan", "rxchan",
80*8172296dSSantosh Shilimkar					"txsched", "rxflow";
81*8172296dSSantosh Shilimkar		};
82*8172296dSSantosh Shilimkar
83*8172296dSSantosh Shilimkar		dma_xgbe: dma_xgbe@0 {
84*8172296dSSantosh Shilimkar			reg = <0x2fa1000 0x100>,
85*8172296dSSantosh Shilimkar				<0x2fa1400 0x200>,
86*8172296dSSantosh Shilimkar				<0x2fa1800 0x200>,
87*8172296dSSantosh Shilimkar				<0x2fa1c00 0x200>,
88*8172296dSSantosh Shilimkar				<0x2fa2000 0x400>;
89*8172296dSSantosh Shilimkar			reg-names = "global", "txchan", "rxchan",
90*8172296dSSantosh Shilimkar					"txsched", "rxflow";
91*8172296dSSantosh Shilimkar		};
92*8172296dSSantosh Shilimkar	};
93*8172296dSSantosh Shilimkar
94*8172296dSSantosh ShilimkarNavigator DMA client:
95*8172296dSSantosh ShilimkarRequired properties:
96*8172296dSSantosh Shilimkar - ti,navigator-dmas: List of one or more DMA specifiers, each consisting of
97*8172296dSSantosh Shilimkar			- A phandle pointing to DMA instance node
98*8172296dSSantosh Shilimkar			- A DMA channel number as a phandle arg.
99*8172296dSSantosh Shilimkar - ti,navigator-dma-names: Contains dma channel name for each DMA specifier in
100*8172296dSSantosh Shilimkar			the 'ti,navigator-dmas' property.
101*8172296dSSantosh Shilimkar
102*8172296dSSantosh ShilimkarExample:
103*8172296dSSantosh Shilimkar
104*8172296dSSantosh Shilimkar	netcp: netcp@2090000 {
105*8172296dSSantosh Shilimkar		..
106*8172296dSSantosh Shilimkar		ti,navigator-dmas = <&dma_gbe 22>,
107*8172296dSSantosh Shilimkar				<&dma_gbe 23>,
108*8172296dSSantosh Shilimkar				<&dma_gbe 8>;
109*8172296dSSantosh Shilimkar		ti,navigator-dma-names = "netrx0", "netrx1", "nettx";
110*8172296dSSantosh Shilimkar		..
111*8172296dSSantosh Shilimkar	};
112