Documentation / devicetree / bindings / powerpc / fsl / interlaken-lac.txt


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309
===============================================================================
Freescale Interlaken Look-Aside Controller Device Bindings
Copyright 2012 Freescale Semiconductor Inc.

CONTENTS
  - Interlaken Look-Aside Controller (LAC) Node
  - Example LAC Node
  - Interlaken Look-Aside Controller (LAC) Software Portal Node
  - Interlaken Look-Aside Controller (LAC) Software Portal Child Nodes
  - Example LAC SWP Node with Child Nodes

==============================================================================
Interlaken Look-Aside Controller (LAC) Node

DESCRIPTION

The Interlaken is a narrow, high speed channelized chip-to-chip interface. To
facilitate interoperability between a data path device and a look-aside
co-processor, the Interlaken Look-Aside protocol is defined for short
transaction-related transfers. Although based on the Interlaken protocol,
Interlaken Look-Aside is not directly compatible with Interlaken and can be
considered a different operation mode.

The Interlaken LA controller connects internal platform to Interlaken serial
interface. It accepts LA command through software portals, which are system
memory mapped 4KB spaces. The LA commands are then translated into the
Interlaken control words and data words, which are sent on TX side to TCAM
through SerDes lanes.

There are two 4KiB spaces defined within the LAC global register memory map.
There is a full register set at 0x0000-0x0FFF (also known as the "hypervisor"
version), and a subset at 0x1000-0x1FFF.  The former is a superset of the
latter, and includes certain registers that should not be accessible to
partitioned software.  Separate nodes are used for each region, with a phandle
linking the hypervisor node to the normal operating node.

PROPERTIES

  - compatible
	Usage: required
	Value type: <string>
	Definition: Must include "fsl,interlaken-lac". This represents only
		those LAC CCSR registers not protected in partitioned
		software. The version of the device is determined by the LAC
		IP Block Revision Register (IPBRR0) at offset 0x0BF8.

		Table of correspondences between IPBRR0 values and example
		chips:
			Value		Device
			-----------	-------
			0x02000100	T4240

		The Hypervisor node has a different compatible. It must include
		"fsl,interlaken-lac-hv". This node represents the protected
		LAC register space and is required except inside a partition
		where access to the hypervisor node is to be denied.

  - fsl,non-hv-node
	Usage: required in "fsl,interlaken-lac-hv"
	Value type: <phandle>
	Definition: Points to the non-protected LAC CCSR mapped register space
		node.

  - reg
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A standard property. The first resource represents the
		Interlaken LAC configuration registers.

  - interrupts:
	Usage: required in non-hv node only
	Value type: <prop-encoded-array>
	Definition: Interrupt mapping for Interlaken LAC error IRQ.

EXAMPLE
	lac: lac@229000 {
		compatible = "fsl,interlaken-lac"
		reg = <0x229000 0x1000>;
		interrupts = <16 2 1 18>;
	};

	lac-hv@228000 {
		compatible = "fsl,interlaken-lac-hv"
		reg = <0x228000 0x1000>;
		fsl,non-hv-node = <&lac>;
	};

===============================================================================
Interlaken Look-Aside Controller (LAC) Software Portal Container Node

DESCRIPTION
The Interlaken Look-Aside Controller (LAC) utilizes Software Portals to accept
Interlaken Look-Aside (ILA) commands. The Interlaken LAC software portal
memory map occupies 128KB of memory space. The software portal memory space is
intended to be cache-enabled. WIMG for each software space is required to be
0010 if stashing is enabled; otherwise, WIMG can be 0000 or 0010.

PROPERTIES

  - #address-cells
	Usage: required
	Value type: <u32>
	Definition: A standard property. Must have a value of 1.

  - #size-cells
	Usage: required
	Value type: <u32>
	Definition: A standard property. Must have a value of 1.

  - compatible
	Usage: required
	Value type: <string>
	Definition: Must include "fsl,interlaken-lac-portals"

  - ranges
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A standard property. Specifies the address and length
		of the LAC portal memory space.

