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