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