interlaken-lac.txt 8.6 KB

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