xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/powerpc/fsl/interlaken-lac.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun===============================================================================
2*4882a593SmuzhiyunFreescale Interlaken Look-Aside Controller Device Bindings
3*4882a593SmuzhiyunCopyright 2012 Freescale Semiconductor Inc.
4*4882a593Smuzhiyun
5*4882a593SmuzhiyunCONTENTS
6*4882a593Smuzhiyun  - Interlaken Look-Aside Controller (LAC) Node
7*4882a593Smuzhiyun  - Example LAC Node
8*4882a593Smuzhiyun  - Interlaken Look-Aside Controller (LAC) Software Portal Node
9*4882a593Smuzhiyun  - Interlaken Look-Aside Controller (LAC) Software Portal Child Nodes
10*4882a593Smuzhiyun  - Example LAC SWP Node with Child Nodes
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun==============================================================================
13*4882a593SmuzhiyunInterlaken Look-Aside Controller (LAC) Node
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunDESCRIPTION
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunThe Interlaken is a narrow, high speed channelized chip-to-chip interface. To
18*4882a593Smuzhiyunfacilitate interoperability between a data path device and a look-aside
19*4882a593Smuzhiyunco-processor, the Interlaken Look-Aside protocol is defined for short
20*4882a593Smuzhiyuntransaction-related transfers. Although based on the Interlaken protocol,
21*4882a593SmuzhiyunInterlaken Look-Aside is not directly compatible with Interlaken and can be
22*4882a593Smuzhiyunconsidered a different operation mode.
23*4882a593Smuzhiyun
24*4882a593SmuzhiyunThe Interlaken LA controller connects internal platform to Interlaken serial
25*4882a593Smuzhiyuninterface. It accepts LA command through software portals, which are system
26*4882a593Smuzhiyunmemory mapped 4KB spaces. The LA commands are then translated into the
27*4882a593SmuzhiyunInterlaken control words and data words, which are sent on TX side to TCAM
28*4882a593Smuzhiyunthrough SerDes lanes.
29*4882a593Smuzhiyun
30*4882a593SmuzhiyunThere are two 4KiB spaces defined within the LAC global register memory map.
31*4882a593SmuzhiyunThere is a full register set at 0x0000-0x0FFF (also known as the "hypervisor"
32*4882a593Smuzhiyunversion), and a subset at 0x1000-0x1FFF.  The former is a superset of the
33*4882a593Smuzhiyunlatter, and includes certain registers that should not be accessible to
34*4882a593Smuzhiyunpartitioned software.  Separate nodes are used for each region, with a phandle
35*4882a593Smuzhiyunlinking the hypervisor node to the normal operating node.
36*4882a593Smuzhiyun
37*4882a593SmuzhiyunPROPERTIES
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun  - compatible
40*4882a593Smuzhiyun	Usage: required
41*4882a593Smuzhiyun	Value type: <string>
42*4882a593Smuzhiyun	Definition: Must include "fsl,interlaken-lac". This represents only
43*4882a593Smuzhiyun		those LAC CCSR registers not protected in partitioned
44*4882a593Smuzhiyun		software. The version of the device is determined by the LAC
45*4882a593Smuzhiyun		IP Block Revision Register (IPBRR0) at offset 0x0BF8.
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun		Table of correspondences between IPBRR0 values and example
48*4882a593Smuzhiyun		chips:
49*4882a593Smuzhiyun			Value		Device
50*4882a593Smuzhiyun			-----------	-------
51*4882a593Smuzhiyun			0x02000100	T4240
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun		The Hypervisor node has a different compatible. It must include
54*4882a593Smuzhiyun		"fsl,interlaken-lac-hv". This node represents the protected
55*4882a593Smuzhiyun		LAC register space and is required except inside a partition
56*4882a593Smuzhiyun		where access to the hypervisor node is to be denied.
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun  - fsl,non-hv-node
59*4882a593Smuzhiyun	Usage: required in "fsl,interlaken-lac-hv"
60*4882a593Smuzhiyun	Value type: <phandle>
61*4882a593Smuzhiyun	Definition: Points to the non-protected LAC CCSR mapped register space
62*4882a593Smuzhiyun		node.
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun  - reg
65*4882a593Smuzhiyun	Usage: required
66*4882a593Smuzhiyun	Value type: <prop-encoded-array>
67*4882a593Smuzhiyun	Definition: A standard property. The first resource represents the
68*4882a593Smuzhiyun		Interlaken LAC configuration registers.
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun  - interrupts:
71*4882a593Smuzhiyun	Usage: required in non-hv node only
72*4882a593Smuzhiyun	Value type: <prop-encoded-array>
73*4882a593Smuzhiyun	Definition: Interrupt mapping for Interlaken LAC error IRQ.
74*4882a593Smuzhiyun
75*4882a593SmuzhiyunEXAMPLE
76*4882a593Smuzhiyun	lac: lac@229000 {
77*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac"
78*4882a593Smuzhiyun		reg = <0x229000 0x1000>;
79*4882a593Smuzhiyun		interrupts = <16 2 1 18>;
80*4882a593Smuzhiyun	};
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun	lac-hv@228000 {
83*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-hv"
84*4882a593Smuzhiyun		reg = <0x228000 0x1000>;
85*4882a593Smuzhiyun		fsl,non-hv-node = <&lac>;
86*4882a593Smuzhiyun	};
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun===============================================================================
89*4882a593SmuzhiyunInterlaken Look-Aside Controller (LAC) Software Portal Container Node
90*4882a593Smuzhiyun
91*4882a593SmuzhiyunDESCRIPTION
92*4882a593SmuzhiyunThe Interlaken Look-Aside Controller (LAC) utilizes Software Portals to accept
93*4882a593SmuzhiyunInterlaken Look-Aside (ILA) commands. The Interlaken LAC software portal
94*4882a593Smuzhiyunmemory map occupies 128KB of memory space. The software portal memory space is
95*4882a593Smuzhiyunintended to be cache-enabled. WIMG for each software space is required to be
96*4882a593Smuzhiyun0010 if stashing is enabled; otherwise, WIMG can be 0000 or 0010.
97*4882a593Smuzhiyun
98*4882a593SmuzhiyunPROPERTIES
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun  - #address-cells
101*4882a593Smuzhiyun	Usage: required
102*4882a593Smuzhiyun	Value type: <u32>
103*4882a593Smuzhiyun	Definition: A standard property. Must have a value of 1.
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun  - #size-cells
106*4882a593Smuzhiyun	Usage: required
107*4882a593Smuzhiyun	Value type: <u32>
108*4882a593Smuzhiyun	Definition: A standard property. Must have a value of 1.
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun  - compatible
111*4882a593Smuzhiyun	Usage: required
112*4882a593Smuzhiyun	Value type: <string>
113*4882a593Smuzhiyun	Definition: Must include "fsl,interlaken-lac-portals"
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun  - ranges
116*4882a593Smuzhiyun	Usage: required
117*4882a593Smuzhiyun	Value type: <prop-encoded-array>
118*4882a593Smuzhiyun	Definition: A standard property. Specifies the address and length
119*4882a593Smuzhiyun		of the LAC portal memory space.
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun===============================================================================
122*4882a593SmuzhiyunInterlaken Look-Aside Controller (LAC) Software Portals Child Nodes
123*4882a593Smuzhiyun
124*4882a593SmuzhiyunDESCRIPTION
125*4882a593SmuzhiyunThere are up to 24 available software portals with each software portal
126*4882a593Smuzhiyunrequiring 4KB of consecutive memory within the software portal memory mapped
127*4882a593Smuzhiyunspace.
128*4882a593Smuzhiyun
129*4882a593SmuzhiyunPROPERTIES
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun  - compatible
132*4882a593Smuzhiyun	Usage: required
133*4882a593Smuzhiyun	Value type: <string>
134*4882a593Smuzhiyun	Definition: Must include "fsl,interlaken-lac-portal-vX.Y" where X is
135*4882a593Smuzhiyun		the Major version (IP_MJ) found in the LAC IP Block Revision
136*4882a593Smuzhiyun		Register (IPBRR0), at offset 0x0BF8, and Y is the Minor version
137*4882a593Smuzhiyun		(IP_MN).
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun		Table of correspondences between version values and example chips:
140*4882a593Smuzhiyun		    Value	Device
141*4882a593Smuzhiyun		    ------	-------
142*4882a593Smuzhiyun		      1.0	T4240
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun  - reg
145*4882a593Smuzhiyun	Usage: required
146*4882a593Smuzhiyun	Value type: <prop-encoded-array>
147*4882a593Smuzhiyun	Definition: A standard property.  The first resource represents the
148*4882a593Smuzhiyun		Interlaken LAC software portal registers.
149*4882a593Smuzhiyun
150*4882a593Smuzhiyun  - fsl,liodn
151*4882a593Smuzhiyun	Value type: <u32>
152*4882a593Smuzhiyun	Definition: The logical I/O device number (LIODN) for this device.  The
153*4882a593Smuzhiyun		LIODN is a number expressed by this device and used to perform
154*4882a593Smuzhiyun		look-ups in the IOMMU (PAMU) address table when performing
155*4882a593Smuzhiyun		DMAs. This property is automatically added by u-boot.
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun===============================================================================
158*4882a593SmuzhiyunEXAMPLE
159*4882a593Smuzhiyun
160*4882a593Smuzhiyunlac-portals {
161*4882a593Smuzhiyun	#address-cells = <0x1>;
162*4882a593Smuzhiyun	#size-cells = <0x1>;
163*4882a593Smuzhiyun	compatible = "fsl,interlaken-lac-portals";
164*4882a593Smuzhiyun	ranges = <0x0 0xf 0xf4400000 0x20000>;
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun	lportal0: lac-portal@0 {
167*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
168*4882a593Smuzhiyun		fsl,liodn = <0x204>;
169*4882a593Smuzhiyun		reg = <0x0 0x1000>;
170*4882a593Smuzhiyun	};
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun	lportal1: lac-portal@1000 {
173*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
174*4882a593Smuzhiyun		fsl,liodn = <0x205>;
175*4882a593Smuzhiyun		reg = <0x1000 0x1000>;
176*4882a593Smuzhiyun	};
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun	lportal2: lac-portal@2000 {
179*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
180*4882a593Smuzhiyun		fsl,liodn = <0x206>;
181*4882a593Smuzhiyun		reg = <0x2000 0x1000>;
182*4882a593Smuzhiyun	};
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun	lportal3: lac-portal@3000 {
185*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
186*4882a593Smuzhiyun		fsl,liodn = <0x207>;
187*4882a593Smuzhiyun		reg = <0x3000 0x1000>;
188*4882a593Smuzhiyun	};
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun	lportal4: lac-portal@4000 {
191*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
192*4882a593Smuzhiyun		fsl,liodn = <0x208>;
193*4882a593Smuzhiyun		reg = <0x4000 0x1000>;
194*4882a593Smuzhiyun	};
195*4882a593Smuzhiyun
196*4882a593Smuzhiyun	lportal5: lac-portal@5000 {
197*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
198*4882a593Smuzhiyun		fsl,liodn = <0x209>;
199*4882a593Smuzhiyun		reg = <0x5000 0x1000>;
200*4882a593Smuzhiyun	};
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun	lportal6: lac-portal@6000 {
203*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
204*4882a593Smuzhiyun		fsl,liodn = <0x20A>;
205*4882a593Smuzhiyun		reg = <0x6000 0x1000>;
206*4882a593Smuzhiyun	};
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun	lportal7: lac-portal@7000 {
209*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
210*4882a593Smuzhiyun		fsl,liodn = <0x20B>;
211*4882a593Smuzhiyun		reg = <0x7000 0x1000>;
212*4882a593Smuzhiyun	};
213*4882a593Smuzhiyun
214*4882a593Smuzhiyun	lportal8: lac-portal@8000 {
215*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
216*4882a593Smuzhiyun		fsl,liodn = <0x20C>;
217*4882a593Smuzhiyun		reg = <0x8000 0x1000>;
218*4882a593Smuzhiyun	};
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun	lportal9: lac-portal@9000 {
221*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
222*4882a593Smuzhiyun		fsl,liodn = <0x20D>;
223*4882a593Smuzhiyun		reg = <0x9000 0x1000>;
224*4882a593Smuzhiyun	};
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun	lportal10: lac-portal@a000 {
227*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
228*4882a593Smuzhiyun		fsl,liodn = <0x20E>;
229*4882a593Smuzhiyun		reg = <0xA000 0x1000>;
230*4882a593Smuzhiyun	};
231*4882a593Smuzhiyun
232*4882a593Smuzhiyun	lportal11: lac-portal@b000 {
233*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
234*4882a593Smuzhiyun		fsl,liodn = <0x20F>;
235*4882a593Smuzhiyun		reg = <0xB000 0x1000>;
236*4882a593Smuzhiyun	};
237*4882a593Smuzhiyun
238*4882a593Smuzhiyun	lportal12: lac-portal@c000 {
239*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
240*4882a593Smuzhiyun		fsl,liodn = <0x210>;
241*4882a593Smuzhiyun		reg = <0xC000 0x1000>;
242*4882a593Smuzhiyun	};
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun	lportal13: lac-portal@d000 {
245*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
246*4882a593Smuzhiyun		fsl,liodn = <0x211>;
247*4882a593Smuzhiyun		reg = <0xD000 0x1000>;
248*4882a593Smuzhiyun	};
249*4882a593Smuzhiyun
250*4882a593Smuzhiyun	lportal14: lac-portal@e000 {
251*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
252*4882a593Smuzhiyun		fsl,liodn = <0x212>;
253*4882a593Smuzhiyun		reg = <0xE000 0x1000>;
254*4882a593Smuzhiyun	};
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun	lportal15: lac-portal@f000 {
257*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
258*4882a593Smuzhiyun		fsl,liodn = <0x213>;
259*4882a593Smuzhiyun		reg = <0xF000 0x1000>;
260*4882a593Smuzhiyun	};
261*4882a593Smuzhiyun
262*4882a593Smuzhiyun	lportal16: lac-portal@10000 {
263*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
264*4882a593Smuzhiyun		fsl,liodn = <0x214>;
265*4882a593Smuzhiyun		reg = <0x10000 0x1000>;
266*4882a593Smuzhiyun	};
267*4882a593Smuzhiyun
268*4882a593Smuzhiyun	lportal17: lac-portal@11000 {
269*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
270*4882a593Smuzhiyun		fsl,liodn = <0x215>;
271*4882a593Smuzhiyun		reg = <0x11000 0x1000>;
272*4882a593Smuzhiyun	};
273*4882a593Smuzhiyun
274*4882a593Smuzhiyun	lportal8: lac-portal@1200 {
275*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
276*4882a593Smuzhiyun		fsl,liodn = <0x216>;
277*4882a593Smuzhiyun		reg = <0x12000 0x1000>;
278*4882a593Smuzhiyun	};
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun	lportal19: lac-portal@13000 {
281*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
282*4882a593Smuzhiyun		fsl,liodn = <0x217>;
283*4882a593Smuzhiyun		reg = <0x13000 0x1000>;
284*4882a593Smuzhiyun	};
285*4882a593Smuzhiyun
286*4882a593Smuzhiyun	lportal20: lac-portal@14000 {
287*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
288*4882a593Smuzhiyun		fsl,liodn = <0x218>;
289*4882a593Smuzhiyun		reg = <0x14000 0x1000>;
290*4882a593Smuzhiyun	};
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun	lportal21: lac-portal@15000 {
293*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
294*4882a593Smuzhiyun		fsl,liodn = <0x219>;
295*4882a593Smuzhiyun		reg = <0x15000 0x1000>;
296*4882a593Smuzhiyun	};
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun	lportal22: lac-portal@16000 {
299*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
300*4882a593Smuzhiyun		fsl,liodn = <0x21A>;
301*4882a593Smuzhiyun		reg = <0x16000 0x1000>;
302*4882a593Smuzhiyun	};
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun	lportal23: lac-portal@17000 {
305*4882a593Smuzhiyun		compatible = "fsl,interlaken-lac-portal-v1.0";
306*4882a593Smuzhiyun		fsl,liodn = <0x21B>;
307*4882a593Smuzhiyun		reg = <0x17000 0x1000>;
308*4882a593Smuzhiyun	};
309*4882a593Smuzhiyun};
310