mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.6 KiB
111 lines
3.6 KiB
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"; |
|
.. |
|
};
|
|
|