xref: /openbmc/linux/Documentation/devicetree/bindings/powerpc/fsl/interlaken-lac.txt (revision 552c69b36ebd966186573b9c7a286b390935cce1)
18c43d2b0SJoe Liccese===============================================================================
28c43d2b0SJoe LicceseFreescale Interlaken Look-Aside Controller Device Bindings
38c43d2b0SJoe LicceseCopyright 2012 Freescale Semiconductor Inc.
48c43d2b0SJoe Liccese
58c43d2b0SJoe LicceseCONTENTS
68c43d2b0SJoe Liccese  - Interlaken Look-Aside Controller (LAC) Node
78c43d2b0SJoe Liccese  - Example LAC Node
88c43d2b0SJoe Liccese  - Interlaken Look-Aside Controller (LAC) Software Portal Node
98c43d2b0SJoe Liccese  - Interlaken Look-Aside Controller (LAC) Software Portal Child Nodes
108c43d2b0SJoe Liccese  - Example LAC SWP Node with Child Nodes
118c43d2b0SJoe Liccese
128c43d2b0SJoe Liccese==============================================================================
138c43d2b0SJoe LicceseInterlaken Look-Aside Controller (LAC) Node
148c43d2b0SJoe Liccese
158c43d2b0SJoe LicceseDESCRIPTION
168c43d2b0SJoe Liccese
178c43d2b0SJoe LicceseThe Interlaken is a narrow, high speed channelized chip-to-chip interface. To
188c43d2b0SJoe Liccesefacilitate interoperability between a data path device and a look-aside
198c43d2b0SJoe Licceseco-processor, the Interlaken Look-Aside protocol is defined for short
208c43d2b0SJoe Liccesetransaction-related transfers. Although based on the Interlaken protocol,
218c43d2b0SJoe LicceseInterlaken Look-Aside is not directly compatible with Interlaken and can be
228c43d2b0SJoe Licceseconsidered a different operation mode.
238c43d2b0SJoe Liccese
248c43d2b0SJoe LicceseThe Interlaken LA controller connects internal platform to Interlaken serial
258c43d2b0SJoe Licceseinterface. It accepts LA command through software portals, which are system
268c43d2b0SJoe Liccesememory mapped 4KB spaces. The LA commands are then translated into the
278c43d2b0SJoe LicceseInterlaken control words and data words, which are sent on TX side to TCAM
288c43d2b0SJoe Liccesethrough SerDes lanes.
298c43d2b0SJoe Liccese
308c43d2b0SJoe LicceseThere are two 4KiB spaces defined within the LAC global register memory map.
318c43d2b0SJoe LicceseThere is a full register set at 0x0000-0x0FFF (also known as the "hypervisor"
328c43d2b0SJoe Licceseversion), and a subset at 0x1000-0x1FFF.  The former is a superset of the
338c43d2b0SJoe Licceselatter, and includes certain registers that should not be accessible to
348c43d2b0SJoe Liccesepartitioned software.  Separate nodes are used for each region, with a phandle
358c43d2b0SJoe Licceselinking the hypervisor node to the normal operating node.
368c43d2b0SJoe Liccese
378c43d2b0SJoe LiccesePROPERTIES
388c43d2b0SJoe Liccese
398c43d2b0SJoe Liccese  - compatible
408c43d2b0SJoe Liccese	Usage: required
418c43d2b0SJoe Liccese	Value type: <string>
428c43d2b0SJoe Liccese	Definition: Must include "fsl,interlaken-lac". This represents only
438c43d2b0SJoe Liccese		those LAC CCSR registers not protected in partitioned
448c43d2b0SJoe Liccese		software. The version of the device is determined by the LAC
458c43d2b0SJoe Liccese		IP Block Revision Register (IPBRR0) at offset 0x0BF8.
468c43d2b0SJoe Liccese
478c43d2b0SJoe Liccese		Table of correspondences between IPBRR0 values and example
488c43d2b0SJoe Liccese		chips:
498c43d2b0SJoe Liccese			Value		Device
508c43d2b0SJoe Liccese			-----------	-------
518c43d2b0SJoe Liccese			0x02000100	T4240
528c43d2b0SJoe Liccese
538c43d2b0SJoe Liccese		The Hypervisor node has a different compatible. It must include
548c43d2b0SJoe Liccese		"fsl,interlaken-lac-hv". This node represents the protected
558c43d2b0SJoe Liccese		LAC register space and is required except inside a partition
568c43d2b0SJoe Liccese		where access to the hypervisor node is to be denied.
578c43d2b0SJoe Liccese
588c43d2b0SJoe Liccese  - fsl,non-hv-node
598c43d2b0SJoe Liccese	Usage: required in "fsl,interlaken-lac-hv"
608c43d2b0SJoe Liccese	Value type: <phandle>
618c43d2b0SJoe Liccese	Definition: Points to the non-protected LAC CCSR mapped register space
628c43d2b0SJoe Liccese		node.
638c43d2b0SJoe Liccese
648c43d2b0SJoe Liccese  - reg
658c43d2b0SJoe Liccese	Usage: required
668c43d2b0SJoe Liccese	Value type: <prop-encoded-array>
678c43d2b0SJoe Liccese	Definition: A standard property. The first resource represents the
688c43d2b0SJoe Liccese		Interlaken LAC configuration registers.
698c43d2b0SJoe Liccese
708c43d2b0SJoe Liccese  - interrupts:
718c43d2b0SJoe Liccese	Usage: required in non-hv node only
728c43d2b0SJoe Liccese	Value type: <prop-encoded-array>
738c43d2b0SJoe Liccese	Definition: Interrupt mapping for Interlaken LAC error IRQ.
748c43d2b0SJoe Liccese
758c43d2b0SJoe LicceseEXAMPLE
768c43d2b0SJoe Liccese	lac: lac@229000 {
778c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac"
788c43d2b0SJoe Liccese		reg = <0x229000 0x1000>;
798c43d2b0SJoe Liccese		interrupts = <16 2 1 18>;
808c43d2b0SJoe Liccese	};
818c43d2b0SJoe Liccese
828c43d2b0SJoe Liccese	lac-hv@228000 {
838c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-hv"
848c43d2b0SJoe Liccese		reg = <0x228000 0x1000>;
858c43d2b0SJoe Liccese		fsl,non-hv-node = <&lac>;
868c43d2b0SJoe Liccese	};
878c43d2b0SJoe Liccese
888c43d2b0SJoe Liccese===============================================================================
898c43d2b0SJoe LicceseInterlaken Look-Aside Controller (LAC) Software Portal Container Node
908c43d2b0SJoe Liccese
918c43d2b0SJoe LicceseDESCRIPTION
928c43d2b0SJoe LicceseThe Interlaken Look-Aside Controller (LAC) utilizes Software Portals to accept
938c43d2b0SJoe LicceseInterlaken Look-Aside (ILA) commands. The Interlaken LAC software portal
948c43d2b0SJoe Liccesememory map occupies 128KB of memory space. The software portal memory space is
958c43d2b0SJoe Licceseintended to be cache-enabled. WIMG for each software space is required to be
968c43d2b0SJoe Liccese0010 if stashing is enabled; otherwise, WIMG can be 0000 or 0010.
978c43d2b0SJoe Liccese
988c43d2b0SJoe LiccesePROPERTIES
998c43d2b0SJoe Liccese
1008c43d2b0SJoe Liccese  - #address-cells
1018c43d2b0SJoe Liccese	Usage: required
1028c43d2b0SJoe Liccese	Value type: <u32>
1038c43d2b0SJoe Liccese	Definition: A standard property. Must have a value of 1.
1048c43d2b0SJoe Liccese
1058c43d2b0SJoe Liccese  - #size-cells
1068c43d2b0SJoe Liccese	Usage: required
1078c43d2b0SJoe Liccese	Value type: <u32>
1088c43d2b0SJoe Liccese	Definition: A standard property. Must have a value of 1.
1098c43d2b0SJoe Liccese
1108c43d2b0SJoe Liccese  - compatible
1118c43d2b0SJoe Liccese	Usage: required
1128c43d2b0SJoe Liccese	Value type: <string>
1138c43d2b0SJoe Liccese	Definition: Must include "fsl,interlaken-lac-portals"
1148c43d2b0SJoe Liccese
1158c43d2b0SJoe Liccese  - ranges
1168c43d2b0SJoe Liccese	Usage: required
1178c43d2b0SJoe Liccese	Value type: <prop-encoded-array>
1188c43d2b0SJoe Liccese	Definition: A standard property. Specifies the address and length
1198c43d2b0SJoe Liccese		of the LAC portal memory space.
1208c43d2b0SJoe Liccese
1218c43d2b0SJoe Liccese===============================================================================
1228c43d2b0SJoe LicceseInterlaken Look-Aside Controller (LAC) Software Portals Child Nodes
1238c43d2b0SJoe Liccese
1248c43d2b0SJoe LicceseDESCRIPTION
1258c43d2b0SJoe LicceseThere are up to 24 available software portals with each software portal
1268c43d2b0SJoe Licceserequiring 4KB of consecutive memory within the software portal memory mapped
1278c43d2b0SJoe Liccesespace.
1288c43d2b0SJoe Liccese
1298c43d2b0SJoe LiccesePROPERTIES
1308c43d2b0SJoe Liccese
1318c43d2b0SJoe Liccese  - compatible
1328c43d2b0SJoe Liccese	Usage: required
1338c43d2b0SJoe Liccese	Value type: <string>
1348c43d2b0SJoe Liccese	Definition: Must include "fsl,interlaken-lac-portal-vX.Y" where X is
1358c43d2b0SJoe Liccese		the Major version (IP_MJ) found in the LAC IP Block Revision
1368c43d2b0SJoe Liccese		Register (IPBRR0), at offset 0x0BF8, and Y is the Minor version
1378c43d2b0SJoe Liccese		(IP_MN).
1388c43d2b0SJoe Liccese
1398c43d2b0SJoe Liccese		Table of correspondences between version values and example chips:
1408c43d2b0SJoe Liccese		    Value	Device
1418c43d2b0SJoe Liccese		    ------	-------
1428c43d2b0SJoe Liccese		      1.0	T4240
1438c43d2b0SJoe Liccese
1448c43d2b0SJoe Liccese  - reg
1458c43d2b0SJoe Liccese	Usage: required
1468c43d2b0SJoe Liccese	Value type: <prop-encoded-array>
1478c43d2b0SJoe Liccese	Definition: A standard property.  The first resource represents the
1488c43d2b0SJoe Liccese		Interlaken LAC software portal registers.
1498c43d2b0SJoe Liccese
1508c43d2b0SJoe Liccese  - fsl,liodn
1518c43d2b0SJoe Liccese	Value type: <u32>
1528c43d2b0SJoe Liccese	Definition: The logical I/O device number (LIODN) for this device.  The
1538c43d2b0SJoe Liccese		LIODN is a number expressed by this device and used to perform
1548c43d2b0SJoe Liccese		look-ups in the IOMMU (PAMU) address table when performing
1558c43d2b0SJoe Liccese		DMAs. This property is automatically added by u-boot.
1568c43d2b0SJoe Liccese
1578c43d2b0SJoe Liccese===============================================================================
1588c43d2b0SJoe LicceseEXAMPLE
1598c43d2b0SJoe Liccese
1608c43d2b0SJoe Licceselac-portals {
1618c43d2b0SJoe Liccese	#address-cells = <0x1>;
1628c43d2b0SJoe Liccese	#size-cells = <0x1>;
1638c43d2b0SJoe Liccese	compatible = "fsl,interlaken-lac-portals";
1648c43d2b0SJoe Liccese	ranges = <0x0 0xf 0xf4400000 0x20000>;
1658c43d2b0SJoe Liccese
1668c43d2b0SJoe Liccese	lportal0: lac-portal@0 {
1678c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
1688c43d2b0SJoe Liccese		fsl,liodn = <0x204>;
1698c43d2b0SJoe Liccese		reg = <0x0 0x1000>;
1708c43d2b0SJoe Liccese	};
1718c43d2b0SJoe Liccese
1728c43d2b0SJoe Liccese	lportal1: lac-portal@1000 {
1738c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
1748c43d2b0SJoe Liccese		fsl,liodn = <0x205>;
1758c43d2b0SJoe Liccese		reg = <0x1000 0x1000>;
1768c43d2b0SJoe Liccese	};
1778c43d2b0SJoe Liccese
1788c43d2b0SJoe Liccese	lportal2: lac-portal@2000 {
1798c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
1808c43d2b0SJoe Liccese		fsl,liodn = <0x206>;
1818c43d2b0SJoe Liccese		reg = <0x2000 0x1000>;
1828c43d2b0SJoe Liccese	};
1838c43d2b0SJoe Liccese
1848c43d2b0SJoe Liccese	lportal3: lac-portal@3000 {
1858c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
1868c43d2b0SJoe Liccese		fsl,liodn = <0x207>;
1878c43d2b0SJoe Liccese		reg = <0x3000 0x1000>;
1888c43d2b0SJoe Liccese	};
1898c43d2b0SJoe Liccese
1908c43d2b0SJoe Liccese	lportal4: lac-portal@4000 {
1918c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
1928c43d2b0SJoe Liccese		fsl,liodn = <0x208>;
1938c43d2b0SJoe Liccese		reg = <0x4000 0x1000>;
1948c43d2b0SJoe Liccese	};
1958c43d2b0SJoe Liccese
1968c43d2b0SJoe Liccese	lportal5: lac-portal@5000 {
1978c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
1988c43d2b0SJoe Liccese		fsl,liodn = <0x209>;
1998c43d2b0SJoe Liccese		reg = <0x5000 0x1000>;
2008c43d2b0SJoe Liccese	};
2018c43d2b0SJoe Liccese
2028c43d2b0SJoe Liccese	lportal6: lac-portal@6000 {
2038c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2048c43d2b0SJoe Liccese		fsl,liodn = <0x20A>;
2058c43d2b0SJoe Liccese		reg = <0x6000 0x1000>;
2068c43d2b0SJoe Liccese	};
2078c43d2b0SJoe Liccese
2088c43d2b0SJoe Liccese	lportal7: lac-portal@7000 {
2098c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2108c43d2b0SJoe Liccese		fsl,liodn = <0x20B>;
2118c43d2b0SJoe Liccese		reg = <0x7000 0x1000>;
2128c43d2b0SJoe Liccese	};
2138c43d2b0SJoe Liccese
2148c43d2b0SJoe Liccese	lportal8: lac-portal@8000 {
2158c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2168c43d2b0SJoe Liccese		fsl,liodn = <0x20C>;
2178c43d2b0SJoe Liccese		reg = <0x8000 0x1000>;
2188c43d2b0SJoe Liccese	};
2198c43d2b0SJoe Liccese
2208c43d2b0SJoe Liccese	lportal9: lac-portal@9000 {
2218c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2228c43d2b0SJoe Liccese		fsl,liodn = <0x20D>;
2238c43d2b0SJoe Liccese		reg = <0x9000 0x1000>;
2248c43d2b0SJoe Liccese	};
2258c43d2b0SJoe Liccese
226*afc3bca4SRob Herring	lportal10: lac-portal@a000 {
2278c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2288c43d2b0SJoe Liccese		fsl,liodn = <0x20E>;
2298c43d2b0SJoe Liccese		reg = <0xA000 0x1000>;
2308c43d2b0SJoe Liccese	};
2318c43d2b0SJoe Liccese
232*afc3bca4SRob Herring	lportal11: lac-portal@b000 {
2338c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2348c43d2b0SJoe Liccese		fsl,liodn = <0x20F>;
2358c43d2b0SJoe Liccese		reg = <0xB000 0x1000>;
2368c43d2b0SJoe Liccese	};
2378c43d2b0SJoe Liccese
238*afc3bca4SRob Herring	lportal12: lac-portal@c000 {
2398c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2408c43d2b0SJoe Liccese		fsl,liodn = <0x210>;
2418c43d2b0SJoe Liccese		reg = <0xC000 0x1000>;
2428c43d2b0SJoe Liccese	};
2438c43d2b0SJoe Liccese
244*afc3bca4SRob Herring	lportal13: lac-portal@d000 {
2458c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2468c43d2b0SJoe Liccese		fsl,liodn = <0x211>;
2478c43d2b0SJoe Liccese		reg = <0xD000 0x1000>;
2488c43d2b0SJoe Liccese	};
2498c43d2b0SJoe Liccese
250*afc3bca4SRob Herring	lportal14: lac-portal@e000 {
2518c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2528c43d2b0SJoe Liccese		fsl,liodn = <0x212>;
2538c43d2b0SJoe Liccese		reg = <0xE000 0x1000>;
2548c43d2b0SJoe Liccese	};
2558c43d2b0SJoe Liccese
256*afc3bca4SRob Herring	lportal15: lac-portal@f000 {
2578c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2588c43d2b0SJoe Liccese		fsl,liodn = <0x213>;
2598c43d2b0SJoe Liccese		reg = <0xF000 0x1000>;
2608c43d2b0SJoe Liccese	};
2618c43d2b0SJoe Liccese
2628c43d2b0SJoe Liccese	lportal16: lac-portal@10000 {
2638c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2648c43d2b0SJoe Liccese		fsl,liodn = <0x214>;
2658c43d2b0SJoe Liccese		reg = <0x10000 0x1000>;
2668c43d2b0SJoe Liccese	};
2678c43d2b0SJoe Liccese
2688c43d2b0SJoe Liccese	lportal17: lac-portal@11000 {
2698c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2708c43d2b0SJoe Liccese		fsl,liodn = <0x215>;
2718c43d2b0SJoe Liccese		reg = <0x11000 0x1000>;
2728c43d2b0SJoe Liccese	};
2738c43d2b0SJoe Liccese
2748c43d2b0SJoe Liccese	lportal8: lac-portal@1200 {
2758c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2768c43d2b0SJoe Liccese		fsl,liodn = <0x216>;
2778c43d2b0SJoe Liccese		reg = <0x12000 0x1000>;
2788c43d2b0SJoe Liccese	};
2798c43d2b0SJoe Liccese
2808c43d2b0SJoe Liccese	lportal19: lac-portal@13000 {
2818c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2828c43d2b0SJoe Liccese		fsl,liodn = <0x217>;
2838c43d2b0SJoe Liccese		reg = <0x13000 0x1000>;
2848c43d2b0SJoe Liccese	};
2858c43d2b0SJoe Liccese
2868c43d2b0SJoe Liccese	lportal20: lac-portal@14000 {
2878c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2888c43d2b0SJoe Liccese		fsl,liodn = <0x218>;
2898c43d2b0SJoe Liccese		reg = <0x14000 0x1000>;
2908c43d2b0SJoe Liccese	};
2918c43d2b0SJoe Liccese
2928c43d2b0SJoe Liccese	lportal21: lac-portal@15000 {
2938c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
2948c43d2b0SJoe Liccese		fsl,liodn = <0x219>;
2958c43d2b0SJoe Liccese		reg = <0x15000 0x1000>;
2968c43d2b0SJoe Liccese	};
2978c43d2b0SJoe Liccese
2988c43d2b0SJoe Liccese	lportal22: lac-portal@16000 {
2998c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
3008c43d2b0SJoe Liccese		fsl,liodn = <0x21A>;
3018c43d2b0SJoe Liccese		reg = <0x16000 0x1000>;
3028c43d2b0SJoe Liccese	};
3038c43d2b0SJoe Liccese
3048c43d2b0SJoe Liccese	lportal23: lac-portal@17000 {
3058c43d2b0SJoe Liccese		compatible = "fsl,interlaken-lac-portal-v1.0";
3068c43d2b0SJoe Liccese		fsl,liodn = <0x21B>;
3078c43d2b0SJoe Liccese		reg = <0x17000 0x1000>;
3088c43d2b0SJoe Liccese	};
3098c43d2b0SJoe Liccese};
310