diff options
-rw-r--r-- | Documentation/devicetree/bindings/powerpc/fsl/fman.txt | 529 |
1 files changed, 529 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/fman.txt b/Documentation/devicetree/bindings/powerpc/fsl/fman.txt new file mode 100644 index 000000000000..da8e5f25768f --- /dev/null +++ b/Documentation/devicetree/bindings/powerpc/fsl/fman.txt | |||
@@ -0,0 +1,529 @@ | |||
1 | ============================================================================= | ||
2 | Freescale Frame Manager Device Bindings | ||
3 | |||
4 | CONTENTS | ||
5 | - FMan Node | ||
6 | - FMan Port Node | ||
7 | - FMan MURAM Node | ||
8 | - FMan dTSEC/XGEC/mEMAC Node | ||
9 | - FMan IEEE 1588 Node | ||
10 | - Example | ||
11 | |||
12 | ============================================================================= | ||
13 | FMan Node | ||
14 | |||
15 | DESCRIPTION | ||
16 | |||
17 | Due to the fact that the FMan is an aggregation of sub-engines (ports, MACs, | ||
18 | etc.) the FMan node will have child nodes for each of them. | ||
19 | |||
20 | PROPERTIES | ||
21 | |||
22 | - compatible | ||
23 | Usage: required | ||
24 | Value type: <stringlist> | ||
25 | Definition: Must include "fsl,fman" | ||
26 | FMan version can be determined via FM_IP_REV_1 register in the | ||
27 | FMan block. The offset is 0xc4 from the beginning of the | ||
28 | Frame Processing Manager memory map (0xc3000 from the | ||
29 | beginning of the FMan node). | ||
30 | |||
31 | - cell-index | ||
32 | Usage: required | ||
33 | Value type: <u32> | ||
34 | Definition: Specifies the index of the FMan unit. | ||
35 | |||
36 | The cell-index value may be used by the SoC, to identify the | ||
37 | FMan unit in the SoC memory map. In the table bellow, | ||
38 | there's a description of the cell-index use in each SoC: | ||
39 | |||
40 | - P1023: | ||
41 | register[bit] FMan unit cell-index | ||
42 | ============================================================ | ||
43 | DEVDISR[1] 1 0 | ||
44 | |||
45 | - P2041, P3041, P4080 P5020, P5040: | ||
46 | register[bit] FMan unit cell-index | ||
47 | ============================================================ | ||
48 | DCFG_DEVDISR2[6] 1 0 | ||
49 | DCFG_DEVDISR2[14] 2 1 | ||
50 | (Second FM available only in P4080 and P5040) | ||
51 | |||
52 | - B4860, T1040, T2080, T4240: | ||
53 | register[bit] FMan unit cell-index | ||
54 | ============================================================ | ||
55 | DCFG_CCSR_DEVDISR2[24] 1 0 | ||
56 | DCFG_CCSR_DEVDISR2[25] 2 1 | ||
57 | (Second FM available only in T4240) | ||
58 | |||
59 | DEVDISR, DCFG_DEVDISR2 and DCFG_CCSR_DEVDISR2 are located in | ||
60 | the specific SoC "Device Configuration/Pin Control" Memory | ||
61 | Map. | ||
62 | |||
63 | - reg | ||
64 | Usage: required | ||
65 | Value type: <prop-encoded-array> | ||
66 | Definition: A standard property. Specifies the offset of the | ||
67 | following configuration registers: | ||
68 | - BMI configuration registers. | ||
69 | - QMI configuration registers. | ||
70 | - DMA configuration registers. | ||
71 | - FPM configuration registers. | ||
72 | - FMan controller configuration registers. | ||
73 | |||
74 | - ranges | ||
75 | Usage: required | ||
76 | Value type: <prop-encoded-array> | ||
77 | Definition: A standard property. | ||
78 | |||
79 | - clocks | ||
80 | Usage: required | ||
81 | Value type: <prop-encoded-array> | ||
82 | Definition: phandle for fman clock. | ||
83 | |||
84 | - clock-names | ||
85 | usage: optional | ||
86 | Value type: <stringlist> | ||
87 | Definition: A standard property | ||
88 | |||
89 | - interrupts | ||
90 | Usage: required | ||
91 | Value type: <prop-encoded-array> | ||
92 | Definition: A pair of IRQs are specified in this property. | ||
93 | The first element is associated with the event interrupts and | ||
94 | the second element is associated with the error interrupts. | ||
95 | |||
96 | - fsl,qman-channel-range | ||
97 | Usage: required | ||
98 | Value type: <prop-encoded-array> | ||
99 | Definition: Specifies the range of the available dedicated | ||
100 | channels in the FMan. The first cell specifies the beginning | ||
101 | of the range and the second cell specifies the number of | ||
102 | channels. | ||
103 | Further information available at: | ||
104 | "Work Queue (WQ) Channel Assignments in the QMan" section | ||
105 | in DPAA Reference Manual. | ||
106 | |||
107 | ============================================================================= | ||
108 | FMan MURAM Node | ||
109 | |||
110 | DESCRIPTION | ||
111 | |||
112 | FMan Internal memory - shared between all the FMan modules. | ||
113 | It contains data structures that are common and written to or read by | ||
114 | the modules. | ||
115 | FMan internal memory is split into the following parts: | ||
116 | Packet buffering (Tx/Rx FIFOs) | ||
117 | Frames internal context | ||
118 | |||
119 | PROPERTIES | ||
120 | |||
121 | - compatible | ||
122 | Usage: required | ||
123 | Value type: <stringlist> | ||
124 | Definition: Must include "fsl,fman-muram" | ||
125 | |||
126 | - ranges | ||
127 | Usage: required | ||
128 | Value type: <prop-encoded-array> | ||
129 | Definition: A standard property. | ||
130 | Specifies the multi-user memory offset and the size within | ||
131 | the FMan. | ||
132 | |||
133 | EXAMPLE | ||
134 | |||
135 | muram@0 { | ||
136 | compatible = "fsl,fman-muram"; | ||
137 | ranges = <0 0x000000 0x28000>; | ||
138 | }; | ||
139 | |||
140 | ============================================================================= | ||
141 | FMan Port Node | ||
142 | |||
143 | DESCRIPTION | ||
144 | |||
145 | The Frame Manager (FMan) supports several types of hardware ports: | ||
146 | Ethernet receiver (RX) | ||
147 | Ethernet transmitter (TX) | ||
148 | Offline/Host command (O/H) | ||
149 | |||
150 | PROPERTIES | ||
151 | |||
152 | - compatible | ||
153 | Usage: required | ||
154 | Value type: <stringlist> | ||
155 | Definition: A standard property. | ||
156 | Must include one of the following: | ||
157 | - "fsl,fman-v2-port-oh" for FManV2 OH ports | ||
158 | - "fsl,fman-v2-port-rx" for FManV2 RX ports | ||
159 | - "fsl,fman-v2-port-tx" for FManV2 TX ports | ||
160 | - "fsl,fman-v3-port-oh" for FManV3 OH ports | ||
161 | - "fsl,fman-v3-port-rx" for FManV3 RX ports | ||
162 | - "fsl,fman-v3-port-tx" for FManV3 TX ports | ||
163 | |||
164 | - cell-index | ||
165 | Usage: required | ||
166 | Value type: <u32> | ||
167 | Definition: Specifies the hardware port id. | ||
168 | Each hardware port on the FMan has its own hardware PortID. | ||
169 | Super set of all hardware Port IDs available at FMan Reference | ||
170 | Manual under "FMan Hardware Ports in Freescale Devices" table. | ||
171 | |||
172 | Each hardware port is assigned a 4KB, port-specific page in | ||
173 | the FMan hardware port memory region (which is part of the | ||
174 | FMan memory map). The first 4 KB in the FMan hardware ports | ||
175 | memory region is used for what are called common registers. | ||
176 | The subsequent 63 4KB pages are allocated to the hardware | ||
177 | ports. | ||
178 | The page of a specific port is determined by the cell-index. | ||
179 | |||
180 | - reg | ||
181 | Usage: required | ||
182 | Value type: <prop-encoded-array> | ||
183 | Definition: There is one reg region describing the port | ||
184 | configuration registers. | ||
185 | |||
186 | EXAMPLE | ||
187 | |||
188 | port@a8000 { | ||
189 | cell-index = <0x28>; | ||
190 | compatible = "fsl,fman-v2-port-tx"; | ||
191 | reg = <0xa8000 0x1000>; | ||
192 | }; | ||
193 | |||
194 | port@88000 { | ||
195 | cell-index = <0x8>; | ||
196 | compatible = "fsl,fman-v2-port-rx"; | ||
197 | reg = <0x88000 0x1000>; | ||
198 | }; | ||
199 | |||
200 | port@81000 { | ||
201 | cell-index = <0x1>; | ||
202 | compatible = "fsl,fman-v2-port-oh"; | ||
203 | reg = <0x81000 0x1000>; | ||
204 | }; | ||
205 | |||
206 | ============================================================================= | ||
207 | FMan dTSEC/XGEC/mEMAC Node | ||
208 | |||
209 | DESCRIPTION | ||
210 | |||
211 | mEMAC/dTSEC/XGEC are the Ethernet network interfaces | ||
212 | |||
213 | PROPERTIES | ||
214 | |||
215 | - compatible | ||
216 | Usage: required | ||
217 | Value type: <stringlist> | ||
218 | Definition: A standard property. | ||
219 | Must include one of the following: | ||
220 | - "fsl,fman-dtsec" for dTSEC MAC | ||
221 | - "fsl,fman-xgec" for XGEC MAC | ||
222 | - "fsl,fman-memac for mEMAC MAC | ||
223 | |||
224 | - cell-index | ||
225 | Usage: required | ||
226 | Value type: <u32> | ||
227 | Definition: Specifies the MAC id. | ||
228 | |||
229 | The cell-index value may be used by the FMan or the SoC, to | ||
230 | identify the MAC unit in the FMan (or SoC) memory map. | ||
231 | In the tables bellow there's a description of the cell-index | ||
232 | use, there are two tables, one describes the use of cell-index | ||
233 | by the FMan, the second describes the use by the SoC: | ||
234 | |||
235 | 1. FMan Registers | ||
236 | |||
237 | FManV2: | ||
238 | register[bit] MAC cell-index | ||
239 | ============================================================ | ||
240 | FM_EPI[16] XGEC 8 | ||
241 | FM_EPI[16+n] dTSECn n-1 | ||
242 | FM_NPI[11+n] dTSECn n-1 | ||
243 | n = 1,..,5 | ||
244 | |||
245 | FManV3: | ||
246 | register[bit] MAC cell-index | ||
247 | ============================================================ | ||
248 | FM_EPI[16+n] mEMACn n-1 | ||
249 | FM_EPI[25] mEMAC10 9 | ||
250 | |||
251 | FM_NPI[11+n] mEMACn n-1 | ||
252 | FM_NPI[10] mEMAC10 9 | ||
253 | FM_NPI[11] mEMAC9 8 | ||
254 | n = 1,..8 | ||
255 | |||
256 | FM_EPI and FM_NPI are located in the FMan memory map. | ||
257 | |||
258 | 2. SoC registers: | ||
259 | |||
260 | - P2041, P3041, P4080 P5020, P5040: | ||
261 | register[bit] FMan MAC cell | ||
262 | Unit index | ||
263 | ============================================================ | ||
264 | DCFG_DEVDISR2[7] 1 XGEC 8 | ||
265 | DCFG_DEVDISR2[7+n] 1 dTSECn n-1 | ||
266 | DCFG_DEVDISR2[15] 2 XGEC 8 | ||
267 | DCFG_DEVDISR2[15+n] 2 dTSECn n-1 | ||
268 | n = 1,..5 | ||
269 | |||
270 | - T1040, T2080, T4240, B4860: | ||
271 | register[bit] FMan MAC cell | ||
272 | Unit index | ||
273 | ============================================================ | ||
274 | DCFG_CCSR_DEVDISR2[n-1] 1 mEMACn n-1 | ||
275 | DCFG_CCSR_DEVDISR2[11+n] 2 mEMACn n-1 | ||
276 | n = 1,..6,9,10 | ||
277 | |||
278 | EVDISR, DCFG_DEVDISR2 and DCFG_CCSR_DEVDISR2 are located in | ||
279 | the specific SoC "Device Configuration/Pin Control" Memory | ||
280 | Map. | ||
281 | |||
282 | - reg | ||
283 | Usage: required | ||
284 | Value type: <prop-encoded-array> | ||
285 | Definition: A standard property. | ||
286 | |||
287 | - fsl,fman-ports | ||
288 | Usage: required | ||
289 | Value type: <prop-encoded-array> | ||
290 | Definition: An array of two phandles - the first references is | ||
291 | the FMan RX port and the second is the TX port used by this | ||
292 | MAC. | ||
293 | |||
294 | - ptp-timer | ||
295 | Usage required | ||
296 | Value type: <phandle> | ||
297 | Definition: A phandle for 1EEE1588 timer. | ||
298 | |||
299 | EXAMPLE | ||
300 | |||
301 | fman1_tx28: port@a8000 { | ||
302 | cell-index = <0x28>; | ||
303 | compatible = "fsl,fman-v2-port-tx"; | ||
304 | reg = <0xa8000 0x1000>; | ||
305 | }; | ||
306 | |||
307 | fman1_rx8: port@88000 { | ||
308 | cell-index = <0x8>; | ||
309 | compatible = "fsl,fman-v2-port-rx"; | ||
310 | reg = <0x88000 0x1000>; | ||
311 | }; | ||
312 | |||
313 | ptp-timer: ptp_timer@fe000 { | ||
314 | compatible = "fsl,fman-ptp-timer"; | ||
315 | reg = <0xfe000 0x1000>; | ||
316 | }; | ||
317 | |||
318 | ethernet@e0000 { | ||
319 | compatible = "fsl,fman-dtsec"; | ||
320 | cell-index = <0>; | ||
321 | reg = <0xe0000 0x1000>; | ||
322 | fsl,fman-ports = <&fman1_rx8 &fman1_tx28>; | ||
323 | ptp-timer = <&ptp-timer>; | ||
324 | }; | ||
325 | |||
326 | ============================================================================ | ||
327 | FMan IEEE 1588 Node | ||
328 | |||
329 | DESCRIPTION | ||
330 | |||
331 | The FMan interface to support IEEE 1588 | ||
332 | |||
333 | |||
334 | PROPERTIES | ||
335 | |||
336 | - compatible | ||
337 | Usage: required | ||
338 | Value type: <stringlist> | ||
339 | Definition: A standard property. | ||
340 | Must include "fsl,fman-ptp-timer". | ||
341 | |||
342 | - reg | ||
343 | Usage: required | ||
344 | Value type: <prop-encoded-array> | ||
345 | Definition: A standard property. | ||
346 | |||
347 | EXAMPLE | ||
348 | |||
349 | ptp-timer@fe000 { | ||
350 | compatible = "fsl,fman-ptp-timer"; | ||
351 | reg = <0xfe000 0x1000>; | ||
352 | }; | ||
353 | |||
354 | ============================================================================= | ||
355 | Example | ||
356 | |||
357 | fman@400000 { | ||
358 | #address-cells = <1>; | ||
359 | #size-cells = <1>; | ||
360 | cell-index = <1>; | ||
361 | compatible = "fsl,fman" | ||
362 | ranges = <0 0x400000 0x100000>; | ||
363 | reg = <0x400000 0x100000>; | ||
364 | clocks = <&fman_clk>; | ||
365 | clock-names = "fmanclk"; | ||
366 | interrupts = < | ||
367 | 96 2 0 0 | ||
368 | 16 2 1 1>; | ||
369 | fsl,qman-channel-range = <0x40 0xc>; | ||
370 | |||
371 | muram@0 { | ||
372 | compatible = "fsl,fman-muram"; | ||
373 | reg = <0x0 0x28000>; | ||
374 | }; | ||
375 | |||
376 | port@81000 { | ||
377 | cell-index = <1>; | ||
378 | compatible = "fsl,fman-v2-port-oh"; | ||
379 | reg = <0x81000 0x1000>; | ||
380 | }; | ||
381 | |||
382 | port@82000 { | ||
383 | cell-index = <2>; | ||
384 | compatible = "fsl,fman-v2-port-oh"; | ||
385 | reg = <0x82000 0x1000>; | ||
386 | }; | ||
387 | |||
388 | port@83000 { | ||
389 | cell-index = <3>; | ||
390 | compatible = "fsl,fman-v2-port-oh"; | ||
391 | reg = <0x83000 0x1000>; | ||
392 | }; | ||
393 | |||
394 | port@84000 { | ||
395 | cell-index = <4>; | ||
396 | compatible = "fsl,fman-v2-port-oh"; | ||
397 | reg = <0x84000 0x1000>; | ||
398 | }; | ||
399 | |||
400 | port@85000 { | ||
401 | cell-index = <5>; | ||
402 | compatible = "fsl,fman-v2-port-oh"; | ||
403 | reg = <0x85000 0x1000>; | ||
404 | }; | ||
405 | |||
406 | port@86000 { | ||
407 | cell-index = <6>; | ||
408 | compatible = "fsl,fman-v2-port-oh"; | ||
409 | reg = <0x86000 0x1000>; | ||
410 | }; | ||
411 | |||
412 | fman1_rx_0x8: port@88000 { | ||
413 | cell-index = <0x8>; | ||
414 | compatible = "fsl,fman-v2-port-rx"; | ||
415 | reg = <0x88000 0x1000>; | ||
416 | }; | ||
417 | |||
418 | fman1_rx_0x9: port@89000 { | ||
419 | cell-index = <0x9>; | ||
420 | compatible = "fsl,fman-v2-port-rx"; | ||
421 | reg = <0x89000 0x1000>; | ||
422 | }; | ||
423 | |||
424 | fman1_rx_0xa: port@8a000 { | ||
425 | cell-index = <0xa>; | ||
426 | compatible = "fsl,fman-v2-port-rx"; | ||
427 | reg = <0x8a000 0x1000>; | ||
428 | }; | ||
429 | |||
430 | fman1_rx_0xb: port@8b000 { | ||
431 | cell-index = <0xb>; | ||
432 | compatible = "fsl,fman-v2-port-rx"; | ||
433 | reg = <0x8b000 0x1000>; | ||
434 | }; | ||
435 | |||
436 | fman1_rx_0xc: port@8c000 { | ||
437 | cell-index = <0xc>; | ||
438 | compatible = "fsl,fman-v2-port-rx"; | ||
439 | reg = <0x8c000 0x1000>; | ||
440 | }; | ||
441 | |||
442 | fman1_rx_0x10: port@90000 { | ||
443 | cell-index = <0x10>; | ||
444 | compatible = "fsl,fman-v2-port-rx"; | ||
445 | reg = <0x90000 0x1000>; | ||
446 | }; | ||
447 | |||
448 | fman1_tx_0x28: port@a8000 { | ||
449 | cell-index = <0x28>; | ||
450 | compatible = "fsl,fman-v2-port-tx"; | ||
451 | reg = <0xa8000 0x1000>; | ||
452 | }; | ||
453 | |||
454 | fman1_tx_0x29: port@a9000 { | ||
455 | cell-index = <0x29>; | ||
456 | compatible = "fsl,fman-v2-port-tx"; | ||
457 | reg = <0xa9000 0x1000>; | ||
458 | }; | ||
459 | |||
460 | fman1_tx_0x2a: port@aa000 { | ||
461 | cell-index = <0x2a>; | ||
462 | compatible = "fsl,fman-v2-port-tx"; | ||
463 | reg = <0xaa000 0x1000>; | ||
464 | }; | ||
465 | |||
466 | fman1_tx_0x2b: port@ab000 { | ||
467 | cell-index = <0x2b>; | ||
468 | compatible = "fsl,fman-v2-port-tx"; | ||
469 | reg = <0xab000 0x1000>; | ||
470 | }; | ||
471 | |||
472 | fman1_tx_0x2c: port@ac0000 { | ||
473 | cell-index = <0x2c>; | ||
474 | compatible = "fsl,fman-v2-port-tx"; | ||
475 | reg = <0xac000 0x1000>; | ||
476 | }; | ||
477 | |||
478 | fman1_tx_0x30: port@b0000 { | ||
479 | cell-index = <0x30>; | ||
480 | compatible = "fsl,fman-v2-port-tx"; | ||
481 | reg = <0xb0000 0x1000>; | ||
482 | }; | ||
483 | |||
484 | ethernet@e0000 { | ||
485 | compatible = "fsl,fman-dtsec"; | ||
486 | cell-index = <0>; | ||
487 | reg = <0xe0000 0x1000>; | ||
488 | fsl,fman-ports = <&fman1_rx_0x8 &fman1_tx_0x28>; | ||
489 | }; | ||
490 | |||
491 | ethernet@e2000 { | ||
492 | compatible = "fsl,fman-dtsec"; | ||
493 | cell-index = <1>; | ||
494 | reg = <0xe2000 0x1000>; | ||
495 | fsl,fman-ports = <&fman1_rx_0x9 &fman1_tx_0x29>; | ||
496 | }; | ||
497 | |||
498 | ethernet@e4000 { | ||
499 | compatible = "fsl,fman-dtsec"; | ||
500 | cell-index = <2>; | ||
501 | reg = <0xe4000 0x1000>; | ||
502 | fsl,fman-ports = <&fman1_rx_0xa &fman1_tx_0x2a>; | ||
503 | }; | ||
504 | |||
505 | ethernet@e6000 { | ||
506 | compatible = "fsl,fman-dtsec"; | ||
507 | cell-index = <3>; | ||
508 | reg = <0xe6000 0x1000>; | ||
509 | fsl,fman-ports = <&fman1_rx_0xb &fman1_tx_0x2b>; | ||
510 | }; | ||
511 | |||
512 | ethernet@e8000 { | ||
513 | compatible = "fsl,fman-dtsec"; | ||
514 | cell-index = <4>; | ||
515 | reg = <0xf0000 0x1000>; | ||
516 | fsl,fman-ports = <&fman1_rx_0xc &fman1_tx_0x2c>; | ||
517 | |||
518 | ethernet@f0000 { | ||
519 | cell-index = <8>; | ||
520 | compatible = "fsl,fman-xgec"; | ||
521 | reg = <0xf0000 0x1000>; | ||
522 | fsl,fman-ports = <&fman1_rx_0x10 &fman1_tx_0x30>; | ||
523 | }; | ||
524 | |||
525 | ptp-timer@fe000 { | ||
526 | compatible = "fsl,fman-ptp-timer"; | ||
527 | reg = <0xfe000 0x1000>; | ||
528 | }; | ||
529 | }; | ||