176a4f03fSEmil MedveQorIQ DPAA Queue Manager Device Tree Binding 276a4f03fSEmil Medve 376a4f03fSEmil MedveCopyright (C) 2008 - 2014 Freescale Semiconductor Inc. 476a4f03fSEmil Medve 576a4f03fSEmil MedveCONTENTS 676a4f03fSEmil Medve 776a4f03fSEmil Medve - QMan Node 876a4f03fSEmil Medve - QMan Private Memory Nodes 976a4f03fSEmil Medve - Example 1076a4f03fSEmil Medve 1176a4f03fSEmil MedveQMan Node 1276a4f03fSEmil Medve 1376a4f03fSEmil MedveThe Queue Manager is part of the Data-Path Acceleration Architecture (DPAA). QMan 1476a4f03fSEmil Medvesupports queuing and QoS scheduling of frames to CPUs, network interfaces and 1576a4f03fSEmil MedveDPAA logic modules, maintains packet ordering within flows. Besides providing 1676a4f03fSEmil Medveflow-level queuing, is also responsible for congestion management functions such 1776a4f03fSEmil Medveas RED/WRED, congestion notifications and tail discards. This binding covers the 1876a4f03fSEmil MedveCCSR space programming model 1976a4f03fSEmil Medve 2076a4f03fSEmil MedvePROPERTIES 2176a4f03fSEmil Medve 2276a4f03fSEmil Medve- compatible 2376a4f03fSEmil Medve Usage: Required 2476a4f03fSEmil Medve Value type: <stringlist> 2576a4f03fSEmil Medve Definition: Must include "fsl,qman" 2676a4f03fSEmil Medve May include "fsl,<SoC>-qman" 2776a4f03fSEmil Medve 2876a4f03fSEmil Medve- reg 2976a4f03fSEmil Medve Usage: Required 3076a4f03fSEmil Medve Value type: <prop-encoded-array> 3176a4f03fSEmil Medve Definition: Registers region within the CCSR address space 3276a4f03fSEmil Medve 3376a4f03fSEmil MedveThe QMan revision information is located in the QMAN_IP_REV_1/2 registers which 3476a4f03fSEmil Medveare located at offsets 0xbf8 and 0xbfc 3576a4f03fSEmil Medve 3676a4f03fSEmil Medve- interrupts 3776a4f03fSEmil Medve Usage: Required 3876a4f03fSEmil Medve Value type: <prop-encoded-array> 3976a4f03fSEmil Medve Definition: Standard property. The error interrupt 4076a4f03fSEmil Medve 4176a4f03fSEmil Medve- fsl,liodn 4276a4f03fSEmil Medve Usage: See pamu.txt 4376a4f03fSEmil Medve Value type: <prop-encoded-array> 4476a4f03fSEmil Medve Definition: PAMU property used for static LIODN assignment 4576a4f03fSEmil Medve 4676a4f03fSEmil Medve- fsl,iommu-parent 4776a4f03fSEmil Medve Usage: See pamu.txt 4876a4f03fSEmil Medve Value type: <phandle> 4976a4f03fSEmil Medve Definition: PAMU property used for dynamic LIODN assignment 5076a4f03fSEmil Medve 5176a4f03fSEmil Medve For additional details about the PAMU/LIODN binding(s) see pamu.txt 5276a4f03fSEmil Medve 5376a4f03fSEmil Medve- clocks 5476a4f03fSEmil Medve Usage: See clock-bindings.txt and qoriq-clock.txt 5576a4f03fSEmil Medve Value type: <prop-encoded-array> 5676a4f03fSEmil Medve Definition: Reference input clock. Its frequency is half of the 5776a4f03fSEmil Medve platform clock 5876a4f03fSEmil Medve 5976a4f03fSEmil MedveDevices connected to a QMan instance via Direct Connect Portals (DCP) must link 6076a4f03fSEmil Medveto the respective QMan instance 6176a4f03fSEmil Medve 6276a4f03fSEmil Medve- fsl,qman 6376a4f03fSEmil Medve Usage: Required 6476a4f03fSEmil Medve Value type: <prop-encoded-array> 6576a4f03fSEmil Medve Description: List of phandle and DCP index pairs, to the QMan instance 6676a4f03fSEmil Medve to which this device is connected via the DCP 6776a4f03fSEmil Medve 6876a4f03fSEmil MedveQMan Private Memory Nodes 6976a4f03fSEmil Medve 7076a4f03fSEmil MedveQMan requires two contiguous range of physical memory used for the backing store 7176a4f03fSEmil Medvefor QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR). 7276a4f03fSEmil MedveThis memory is reserved/allocated as a nodes under the /reserved-memory node 7376a4f03fSEmil Medve 7476a4f03fSEmil MedveThe QMan FQD memory node must be named "qman-fqd" 7576a4f03fSEmil Medve 7676a4f03fSEmil MedvePROPERTIES 7776a4f03fSEmil Medve 7876a4f03fSEmil Medve- compatible 7976a4f03fSEmil Medve Usage: required 8076a4f03fSEmil Medve Value type: <stringlist> 8176a4f03fSEmil Medve Definition: Must inclide "fsl,qman-fqd" 8276a4f03fSEmil Medve 8376a4f03fSEmil MedveThe QMan PFDR memory node must be named "qman-pfdr" 8476a4f03fSEmil Medve 8576a4f03fSEmil MedvePROPERTIES 8676a4f03fSEmil Medve 8776a4f03fSEmil Medve- compatible 8876a4f03fSEmil Medve Usage: required 8976a4f03fSEmil Medve Value type: <stringlist> 9076a4f03fSEmil Medve Definition: Must inclide "fsl,qman-pfdr" 9176a4f03fSEmil Medve 9276a4f03fSEmil MedveThe following constraints are relevant to the FQD and PFDR private memory: 9376a4f03fSEmil Medve - The size must be 2^(size + 1), with size = 11..29. That is 4 KiB to 9476a4f03fSEmil Medve 1 GiB 9576a4f03fSEmil Medve - The alignment must be a muliptle of the memory size 9676a4f03fSEmil Medve 9776a4f03fSEmil MedveThe size of the FQD and PFDP must be chosen by observing the hardware features 9876a4f03fSEmil Medveconfigured via the Reset Configuration Word (RCW) and that are relevant to a 9976a4f03fSEmil Medvespecific board (e.g. number of MAC(s) pinned-out, number of offline/host command 10076a4f03fSEmil MedveFMan ports, etc.). The size configured in the DT must reflect the hardware 10176a4f03fSEmil Medvecapabilities and not the specific needs of an application 10276a4f03fSEmil Medve 10376a4f03fSEmil MedveFor additional details about reserved memory regions see reserved-memory.txt 10476a4f03fSEmil Medve 10576a4f03fSEmil MedveEXAMPLE 10676a4f03fSEmil Medve 10776a4f03fSEmil MedveThe example below shows a QMan FQD and a PFDR dynamic allocation memory nodes 10876a4f03fSEmil Medve 10976a4f03fSEmil Medve reserved-memory { 11076a4f03fSEmil Medve #address-cells = <2>; 11176a4f03fSEmil Medve #size-cells = <2>; 11276a4f03fSEmil Medve ranges; 11376a4f03fSEmil Medve 11476a4f03fSEmil Medve qman_fqd: qman-fqd { 11576a4f03fSEmil Medve compatible = "fsl,qman-fqd"; 11676a4f03fSEmil Medve alloc-ranges = <0 0 0xf 0xffffffff>; 11776a4f03fSEmil Medve size = <0 0x400000>; 11876a4f03fSEmil Medve alignment = <0 0x400000>; 11976a4f03fSEmil Medve }; 12076a4f03fSEmil Medve qman_pfdr: qman-pfdr { 12176a4f03fSEmil Medve compatible = "fsl,qman-pfdr"; 12276a4f03fSEmil Medve alloc-ranges = <0 0 0xf 0xffffffff>; 12376a4f03fSEmil Medve size = <0 0x2000000>; 12476a4f03fSEmil Medve alignment = <0 0x2000000>; 12576a4f03fSEmil Medve }; 12676a4f03fSEmil Medve }; 12776a4f03fSEmil Medve 12876a4f03fSEmil MedveThe example below shows a (P4080) QMan CCSR-space node 12976a4f03fSEmil Medve 13076a4f03fSEmil Medve clockgen: global-utilities@e1000 { 13176a4f03fSEmil Medve ... 13276a4f03fSEmil Medve sysclk: sysclk { 13376a4f03fSEmil Medve ... 13476a4f03fSEmil Medve }; 13576a4f03fSEmil Medve ... 13676a4f03fSEmil Medve platform_pll: platform-pll@c00 { 13776a4f03fSEmil Medve #clock-cells = <1>; 13876a4f03fSEmil Medve reg = <0xc00 0x4>; 13976a4f03fSEmil Medve compatible = "fsl,qoriq-platform-pll-1.0"; 14076a4f03fSEmil Medve clocks = <&sysclk>; 14176a4f03fSEmil Medve clock-output-names = "platform-pll", "platform-pll-div2"; 14276a4f03fSEmil Medve }; 14376a4f03fSEmil Medve ... 14476a4f03fSEmil Medve }; 14576a4f03fSEmil Medve 14676a4f03fSEmil Medve crypto@300000 { 14776a4f03fSEmil Medve ... 14876a4f03fSEmil Medve fsl,qman = <&qman, 2>; 14976a4f03fSEmil Medve ... 15076a4f03fSEmil Medve }; 15176a4f03fSEmil Medve 15276a4f03fSEmil Medve qman: qman@318000 { 15376a4f03fSEmil Medve compatible = "fsl,qman"; 15476a4f03fSEmil Medve reg = <0x318000 0x1000>; 15576a4f03fSEmil Medve interrupts = <16 2 1 3> 15676a4f03fSEmil Medve fsl,liodn = <0x16>; 15776a4f03fSEmil Medve memory-region = <&qman_fqd &qman_pfdr>; 15876a4f03fSEmil Medve clocks = <&platform_pll 1>; 15976a4f03fSEmil Medve }; 16076a4f03fSEmil Medve 16176a4f03fSEmil Medve fman@400000 { 16276a4f03fSEmil Medve ... 16376a4f03fSEmil Medve fsl,qman = <&qman, 0>; 16476a4f03fSEmil Medve ... 16576a4f03fSEmil Medve }; 166