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- memory-regions
64	Usage:		Required for ARM
65	Value type:	<phandle array>
66	Definition:	List of phandles referencing the QMan private memory
67			nodes (described below). The qman-fqd node must be
68			first followed by qman-pfdr node. Only used on ARM
69
70Devices connected to a QMan instance via Direct Connect Portals (DCP) must link
71to the respective QMan instance
72
73- fsl,qman
74	Usage:		Required
75	Value type:	<prop-encoded-array>
76	Description:	List of phandle and DCP index pairs, to the QMan instance
77			to which this device is connected via the DCP
78
79QMan Private Memory Nodes
80
81QMan requires two contiguous range of physical memory used for the backing store
82for QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR).
83This memory is reserved/allocated as a node under the /reserved-memory node.
84
85For additional details about reserved memory regions see reserved-memory.txt
86
87The QMan FQD memory node must be named "qman-fqd"
88
89PROPERTIES
90
91- compatible
92	Usage:		required
93	Value type:	<stringlist>
94	Definition:	PPC platforms: Must include "fsl,qman-fqd"
95			ARM platforms: Must include "shared-dma-pool"
96				       as well as the "no-map" property
97
98The QMan PFDR memory node must be named "qman-pfdr"
99
100PROPERTIES
101
102- compatible
103	Usage:		required
104	Value type:	<stringlist>
105	Definition:	PPC platforms: Must include "fsl,qman-pfdr"
106			ARM platforms: Must include "shared-dma-pool"
107				       as well as the "no-map" property
108
109The following constraints are relevant to the FQD and PFDR private memory:
110	- The size must be 2^(size + 1), with size = 11..29. That is 4 KiB to
111	  1 GiB
112	- The alignment must be a muliptle of the memory size
113
114The size of the FQD and PFDP must be chosen by observing the hardware features
115configured via the Reset Configuration Word (RCW) and that are relevant to a
116specific board (e.g. number of MAC(s) pinned-out, number of offline/host command
117FMan ports, etc.). The size configured in the DT must reflect the hardware
118capabilities and not the specific needs of an application
119
120For additional details about reserved memory regions see reserved-memory.txt
121
122EXAMPLE
123
124The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes
125
126	reserved-memory {
127		#address-cells = <2>;
128		#size-cells = <2>;
129		ranges;
130
131		qman_fqd: qman-fqd {
132			compatible = "shared-dma-pool";
133			size = <0 0x400000>;
134			alignment = <0 0x400000>;
135			no-map;
136		};
137		qman_pfdr: qman-pfdr {
138			compatible = "shared-dma-pool";
139			size = <0 0x2000000>;
140			alignment = <0 0x2000000>;
141			no-map;
142		};
143	};
144
145The example below shows a (P4080) QMan CCSR-space node
146
147	qportals: qman-portals@ff4200000 {
148		...
149	};
150
151	clockgen: global-utilities@e1000 {
152		...
153		sysclk: sysclk {
154			...
155		};
156		...
157		platform_pll: platform-pll@c00 {
158			#clock-cells = <1>;
159			reg = <0xc00 0x4>;
160			compatible = "fsl,qoriq-platform-pll-1.0";
161			clocks = <&sysclk>;
162			clock-output-names = "platform-pll", "platform-pll-div2";
163		};
164		...
165	};
166
167	crypto@300000 {
168		...
169		fsl,qman = <&qman, 2>;
170		...
171	};
172
173	qman: qman@318000 {
174		compatible = "fsl,qman";
175		reg = <0x318000 0x1000>;
176		interrupts = <16 2 1 3>
177		fsl,liodn = <0x16>;
178		fsl,qman-portals = <&qportals>;
179		memory-region = <&qman_fqd &qman_pfdr>;
180		clocks = <&platform_pll 1>;
181	};
182
183	fman@400000 {
184		...
185		fsl,qman = <&qman, 0>;
186		...
187	};
188