0001 ===============================================================================
0002 Freescale Interlaken Look-Aside Controller Device Bindings
0003 Copyright 2012 Freescale Semiconductor Inc.
0004
0005 CONTENTS
0006 - Interlaken Look-Aside Controller (LAC) Node
0007 - Example LAC Node
0008 - Interlaken Look-Aside Controller (LAC) Software Portal Node
0009 - Interlaken Look-Aside Controller (LAC) Software Portal Child Nodes
0010 - Example LAC SWP Node with Child Nodes
0011
0012 ==============================================================================
0013 Interlaken Look-Aside Controller (LAC) Node
0014
0015 DESCRIPTION
0016
0017 The Interlaken is a narrow, high speed channelized chip-to-chip interface. To
0018 facilitate interoperability between a data path device and a look-aside
0019 co-processor, the Interlaken Look-Aside protocol is defined for short
0020 transaction-related transfers. Although based on the Interlaken protocol,
0021 Interlaken Look-Aside is not directly compatible with Interlaken and can be
0022 considered a different operation mode.
0023
0024 The Interlaken LA controller connects internal platform to Interlaken serial
0025 interface. It accepts LA command through software portals, which are system
0026 memory mapped 4KB spaces. The LA commands are then translated into the
0027 Interlaken control words and data words, which are sent on TX side to TCAM
0028 through SerDes lanes.
0029
0030 There are two 4KiB spaces defined within the LAC global register memory map.
0031 There is a full register set at 0x0000-0x0FFF (also known as the "hypervisor"
0032 version), and a subset at 0x1000-0x1FFF. The former is a superset of the
0033 latter, and includes certain registers that should not be accessible to
0034 partitioned software. Separate nodes are used for each region, with a phandle
0035 linking the hypervisor node to the normal operating node.
0036
0037 PROPERTIES
0038
0039 - compatible
0040 Usage: required
0041 Value type: <string>
0042 Definition: Must include "fsl,interlaken-lac". This represents only
0043 those LAC CCSR registers not protected in partitioned
0044 software. The version of the device is determined by the LAC
0045 IP Block Revision Register (IPBRR0) at offset 0x0BF8.
0046
0047 Table of correspondences between IPBRR0 values and example
0048 chips:
0049 Value Device
0050 ----------- -------
0051 0x02000100 T4240
0052
0053 The Hypervisor node has a different compatible. It must include
0054 "fsl,interlaken-lac-hv". This node represents the protected
0055 LAC register space and is required except inside a partition
0056 where access to the hypervisor node is to be denied.
0057
0058 - fsl,non-hv-node
0059 Usage: required in "fsl,interlaken-lac-hv"
0060 Value type: <phandle>
0061 Definition: Points to the non-protected LAC CCSR mapped register space
0062 node.
0063
0064 - reg
0065 Usage: required
0066 Value type: <prop-encoded-array>
0067 Definition: A standard property. The first resource represents the
0068 Interlaken LAC configuration registers.
0069
0070 - interrupts:
0071 Usage: required in non-hv node only
0072 Value type: <prop-encoded-array>
0073 Definition: Interrupt mapping for Interlaken LAC error IRQ.
0074
0075 EXAMPLE
0076 lac: lac@229000 {
0077 compatible = "fsl,interlaken-lac"
0078 reg = <0x229000 0x1000>;
0079 interrupts = <16 2 1 18>;
0080 };
0081
0082 lac-hv@228000 {
0083 compatible = "fsl,interlaken-lac-hv"
0084 reg = <0x228000 0x1000>;
0085 fsl,non-hv-node = <&lac>;
0086 };
0087
0088 ===============================================================================
0089 Interlaken Look-Aside Controller (LAC) Software Portal Container Node
0090
0091 DESCRIPTION
0092 The Interlaken Look-Aside Controller (LAC) utilizes Software Portals to accept
0093 Interlaken Look-Aside (ILA) commands. The Interlaken LAC software portal
0094 memory map occupies 128KB of memory space. The software portal memory space is
0095 intended to be cache-enabled. WIMG for each software space is required to be
0096 0010 if stashing is enabled; otherwise, WIMG can be 0000 or 0010.
0097
0098 PROPERTIES
0099
0100 - #address-cells
0101 Usage: required
0102 Value type: <u32>
0103 Definition: A standard property. Must have a value of 1.
0104
0105 - #size-cells
0106 Usage: required
0107 Value type: <u32>
0108 Definition: A standard property. Must have a value of 1.
0109
0110 - compatible
0111 Usage: required
0112 Value type: <string>
0113 Definition: Must include "fsl,interlaken-lac-portals"
0114
0115 - ranges
0116 Usage: required
0117 Value type: <prop-encoded-array>
0118 Definition: A standard property. Specifies the address and length
0119 of the LAC portal memory space.
0120
0121 ===============================================================================
0122 Interlaken Look-Aside Controller (LAC) Software Portals Child Nodes
0123
0124 DESCRIPTION
0125 There are up to 24 available software portals with each software portal
0126 requiring 4KB of consecutive memory within the software portal memory mapped
0127 space.
0128
0129 PROPERTIES
0130
0131 - compatible
0132 Usage: required
0133 Value type: <string>
0134 Definition: Must include "fsl,interlaken-lac-portal-vX.Y" where X is
0135 the Major version (IP_MJ) found in the LAC IP Block Revision
0136 Register (IPBRR0), at offset 0x0BF8, and Y is the Minor version
0137 (IP_MN).
0138
0139 Table of correspondences between version values and example chips:
0140 Value Device
0141 ------ -------
0142 1.0 T4240
0143
0144 - reg
0145 Usage: required
0146 Value type: <prop-encoded-array>
0147 Definition: A standard property. The first resource represents the
0148 Interlaken LAC software portal registers.
0149
0150 - fsl,liodn
0151 Value type: <u32>
0152 Definition: The logical I/O device number (LIODN) for this device. The
0153 LIODN is a number expressed by this device and used to perform
0154 look-ups in the IOMMU (PAMU) address table when performing
0155 DMAs. This property is automatically added by u-boot.
0156
0157 ===============================================================================
0158 EXAMPLE
0159
0160 lac-portals {
0161 #address-cells = <0x1>;
0162 #size-cells = <0x1>;
0163 compatible = "fsl,interlaken-lac-portals";
0164 ranges = <0x0 0xf 0xf4400000 0x20000>;
0165
0166 lportal0: lac-portal@0 {
0167 compatible = "fsl,interlaken-lac-portal-v1.0";
0168 fsl,liodn = <0x204>;
0169 reg = <0x0 0x1000>;
0170 };
0171
0172 lportal1: lac-portal@1000 {
0173 compatible = "fsl,interlaken-lac-portal-v1.0";
0174 fsl,liodn = <0x205>;
0175 reg = <0x1000 0x1000>;
0176 };
0177
0178 lportal2: lac-portal@2000 {
0179 compatible = "fsl,interlaken-lac-portal-v1.0";
0180 fsl,liodn = <0x206>;
0181 reg = <0x2000 0x1000>;
0182 };
0183
0184 lportal3: lac-portal@3000 {
0185 compatible = "fsl,interlaken-lac-portal-v1.0";
0186 fsl,liodn = <0x207>;
0187 reg = <0x3000 0x1000>;
0188 };
0189
0190 lportal4: lac-portal@4000 {
0191 compatible = "fsl,interlaken-lac-portal-v1.0";
0192 fsl,liodn = <0x208>;
0193 reg = <0x4000 0x1000>;
0194 };
0195
0196 lportal5: lac-portal@5000 {
0197 compatible = "fsl,interlaken-lac-portal-v1.0";
0198 fsl,liodn = <0x209>;
0199 reg = <0x5000 0x1000>;
0200 };
0201
0202 lportal6: lac-portal@6000 {
0203 compatible = "fsl,interlaken-lac-portal-v1.0";
0204 fsl,liodn = <0x20A>;
0205 reg = <0x6000 0x1000>;
0206 };
0207
0208 lportal7: lac-portal@7000 {
0209 compatible = "fsl,interlaken-lac-portal-v1.0";
0210 fsl,liodn = <0x20B>;
0211 reg = <0x7000 0x1000>;
0212 };
0213
0214 lportal8: lac-portal@8000 {
0215 compatible = "fsl,interlaken-lac-portal-v1.0";
0216 fsl,liodn = <0x20C>;
0217 reg = <0x8000 0x1000>;
0218 };
0219
0220 lportal9: lac-portal@9000 {
0221 compatible = "fsl,interlaken-lac-portal-v1.0";
0222 fsl,liodn = <0x20D>;
0223 reg = <0x9000 0x1000>;
0224 };
0225
0226 lportal10: lac-portal@a000 {
0227 compatible = "fsl,interlaken-lac-portal-v1.0";
0228 fsl,liodn = <0x20E>;
0229 reg = <0xA000 0x1000>;
0230 };
0231
0232 lportal11: lac-portal@b000 {
0233 compatible = "fsl,interlaken-lac-portal-v1.0";
0234 fsl,liodn = <0x20F>;
0235 reg = <0xB000 0x1000>;
0236 };
0237
0238 lportal12: lac-portal@c000 {
0239 compatible = "fsl,interlaken-lac-portal-v1.0";
0240 fsl,liodn = <0x210>;
0241 reg = <0xC000 0x1000>;
0242 };
0243
0244 lportal13: lac-portal@d000 {
0245 compatible = "fsl,interlaken-lac-portal-v1.0";
0246 fsl,liodn = <0x211>;
0247 reg = <0xD000 0x1000>;
0248 };
0249
0250 lportal14: lac-portal@e000 {
0251 compatible = "fsl,interlaken-lac-portal-v1.0";
0252 fsl,liodn = <0x212>;
0253 reg = <0xE000 0x1000>;
0254 };
0255
0256 lportal15: lac-portal@f000 {
0257 compatible = "fsl,interlaken-lac-portal-v1.0";
0258 fsl,liodn = <0x213>;
0259 reg = <0xF000 0x1000>;
0260 };
0261
0262 lportal16: lac-portal@10000 {
0263 compatible = "fsl,interlaken-lac-portal-v1.0";
0264 fsl,liodn = <0x214>;
0265 reg = <0x10000 0x1000>;
0266 };
0267
0268 lportal17: lac-portal@11000 {
0269 compatible = "fsl,interlaken-lac-portal-v1.0";
0270 fsl,liodn = <0x215>;
0271 reg = <0x11000 0x1000>;
0272 };
0273
0274 lportal8: lac-portal@1200 {
0275 compatible = "fsl,interlaken-lac-portal-v1.0";
0276 fsl,liodn = <0x216>;
0277 reg = <0x12000 0x1000>;
0278 };
0279
0280 lportal19: lac-portal@13000 {
0281 compatible = "fsl,interlaken-lac-portal-v1.0";
0282 fsl,liodn = <0x217>;
0283 reg = <0x13000 0x1000>;
0284 };
0285
0286 lportal20: lac-portal@14000 {
0287 compatible = "fsl,interlaken-lac-portal-v1.0";
0288 fsl,liodn = <0x218>;
0289 reg = <0x14000 0x1000>;
0290 };
0291
0292 lportal21: lac-portal@15000 {
0293 compatible = "fsl,interlaken-lac-portal-v1.0";
0294 fsl,liodn = <0x219>;
0295 reg = <0x15000 0x1000>;
0296 };
0297
0298 lportal22: lac-portal@16000 {
0299 compatible = "fsl,interlaken-lac-portal-v1.0";
0300 fsl,liodn = <0x21A>;
0301 reg = <0x16000 0x1000>;
0302 };
0303
0304 lportal23: lac-portal@17000 {
0305 compatible = "fsl,interlaken-lac-portal-v1.0";
0306 fsl,liodn = <0x21B>;
0307 reg = <0x17000 0x1000>;
0308 };
0309 };