pamu.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. Freescale Peripheral Management Access Unit (PAMU) Device Tree Binding
  2. DESCRIPTION
  3. The PAMU is an I/O MMU that provides device-to-memory access control and
  4. address translation capabilities.
  5. Required properties:
  6. - compatible : <string>
  7. First entry is a version-specific string, such as
  8. "fsl,pamu-v1.0". The second is "fsl,pamu".
  9. - ranges : <prop-encoded-array>
  10. A standard property. Utilized to describe the memory mapped
  11. I/O space utilized by the controller. The size should
  12. be set to the total size of the register space of all
  13. physically present PAMU controllers. For example, for
  14. PAMU v1.0, on an SOC that has five PAMU devices, the size
  15. is 0x5000.
  16. - interrupts : <prop-encoded-array>
  17. Interrupt mappings. The first tuple is the normal PAMU
  18. interrupt, used for reporting access violations. The second
  19. is for PAMU hardware errors, such as PAMU operation errors
  20. and ECC errors.
  21. - #address-cells: <u32>
  22. A standard property.
  23. - #size-cells : <u32>
  24. A standard property.
  25. Optional properties:
  26. - reg : <prop-encoded-array>
  27. A standard property. It represents the CCSR registers of
  28. all child PAMUs combined. Include it to provide support
  29. for legacy drivers.
  30. - interrupt-parent : <phandle>
  31. Phandle to interrupt controller
  32. Child nodes:
  33. Each child node represents one PAMU controller. Each SOC device that is
  34. connected to a specific PAMU device should have a "fsl,pamu-phandle" property
  35. that links to the corresponding specific child PAMU controller.
  36. - reg : <prop-encoded-array>
  37. A standard property. Specifies the physical address and
  38. length (relative to the parent 'ranges' property) of this
  39. PAMU controller's configuration registers. The size should
  40. be set to the size of this PAMU controllers's register space.
  41. For PAMU v1.0, this size is 0x1000.
  42. - fsl,primary-cache-geometry
  43. : <prop-encoded-array>
  44. Two cells that specify the geometry of the primary PAMU
  45. cache. The first is the number of cache lines, and the
  46. second is the number of "ways". For direct-mapped caches,
  47. specify a value of 1.
  48. - fsl,secondary-cache-geometry
  49. : <prop-encoded-array>
  50. Two cells that specify the geometry of the secondary PAMU
  51. cache. The first is the number of cache lines, and the
  52. second is the number of "ways". For direct-mapped caches,
  53. specify a value of 1.
  54. Device nodes:
  55. Devices that have LIODNs need to specify links to the parent PAMU controller
  56. (the actual PAMU controller that this device is connected to) and a pointer to
  57. the LIODN register, if applicable.
  58. - fsl,iommu-parent
  59. : <phandle>
  60. Phandle to the single, specific PAMU controller node to which
  61. this device is connect. The PAMU topology is represented in
  62. the device tree to assist code that dynamically determines the
  63. best LIODN values to minimize PAMU cache thrashing.
  64. - fsl,liodn-reg : <prop-encoded-array>
  65. Two cells that specify the location of the LIODN register
  66. for this device. Required for devices that have a single
  67. LIODN. The first cell is a phandle to a node that contains
  68. the registers where the LIODN is to be set. The second is
  69. the offset from the first "reg" resource of the node where
  70. the specific LIODN register is located.
  71. Example:
  72. iommu@20000 {
  73. compatible = "fsl,pamu-v1.0", "fsl,pamu";
  74. reg = <0x20000 0x5000>;
  75. ranges = <0 0x20000 0x5000>;
  76. #address-cells = <1>;
  77. #size-cells = <1>;
  78. interrupts = <
  79. 24 2 0 0
  80. 16 2 1 30>;
  81. pamu0: pamu@0 {
  82. reg = <0 0x1000>;
  83. fsl,primary-cache-geometry = <32 1>;
  84. fsl,secondary-cache-geometry = <128 2>;
  85. };
  86. pamu1: pamu@1000 {
  87. reg = <0x1000 0x1000>;
  88. fsl,primary-cache-geometry = <32 1>;
  89. fsl,secondary-cache-geometry = <128 2>;
  90. };
  91. pamu2: pamu@2000 {
  92. reg = <0x2000 0x1000>;
  93. fsl,primary-cache-geometry = <32 1>;
  94. fsl,secondary-cache-geometry = <128 2>;
  95. };
  96. pamu3: pamu@3000 {
  97. reg = <0x3000 0x1000>;
  98. fsl,primary-cache-geometry = <32 1>;
  99. fsl,secondary-cache-geometry = <128 2>;
  100. };
  101. pamu4: pamu@4000 {
  102. reg = <0x4000 0x1000>;
  103. fsl,primary-cache-geometry = <32 1>;
  104. fsl,secondary-cache-geometry = <128 2>;
  105. };
  106. };
  107. guts: global-utilities@e0000 {
  108. compatible = "fsl,qoriq-device-config-1.0";
  109. reg = <0xe0000 0xe00>;
  110. fsl,has-rstcr;
  111. #sleep-cells = <1>;
  112. fsl,liodn-bits = <12>;
  113. };
  114. /include/ "qoriq-dma-0.dtsi"
  115. dma@100300 {
  116. fsl,iommu-parent = <&pamu0>;
  117. fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */
  118. };