1QorIQ DPAA Queue Manager Device Tree Binding
2
3Copyright (C) 2008 - 2014 Freescale Semiconductor Inc.
4
5CONTENTS
6
7	- QMan Node
8	- QMan Private Memory Nodes
9	- Example
10
11QMan Node
12
13The Queue Manager is part of the Data-Path Acceleration Architecture (DPAA). QMan
14supports queuing and QoS scheduling of frames to CPUs, network interfaces and
15DPAA logic modules, maintains packet ordering within flows. Besides providing
16flow-level queuing, is also responsible for congestion management functions such
17as RED/WRED, congestion notifications and tail discards. This binding covers the
18CCSR space programming model
19
20PROPERTIES
21
22- compatible
23	Usage:		Required
24	Value type:	<stringlist>
25	Definition:	Must include "fsl,qman"
26			May include "fsl,<SoC>-qman"
27
28- reg
29	Usage:		Required
30	Value type:	<prop-encoded-array>
31	Definition:	Registers region within the CCSR address space
32
33The QMan revision information is located in the QMAN_IP_REV_1/2 registers which
34are located at offsets 0xbf8 and 0xbfc
35
36- interrupts
37	Usage:		Required
38	Value type:	<prop-encoded-array>
39	Definition:	Standard property. The error interrupt
40
41- fsl,qman-portals
42	Usage:		Required
43	Value type:	<phandle>
44	Definition:	Phandle to this QMan instance's portals
45
46- fsl,liodn
47	Usage:		See pamu.txt
48	Value type:	<prop-encoded-array>
49	Definition:	PAMU property used for static LIODN assignment
50
51- fsl,iommu-parent
52	Usage:		See pamu.txt
53	Value type:	<phandle>
54	Definition:	PAMU property used for dynamic LIODN assignment
55
56	For additional details about the PAMU/LIODN binding(s) see pamu.txt
57
58- clocks
59	Usage:		See clock-bindings.txt and qoriq-clock.txt
60	Value type:	<prop-encoded-array>
61	Definition:	Reference input clock. Its frequency is half of the
62			platform clock
63
64Devices connected to a QMan instance via Direct Connect Portals (DCP) must link
65to the respective QMan instance
66
67- fsl,qman
68	Usage:		Required
69	Value type:	<prop-encoded-array>
70	Description:	List of phandle and DCP index pairs, to the QMan instance
71			to which this device is connected via the DCP
72
73QMan Private Memory Nodes
74
75QMan requires two contiguous range of physical memory used for the backing store
76for QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR).
77This memory is reserved/allocated as a nodes under the /reserved-memory node
78
79The QMan FQD memory node must be named "qman-fqd"
80
81PROPERTIES
82
83- compatible
84	Usage:		required
85	Value type:	<stringlist>
86	Definition:	Must inclide "fsl,qman-fqd"
87
88The QMan PFDR memory node must be named "qman-pfdr"
89
90PROPERTIES
91
92- compatible
93	Usage:		required
94	Value type:	<stringlist>
95	Definition:	Must inclide "fsl,qman-pfdr"
96
97The following constraints are relevant to the FQD and PFDR private memory:
98	- The size must be 2^(size + 1), with size = 11..29. That is 4 KiB to
99	  1 GiB
100	- The alignment must be a muliptle of the memory size
101
102The size of the FQD and PFDP must be chosen by observing the hardware features
103configured via the Reset Configuration Word (RCW) and that are relevant to a
104specific board (e.g. number of MAC(s) pinned-out, number of offline/host command
105FMan ports, etc.). The size configured in the DT must reflect the hardware
106capabilities and not the specific needs of an application
107
108For additional details about reserved memory regions see reserved-memory.txt
109
110EXAMPLE
111
112The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes
113
114	reserved-memory {
115		#address-cells = <2>;
116		#size-cells = <2>;
117		ranges;
118
119		qman_fqd: qman-fqd {
120			compatible = "fsl,qman-fqd";
121			alloc-ranges = <0 0 0x10 0>;
122			size = <0 0x400000>;
123			alignment = <0 0x400000>;
124		};
125		qman_pfdr: qman-pfdr {
126			compatible = "fsl,qman-pfdr";
127			alloc-ranges = <0 0 0x10 0>;
128			size = <0 0x2000000>;
129			alignment = <0 0x2000000>;
130		};
131	};
132
133The example below shows a (P4080) QMan CCSR-space node
134
135	qportals: qman-portals@ff4200000 {
136		...
137	};
138
139	clockgen: global-utilities@e1000 {
140		...
141		sysclk: sysclk {
142			...
143		};
144		...
145		platform_pll: platform-pll@c00 {
146			#clock-cells = <1>;
147			reg = <0xc00 0x4>;
148			compatible = "fsl,qoriq-platform-pll-1.0";
149			clocks = <&sysclk>;
150			clock-output-names = "platform-pll", "platform-pll-div2";
151		};
152		...
153	};
154
155	crypto@300000 {
156		...
157		fsl,qman = <&qman, 2>;
158		...
159	};
160
161	qman: qman@318000 {
162		compatible = "fsl,qman";
163		reg = <0x318000 0x1000>;
164		interrupts = <16 2 1 3>
165		fsl,liodn = <0x16>;
166		fsl,qman-portals = <&qportals>;
167		memory-region = <&qman_fqd &qman_pfdr>;
168		clocks = <&platform_pll 1>;
169	};
170
171	fman@400000 {
172		...
173		fsl,qman = <&qman, 0>;
174		...
175	};
176