1 Keystone Navigator DMA Controller 1 Keystone Navigator DMA Controller 2 2 3 This document explains the device tree binding 3 This document explains the device tree bindings for the packet dma 4 on keystone devices. The Keystone Navigator DM 4 on keystone devices. The Keystone Navigator DMA driver sets up the dma 5 channels and flows for the QMSS(Queue Manager 5 channels and flows for the QMSS(Queue Manager SubSystem) who triggers 6 the actual data movements across clients using 6 the actual data movements across clients using destination queues. Every 7 client modules like NETCP(Network Coprocessor 7 client modules like NETCP(Network Coprocessor), SRIO(Serial Rapid IO), 8 CRYPTO Engines etc has its own instance of dma 8 CRYPTO Engines etc has its own instance of dma hardware. QMSS has also 9 an internal packet DMA module which is used as 9 an internal packet DMA module which is used as an infrastructure DMA 10 with zero copy. 10 with zero copy. 11 11 12 Navigator DMA cloud layout: 12 Navigator DMA cloud layout: 13 ------------------ 13 ------------------ 14 | Navigator DMAs | 14 | Navigator DMAs | 15 ------------------ 15 ------------------ 16 | 16 | 17 |-> DMA instance #0 17 |-> DMA instance #0 18 | 18 | 19 |-> DMA instance #1 19 |-> DMA instance #1 20 . 20 . 21 . 21 . 22 | 22 | 23 |-> DMA instance #n 23 |-> DMA instance #n 24 24 25 Navigator DMA properties: 25 Navigator DMA properties: 26 Required properties: 26 Required properties: 27 - compatible: Should be "ti,keystone-navigato 27 - compatible: Should be "ti,keystone-navigator-dma" 28 - clocks: phandle to dma instances clocks. Th 28 - clocks: phandle to dma instances clocks. The clock handles can be as 29 many as the dma instances. The order s 29 many as the dma instances. The order should be maintained as per 30 the dma instances. 30 the dma instances. 31 - ti,navigator-cloud-address: Should contain 31 - ti,navigator-cloud-address: Should contain base address for the multi-core 32 navigator cloud and number of addresse 32 navigator cloud and number of addresses depends on SOC integration 33 configuration.. Navigator cloud global 33 configuration.. Navigator cloud global address needs to be programmed 34 into DMA and the DMA uses it as the ph 34 into DMA and the DMA uses it as the physical addresses to reach queue 35 managers. Note that these addresses th 35 managers. Note that these addresses though points to queue managers, 36 they are relevant only from DMA perspe 36 they are relevant only from DMA perspective. The QMSS may not choose to 37 use them since it has a different addr 37 use them since it has a different address space view to reach all 38 its components. 38 its components. 39 39 40 DMA instance properties: 40 DMA instance properties: 41 Required properties: 41 Required properties: 42 - reg: Should contain register location and l 42 - reg: Should contain register location and length of the following dma 43 register regions. Register regions sho 43 register regions. Register regions should be specified in the following 44 order. 44 order. 45 - Global control register region (glob 45 - Global control register region (global). 46 - Tx DMA channel configuration registe 46 - Tx DMA channel configuration register region (txchan). 47 - Rx DMA channel configuration registe 47 - Rx DMA channel configuration register region (rxchan). 48 - Tx DMA channel Scheduler configurati 48 - Tx DMA channel Scheduler configuration register region (txsched). 49 - Rx DMA flow configuration register r 49 - Rx DMA flow configuration register region (rxflow). 50 50 51 Optional properties: 51 Optional properties: 52 - reg-names: Names for the register regions. 52 - reg-names: Names for the register regions. 53 - ti,enable-all: Enable all DMA channels vs c 53 - ti,enable-all: Enable all DMA channels vs clients opening specific channels 54 what they need. This property is usefu 54 what they need. This property is useful for the userspace fast path 55 case where the linux drivers enables t 55 case where the linux drivers enables the channels used by userland 56 stack. 56 stack. 57 - ti,loop-back: To loopback Tx streaming I/F 57 - ti,loop-back: To loopback Tx streaming I/F to Rx streaming I/F. Used for 58 infrastructure transfers. 58 infrastructure transfers. 59 - ti,rx-retry-timeout: Number of dma cycles t 59 - ti,rx-retry-timeout: Number of dma cycles to wait before retry on buffer 60 starvation. 60 starvation. 61 61 62 Example: 62 Example: 63 63 64 knav_dmas: knav_dmas@0 { 64 knav_dmas: knav_dmas@0 { 65 compatible = "ti,keystone-navi 65 compatible = "ti,keystone-navigator-dma"; 66 clocks = <&papllclk>, <&clkxge 66 clocks = <&papllclk>, <&clkxge>; 67 #address-cells = <1>; 67 #address-cells = <1>; 68 #size-cells = <1>; 68 #size-cells = <1>; 69 ranges; 69 ranges; 70 ti,navigator-cloud-address = < 70 ti,navigator-cloud-address = <0x23a80000 0x23a90000 71 0x2 71 0x23aa0000 0x23ab0000>; 72 72 73 dma_gbe: dma_gbe@0 { 73 dma_gbe: dma_gbe@0 { 74 reg = <0x2004000 0x100 74 reg = <0x2004000 0x100>, 75 <0x2004400 0 75 <0x2004400 0x120>, 76 <0x2004800 0 76 <0x2004800 0x300>, 77 <0x2004c00 0 77 <0x2004c00 0x120>, 78 <0x2005000 0 78 <0x2005000 0x400>; 79 reg-names = "global", 79 reg-names = "global", "txchan", "rxchan", 80 "txsch 80 "txsched", "rxflow"; 81 }; 81 }; 82 82 83 dma_xgbe: dma_xgbe@0 { 83 dma_xgbe: dma_xgbe@0 { 84 reg = <0x2fa1000 0x100 84 reg = <0x2fa1000 0x100>, 85 <0x2fa1400 0x2 85 <0x2fa1400 0x200>, 86 <0x2fa1800 0x2 86 <0x2fa1800 0x200>, 87 <0x2fa1c00 0x2 87 <0x2fa1c00 0x200>, 88 <0x2fa2000 0x4 88 <0x2fa2000 0x400>; 89 reg-names = "global", 89 reg-names = "global", "txchan", "rxchan", 90 "txsch 90 "txsched", "rxflow"; 91 }; 91 }; 92 }; 92 }; 93 93 94 Navigator DMA client: 94 Navigator DMA client: 95 Required properties: 95 Required properties: 96 - ti,navigator-dmas: List of one or more DMA 96 - ti,navigator-dmas: List of one or more DMA specifiers, each consisting of 97 - A phandle pointing t 97 - A phandle pointing to DMA instance node 98 - A DMA channel number 98 - A DMA channel number as a phandle arg. 99 - ti,navigator-dma-names: Contains dma channe 99 - ti,navigator-dma-names: Contains dma channel name for each DMA specifier in 100 the 'ti,navigator-dmas 100 the 'ti,navigator-dmas' property. 101 101 102 Example: 102 Example: 103 103 104 netcp: netcp@2090000 { 104 netcp: netcp@2090000 { 105 .. 105 .. 106 ti,navigator-dmas = <&dma_gbe 106 ti,navigator-dmas = <&dma_gbe 22>, 107 <&dma_gbe 23>, 107 <&dma_gbe 23>, 108 <&dma_gbe 8>; 108 <&dma_gbe 8>; 109 ti,navigator-dma-names = "netr 109 ti,navigator-dma-names = "netrx0", "netrx1", "nettx"; 110 .. 110 .. 111 }; 111 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.