| 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,qman-portals | |
| Usage: Required | |
| Value type: <phandle> | |
| Definition: Phandle to this QMan instance's portals | |
| - 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 0x10 0>; | |
| size = <0 0x400000>; | |
| alignment = <0 0x400000>; | |
| }; | |
| qman_pfdr: qman-pfdr { | |
| compatible = "fsl,qman-pfdr"; | |
| alloc-ranges = <0 0 0x10 0>; | |
| size = <0 0x2000000>; | |
| alignment = <0 0x2000000>; | |
| }; | |
| }; | |
| The example below shows a (P4080) QMan CCSR-space node | |
| qportals: qman-portals@ff4200000 { | |
| ... | |
| }; | |
| 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>; | |
| fsl,qman-portals = <&qportals>; | |
| memory-region = <&qman_fqd &qman_pfdr>; | |
| clocks = <&platform_pll 1>; | |
| }; | |
| fman@400000 { | |
| ... | |
| fsl,qman = <&qman, 0>; | |
| ... | |
| }; |