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