1QorIQ DPAA Queue Manager Device Tree Binding 2 3Copyright (C) 2008 - 2014 Freescale Semiconductor Inc. 4 5CONTENTS 6 7 - QMan Node 8 - QMan Private Memory Nodes 9 - Example 10 11QMan Node 12 13The Queue Manager is part of the Data-Path Acceleration Architecture (DPAA). QMan 14supports queuing and QoS scheduling of frames to CPUs, network interfaces and 15DPAA logic modules, maintains packet ordering within flows. Besides providing 16flow-level queuing, is also responsible for congestion management functions such 17as RED/WRED, congestion notifications and tail discards. This binding covers the 18CCSR space programming model 19 20PROPERTIES 21 22- compatible 23 Usage: Required 24 Value type: <stringlist> 25 Definition: Must include "fsl,qman" 26 May include "fsl,<SoC>-qman" 27 28- reg 29 Usage: Required 30 Value type: <prop-encoded-array> 31 Definition: Registers region within the CCSR address space 32 33The QMan revision information is located in the QMAN_IP_REV_1/2 registers which 34are located at offsets 0xbf8 and 0xbfc 35 36- interrupts 37 Usage: Required 38 Value type: <prop-encoded-array> 39 Definition: Standard property. The error interrupt 40 41- fsl,qman-portals 42 Usage: Required 43 Value type: <phandle> 44 Definition: Phandle to this QMan instance's portals 45 46- fsl,liodn 47 Usage: See pamu.txt 48 Value type: <prop-encoded-array> 49 Definition: PAMU property used for static LIODN assignment 50 51- fsl,iommu-parent 52 Usage: See pamu.txt 53 Value type: <phandle> 54 Definition: PAMU property used for dynamic LIODN assignment 55 56 For additional details about the PAMU/LIODN binding(s) see pamu.txt 57 58- clocks 59 Usage: See clock-bindings.txt and qoriq-clock.txt 60 Value type: <prop-encoded-array> 61 Definition: Reference input clock. Its frequency is half of the 62 platform clock 63- memory-regions 64 Usage: Required for ARM 65 Value type: <phandle array> 66 Definition: List of phandles referencing the QMan private memory 67 nodes (described below). The qman-fqd node must be 68 first followed by qman-pfdr node. Only used on ARM 69 70Devices connected to a QMan instance via Direct Connect Portals (DCP) must link 71to the respective QMan instance 72 73- fsl,qman 74 Usage: Required 75 Value type: <prop-encoded-array> 76 Description: List of phandle and DCP index pairs, to the QMan instance 77 to which this device is connected via the DCP 78 79QMan Private Memory Nodes 80 81QMan requires two contiguous range of physical memory used for the backing store 82for QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR). 83This memory is reserved/allocated as a node under the /reserved-memory node. 84 85For additional details about reserved memory regions see reserved-memory.txt 86 87The QMan FQD memory node must be named "qman-fqd" 88 89PROPERTIES 90 91- compatible 92 Usage: required 93 Value type: <stringlist> 94 Definition: PPC platforms: Must include "fsl,qman-fqd" 95 ARM platforms: Must include "shared-dma-pool" 96 as well as the "no-map" property 97 98The QMan PFDR memory node must be named "qman-pfdr" 99 100PROPERTIES 101 102- compatible 103 Usage: required 104 Value type: <stringlist> 105 Definition: PPC platforms: Must include "fsl,qman-pfdr" 106 ARM platforms: Must include "shared-dma-pool" 107 as well as the "no-map" property 108 109The following constraints are relevant to the FQD and PFDR private memory: 110 - The size must be 2^(size + 1), with size = 11..29. That is 4 KiB to 111 1 GiB 112 - The alignment must be a muliptle of the memory size 113 114The size of the FQD and PFDP must be chosen by observing the hardware features 115configured via the Reset Configuration Word (RCW) and that are relevant to a 116specific board (e.g. number of MAC(s) pinned-out, number of offline/host command 117FMan ports, etc.). The size configured in the DT must reflect the hardware 118capabilities and not the specific needs of an application 119 120For additional details about reserved memory regions see reserved-memory.txt 121 122EXAMPLE 123 124The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes 125 126 reserved-memory { 127 #address-cells = <2>; 128 #size-cells = <2>; 129 ranges; 130 131 qman_fqd: qman-fqd { 132 compatible = "shared-dma-pool"; 133 size = <0 0x400000>; 134 alignment = <0 0x400000>; 135 no-map; 136 }; 137 qman_pfdr: qman-pfdr { 138 compatible = "shared-dma-pool"; 139 size = <0 0x2000000>; 140 alignment = <0 0x2000000>; 141 no-map; 142 }; 143 }; 144 145The example below shows a (P4080) QMan CCSR-space node 146 147 qportals: qman-portals@ff4200000 { 148 ... 149 }; 150 151 clockgen: global-utilities@e1000 { 152 ... 153 sysclk: sysclk { 154 ... 155 }; 156 ... 157 platform_pll: platform-pll@c00 { 158 #clock-cells = <1>; 159 reg = <0xc00 0x4>; 160 compatible = "fsl,qoriq-platform-pll-1.0"; 161 clocks = <&sysclk>; 162 clock-output-names = "platform-pll", "platform-pll-div2"; 163 }; 164 ... 165 }; 166 167 crypto@300000 { 168 ... 169 fsl,qman = <&qman, 2>; 170 ... 171 }; 172 173 qman: qman@318000 { 174 compatible = "fsl,qman"; 175 reg = <0x318000 0x1000>; 176 interrupts = <16 2 1 3> 177 fsl,liodn = <0x16>; 178 fsl,qman-portals = <&qportals>; 179 memory-region = <&qman_fqd &qman_pfdr>; 180 clocks = <&platform_pll 1>; 181 }; 182 183 fman@400000 { 184 ... 185 fsl,qman = <&qman, 0>; 186 ... 187 }; 188