Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 1 | QorIQ DPAA Queue Manager Device Tree Binding |
| 2 | |
| 3 | Copyright (C) 2008 - 2014 Freescale Semiconductor Inc. |
| 4 | |
| 5 | CONTENTS |
| 6 | |
| 7 | - QMan Node |
| 8 | - QMan Private Memory Nodes |
| 9 | - Example |
| 10 | |
| 11 | QMan Node |
| 12 | |
| 13 | The Queue Manager is part of the Data-Path Acceleration Architecture (DPAA). QMan |
| 14 | supports queuing and QoS scheduling of frames to CPUs, network interfaces and |
| 15 | DPAA logic modules, maintains packet ordering within flows. Besides providing |
| 16 | flow-level queuing, is also responsible for congestion management functions such |
| 17 | as RED/WRED, congestion notifications and tail discards. This binding covers the |
| 18 | CCSR space programming model |
| 19 | |
| 20 | PROPERTIES |
| 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 | |
| 33 | The QMan revision information is located in the QMAN_IP_REV_1/2 registers which |
| 34 | are 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 | |
| 70 | Devices connected to a QMan instance via Direct Connect Portals (DCP) must link |
| 71 | to 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 | |
| 79 | QMan Private Memory Nodes |
| 80 | |
| 81 | QMan requires two contiguous range of physical memory used for the backing store |
| 82 | for QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR). |
| 83 | This memory is reserved/allocated as a node under the /reserved-memory node. |
| 84 | |
| 85 | For additional details about reserved memory regions see reserved-memory.txt |
| 86 | |
| 87 | The QMan FQD memory node must be named "qman-fqd" |
| 88 | |
| 89 | PROPERTIES |
| 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 | |
| 98 | The QMan PFDR memory node must be named "qman-pfdr" |
| 99 | |
| 100 | PROPERTIES |
| 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 | |
| 109 | The 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 | |
| 114 | The size of the FQD and PFDP must be chosen by observing the hardware features |
| 115 | configured via the Reset Configuration Word (RCW) and that are relevant to a |
| 116 | specific board (e.g. number of MAC(s) pinned-out, number of offline/host command |
| 117 | FMan ports, etc.). The size configured in the DT must reflect the hardware |
| 118 | capabilities and not the specific needs of an application |
| 119 | |
| 120 | For additional details about reserved memory regions see reserved-memory.txt |
| 121 | |
| 122 | EXAMPLE |
| 123 | |
| 124 | The 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 | |
| 145 | The 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 | }; |