QorIQ DPAA Queue Manager Device Tree Binding Copyright (C) 2008 - 2014 Freescale Semiconductor Inc. CONTENTS - QMan Node - QMan Private Memory Nodes - Example QMan Node The Queue Manager is part of the Data-Path Acceleration Architecture (DPAA). QMan supports queuing and QoS scheduling of frames to CPUs, network interfaces and DPAA logic modules, maintains packet ordering within flows. Besides providing flow-level queuing, is also responsible for congestion management functions such as RED/WRED, congestion notifications and tail discards. This binding covers the CCSR space programming model PROPERTIES - compatible Usage: Required Value type: Definition: Must include "fsl,qman" May include "fsl,-qman" - reg Usage: Required Value type: Definition: Registers region within the CCSR address space The QMan revision information is located in the QMAN_IP_REV_1/2 registers which are located at offsets 0xbf8 and 0xbfc - interrupts Usage: Required Value type: Definition: Standard property. The error interrupt - fsl,liodn Usage: See pamu.txt Value type: Definition: PAMU property used for static LIODN assignment - fsl,iommu-parent Usage: See pamu.txt Value type: Definition: PAMU property used for dynamic LIODN assignment For additional details about the PAMU/LIODN binding(s) see pamu.txt - clocks Usage: See clock-bindings.txt and qoriq-clock.txt Value type: Definition: Reference input clock. Its frequency is half of the platform clock Devices connected to a QMan instance via Direct Connect Portals (DCP) must link to the respective QMan instance - fsl,qman Usage: Required Value type: Description: List of phandle and DCP index pairs, to the QMan instance to which this device is connected via the DCP QMan Private Memory Nodes QMan requires two contiguous range of physical memory used for the backing store for QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR). This memory is reserved/allocated as a nodes under the /reserved-memory node The QMan FQD memory node must be named "qman-fqd" PROPERTIES - compatible Usage: required Value type: Definition: Must inclide "fsl,qman-fqd" The QMan PFDR memory node must be named "qman-pfdr" PROPERTIES - compatible Usage: required Value type: Definition: Must inclide "fsl,qman-pfdr" The following constraints are relevant to the FQD and PFDR private memory: - The size must be 2^(size + 1), with size = 11..29. That is 4 KiB to 1 GiB - The alignment must be a muliptle of the memory size The size of the FQD and PFDP must be chosen by observing the hardware features configured via the Reset Configuration Word (RCW) and that are relevant to a specific board (e.g. number of MAC(s) pinned-out, number of offline/host command FMan ports, etc.). The size configured in the DT must reflect the hardware capabilities and not the specific needs of an application For additional details about reserved memory regions see reserved-memory.txt EXAMPLE The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; qman_fqd: qman-fqd { compatible = "fsl,qman-fqd"; alloc-ranges = <0 0 0xf 0xffffffff>; size = <0 0x400000>; alignment = <0 0x400000>; }; qman_pfdr: qman-pfdr { compatible = "fsl,qman-pfdr"; alloc-ranges = <0 0 0xf 0xffffffff>; size = <0 0x2000000>; alignment = <0 0x2000000>; }; }; The example below shows a (P4080) QMan CCSR-space node clockgen: global-utilities@e1000 { ... sysclk: sysclk { ... }; ... platform_pll: platform-pll@c00 { #clock-cells = <1>; reg = <0xc00 0x4>; compatible = "fsl,qoriq-platform-pll-1.0"; clocks = <&sysclk>; clock-output-names = "platform-pll", "platform-pll-div2"; }; ... }; crypto@300000 { ... fsl,qman = <&qman, 2>; ... }; qman: qman@318000 { compatible = "fsl,qman"; reg = <0x318000 0x1000>; interrupts = <16 2 1 3> fsl,liodn = <0x16>; memory-region = <&qman_fqd &qman_pfdr>; clocks = <&platform_pll 1>; }; fman@400000 { ... fsl,qman = <&qman, 0>; ... };