112 lines
3.6 KiB
Plaintext
112 lines
3.6 KiB
Plaintext
|
Keystone Navigator DMA Controller
|
||
|
|
||
|
This document explains the device tree bindings for the packet dma
|
||
|
on keystone devices. The Keystone Navigator DMA driver sets up the dma
|
||
|
channels and flows for the QMSS(Queue Manager SubSystem) who triggers
|
||
|
the actual data movements across clients using destination queues. Every
|
||
|
client modules like NETCP(Network Coprocessor), SRIO(Serial Rapid IO),
|
||
|
CRYPTO Engines etc has its own instance of dma hardware. QMSS has also
|
||
|
an internal packet DMA module which is used as an infrastructure DMA
|
||
|
with zero copy.
|
||
|
|
||
|
Navigator DMA cloud layout:
|
||
|
------------------
|
||
|
| Navigator DMAs |
|
||
|
------------------
|
||
|
|
|
||
|
|-> DMA instance #0
|
||
|
|
|
||
|
|-> DMA instance #1
|
||
|
.
|
||
|
.
|
||
|
|
|
||
|
|-> DMA instance #n
|
||
|
|
||
|
Navigator DMA properties:
|
||
|
Required properties:
|
||
|
- compatible: Should be "ti,keystone-navigator-dma"
|
||
|
- clocks: phandle to dma instances clocks. The clock handles can be as
|
||
|
many as the dma instances. The order should be maintained as per
|
||
|
the dma instances.
|
||
|
- ti,navigator-cloud-address: Should contain base address for the multi-core
|
||
|
navigator cloud and number of addresses depends on SOC integration
|
||
|
configuration.. Navigator cloud global address needs to be programmed
|
||
|
into DMA and the DMA uses it as the physical addresses to reach queue
|
||
|
managers. Note that these addresses though points to queue managers,
|
||
|
they are relevant only from DMA perspective. The QMSS may not choose to
|
||
|
use them since it has a different address space view to reach all
|
||
|
its components.
|
||
|
|
||
|
DMA instance properties:
|
||
|
Required properties:
|
||
|
- reg: Should contain register location and length of the following dma
|
||
|
register regions. Register regions should be specified in the following
|
||
|
order.
|
||
|
- Global control register region (global).
|
||
|
- Tx DMA channel configuration register region (txchan).
|
||
|
- Rx DMA channel configuration register region (rxchan).
|
||
|
- Tx DMA channel Scheduler configuration register region (txsched).
|
||
|
- Rx DMA flow configuration register region (rxflow).
|
||
|
|
||
|
Optional properties:
|
||
|
- reg-names: Names for the register regions.
|
||
|
- ti,enable-all: Enable all DMA channels vs clients opening specific channels
|
||
|
what they need. This property is useful for the userspace fast path
|
||
|
case where the linux drivers enables the channels used by userland
|
||
|
stack.
|
||
|
- ti,loop-back: To loopback Tx streaming I/F to Rx streaming I/F. Used for
|
||
|
infrastructure transfers.
|
||
|
- ti,rx-retry-timeout: Number of dma cycles to wait before retry on buffer
|
||
|
starvation.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
knav_dmas: knav_dmas@0 {
|
||
|
compatible = "ti,keystone-navigator-dma";
|
||
|
clocks = <&papllclk>, <&clkxge>;
|
||
|
#address-cells = <1>;
|
||
|
#size-cells = <1>;
|
||
|
ranges;
|
||
|
ti,navigator-cloud-address = <0x23a80000 0x23a90000
|
||
|
0x23aa0000 0x23ab0000>;
|
||
|
|
||
|
dma_gbe: dma_gbe@0 {
|
||
|
reg = <0x2004000 0x100>,
|
||
|
<0x2004400 0x120>,
|
||
|
<0x2004800 0x300>,
|
||
|
<0x2004c00 0x120>,
|
||
|
<0x2005000 0x400>;
|
||
|
reg-names = "global", "txchan", "rxchan",
|
||
|
"txsched", "rxflow";
|
||
|
};
|
||
|
|
||
|
dma_xgbe: dma_xgbe@0 {
|
||
|
reg = <0x2fa1000 0x100>,
|
||
|
<0x2fa1400 0x200>,
|
||
|
<0x2fa1800 0x200>,
|
||
|
<0x2fa1c00 0x200>,
|
||
|
<0x2fa2000 0x400>;
|
||
|
reg-names = "global", "txchan", "rxchan",
|
||
|
"txsched", "rxflow";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
Navigator DMA client:
|
||
|
Required properties:
|
||
|
- ti,navigator-dmas: List of one or more DMA specifiers, each consisting of
|
||
|
- A phandle pointing to DMA instance node
|
||
|
- A DMA channel number as a phandle arg.
|
||
|
- ti,navigator-dma-names: Contains dma channel name for each DMA specifier in
|
||
|
the 'ti,navigator-dmas' property.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
netcp: netcp@2090000 {
|
||
|
..
|
||
|
ti,navigator-dmas = <&dma_gbe 22>,
|
||
|
<&dma_gbe 23>,
|
||
|
<&dma_gbe 8>;
|
||
|
ti,navigator-dma-names = "netrx0", "netrx1", "nettx";
|
||
|
..
|
||
|
};
|