| 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"; |
| .. |
| }; |