18172296dSSantosh ShilimkarKeystone Navigator DMA Controller
28172296dSSantosh Shilimkar
38172296dSSantosh ShilimkarThis document explains the device tree bindings for the packet dma
48172296dSSantosh Shilimkaron keystone devices. The Keystone Navigator DMA driver sets up the dma
58172296dSSantosh Shilimkarchannels and flows for the QMSS(Queue Manager SubSystem) who triggers
68172296dSSantosh Shilimkarthe actual data movements across clients using destination queues. Every
78172296dSSantosh Shilimkarclient modules like  NETCP(Network Coprocessor), SRIO(Serial Rapid IO),
88172296dSSantosh ShilimkarCRYPTO Engines etc has its own instance of dma hardware. QMSS has also
98172296dSSantosh Shilimkaran internal packet DMA module which is used as an infrastructure DMA
108172296dSSantosh Shilimkarwith zero copy.
118172296dSSantosh Shilimkar
128172296dSSantosh ShilimkarNavigator DMA cloud layout:
138172296dSSantosh Shilimkar	------------------
148172296dSSantosh Shilimkar	| Navigator DMAs |
158172296dSSantosh Shilimkar	------------------
168172296dSSantosh Shilimkar		|
178172296dSSantosh Shilimkar		|-> DMA instance #0
188172296dSSantosh Shilimkar		|
198172296dSSantosh Shilimkar		|-> DMA instance #1
208172296dSSantosh Shilimkar			.
218172296dSSantosh Shilimkar			.
228172296dSSantosh Shilimkar		|
238172296dSSantosh Shilimkar		|-> DMA instance #n
248172296dSSantosh Shilimkar
258172296dSSantosh ShilimkarNavigator DMA properties:
268172296dSSantosh ShilimkarRequired properties:
278172296dSSantosh Shilimkar - compatible: Should be "ti,keystone-navigator-dma"
288172296dSSantosh Shilimkar - clocks: phandle to dma instances clocks. The clock handles can be as
298172296dSSantosh Shilimkar	many as the dma instances. The order should be maintained as per
308172296dSSantosh Shilimkar	the dma instances.
318172296dSSantosh Shilimkar - ti,navigator-cloud-address: Should contain base address for the multi-core
328172296dSSantosh Shilimkar	navigator cloud and number of addresses depends on SOC integration
338172296dSSantosh Shilimkar	configuration.. Navigator cloud global address needs to be programmed
348172296dSSantosh Shilimkar	into DMA and the DMA uses it as the physical addresses to reach queue
358172296dSSantosh Shilimkar	managers. Note that these addresses though points to queue managers,
368172296dSSantosh Shilimkar	they are relevant only from DMA perspective. The QMSS may not choose to
378172296dSSantosh Shilimkar	use them since it has a different address space view to reach all
388172296dSSantosh Shilimkar	its components.
398172296dSSantosh Shilimkar
408172296dSSantosh ShilimkarDMA instance properties:
418172296dSSantosh ShilimkarRequired properties:
428172296dSSantosh Shilimkar - reg: Should contain register location and length of the following dma
438172296dSSantosh Shilimkar	register regions. Register regions should be specified in the following
448172296dSSantosh Shilimkar	order.
458172296dSSantosh Shilimkar	- Global control register region (global).
468172296dSSantosh Shilimkar	- Tx DMA channel configuration register region (txchan).
478172296dSSantosh Shilimkar	- Rx DMA channel configuration register region (rxchan).
488172296dSSantosh Shilimkar	- Tx DMA channel Scheduler configuration register region (txsched).
498172296dSSantosh Shilimkar	- Rx DMA flow configuration register region (rxflow).
508172296dSSantosh Shilimkar
518172296dSSantosh ShilimkarOptional properties:
528172296dSSantosh Shilimkar - reg-names: Names for the register regions.
538172296dSSantosh Shilimkar - ti,enable-all: Enable all DMA channels vs clients opening specific channels
548172296dSSantosh Shilimkar	what they need. This property is useful for the userspace fast path
558172296dSSantosh Shilimkar	case where the linux drivers enables the channels used by userland
568172296dSSantosh Shilimkar	stack.
578172296dSSantosh Shilimkar - ti,loop-back: To loopback Tx streaming I/F to Rx streaming I/F. Used for
588172296dSSantosh Shilimkar	      infrastructure transfers.
598172296dSSantosh Shilimkar - ti,rx-retry-timeout: Number of dma cycles to wait before retry on buffer
608172296dSSantosh Shilimkar		     starvation.
618172296dSSantosh Shilimkar
628172296dSSantosh ShilimkarExample:
638172296dSSantosh Shilimkar
648172296dSSantosh Shilimkar	knav_dmas: knav_dmas@0 {
658172296dSSantosh Shilimkar		compatible = "ti,keystone-navigator-dma";
668172296dSSantosh Shilimkar		clocks = <&papllclk>, <&clkxge>;
678172296dSSantosh Shilimkar		#address-cells = <1>;
688172296dSSantosh Shilimkar		#size-cells = <1>;
698172296dSSantosh Shilimkar		ranges;
708172296dSSantosh Shilimkar		ti,navigator-cloud-address = <0x23a80000 0x23a90000
718172296dSSantosh Shilimkar					   0x23aa0000 0x23ab0000>;
728172296dSSantosh Shilimkar
738172296dSSantosh Shilimkar		dma_gbe: dma_gbe@0 {
748172296dSSantosh Shilimkar			reg = <0x2004000 0x100>,
758172296dSSantosh Shilimkar				  <0x2004400 0x120>,
768172296dSSantosh Shilimkar				  <0x2004800 0x300>,
778172296dSSantosh Shilimkar				  <0x2004c00 0x120>,
788172296dSSantosh Shilimkar				  <0x2005000 0x400>;
798172296dSSantosh Shilimkar			reg-names = "global", "txchan", "rxchan",
808172296dSSantosh Shilimkar					"txsched", "rxflow";
818172296dSSantosh Shilimkar		};
828172296dSSantosh Shilimkar
838172296dSSantosh Shilimkar		dma_xgbe: dma_xgbe@0 {
848172296dSSantosh Shilimkar			reg = <0x2fa1000 0x100>,
858172296dSSantosh Shilimkar				<0x2fa1400 0x200>,
868172296dSSantosh Shilimkar				<0x2fa1800 0x200>,
878172296dSSantosh Shilimkar				<0x2fa1c00 0x200>,
888172296dSSantosh Shilimkar				<0x2fa2000 0x400>;
898172296dSSantosh Shilimkar			reg-names = "global", "txchan", "rxchan",
908172296dSSantosh Shilimkar					"txsched", "rxflow";
918172296dSSantosh Shilimkar		};
928172296dSSantosh Shilimkar	};
938172296dSSantosh Shilimkar
948172296dSSantosh ShilimkarNavigator DMA client:
958172296dSSantosh ShilimkarRequired properties:
968172296dSSantosh Shilimkar - ti,navigator-dmas: List of one or more DMA specifiers, each consisting of
978172296dSSantosh Shilimkar			- A phandle pointing to DMA instance node
988172296dSSantosh Shilimkar			- A DMA channel number as a phandle arg.
998172296dSSantosh Shilimkar - ti,navigator-dma-names: Contains dma channel name for each DMA specifier in
1008172296dSSantosh Shilimkar			the 'ti,navigator-dmas' property.
1018172296dSSantosh Shilimkar
1028172296dSSantosh ShilimkarExample:
1038172296dSSantosh Shilimkar
1048172296dSSantosh Shilimkar	netcp: netcp@2090000 {
1058172296dSSantosh Shilimkar		..
1068172296dSSantosh Shilimkar		ti,navigator-dmas = <&dma_gbe 22>,
1078172296dSSantosh Shilimkar				<&dma_gbe 23>,
1088172296dSSantosh Shilimkar				<&dma_gbe 8>;
1098172296dSSantosh Shilimkar		ti,navigator-dma-names = "netrx0", "netrx1", "nettx";
1108172296dSSantosh Shilimkar		..
1118172296dSSantosh Shilimkar	};
112