123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- 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>;
- ...
- };
|