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 64Devices connected to a QMan instance via Direct Connect Portals (DCP) must link 65to the respective QMan instance 66 67- fsl,qman 68 Usage: Required 69 Value type: <prop-encoded-array> 70 Description: List of phandle and DCP index pairs, to the QMan instance 71 to which this device is connected via the DCP 72 73QMan Private Memory Nodes 74 75QMan requires two contiguous range of physical memory used for the backing store 76for QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR). 77This memory is reserved/allocated as a nodes under the /reserved-memory node 78 79The QMan FQD memory node must be named "qman-fqd" 80 81PROPERTIES 82 83- compatible 84 Usage: required 85 Value type: <stringlist> 86 Definition: Must inclide "fsl,qman-fqd" 87 88The QMan PFDR memory node must be named "qman-pfdr" 89 90PROPERTIES 91 92- compatible 93 Usage: required 94 Value type: <stringlist> 95 Definition: Must inclide "fsl,qman-pfdr" 96 97The following constraints are relevant to the FQD and PFDR private memory: 98 - The size must be 2^(size + 1), with size = 11..29. That is 4 KiB to 99 1 GiB 100 - The alignment must be a muliptle of the memory size 101 102The size of the FQD and PFDP must be chosen by observing the hardware features 103configured via the Reset Configuration Word (RCW) and that are relevant to a 104specific board (e.g. number of MAC(s) pinned-out, number of offline/host command 105FMan ports, etc.). The size configured in the DT must reflect the hardware 106capabilities and not the specific needs of an application 107 108For additional details about reserved memory regions see reserved-memory.txt 109 110EXAMPLE 111 112The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes 113 114 reserved-memory { 115 #address-cells = <2>; 116 #size-cells = <2>; 117 ranges; 118 119 qman_fqd: qman-fqd { 120 compatible = "fsl,qman-fqd"; 121 alloc-ranges = <0 0 0x10 0>; 122 size = <0 0x400000>; 123 alignment = <0 0x400000>; 124 }; 125 qman_pfdr: qman-pfdr { 126 compatible = "fsl,qman-pfdr"; 127 alloc-ranges = <0 0 0x10 0>; 128 size = <0 0x2000000>; 129 alignment = <0 0x2000000>; 130 }; 131 }; 132 133The example below shows a (P4080) QMan CCSR-space node 134 135 qportals: qman-portals@ff4200000 { 136 ... 137 }; 138 139 clockgen: global-utilities@e1000 { 140 ... 141 sysclk: sysclk { 142 ... 143 }; 144 ... 145 platform_pll: platform-pll@c00 { 146 #clock-cells = <1>; 147 reg = <0xc00 0x4>; 148 compatible = "fsl,qoriq-platform-pll-1.0"; 149 clocks = <&sysclk>; 150 clock-output-names = "platform-pll", "platform-pll-div2"; 151 }; 152 ... 153 }; 154 155 crypto@300000 { 156 ... 157 fsl,qman = <&qman, 2>; 158 ... 159 }; 160 161 qman: qman@318000 { 162 compatible = "fsl,qman"; 163 reg = <0x318000 0x1000>; 164 interrupts = <16 2 1 3> 165 fsl,liodn = <0x16>; 166 fsl,qman-portals = <&qportals>; 167 memory-region = <&qman_fqd &qman_pfdr>; 168 clocks = <&platform_pll 1>; 169 }; 170 171 fman@400000 { 172 ... 173 fsl,qman = <&qman, 0>; 174 ... 175 }; 176