|
@@ -0,0 +1,165 @@
|
|
|
+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: <stringlist>
|
|
|
+ Definition: Must include "fsl,qman"
|
|
|
+ May include "fsl,<SoC>-qman"
|
|
|
+
|
|
|
+- reg
|
|
|
+ Usage: Required
|
|
|
+ Value type: <prop-encoded-array>
|
|
|
+ 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: <prop-encoded-array>
|
|
|
+ Definition: Standard property. The error interrupt
|
|
|
+
|
|
|
+- fsl,liodn
|
|
|
+ Usage: See pamu.txt
|
|
|
+ Value type: <prop-encoded-array>
|
|
|
+ Definition: PAMU property used for static LIODN assignment
|
|
|
+
|
|
|
+- fsl,iommu-parent
|
|
|
+ Usage: See pamu.txt
|
|
|
+ Value type: <phandle>
|
|
|
+ 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: <prop-encoded-array>
|
|
|
+ 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: <prop-encoded-array>
|
|
|
+ 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: <stringlist>
|
|
|
+ Definition: Must inclide "fsl,qman-fqd"
|
|
|
+
|
|
|
+The QMan PFDR memory node must be named "qman-pfdr"
|
|
|
+
|
|
|
+PROPERTIES
|
|
|
+
|
|
|
+- compatible
|
|
|
+ Usage: required
|
|
|
+ Value type: <stringlist>
|
|
|
+ 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>;
|
|
|
+ ...
|
|
|
+ };
|