162306a36Sopenharmony_ciQorIQ DPAA Queue Manager Device Tree Binding
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciCopyright (C) 2008 - 2014 Freescale Semiconductor Inc.
462306a36Sopenharmony_ci
562306a36Sopenharmony_ciCONTENTS
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci	- QMan Node
862306a36Sopenharmony_ci	- QMan Private Memory Nodes
962306a36Sopenharmony_ci	- Example
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciQMan Node
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciThe Queue Manager is part of the Data-Path Acceleration Architecture (DPAA). QMan
1462306a36Sopenharmony_cisupports queuing and QoS scheduling of frames to CPUs, network interfaces and
1562306a36Sopenharmony_ciDPAA logic modules, maintains packet ordering within flows. Besides providing
1662306a36Sopenharmony_ciflow-level queuing, is also responsible for congestion management functions such
1762306a36Sopenharmony_cias RED/WRED, congestion notifications and tail discards. This binding covers the
1862306a36Sopenharmony_ciCCSR space programming model
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciPROPERTIES
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci- compatible
2362306a36Sopenharmony_ci	Usage:		Required
2462306a36Sopenharmony_ci	Value type:	<stringlist>
2562306a36Sopenharmony_ci	Definition:	Must include "fsl,qman"
2662306a36Sopenharmony_ci			May include "fsl,<SoC>-qman"
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci- reg
2962306a36Sopenharmony_ci	Usage:		Required
3062306a36Sopenharmony_ci	Value type:	<prop-encoded-array>
3162306a36Sopenharmony_ci	Definition:	Registers region within the CCSR address space
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciThe QMan revision information is located in the QMAN_IP_REV_1/2 registers which
3462306a36Sopenharmony_ciare located at offsets 0xbf8 and 0xbfc
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci- interrupts
3762306a36Sopenharmony_ci	Usage:		Required
3862306a36Sopenharmony_ci	Value type:	<prop-encoded-array>
3962306a36Sopenharmony_ci	Definition:	Standard property. The error interrupt
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci- fsl,qman-portals
4262306a36Sopenharmony_ci	Usage:		Required
4362306a36Sopenharmony_ci	Value type:	<phandle>
4462306a36Sopenharmony_ci	Definition:	Phandle to this QMan instance's portals
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci- fsl,liodn
4762306a36Sopenharmony_ci	Usage:		See pamu.txt
4862306a36Sopenharmony_ci	Value type:	<prop-encoded-array>
4962306a36Sopenharmony_ci	Definition:	PAMU property used for static LIODN assignment
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci- fsl,iommu-parent
5262306a36Sopenharmony_ci	Usage:		See pamu.txt
5362306a36Sopenharmony_ci	Value type:	<phandle>
5462306a36Sopenharmony_ci	Definition:	PAMU property used for dynamic LIODN assignment
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci	For additional details about the PAMU/LIODN binding(s) see pamu.txt
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci- clocks
5962306a36Sopenharmony_ci	Usage:		See clock-bindings.txt and qoriq-clock.txt
6062306a36Sopenharmony_ci	Value type:	<prop-encoded-array>
6162306a36Sopenharmony_ci	Definition:	Reference input clock. Its frequency is half of the
6262306a36Sopenharmony_ci			platform clock
6362306a36Sopenharmony_ci- memory-regions
6462306a36Sopenharmony_ci	Usage:		Required for ARM
6562306a36Sopenharmony_ci	Value type:	<phandle array>
6662306a36Sopenharmony_ci	Definition:	List of phandles referencing the QMan private memory
6762306a36Sopenharmony_ci			nodes (described below). The qman-fqd node must be
6862306a36Sopenharmony_ci			first followed by qman-pfdr node. Only used on ARM
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ciDevices connected to a QMan instance via Direct Connect Portals (DCP) must link
7162306a36Sopenharmony_cito the respective QMan instance
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci- fsl,qman
7462306a36Sopenharmony_ci	Usage:		Required
7562306a36Sopenharmony_ci	Value type:	<prop-encoded-array>
7662306a36Sopenharmony_ci	Description:	List of phandle and DCP index pairs, to the QMan instance
7762306a36Sopenharmony_ci			to which this device is connected via the DCP
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ciQMan Private Memory Nodes
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ciQMan requires two contiguous range of physical memory used for the backing store
8262306a36Sopenharmony_cifor QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR).
8362306a36Sopenharmony_ciThis memory is reserved/allocated as a node under the /reserved-memory node.
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ciFor additional details about reserved memory regions see reserved-memory.txt
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ciThe QMan FQD memory node must be named "qman-fqd"
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciPROPERTIES
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci- compatible
9262306a36Sopenharmony_ci	Usage:		required
9362306a36Sopenharmony_ci	Value type:	<stringlist>
9462306a36Sopenharmony_ci	Definition:	PPC platforms: Must include "fsl,qman-fqd"
9562306a36Sopenharmony_ci			ARM platforms: Must include "shared-dma-pool"
9662306a36Sopenharmony_ci				       as well as the "no-map" property
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ciThe QMan PFDR memory node must be named "qman-pfdr"
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ciPROPERTIES
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci- compatible
10362306a36Sopenharmony_ci	Usage:		required
10462306a36Sopenharmony_ci	Value type:	<stringlist>
10562306a36Sopenharmony_ci	Definition:	PPC platforms: Must include "fsl,qman-pfdr"
10662306a36Sopenharmony_ci			ARM platforms: Must include "shared-dma-pool"
10762306a36Sopenharmony_ci				       as well as the "no-map" property
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciThe following constraints are relevant to the FQD and PFDR private memory:
11062306a36Sopenharmony_ci	- The size must be 2^(size + 1), with size = 11..29. That is 4 KiB to
11162306a36Sopenharmony_ci	  1 GiB
11262306a36Sopenharmony_ci	- The alignment must be a muliptle of the memory size
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ciThe size of the FQD and PFDP must be chosen by observing the hardware features
11562306a36Sopenharmony_ciconfigured via the Reset Configuration Word (RCW) and that are relevant to a
11662306a36Sopenharmony_cispecific board (e.g. number of MAC(s) pinned-out, number of offline/host command
11762306a36Sopenharmony_ciFMan ports, etc.). The size configured in the DT must reflect the hardware
11862306a36Sopenharmony_cicapabilities and not the specific needs of an application
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ciFor additional details about reserved memory regions see reserved-memory.txt
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ciEXAMPLE
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ciThe example below shows a QMan FQD and a PFDR dynamic allocation memory nodes
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci	reserved-memory {
12762306a36Sopenharmony_ci		#address-cells = <2>;
12862306a36Sopenharmony_ci		#size-cells = <2>;
12962306a36Sopenharmony_ci		ranges;
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci		qman_fqd: qman-fqd {
13262306a36Sopenharmony_ci			compatible = "shared-dma-pool";
13362306a36Sopenharmony_ci			size = <0 0x400000>;
13462306a36Sopenharmony_ci			alignment = <0 0x400000>;
13562306a36Sopenharmony_ci			no-map;
13662306a36Sopenharmony_ci		};
13762306a36Sopenharmony_ci		qman_pfdr: qman-pfdr {
13862306a36Sopenharmony_ci			compatible = "shared-dma-pool";
13962306a36Sopenharmony_ci			size = <0 0x2000000>;
14062306a36Sopenharmony_ci			alignment = <0 0x2000000>;
14162306a36Sopenharmony_ci			no-map;
14262306a36Sopenharmony_ci		};
14362306a36Sopenharmony_ci	};
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ciThe example below shows a (P4080) QMan CCSR-space node
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci	qportals: qman-portals@ff4200000 {
14862306a36Sopenharmony_ci		...
14962306a36Sopenharmony_ci	};
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci	clockgen: global-utilities@e1000 {
15262306a36Sopenharmony_ci		...
15362306a36Sopenharmony_ci		sysclk: sysclk {
15462306a36Sopenharmony_ci			...
15562306a36Sopenharmony_ci		};
15662306a36Sopenharmony_ci		...
15762306a36Sopenharmony_ci		platform_pll: platform-pll@c00 {
15862306a36Sopenharmony_ci			#clock-cells = <1>;
15962306a36Sopenharmony_ci			reg = <0xc00 0x4>;
16062306a36Sopenharmony_ci			compatible = "fsl,qoriq-platform-pll-1.0";
16162306a36Sopenharmony_ci			clocks = <&sysclk>;
16262306a36Sopenharmony_ci			clock-output-names = "platform-pll", "platform-pll-div2";
16362306a36Sopenharmony_ci		};
16462306a36Sopenharmony_ci		...
16562306a36Sopenharmony_ci	};
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci	crypto@300000 {
16862306a36Sopenharmony_ci		...
16962306a36Sopenharmony_ci		fsl,qman = <&qman, 2>;
17062306a36Sopenharmony_ci		...
17162306a36Sopenharmony_ci	};
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci	qman: qman@318000 {
17462306a36Sopenharmony_ci		compatible = "fsl,qman";
17562306a36Sopenharmony_ci		reg = <0x318000 0x1000>;
17662306a36Sopenharmony_ci		interrupts = <16 2 1 3>
17762306a36Sopenharmony_ci		fsl,liodn = <0x16>;
17862306a36Sopenharmony_ci		fsl,qman-portals = <&qportals>;
17962306a36Sopenharmony_ci		memory-region = <&qman_fqd &qman_pfdr>;
18062306a36Sopenharmony_ci		clocks = <&platform_pll 1>;
18162306a36Sopenharmony_ci	};
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci	fman@400000 {
18462306a36Sopenharmony_ci		...
18562306a36Sopenharmony_ci		fsl,qman = <&qman, 0>;
18662306a36Sopenharmony_ci		...
18762306a36Sopenharmony_ci	};
188