Back to home page

OSCL-LXR

 
 

    


0001 Keystone Navigator DMA Controller
0002 
0003 This document explains the device tree bindings for the packet dma
0004 on keystone devices. The Keystone Navigator DMA driver sets up the dma
0005 channels and flows for the QMSS(Queue Manager SubSystem) who triggers
0006 the actual data movements across clients using destination queues. Every
0007 client modules like  NETCP(Network Coprocessor), SRIO(Serial Rapid IO),
0008 CRYPTO Engines etc has its own instance of dma hardware. QMSS has also
0009 an internal packet DMA module which is used as an infrastructure DMA
0010 with zero copy.
0011 
0012 Navigator DMA cloud layout:
0013         ------------------
0014         | Navigator DMAs |
0015         ------------------
0016                 |
0017                 |-> DMA instance #0
0018                 |
0019                 |-> DMA instance #1
0020                         .
0021                         .
0022                 |
0023                 |-> DMA instance #n
0024 
0025 Navigator DMA properties:
0026 Required properties:
0027  - compatible: Should be "ti,keystone-navigator-dma"
0028  - clocks: phandle to dma instances clocks. The clock handles can be as
0029         many as the dma instances. The order should be maintained as per
0030         the dma instances.
0031  - ti,navigator-cloud-address: Should contain base address for the multi-core
0032         navigator cloud and number of addresses depends on SOC integration
0033         configuration.. Navigator cloud global address needs to be programmed
0034         into DMA and the DMA uses it as the physical addresses to reach queue
0035         managers. Note that these addresses though points to queue managers,
0036         they are relevant only from DMA perspective. The QMSS may not choose to
0037         use them since it has a different address space view to reach all
0038         its components.
0039 
0040 DMA instance properties:
0041 Required properties:
0042  - reg: Should contain register location and length of the following dma
0043         register regions. Register regions should be specified in the following
0044         order.
0045         - Global control register region (global).
0046         - Tx DMA channel configuration register region (txchan).
0047         - Rx DMA channel configuration register region (rxchan).
0048         - Tx DMA channel Scheduler configuration register region (txsched).
0049         - Rx DMA flow configuration register region (rxflow).
0050 
0051 Optional properties:
0052  - reg-names: Names for the register regions.
0053  - ti,enable-all: Enable all DMA channels vs clients opening specific channels
0054         what they need. This property is useful for the userspace fast path
0055         case where the linux drivers enables the channels used by userland
0056         stack.
0057  - ti,loop-back: To loopback Tx streaming I/F to Rx streaming I/F. Used for
0058               infrastructure transfers.
0059  - ti,rx-retry-timeout: Number of dma cycles to wait before retry on buffer
0060                      starvation.
0061 
0062 Example:
0063 
0064         knav_dmas: knav_dmas@0 {
0065                 compatible = "ti,keystone-navigator-dma";
0066                 clocks = <&papllclk>, <&clkxge>;
0067                 #address-cells = <1>;
0068                 #size-cells = <1>;
0069                 ranges;
0070                 ti,navigator-cloud-address = <0x23a80000 0x23a90000
0071                                            0x23aa0000 0x23ab0000>;
0072 
0073                 dma_gbe: dma_gbe@0 {
0074                         reg = <0x2004000 0x100>,
0075                                   <0x2004400 0x120>,
0076                                   <0x2004800 0x300>,
0077                                   <0x2004c00 0x120>,
0078                                   <0x2005000 0x400>;
0079                         reg-names = "global", "txchan", "rxchan",
0080                                         "txsched", "rxflow";
0081                 };
0082 
0083                 dma_xgbe: dma_xgbe@0 {
0084                         reg = <0x2fa1000 0x100>,
0085                                 <0x2fa1400 0x200>,
0086                                 <0x2fa1800 0x200>,
0087                                 <0x2fa1c00 0x200>,
0088                                 <0x2fa2000 0x400>;
0089                         reg-names = "global", "txchan", "rxchan",
0090                                         "txsched", "rxflow";
0091                 };
0092         };
0093 
0094 Navigator DMA client:
0095 Required properties:
0096  - ti,navigator-dmas: List of one or more DMA specifiers, each consisting of
0097                         - A phandle pointing to DMA instance node
0098                         - A DMA channel number as a phandle arg.
0099  - ti,navigator-dma-names: Contains dma channel name for each DMA specifier in
0100                         the 'ti,navigator-dmas' property.
0101 
0102 Example:
0103 
0104         netcp: netcp@2090000 {
0105                 ..
0106                 ti,navigator-dmas = <&dma_gbe 22>,
0107                                 <&dma_gbe 23>,
0108                                 <&dma_gbe 8>;
0109                 ti,navigator-dma-names = "netrx0", "netrx1", "nettx";
0110                 ..
0111         };