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