18172296dSSantosh ShilimkarKeystone Navigator DMA Controller 28172296dSSantosh Shilimkar 38172296dSSantosh ShilimkarThis document explains the device tree bindings for the packet dma 48172296dSSantosh Shilimkaron keystone devices. The Keystone Navigator DMA driver sets up the dma 58172296dSSantosh Shilimkarchannels and flows for the QMSS(Queue Manager SubSystem) who triggers 68172296dSSantosh Shilimkarthe actual data movements across clients using destination queues. Every 78172296dSSantosh Shilimkarclient modules like NETCP(Network Coprocessor), SRIO(Serial Rapid IO), 88172296dSSantosh ShilimkarCRYPTO Engines etc has its own instance of dma hardware. QMSS has also 98172296dSSantosh Shilimkaran internal packet DMA module which is used as an infrastructure DMA 108172296dSSantosh Shilimkarwith zero copy. 118172296dSSantosh Shilimkar 128172296dSSantosh ShilimkarNavigator DMA cloud layout: 138172296dSSantosh Shilimkar ------------------ 148172296dSSantosh Shilimkar | Navigator DMAs | 158172296dSSantosh Shilimkar ------------------ 168172296dSSantosh Shilimkar | 178172296dSSantosh Shilimkar |-> DMA instance #0 188172296dSSantosh Shilimkar | 198172296dSSantosh Shilimkar |-> DMA instance #1 208172296dSSantosh Shilimkar . 218172296dSSantosh Shilimkar . 228172296dSSantosh Shilimkar | 238172296dSSantosh Shilimkar |-> DMA instance #n 248172296dSSantosh Shilimkar 258172296dSSantosh ShilimkarNavigator DMA properties: 268172296dSSantosh ShilimkarRequired properties: 278172296dSSantosh Shilimkar - compatible: Should be "ti,keystone-navigator-dma" 288172296dSSantosh Shilimkar - clocks: phandle to dma instances clocks. The clock handles can be as 298172296dSSantosh Shilimkar many as the dma instances. The order should be maintained as per 308172296dSSantosh Shilimkar the dma instances. 318172296dSSantosh Shilimkar - ti,navigator-cloud-address: Should contain base address for the multi-core 328172296dSSantosh Shilimkar navigator cloud and number of addresses depends on SOC integration 338172296dSSantosh Shilimkar configuration.. Navigator cloud global address needs to be programmed 348172296dSSantosh Shilimkar into DMA and the DMA uses it as the physical addresses to reach queue 358172296dSSantosh Shilimkar managers. Note that these addresses though points to queue managers, 368172296dSSantosh Shilimkar they are relevant only from DMA perspective. The QMSS may not choose to 378172296dSSantosh Shilimkar use them since it has a different address space view to reach all 388172296dSSantosh Shilimkar its components. 398172296dSSantosh Shilimkar 408172296dSSantosh ShilimkarDMA instance properties: 418172296dSSantosh ShilimkarRequired properties: 428172296dSSantosh Shilimkar - reg: Should contain register location and length of the following dma 438172296dSSantosh Shilimkar register regions. Register regions should be specified in the following 448172296dSSantosh Shilimkar order. 458172296dSSantosh Shilimkar - Global control register region (global). 468172296dSSantosh Shilimkar - Tx DMA channel configuration register region (txchan). 478172296dSSantosh Shilimkar - Rx DMA channel configuration register region (rxchan). 488172296dSSantosh Shilimkar - Tx DMA channel Scheduler configuration register region (txsched). 498172296dSSantosh Shilimkar - Rx DMA flow configuration register region (rxflow). 508172296dSSantosh Shilimkar 518172296dSSantosh ShilimkarOptional properties: 528172296dSSantosh Shilimkar - reg-names: Names for the register regions. 538172296dSSantosh Shilimkar - ti,enable-all: Enable all DMA channels vs clients opening specific channels 548172296dSSantosh Shilimkar what they need. This property is useful for the userspace fast path 558172296dSSantosh Shilimkar case where the linux drivers enables the channels used by userland 568172296dSSantosh Shilimkar stack. 578172296dSSantosh Shilimkar - ti,loop-back: To loopback Tx streaming I/F to Rx streaming I/F. Used for 588172296dSSantosh Shilimkar infrastructure transfers. 598172296dSSantosh Shilimkar - ti,rx-retry-timeout: Number of dma cycles to wait before retry on buffer 608172296dSSantosh Shilimkar starvation. 618172296dSSantosh Shilimkar 628172296dSSantosh ShilimkarExample: 638172296dSSantosh Shilimkar 648172296dSSantosh Shilimkar knav_dmas: knav_dmas@0 { 658172296dSSantosh Shilimkar compatible = "ti,keystone-navigator-dma"; 668172296dSSantosh Shilimkar clocks = <&papllclk>, <&clkxge>; 678172296dSSantosh Shilimkar #address-cells = <1>; 688172296dSSantosh Shilimkar #size-cells = <1>; 698172296dSSantosh Shilimkar ranges; 708172296dSSantosh Shilimkar ti,navigator-cloud-address = <0x23a80000 0x23a90000 718172296dSSantosh Shilimkar 0x23aa0000 0x23ab0000>; 728172296dSSantosh Shilimkar 738172296dSSantosh Shilimkar dma_gbe: dma_gbe@0 { 748172296dSSantosh Shilimkar reg = <0x2004000 0x100>, 758172296dSSantosh Shilimkar <0x2004400 0x120>, 768172296dSSantosh Shilimkar <0x2004800 0x300>, 778172296dSSantosh Shilimkar <0x2004c00 0x120>, 788172296dSSantosh Shilimkar <0x2005000 0x400>; 798172296dSSantosh Shilimkar reg-names = "global", "txchan", "rxchan", 808172296dSSantosh Shilimkar "txsched", "rxflow"; 818172296dSSantosh Shilimkar }; 828172296dSSantosh Shilimkar 838172296dSSantosh Shilimkar dma_xgbe: dma_xgbe@0 { 848172296dSSantosh Shilimkar reg = <0x2fa1000 0x100>, 858172296dSSantosh Shilimkar <0x2fa1400 0x200>, 868172296dSSantosh Shilimkar <0x2fa1800 0x200>, 878172296dSSantosh Shilimkar <0x2fa1c00 0x200>, 888172296dSSantosh Shilimkar <0x2fa2000 0x400>; 898172296dSSantosh Shilimkar reg-names = "global", "txchan", "rxchan", 908172296dSSantosh Shilimkar "txsched", "rxflow"; 918172296dSSantosh Shilimkar }; 928172296dSSantosh Shilimkar }; 938172296dSSantosh Shilimkar 948172296dSSantosh ShilimkarNavigator DMA client: 958172296dSSantosh ShilimkarRequired properties: 968172296dSSantosh Shilimkar - ti,navigator-dmas: List of one or more DMA specifiers, each consisting of 978172296dSSantosh Shilimkar - A phandle pointing to DMA instance node 988172296dSSantosh Shilimkar - A DMA channel number as a phandle arg. 998172296dSSantosh Shilimkar - ti,navigator-dma-names: Contains dma channel name for each DMA specifier in 1008172296dSSantosh Shilimkar the 'ti,navigator-dmas' property. 1018172296dSSantosh Shilimkar 1028172296dSSantosh ShilimkarExample: 1038172296dSSantosh Shilimkar 1048172296dSSantosh Shilimkar netcp: netcp@2090000 { 1058172296dSSantosh Shilimkar .. 1068172296dSSantosh Shilimkar ti,navigator-dmas = <&dma_gbe 22>, 1078172296dSSantosh Shilimkar <&dma_gbe 23>, 1088172296dSSantosh Shilimkar <&dma_gbe 8>; 1098172296dSSantosh Shilimkar ti,navigator-dma-names = "netrx0", "netrx1", "nettx"; 1108172296dSSantosh Shilimkar .. 1118172296dSSantosh Shilimkar }; 112