===============================================================================
Interlaken Look-Aside Controller (LAC) Software Portals Child Nodes

DESCRIPTION
There are up to 24 available software portals with each software portal
requiring 4KB of consecutive memory within the software portal memory mapped
space.

PROPERTIES

  - compatible
	Usage: required
	Value type: <string>
	Definition: Must include "fsl,interlaken-lac-portal-vX.Y" where X is
		the Major version (IP_MJ) found in the LAC IP Block Revision
		Register (IPBRR0), at offset 0x0BF8, and Y is the Minor version
		(IP_MN).

		Table of correspondences between version values and example chips:
		    Value	Device
		    ------	-------
		      1.0	T4240

  - reg
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A standard property.  The first resource represents the
		Interlaken LAC software portal registers.

  - fsl,liodn
	Value type: <u32>
	Definition: The logical I/O device number (LIODN) for this device.  The
		LIODN is a number expressed by this device and used to perform
		look-ups in the IOMMU (PAMU) address table when performing
		DMAs. This property is automatically added by u-boot.

===============================================================================
EXAMPLE

lac-portals {
	#address-cells = <0x1>;
	#size-cells = <0x1>;
	compatible = "fsl,interlaken-lac-portals";
	ranges = <0x0 0xf 0xf4400000 0x20000>;

	lportal0: lac-portal@0 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x204>;
		reg = <0x0 0x1000>;
	};

	lportal1: lac-portal@1000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x205>;
		reg = <0x1000 0x1000>;
	};

	lportal2: lac-portal@2000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x206>;
		reg = <0x2000 0x1000>;
	};

	lportal3: lac-portal@3000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x207>;
		reg = <0x3000 0x1000>;
	};

	lportal4: lac-portal@4000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x208>;
		reg = <0x4000 0x1000>;
	};

	lportal5: lac-portal@5000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x209>;
		reg = <0x5000 0x1000>;
	};

	lportal6: lac-portal@6000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x20A>;
		reg = <0x6000 0x1000>;
	};

	lportal7: lac-portal@7000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x20B>;
		reg = <0x7000 0x1000>;
	};

	lportal8: lac-portal@8000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x20C>;
		reg = <0x8000 0x1000>;
	};

	lportal9: lac-portal@9000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x20D>;
		reg = <0x9000 0x1000>;
	};

	lportal10: lac-portal@a000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x20E>;
		reg = <0xA000 0x1000>;
	};

	lportal11: lac-portal@b000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x20F>;
		reg = <0xB000 0x1000>;
	};

	lportal12: lac-portal@c000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x210>;
		reg = <0xC000 0x1000>;
	};

	lportal13: lac-portal@d000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x211>;
		reg = <0xD000 0x1000>;
	};

	lportal14: lac-portal@e000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x212>;
		reg = <0xE000 0x1000>;
	};

	lportal15: lac-portal@f000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x213>;
		reg = <0xF000 0x1000>;
	};

	lportal16: lac-portal@10000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x214>;
		reg = <0x10000 0x1000>;
	};

	lportal17: lac-portal@11000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x215>;
		reg = <0x11000 0x1000>;
	};

	lportal8: lac-portal@1200 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x216>;
		reg = <0x12000 0x1000>;
	};

	lportal19: lac-portal@13000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x217>;
		reg = <0x13000 0x1000>;
	};

	lportal20: lac-portal@14000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x218>;
		reg = <0x14000 0x1000>;
	};

	lportal21: lac-portal@15000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x219>;
		reg = <0x15000 0x1000>;
	};

	lportal22: lac-portal@16000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x21A>;
		reg = <0x16000 0x1000>;
	};

	lportal23: lac-portal@17000 {
		compatible = "fsl,interlaken-lac-portal-v1.0";
		fsl,liodn = <0x21B>;
		reg = <0x17000 0x1000>;
	};
};