Merge remote-tracking branch 'asoc/fix/intel' into asoc-linus
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / soc / fsl / qman.txt
1 QorIQ DPAA Queue Manager Device Tree Binding
2
3 Copyright (C) 2008 - 2014 Freescale Semiconductor Inc.
4
5 CONTENTS
6
7         - QMan Node
8         - QMan Private Memory Nodes
9         - Example
10
11 QMan Node
12
13 The Queue Manager is part of the Data-Path Acceleration Architecture (DPAA). QMan
14 supports queuing and QoS scheduling of frames to CPUs, network interfaces and
15 DPAA logic modules, maintains packet ordering within flows. Besides providing
16 flow-level queuing, is also responsible for congestion management functions such
17 as RED/WRED, congestion notifications and tail discards. This binding covers the
18 CCSR space programming model
19
20 PROPERTIES
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
33 The QMan revision information is located in the QMAN_IP_REV_1/2 registers which
34 are 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
70 Devices connected to a QMan instance via Direct Connect Portals (DCP) must link
71 to 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
79 QMan Private Memory Nodes
80
81 QMan requires two contiguous range of physical memory used for the backing store
82 for QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR).
83 This memory is reserved/allocated as a node under the /reserved-memory node.
84
85 For additional details about reserved memory regions see reserved-memory.txt
86
87 The QMan FQD memory node must be named "qman-fqd"
88
89 PROPERTIES
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
98 The QMan PFDR memory node must be named "qman-pfdr"
99
100 PROPERTIES
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
109 The 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
114 The size of the FQD and PFDP must be chosen by observing the hardware features
115 configured via the Reset Configuration Word (RCW) and that are relevant to a
116 specific board (e.g. number of MAC(s) pinned-out, number of offline/host command
117 FMan ports, etc.). The size configured in the DT must reflect the hardware
118 capabilities and not the specific needs of an application
119
120 For additional details about reserved memory regions see reserved-memory.txt
121
122 EXAMPLE
123
124 The 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
145 The 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         };