dt/bindings: Introduce the FSL QorIQ DPAA QMan
authorEmil Medve <Emilian.Medve@freescale.com>
Wed, 5 Nov 2014 15:18:53 +0000 (09:18 -0600)
committerScott Wood <scottwood@freescale.com>
Thu, 13 Nov 2014 05:53:44 +0000 (23:53 -0600)
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

Signed-off-by: Emil Medve <Emilian.Medve@Freescale.com>
Change-Id: I3acb223893e42003d6c9dc061db568ec0b10d29b
Signed-off-by: Scott Wood <scottwood@freescale.com>
Documentation/devicetree/bindings/soc/fsl/qman.txt [new file with mode: 0644]

diff --git a/Documentation/devicetree/bindings/soc/fsl/qman.txt b/Documentation/devicetree/bindings/soc/fsl/qman.txt
new file mode 100644 (file)
index 0000000..063e3a0
--- /dev/null
@@ -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>;
+               ...
+       };