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