xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/net/fsl-fman.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun=============================================================================
2*4882a593SmuzhiyunFreescale Frame Manager Device Bindings
3*4882a593Smuzhiyun
4*4882a593SmuzhiyunCONTENTS
5*4882a593Smuzhiyun  - FMan Node
6*4882a593Smuzhiyun  - FMan Port Node
7*4882a593Smuzhiyun  - FMan MURAM Node
8*4882a593Smuzhiyun  - FMan dTSEC/XGEC/mEMAC Node
9*4882a593Smuzhiyun  - FMan IEEE 1588 Node
10*4882a593Smuzhiyun  - FMan MDIO Node
11*4882a593Smuzhiyun  - Example
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun=============================================================================
14*4882a593SmuzhiyunFMan Node
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunDESCRIPTION
17*4882a593Smuzhiyun
18*4882a593SmuzhiyunDue to the fact that the FMan is an aggregation of sub-engines (ports, MACs,
19*4882a593Smuzhiyunetc.) the FMan node will have child nodes for each of them.
20*4882a593Smuzhiyun
21*4882a593SmuzhiyunPROPERTIES
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun- compatible
24*4882a593Smuzhiyun		Usage: required
25*4882a593Smuzhiyun		Value type: <stringlist>
26*4882a593Smuzhiyun		Definition: Must include "fsl,fman"
27*4882a593Smuzhiyun		FMan version can be determined via FM_IP_REV_1 register in the
28*4882a593Smuzhiyun		FMan block. The offset is 0xc4 from the beginning of the
29*4882a593Smuzhiyun		Frame Processing Manager memory map (0xc3000 from the
30*4882a593Smuzhiyun		beginning of the FMan node).
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun- cell-index
33*4882a593Smuzhiyun		Usage: required
34*4882a593Smuzhiyun		Value type: <u32>
35*4882a593Smuzhiyun		Definition: Specifies the index of the FMan unit.
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun		The cell-index value may be used by the SoC, to identify the
38*4882a593Smuzhiyun		FMan unit in the SoC memory map. In the table below,
39*4882a593Smuzhiyun		there's a description of the cell-index use in each SoC:
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun		- P1023:
42*4882a593Smuzhiyun		register[bit]			FMan unit	cell-index
43*4882a593Smuzhiyun		============================================================
44*4882a593Smuzhiyun		DEVDISR[1]			1		0
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun		- P2041, P3041, P4080 P5020, P5040:
47*4882a593Smuzhiyun		register[bit]			FMan unit	cell-index
48*4882a593Smuzhiyun		============================================================
49*4882a593Smuzhiyun		DCFG_DEVDISR2[6]		1		0
50*4882a593Smuzhiyun		DCFG_DEVDISR2[14]		2		1
51*4882a593Smuzhiyun			(Second FM available only in P4080 and P5040)
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun		- B4860, T1040, T2080, T4240:
54*4882a593Smuzhiyun		register[bit]			FMan unit	cell-index
55*4882a593Smuzhiyun		============================================================
56*4882a593Smuzhiyun		DCFG_CCSR_DEVDISR2[24]		1		0
57*4882a593Smuzhiyun		DCFG_CCSR_DEVDISR2[25]		2		1
58*4882a593Smuzhiyun			(Second FM available only in T4240)
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun		DEVDISR, DCFG_DEVDISR2 and DCFG_CCSR_DEVDISR2 are located in
61*4882a593Smuzhiyun		the specific SoC "Device Configuration/Pin Control" Memory
62*4882a593Smuzhiyun		Map.
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun- reg
65*4882a593Smuzhiyun		Usage: required
66*4882a593Smuzhiyun		Value type: <prop-encoded-array>
67*4882a593Smuzhiyun		Definition: A standard property. Specifies the offset of the
68*4882a593Smuzhiyun		following configuration registers:
69*4882a593Smuzhiyun		- BMI configuration registers.
70*4882a593Smuzhiyun		- QMI configuration registers.
71*4882a593Smuzhiyun		- DMA configuration registers.
72*4882a593Smuzhiyun		- FPM configuration registers.
73*4882a593Smuzhiyun		- FMan controller configuration registers.
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun- ranges
76*4882a593Smuzhiyun		Usage: required
77*4882a593Smuzhiyun		Value type: <prop-encoded-array>
78*4882a593Smuzhiyun		Definition: A standard property.
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun- clocks
81*4882a593Smuzhiyun		Usage: required
82*4882a593Smuzhiyun		Value type: <prop-encoded-array>
83*4882a593Smuzhiyun		Definition: phandle for the fman input clock.
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun- clock-names
86*4882a593Smuzhiyun		usage: required
87*4882a593Smuzhiyun		Value type: <stringlist>
88*4882a593Smuzhiyun		Definition: "fmanclk" for the fman input clock.
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun- interrupts
91*4882a593Smuzhiyun		Usage: required
92*4882a593Smuzhiyun		Value type: <prop-encoded-array>
93*4882a593Smuzhiyun		Definition: A pair of IRQs are specified in this property.
94*4882a593Smuzhiyun		The first element is associated with the event interrupts and
95*4882a593Smuzhiyun		the second element is associated with the error interrupts.
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun- fsl,qman-channel-range
98*4882a593Smuzhiyun		Usage: required
99*4882a593Smuzhiyun		Value type: <prop-encoded-array>
100*4882a593Smuzhiyun		Definition: Specifies the range of the available dedicated
101*4882a593Smuzhiyun		channels in the FMan. The first cell specifies the beginning
102*4882a593Smuzhiyun		of the range and the second cell specifies the number of
103*4882a593Smuzhiyun		channels.
104*4882a593Smuzhiyun		Further information available at:
105*4882a593Smuzhiyun		"Work Queue (WQ) Channel Assignments in the QMan" section
106*4882a593Smuzhiyun		in DPAA Reference Manual.
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun- fsl,qman
109*4882a593Smuzhiyun- fsl,bman
110*4882a593Smuzhiyun		Usage: required
111*4882a593Smuzhiyun		Definition: See soc/fsl/qman.txt and soc/fsl/bman.txt
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun- fsl,erratum-a050385
114*4882a593Smuzhiyun		Usage: optional
115*4882a593Smuzhiyun		Value type: boolean
116*4882a593Smuzhiyun		Definition: A boolean property. Indicates the presence of the
117*4882a593Smuzhiyun		erratum A050385 which indicates that DMA transactions that are
118*4882a593Smuzhiyun		split can result in a FMan lock.
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun=============================================================================
121*4882a593SmuzhiyunFMan MURAM Node
122*4882a593Smuzhiyun
123*4882a593SmuzhiyunDESCRIPTION
124*4882a593Smuzhiyun
125*4882a593SmuzhiyunFMan Internal memory - shared between all the FMan modules.
126*4882a593SmuzhiyunIt contains data structures that are common and written to or read by
127*4882a593Smuzhiyunthe modules.
128*4882a593SmuzhiyunFMan internal memory is split into the following parts:
129*4882a593Smuzhiyun	Packet buffering (Tx/Rx FIFOs)
130*4882a593Smuzhiyun	Frames internal context
131*4882a593Smuzhiyun
132*4882a593SmuzhiyunPROPERTIES
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun- compatible
135*4882a593Smuzhiyun		Usage: required
136*4882a593Smuzhiyun		Value type: <stringlist>
137*4882a593Smuzhiyun		Definition: Must include "fsl,fman-muram"
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun- ranges
140*4882a593Smuzhiyun		Usage: required
141*4882a593Smuzhiyun		Value type: <prop-encoded-array>
142*4882a593Smuzhiyun		Definition: A standard property.
143*4882a593Smuzhiyun		Specifies the multi-user memory offset and the size within
144*4882a593Smuzhiyun		the FMan.
145*4882a593Smuzhiyun
146*4882a593SmuzhiyunEXAMPLE
147*4882a593Smuzhiyun
148*4882a593Smuzhiyunmuram@0 {
149*4882a593Smuzhiyun	compatible = "fsl,fman-muram";
150*4882a593Smuzhiyun	ranges = <0 0x000000 0x28000>;
151*4882a593Smuzhiyun};
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun=============================================================================
154*4882a593SmuzhiyunFMan Port Node
155*4882a593Smuzhiyun
156*4882a593SmuzhiyunDESCRIPTION
157*4882a593Smuzhiyun
158*4882a593SmuzhiyunThe Frame Manager (FMan) supports several types of hardware ports:
159*4882a593Smuzhiyun	Ethernet receiver (RX)
160*4882a593Smuzhiyun	Ethernet transmitter (TX)
161*4882a593Smuzhiyun	Offline/Host command (O/H)
162*4882a593Smuzhiyun
163*4882a593SmuzhiyunPROPERTIES
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun- compatible
166*4882a593Smuzhiyun		Usage: required
167*4882a593Smuzhiyun		Value type: <stringlist>
168*4882a593Smuzhiyun		Definition: A standard property.
169*4882a593Smuzhiyun		Must include one of the following:
170*4882a593Smuzhiyun			- "fsl,fman-v2-port-oh" for FManV2 OH ports
171*4882a593Smuzhiyun			- "fsl,fman-v2-port-rx" for FManV2 RX ports
172*4882a593Smuzhiyun			- "fsl,fman-v2-port-tx" for FManV2 TX ports
173*4882a593Smuzhiyun			- "fsl,fman-v3-port-oh" for FManV3 OH ports
174*4882a593Smuzhiyun			- "fsl,fman-v3-port-rx" for FManV3 RX ports
175*4882a593Smuzhiyun			- "fsl,fman-v3-port-tx" for FManV3 TX ports
176*4882a593Smuzhiyun
177*4882a593Smuzhiyun- cell-index
178*4882a593Smuzhiyun		Usage: required
179*4882a593Smuzhiyun		Value type: <u32>
180*4882a593Smuzhiyun		Definition: Specifies the hardware port id.
181*4882a593Smuzhiyun		Each hardware port on the FMan has its own hardware PortID.
182*4882a593Smuzhiyun		Super set of all hardware Port IDs available at FMan Reference
183*4882a593Smuzhiyun		Manual under "FMan Hardware Ports in Freescale Devices" table.
184*4882a593Smuzhiyun
185*4882a593Smuzhiyun		Each hardware port is assigned a 4KB, port-specific page in
186*4882a593Smuzhiyun		the FMan hardware port memory region (which is part of the
187*4882a593Smuzhiyun		FMan memory map). The first 4 KB in the FMan hardware ports
188*4882a593Smuzhiyun		memory region is used for what are called common registers.
189*4882a593Smuzhiyun		The subsequent 63 4KB pages are allocated to the hardware
190*4882a593Smuzhiyun		ports.
191*4882a593Smuzhiyun		The page of a specific port is determined by the cell-index.
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun- reg
194*4882a593Smuzhiyun		Usage: required
195*4882a593Smuzhiyun		Value type: <prop-encoded-array>
196*4882a593Smuzhiyun		Definition: There is one reg region describing the port
197*4882a593Smuzhiyun		configuration registers.
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun- fsl,fman-10g-port
200*4882a593Smuzhiyun		Usage: optional
201*4882a593Smuzhiyun		Value type: boolean
202*4882a593Smuzhiyun		Definition: The default port rate is 1G.
203*4882a593Smuzhiyun		If this property exists, the port is s 10G port.
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun- fsl,fman-best-effort-port
206*4882a593Smuzhiyun		Usage: optional
207*4882a593Smuzhiyun		Value type: boolean
208*4882a593Smuzhiyun		Definition: Can be defined only if 10G-support is set.
209*4882a593Smuzhiyun		This property marks a best-effort 10G port (10G port that
210*4882a593Smuzhiyun		may not be capable of line rate).
211*4882a593Smuzhiyun
212*4882a593SmuzhiyunEXAMPLE
213*4882a593Smuzhiyun
214*4882a593Smuzhiyunport@a8000 {
215*4882a593Smuzhiyun	cell-index = <0x28>;
216*4882a593Smuzhiyun	compatible = "fsl,fman-v2-port-tx";
217*4882a593Smuzhiyun	reg = <0xa8000 0x1000>;
218*4882a593Smuzhiyun};
219*4882a593Smuzhiyun
220*4882a593Smuzhiyunport@88000 {
221*4882a593Smuzhiyun	cell-index = <0x8>;
222*4882a593Smuzhiyun	compatible = "fsl,fman-v2-port-rx";
223*4882a593Smuzhiyun	reg = <0x88000 0x1000>;
224*4882a593Smuzhiyun};
225*4882a593Smuzhiyun
226*4882a593Smuzhiyunport@81000 {
227*4882a593Smuzhiyun	cell-index = <0x1>;
228*4882a593Smuzhiyun	compatible = "fsl,fman-v2-port-oh";
229*4882a593Smuzhiyun	reg = <0x81000 0x1000>;
230*4882a593Smuzhiyun};
231*4882a593Smuzhiyun
232*4882a593Smuzhiyun=============================================================================
233*4882a593SmuzhiyunFMan dTSEC/XGEC/mEMAC Node
234*4882a593Smuzhiyun
235*4882a593SmuzhiyunDESCRIPTION
236*4882a593Smuzhiyun
237*4882a593SmuzhiyunmEMAC/dTSEC/XGEC are the Ethernet network interfaces
238*4882a593Smuzhiyun
239*4882a593SmuzhiyunPROPERTIES
240*4882a593Smuzhiyun
241*4882a593Smuzhiyun- compatible
242*4882a593Smuzhiyun		Usage: required
243*4882a593Smuzhiyun		Value type: <stringlist>
244*4882a593Smuzhiyun		Definition: A standard property.
245*4882a593Smuzhiyun		Must include one of the following:
246*4882a593Smuzhiyun		- "fsl,fman-dtsec" for dTSEC MAC
247*4882a593Smuzhiyun		- "fsl,fman-xgec" for XGEC MAC
248*4882a593Smuzhiyun		- "fsl,fman-memac" for mEMAC MAC
249*4882a593Smuzhiyun
250*4882a593Smuzhiyun- cell-index
251*4882a593Smuzhiyun		Usage: required
252*4882a593Smuzhiyun		Value type: <u32>
253*4882a593Smuzhiyun		Definition: Specifies the MAC id.
254*4882a593Smuzhiyun
255*4882a593Smuzhiyun		The cell-index value may be used by the FMan or the SoC, to
256*4882a593Smuzhiyun		identify the MAC unit in the FMan (or SoC) memory map.
257*4882a593Smuzhiyun		In the tables below there's a description of the cell-index
258*4882a593Smuzhiyun		use, there are two tables, one describes the use of cell-index
259*4882a593Smuzhiyun		by the FMan, the second describes the use by the SoC:
260*4882a593Smuzhiyun
261*4882a593Smuzhiyun		1. FMan Registers
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun		FManV2:
264*4882a593Smuzhiyun		register[bit]		MAC		cell-index
265*4882a593Smuzhiyun		============================================================
266*4882a593Smuzhiyun		FM_EPI[16]		XGEC		8
267*4882a593Smuzhiyun		FM_EPI[16+n]		dTSECn		n-1
268*4882a593Smuzhiyun		FM_NPI[11+n]		dTSECn		n-1
269*4882a593Smuzhiyun			n = 1,..,5
270*4882a593Smuzhiyun
271*4882a593Smuzhiyun		FManV3:
272*4882a593Smuzhiyun		register[bit]		MAC		cell-index
273*4882a593Smuzhiyun		============================================================
274*4882a593Smuzhiyun		FM_EPI[16+n]		mEMACn		n-1
275*4882a593Smuzhiyun		FM_EPI[25]		mEMAC10		9
276*4882a593Smuzhiyun
277*4882a593Smuzhiyun		FM_NPI[11+n]		mEMACn		n-1
278*4882a593Smuzhiyun		FM_NPI[10]		mEMAC10		9
279*4882a593Smuzhiyun		FM_NPI[11]		mEMAC9		8
280*4882a593Smuzhiyun			n = 1,..8
281*4882a593Smuzhiyun
282*4882a593Smuzhiyun		FM_EPI and FM_NPI are located in the FMan memory map.
283*4882a593Smuzhiyun
284*4882a593Smuzhiyun		2. SoC registers:
285*4882a593Smuzhiyun
286*4882a593Smuzhiyun		- P2041, P3041, P4080 P5020, P5040:
287*4882a593Smuzhiyun		register[bit]		FMan		MAC		cell
288*4882a593Smuzhiyun					Unit				index
289*4882a593Smuzhiyun		============================================================
290*4882a593Smuzhiyun		DCFG_DEVDISR2[7]	1		XGEC		8
291*4882a593Smuzhiyun		DCFG_DEVDISR2[7+n]	1		dTSECn		n-1
292*4882a593Smuzhiyun		DCFG_DEVDISR2[15]	2		XGEC		8
293*4882a593Smuzhiyun		DCFG_DEVDISR2[15+n]	2		dTSECn		n-1
294*4882a593Smuzhiyun			n = 1,..5
295*4882a593Smuzhiyun
296*4882a593Smuzhiyun		- T1040, T2080, T4240, B4860:
297*4882a593Smuzhiyun		register[bit]			FMan	MAC		cell
298*4882a593Smuzhiyun						Unit			index
299*4882a593Smuzhiyun		============================================================
300*4882a593Smuzhiyun		DCFG_CCSR_DEVDISR2[n-1]		1	mEMACn		n-1
301*4882a593Smuzhiyun		DCFG_CCSR_DEVDISR2[11+n]	2	mEMACn		n-1
302*4882a593Smuzhiyun			n = 1,..6,9,10
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun		EVDISR, DCFG_DEVDISR2 and DCFG_CCSR_DEVDISR2 are located in
305*4882a593Smuzhiyun		the specific SoC "Device Configuration/Pin Control" Memory
306*4882a593Smuzhiyun		Map.
307*4882a593Smuzhiyun
308*4882a593Smuzhiyun- reg
309*4882a593Smuzhiyun		Usage: required
310*4882a593Smuzhiyun		Value type: <prop-encoded-array>
311*4882a593Smuzhiyun		Definition: A standard property.
312*4882a593Smuzhiyun
313*4882a593Smuzhiyun- fsl,fman-ports
314*4882a593Smuzhiyun		Usage: required
315*4882a593Smuzhiyun		Value type: <prop-encoded-array>
316*4882a593Smuzhiyun		Definition: An array of two phandles - the first references is
317*4882a593Smuzhiyun		the FMan RX port and the second is the TX port used by this
318*4882a593Smuzhiyun		MAC.
319*4882a593Smuzhiyun
320*4882a593Smuzhiyun- ptp-timer
321*4882a593Smuzhiyun		Usage required
322*4882a593Smuzhiyun		Value type: <phandle>
323*4882a593Smuzhiyun		Definition: A phandle for 1EEE1588 timer.
324*4882a593Smuzhiyun
325*4882a593Smuzhiyun- pcsphy-handle
326*4882a593Smuzhiyun		Usage required for "fsl,fman-memac" MACs
327*4882a593Smuzhiyun		Value type: <phandle>
328*4882a593Smuzhiyun		Definition: A phandle for pcsphy.
329*4882a593Smuzhiyun
330*4882a593Smuzhiyun- tbi-handle
331*4882a593Smuzhiyun		Usage required for "fsl,fman-dtsec" MACs
332*4882a593Smuzhiyun		Value type: <phandle>
333*4882a593Smuzhiyun		Definition: A phandle for tbiphy.
334*4882a593Smuzhiyun
335*4882a593SmuzhiyunEXAMPLE
336*4882a593Smuzhiyun
337*4882a593Smuzhiyunfman1_tx28: port@a8000 {
338*4882a593Smuzhiyun	cell-index = <0x28>;
339*4882a593Smuzhiyun	compatible = "fsl,fman-v2-port-tx";
340*4882a593Smuzhiyun	reg = <0xa8000 0x1000>;
341*4882a593Smuzhiyun};
342*4882a593Smuzhiyun
343*4882a593Smuzhiyunfman1_rx8: port@88000 {
344*4882a593Smuzhiyun	cell-index = <0x8>;
345*4882a593Smuzhiyun	compatible = "fsl,fman-v2-port-rx";
346*4882a593Smuzhiyun	reg = <0x88000 0x1000>;
347*4882a593Smuzhiyun};
348*4882a593Smuzhiyun
349*4882a593Smuzhiyunptp-timer: ptp_timer@fe000 {
350*4882a593Smuzhiyun	compatible = "fsl,fman-ptp-timer";
351*4882a593Smuzhiyun	reg = <0xfe000 0x1000>;
352*4882a593Smuzhiyun};
353*4882a593Smuzhiyun
354*4882a593Smuzhiyunethernet@e0000 {
355*4882a593Smuzhiyun	compatible = "fsl,fman-dtsec";
356*4882a593Smuzhiyun	cell-index = <0>;
357*4882a593Smuzhiyun	reg = <0xe0000 0x1000>;
358*4882a593Smuzhiyun	fsl,fman-ports = <&fman1_rx8 &fman1_tx28>;
359*4882a593Smuzhiyun	ptp-timer = <&ptp-timer>;
360*4882a593Smuzhiyun	tbi-handle = <&tbi0>;
361*4882a593Smuzhiyun};
362*4882a593Smuzhiyun
363*4882a593Smuzhiyun============================================================================
364*4882a593SmuzhiyunFMan IEEE 1588 Node
365*4882a593Smuzhiyun
366*4882a593SmuzhiyunRefer to Documentation/devicetree/bindings/ptp/ptp-qoriq.txt
367*4882a593Smuzhiyun
368*4882a593Smuzhiyun=============================================================================
369*4882a593SmuzhiyunFMan MDIO Node
370*4882a593Smuzhiyun
371*4882a593SmuzhiyunDESCRIPTION
372*4882a593Smuzhiyun
373*4882a593SmuzhiyunThe MDIO is a bus to which the PHY devices are connected.
374*4882a593Smuzhiyun
375*4882a593SmuzhiyunPROPERTIES
376*4882a593Smuzhiyun
377*4882a593Smuzhiyun- compatible
378*4882a593Smuzhiyun		Usage: required
379*4882a593Smuzhiyun		Value type: <stringlist>
380*4882a593Smuzhiyun		Definition: A standard property.
381*4882a593Smuzhiyun		Must include "fsl,fman-mdio" for 1 Gb/s MDIO from FMan v2.
382*4882a593Smuzhiyun		Must include "fsl,fman-xmdio" for 10 Gb/s MDIO from FMan v2.
383*4882a593Smuzhiyun		Must include "fsl,fman-memac-mdio" for 1/10 Gb/s MDIO from
384*4882a593Smuzhiyun		FMan v3.
385*4882a593Smuzhiyun
386*4882a593Smuzhiyun- reg
387*4882a593Smuzhiyun		Usage: required
388*4882a593Smuzhiyun		Value type: <prop-encoded-array>
389*4882a593Smuzhiyun		Definition: A standard property.
390*4882a593Smuzhiyun
391*4882a593Smuzhiyun- bus-frequency
392*4882a593Smuzhiyun		Usage: optional
393*4882a593Smuzhiyun		Value type: <u32>
394*4882a593Smuzhiyun		Definition: Specifies the external MDIO bus clock speed to
395*4882a593Smuzhiyun		be used, if different from the standard 2.5 MHz.
396*4882a593Smuzhiyun		This may be due to the standard speed being unsupported (e.g.
397*4882a593Smuzhiyun		due to a hardware problem), or to advertise that all relevant
398*4882a593Smuzhiyun		components in the system support a faster speed.
399*4882a593Smuzhiyun
400*4882a593Smuzhiyun- interrupts
401*4882a593Smuzhiyun		Usage: required for external MDIO
402*4882a593Smuzhiyun		Value type: <prop-encoded-array>
403*4882a593Smuzhiyun		Definition: Event interrupt of external MDIO controller.
404*4882a593Smuzhiyun
405*4882a593Smuzhiyun- fsl,fman-internal-mdio
406*4882a593Smuzhiyun		Usage: required for internal MDIO
407*4882a593Smuzhiyun		Value type: boolean
408*4882a593Smuzhiyun		Definition: Fman has internal MDIO for internal PCS(Physical
409*4882a593Smuzhiyun		Coding Sublayer) PHYs and external MDIO for external PHYs.
410*4882a593Smuzhiyun		The settings and programming routines for internal/external
411*4882a593Smuzhiyun		MDIO are different. Must be included for internal MDIO.
412*4882a593Smuzhiyun
413*4882a593Smuzhiyun- fsl,erratum-a011043
414*4882a593Smuzhiyun		Usage: optional
415*4882a593Smuzhiyun		Value type: <boolean>
416*4882a593Smuzhiyun		Definition: Indicates the presence of the A011043 erratum
417*4882a593Smuzhiyun		describing that the MDIO_CFG[MDIO_RD_ER] bit may be falsely
418*4882a593Smuzhiyun		set when reading internal PCS registers. MDIO reads to
419*4882a593Smuzhiyun		internal PCS registers may result in having the
420*4882a593Smuzhiyun		MDIO_CFG[MDIO_RD_ER] bit set, even when there is no error and
421*4882a593Smuzhiyun		read data (MDIO_DATA[MDIO_DATA]) is correct.
422*4882a593Smuzhiyun		Software may get false read error when reading internal
423*4882a593Smuzhiyun		PCS registers through MDIO. As a workaround, all internal
424*4882a593Smuzhiyun		MDIO accesses should ignore the MDIO_CFG[MDIO_RD_ER] bit.
425*4882a593Smuzhiyun
426*4882a593SmuzhiyunFor internal PHY device on internal mdio bus, a PHY node should be created.
427*4882a593SmuzhiyunSee the definition of the PHY node in booting-without-of.txt for an
428*4882a593Smuzhiyunexample of how to define a PHY (Internal PHY has no interrupt line).
429*4882a593Smuzhiyun- For "fsl,fman-mdio" compatible internal mdio bus, the PHY is TBI PHY.
430*4882a593Smuzhiyun- For "fsl,fman-memac-mdio" compatible internal mdio bus, the PHY is PCS PHY,
431*4882a593Smuzhiyun  PCS PHY addr must be '0'.
432*4882a593Smuzhiyun
433*4882a593SmuzhiyunEXAMPLE
434*4882a593Smuzhiyun
435*4882a593SmuzhiyunExample for FMan v2 external MDIO:
436*4882a593Smuzhiyun
437*4882a593Smuzhiyunmdio@f1000 {
438*4882a593Smuzhiyun	compatible = "fsl,fman-xmdio";
439*4882a593Smuzhiyun	reg = <0xf1000 0x1000>;
440*4882a593Smuzhiyun	interrupts = <101 2 0 0>;
441*4882a593Smuzhiyun};
442*4882a593Smuzhiyun
443*4882a593SmuzhiyunExample for FMan v2 internal MDIO:
444*4882a593Smuzhiyun
445*4882a593Smuzhiyunmdio@e3120 {
446*4882a593Smuzhiyun	compatible = "fsl,fman-mdio";
447*4882a593Smuzhiyun	reg = <0xe3120 0xee0>;
448*4882a593Smuzhiyun	fsl,fman-internal-mdio;
449*4882a593Smuzhiyun
450*4882a593Smuzhiyun	tbi1: tbi-phy@8 {
451*4882a593Smuzhiyun		reg = <0x8>;
452*4882a593Smuzhiyun		device_type = "tbi-phy";
453*4882a593Smuzhiyun	};
454*4882a593Smuzhiyun};
455*4882a593Smuzhiyun
456*4882a593SmuzhiyunExample for FMan v3 internal MDIO:
457*4882a593Smuzhiyun
458*4882a593Smuzhiyunmdio@f1000 {
459*4882a593Smuzhiyun	compatible = "fsl,fman-memac-mdio";
460*4882a593Smuzhiyun	reg = <0xf1000 0x1000>;
461*4882a593Smuzhiyun	fsl,fman-internal-mdio;
462*4882a593Smuzhiyun
463*4882a593Smuzhiyun	pcsphy6: ethernet-phy@0 {
464*4882a593Smuzhiyun		reg = <0x0>;
465*4882a593Smuzhiyun	};
466*4882a593Smuzhiyun};
467*4882a593Smuzhiyun
468*4882a593Smuzhiyun=============================================================================
469*4882a593SmuzhiyunExample
470*4882a593Smuzhiyun
471*4882a593Smuzhiyunfman@400000 {
472*4882a593Smuzhiyun	#address-cells = <1>;
473*4882a593Smuzhiyun	#size-cells = <1>;
474*4882a593Smuzhiyun	cell-index = <1>;
475*4882a593Smuzhiyun	compatible = "fsl,fman"
476*4882a593Smuzhiyun	ranges = <0 0x400000 0x100000>;
477*4882a593Smuzhiyun	reg = <0x400000 0x100000>;
478*4882a593Smuzhiyun	clocks = <&fman_clk>;
479*4882a593Smuzhiyun	clock-names = "fmanclk";
480*4882a593Smuzhiyun	interrupts = <
481*4882a593Smuzhiyun		96 2 0 0
482*4882a593Smuzhiyun		16 2 1 1>;
483*4882a593Smuzhiyun	fsl,qman-channel-range = <0x40 0xc>;
484*4882a593Smuzhiyun
485*4882a593Smuzhiyun	muram@0 {
486*4882a593Smuzhiyun		compatible = "fsl,fman-muram";
487*4882a593Smuzhiyun		reg = <0x0 0x28000>;
488*4882a593Smuzhiyun	};
489*4882a593Smuzhiyun
490*4882a593Smuzhiyun	port@81000 {
491*4882a593Smuzhiyun		cell-index = <1>;
492*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-oh";
493*4882a593Smuzhiyun		reg = <0x81000 0x1000>;
494*4882a593Smuzhiyun	};
495*4882a593Smuzhiyun
496*4882a593Smuzhiyun	port@82000 {
497*4882a593Smuzhiyun		cell-index = <2>;
498*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-oh";
499*4882a593Smuzhiyun		reg = <0x82000 0x1000>;
500*4882a593Smuzhiyun	};
501*4882a593Smuzhiyun
502*4882a593Smuzhiyun	port@83000 {
503*4882a593Smuzhiyun		cell-index = <3>;
504*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-oh";
505*4882a593Smuzhiyun		reg = <0x83000 0x1000>;
506*4882a593Smuzhiyun	};
507*4882a593Smuzhiyun
508*4882a593Smuzhiyun	port@84000 {
509*4882a593Smuzhiyun		cell-index = <4>;
510*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-oh";
511*4882a593Smuzhiyun		reg = <0x84000 0x1000>;
512*4882a593Smuzhiyun	};
513*4882a593Smuzhiyun
514*4882a593Smuzhiyun	port@85000 {
515*4882a593Smuzhiyun		cell-index = <5>;
516*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-oh";
517*4882a593Smuzhiyun		reg = <0x85000 0x1000>;
518*4882a593Smuzhiyun	};
519*4882a593Smuzhiyun
520*4882a593Smuzhiyun	port@86000 {
521*4882a593Smuzhiyun		cell-index = <6>;
522*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-oh";
523*4882a593Smuzhiyun		reg = <0x86000 0x1000>;
524*4882a593Smuzhiyun	};
525*4882a593Smuzhiyun
526*4882a593Smuzhiyun	fman1_rx_0x8: port@88000 {
527*4882a593Smuzhiyun		cell-index = <0x8>;
528*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-rx";
529*4882a593Smuzhiyun		reg = <0x88000 0x1000>;
530*4882a593Smuzhiyun	};
531*4882a593Smuzhiyun
532*4882a593Smuzhiyun	fman1_rx_0x9: port@89000 {
533*4882a593Smuzhiyun		cell-index = <0x9>;
534*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-rx";
535*4882a593Smuzhiyun		reg = <0x89000 0x1000>;
536*4882a593Smuzhiyun	};
537*4882a593Smuzhiyun
538*4882a593Smuzhiyun	fman1_rx_0xa: port@8a000 {
539*4882a593Smuzhiyun		cell-index = <0xa>;
540*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-rx";
541*4882a593Smuzhiyun		reg = <0x8a000 0x1000>;
542*4882a593Smuzhiyun	};
543*4882a593Smuzhiyun
544*4882a593Smuzhiyun	fman1_rx_0xb: port@8b000 {
545*4882a593Smuzhiyun		cell-index = <0xb>;
546*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-rx";
547*4882a593Smuzhiyun		reg = <0x8b000 0x1000>;
548*4882a593Smuzhiyun	};
549*4882a593Smuzhiyun
550*4882a593Smuzhiyun	fman1_rx_0xc: port@8c000 {
551*4882a593Smuzhiyun		cell-index = <0xc>;
552*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-rx";
553*4882a593Smuzhiyun		reg = <0x8c000 0x1000>;
554*4882a593Smuzhiyun	};
555*4882a593Smuzhiyun
556*4882a593Smuzhiyun	fman1_rx_0x10: port@90000 {
557*4882a593Smuzhiyun		cell-index = <0x10>;
558*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-rx";
559*4882a593Smuzhiyun		reg = <0x90000 0x1000>;
560*4882a593Smuzhiyun	};
561*4882a593Smuzhiyun
562*4882a593Smuzhiyun	fman1_tx_0x28: port@a8000 {
563*4882a593Smuzhiyun		cell-index = <0x28>;
564*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-tx";
565*4882a593Smuzhiyun		reg = <0xa8000 0x1000>;
566*4882a593Smuzhiyun	};
567*4882a593Smuzhiyun
568*4882a593Smuzhiyun	fman1_tx_0x29: port@a9000 {
569*4882a593Smuzhiyun		cell-index = <0x29>;
570*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-tx";
571*4882a593Smuzhiyun		reg = <0xa9000 0x1000>;
572*4882a593Smuzhiyun	};
573*4882a593Smuzhiyun
574*4882a593Smuzhiyun	fman1_tx_0x2a: port@aa000 {
575*4882a593Smuzhiyun		cell-index = <0x2a>;
576*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-tx";
577*4882a593Smuzhiyun		reg = <0xaa000 0x1000>;
578*4882a593Smuzhiyun	};
579*4882a593Smuzhiyun
580*4882a593Smuzhiyun	fman1_tx_0x2b: port@ab000 {
581*4882a593Smuzhiyun		cell-index = <0x2b>;
582*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-tx";
583*4882a593Smuzhiyun		reg = <0xab000 0x1000>;
584*4882a593Smuzhiyun	};
585*4882a593Smuzhiyun
586*4882a593Smuzhiyun	fman1_tx_0x2c: port@ac0000 {
587*4882a593Smuzhiyun		cell-index = <0x2c>;
588*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-tx";
589*4882a593Smuzhiyun		reg = <0xac000 0x1000>;
590*4882a593Smuzhiyun	};
591*4882a593Smuzhiyun
592*4882a593Smuzhiyun	fman1_tx_0x30: port@b0000 {
593*4882a593Smuzhiyun		cell-index = <0x30>;
594*4882a593Smuzhiyun		compatible = "fsl,fman-v2-port-tx";
595*4882a593Smuzhiyun		reg = <0xb0000 0x1000>;
596*4882a593Smuzhiyun	};
597*4882a593Smuzhiyun
598*4882a593Smuzhiyun	ethernet@e0000 {
599*4882a593Smuzhiyun		compatible = "fsl,fman-dtsec";
600*4882a593Smuzhiyun		cell-index = <0>;
601*4882a593Smuzhiyun		reg = <0xe0000 0x1000>;
602*4882a593Smuzhiyun		fsl,fman-ports = <&fman1_rx_0x8 &fman1_tx_0x28>;
603*4882a593Smuzhiyun		tbi-handle = <&tbi5>;
604*4882a593Smuzhiyun	};
605*4882a593Smuzhiyun
606*4882a593Smuzhiyun	ethernet@e2000 {
607*4882a593Smuzhiyun		compatible = "fsl,fman-dtsec";
608*4882a593Smuzhiyun		cell-index = <1>;
609*4882a593Smuzhiyun		reg = <0xe2000 0x1000>;
610*4882a593Smuzhiyun		fsl,fman-ports = <&fman1_rx_0x9 &fman1_tx_0x29>;
611*4882a593Smuzhiyun		tbi-handle = <&tbi6>;
612*4882a593Smuzhiyun	};
613*4882a593Smuzhiyun
614*4882a593Smuzhiyun	ethernet@e4000 {
615*4882a593Smuzhiyun		compatible = "fsl,fman-dtsec";
616*4882a593Smuzhiyun		cell-index = <2>;
617*4882a593Smuzhiyun		reg = <0xe4000 0x1000>;
618*4882a593Smuzhiyun		fsl,fman-ports = <&fman1_rx_0xa &fman1_tx_0x2a>;
619*4882a593Smuzhiyun		tbi-handle = <&tbi7>;
620*4882a593Smuzhiyun	};
621*4882a593Smuzhiyun
622*4882a593Smuzhiyun	ethernet@e6000 {
623*4882a593Smuzhiyun		compatible = "fsl,fman-dtsec";
624*4882a593Smuzhiyun		cell-index = <3>;
625*4882a593Smuzhiyun		reg = <0xe6000 0x1000>;
626*4882a593Smuzhiyun		fsl,fman-ports = <&fman1_rx_0xb &fman1_tx_0x2b>;
627*4882a593Smuzhiyun		tbi-handle = <&tbi8>;
628*4882a593Smuzhiyun	};
629*4882a593Smuzhiyun
630*4882a593Smuzhiyun	ethernet@e8000 {
631*4882a593Smuzhiyun		compatible = "fsl,fman-dtsec";
632*4882a593Smuzhiyun		cell-index = <4>;
633*4882a593Smuzhiyun		reg = <0xf0000 0x1000>;
634*4882a593Smuzhiyun		fsl,fman-ports = <&fman1_rx_0xc &fman1_tx_0x2c>;
635*4882a593Smuzhiyun		tbi-handle = <&tbi9>;
636*4882a593Smuzhiyun
637*4882a593Smuzhiyun	ethernet@f0000 {
638*4882a593Smuzhiyun		cell-index = <8>;
639*4882a593Smuzhiyun		compatible = "fsl,fman-xgec";
640*4882a593Smuzhiyun		reg = <0xf0000 0x1000>;
641*4882a593Smuzhiyun		fsl,fman-ports = <&fman1_rx_0x10 &fman1_tx_0x30>;
642*4882a593Smuzhiyun	};
643*4882a593Smuzhiyun
644*4882a593Smuzhiyun	ptp-timer@fe000 {
645*4882a593Smuzhiyun		compatible = "fsl,fman-ptp-timer";
646*4882a593Smuzhiyun		reg = <0xfe000 0x1000>;
647*4882a593Smuzhiyun	};
648*4882a593Smuzhiyun
649*4882a593Smuzhiyun	mdio@f1000 {
650*4882a593Smuzhiyun		compatible = "fsl,fman-xmdio";
651*4882a593Smuzhiyun		reg = <0xf1000 0x1000>;
652*4882a593Smuzhiyun		interrupts = <101 2 0 0>;
653*4882a593Smuzhiyun	};
654*4882a593Smuzhiyun};
655