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