162306a36Sopenharmony_ciQorIQ DPAA Queue Manager Device Tree Binding 262306a36Sopenharmony_ci 362306a36Sopenharmony_ciCopyright (C) 2008 - 2014 Freescale Semiconductor Inc. 462306a36Sopenharmony_ci 562306a36Sopenharmony_ciCONTENTS 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci - QMan Node 862306a36Sopenharmony_ci - QMan Private Memory Nodes 962306a36Sopenharmony_ci - Example 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciQMan Node 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ciThe Queue Manager is part of the Data-Path Acceleration Architecture (DPAA). QMan 1462306a36Sopenharmony_cisupports queuing and QoS scheduling of frames to CPUs, network interfaces and 1562306a36Sopenharmony_ciDPAA logic modules, maintains packet ordering within flows. Besides providing 1662306a36Sopenharmony_ciflow-level queuing, is also responsible for congestion management functions such 1762306a36Sopenharmony_cias RED/WRED, congestion notifications and tail discards. This binding covers the 1862306a36Sopenharmony_ciCCSR space programming model 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ciPROPERTIES 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci- compatible 2362306a36Sopenharmony_ci Usage: Required 2462306a36Sopenharmony_ci Value type: <stringlist> 2562306a36Sopenharmony_ci Definition: Must include "fsl,qman" 2662306a36Sopenharmony_ci May include "fsl,<SoC>-qman" 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci- reg 2962306a36Sopenharmony_ci Usage: Required 3062306a36Sopenharmony_ci Value type: <prop-encoded-array> 3162306a36Sopenharmony_ci Definition: Registers region within the CCSR address space 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciThe QMan revision information is located in the QMAN_IP_REV_1/2 registers which 3462306a36Sopenharmony_ciare located at offsets 0xbf8 and 0xbfc 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci- interrupts 3762306a36Sopenharmony_ci Usage: Required 3862306a36Sopenharmony_ci Value type: <prop-encoded-array> 3962306a36Sopenharmony_ci Definition: Standard property. The error interrupt 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci- fsl,qman-portals 4262306a36Sopenharmony_ci Usage: Required 4362306a36Sopenharmony_ci Value type: <phandle> 4462306a36Sopenharmony_ci Definition: Phandle to this QMan instance's portals 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci- fsl,liodn 4762306a36Sopenharmony_ci Usage: See pamu.txt 4862306a36Sopenharmony_ci Value type: <prop-encoded-array> 4962306a36Sopenharmony_ci Definition: PAMU property used for static LIODN assignment 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci- fsl,iommu-parent 5262306a36Sopenharmony_ci Usage: See pamu.txt 5362306a36Sopenharmony_ci Value type: <phandle> 5462306a36Sopenharmony_ci Definition: PAMU property used for dynamic LIODN assignment 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci For additional details about the PAMU/LIODN binding(s) see pamu.txt 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci- clocks 5962306a36Sopenharmony_ci Usage: See clock-bindings.txt and qoriq-clock.txt 6062306a36Sopenharmony_ci Value type: <prop-encoded-array> 6162306a36Sopenharmony_ci Definition: Reference input clock. Its frequency is half of the 6262306a36Sopenharmony_ci platform clock 6362306a36Sopenharmony_ci- memory-regions 6462306a36Sopenharmony_ci Usage: Required for ARM 6562306a36Sopenharmony_ci Value type: <phandle array> 6662306a36Sopenharmony_ci Definition: List of phandles referencing the QMan private memory 6762306a36Sopenharmony_ci nodes (described below). The qman-fqd node must be 6862306a36Sopenharmony_ci first followed by qman-pfdr node. Only used on ARM 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ciDevices connected to a QMan instance via Direct Connect Portals (DCP) must link 7162306a36Sopenharmony_cito the respective QMan instance 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci- fsl,qman 7462306a36Sopenharmony_ci Usage: Required 7562306a36Sopenharmony_ci Value type: <prop-encoded-array> 7662306a36Sopenharmony_ci Description: List of phandle and DCP index pairs, to the QMan instance 7762306a36Sopenharmony_ci to which this device is connected via the DCP 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ciQMan Private Memory Nodes 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ciQMan requires two contiguous range of physical memory used for the backing store 8262306a36Sopenharmony_cifor QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR). 8362306a36Sopenharmony_ciThis memory is reserved/allocated as a node under the /reserved-memory node. 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ciFor additional details about reserved memory regions see reserved-memory.txt 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ciThe QMan FQD memory node must be named "qman-fqd" 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ciPROPERTIES 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci- compatible 9262306a36Sopenharmony_ci Usage: required 9362306a36Sopenharmony_ci Value type: <stringlist> 9462306a36Sopenharmony_ci Definition: PPC platforms: Must include "fsl,qman-fqd" 9562306a36Sopenharmony_ci ARM platforms: Must include "shared-dma-pool" 9662306a36Sopenharmony_ci as well as the "no-map" property 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ciThe QMan PFDR memory node must be named "qman-pfdr" 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ciPROPERTIES 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci- compatible 10362306a36Sopenharmony_ci Usage: required 10462306a36Sopenharmony_ci Value type: <stringlist> 10562306a36Sopenharmony_ci Definition: PPC platforms: Must include "fsl,qman-pfdr" 10662306a36Sopenharmony_ci ARM platforms: Must include "shared-dma-pool" 10762306a36Sopenharmony_ci as well as the "no-map" property 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ciThe following constraints are relevant to the FQD and PFDR private memory: 11062306a36Sopenharmony_ci - The size must be 2^(size + 1), with size = 11..29. That is 4 KiB to 11162306a36Sopenharmony_ci 1 GiB 11262306a36Sopenharmony_ci - The alignment must be a muliptle of the memory size 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ciThe size of the FQD and PFDP must be chosen by observing the hardware features 11562306a36Sopenharmony_ciconfigured via the Reset Configuration Word (RCW) and that are relevant to a 11662306a36Sopenharmony_cispecific board (e.g. number of MAC(s) pinned-out, number of offline/host command 11762306a36Sopenharmony_ciFMan ports, etc.). The size configured in the DT must reflect the hardware 11862306a36Sopenharmony_cicapabilities and not the specific needs of an application 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ciFor additional details about reserved memory regions see reserved-memory.txt 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_ciEXAMPLE 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ciThe example below shows a QMan FQD and a PFDR dynamic allocation memory nodes 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ci reserved-memory { 12762306a36Sopenharmony_ci #address-cells = <2>; 12862306a36Sopenharmony_ci #size-cells = <2>; 12962306a36Sopenharmony_ci ranges; 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci qman_fqd: qman-fqd { 13262306a36Sopenharmony_ci compatible = "shared-dma-pool"; 13362306a36Sopenharmony_ci size = <0 0x400000>; 13462306a36Sopenharmony_ci alignment = <0 0x400000>; 13562306a36Sopenharmony_ci no-map; 13662306a36Sopenharmony_ci }; 13762306a36Sopenharmony_ci qman_pfdr: qman-pfdr { 13862306a36Sopenharmony_ci compatible = "shared-dma-pool"; 13962306a36Sopenharmony_ci size = <0 0x2000000>; 14062306a36Sopenharmony_ci alignment = <0 0x2000000>; 14162306a36Sopenharmony_ci no-map; 14262306a36Sopenharmony_ci }; 14362306a36Sopenharmony_ci }; 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ciThe example below shows a (P4080) QMan CCSR-space node 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci qportals: qman-portals@ff4200000 { 14862306a36Sopenharmony_ci ... 14962306a36Sopenharmony_ci }; 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci clockgen: global-utilities@e1000 { 15262306a36Sopenharmony_ci ... 15362306a36Sopenharmony_ci sysclk: sysclk { 15462306a36Sopenharmony_ci ... 15562306a36Sopenharmony_ci }; 15662306a36Sopenharmony_ci ... 15762306a36Sopenharmony_ci platform_pll: platform-pll@c00 { 15862306a36Sopenharmony_ci #clock-cells = <1>; 15962306a36Sopenharmony_ci reg = <0xc00 0x4>; 16062306a36Sopenharmony_ci compatible = "fsl,qoriq-platform-pll-1.0"; 16162306a36Sopenharmony_ci clocks = <&sysclk>; 16262306a36Sopenharmony_ci clock-output-names = "platform-pll", "platform-pll-div2"; 16362306a36Sopenharmony_ci }; 16462306a36Sopenharmony_ci ... 16562306a36Sopenharmony_ci }; 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci crypto@300000 { 16862306a36Sopenharmony_ci ... 16962306a36Sopenharmony_ci fsl,qman = <&qman, 2>; 17062306a36Sopenharmony_ci ... 17162306a36Sopenharmony_ci }; 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci qman: qman@318000 { 17462306a36Sopenharmony_ci compatible = "fsl,qman"; 17562306a36Sopenharmony_ci reg = <0x318000 0x1000>; 17662306a36Sopenharmony_ci interrupts = <16 2 1 3> 17762306a36Sopenharmony_ci fsl,liodn = <0x16>; 17862306a36Sopenharmony_ci fsl,qman-portals = <&qportals>; 17962306a36Sopenharmony_ci memory-region = <&qman_fqd &qman_pfdr>; 18062306a36Sopenharmony_ci clocks = <&platform_pll 1>; 18162306a36Sopenharmony_ci }; 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci fman@400000 { 18462306a36Sopenharmony_ci ... 18562306a36Sopenharmony_ci fsl,qman = <&qman, 0>; 18662306a36Sopenharmony_ci ... 18762306a36Sopenharmony_ci }; 188