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