mvebu-pci.txt 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. * Marvell EBU PCIe interfaces
  2. Mandatory properties:
  3. - compatible: one of the following values:
  4. marvell,armada-370-pcie
  5. marvell,armada-xp-pcie
  6. - #address-cells, set to <3>
  7. - #size-cells, set to <2>
  8. - #interrupt-cells, set to <1>
  9. - bus-range: PCI bus numbers covered
  10. - device_type, set to "pci"
  11. - ranges: ranges for the PCI memory and I/O regions, as well as the
  12. MMIO registers to control the PCIe interfaces.
  13. In addition, the Device Tree node must have sub-nodes describing each
  14. PCIe interface, having the following mandatory properties:
  15. - reg: used only for interrupt mapping, so only the first four bytes
  16. are used to refer to the correct bus number and device number.
  17. - assigned-addresses: reference to the MMIO registers used to control
  18. this PCIe interface.
  19. - clocks: the clock associated to this PCIe interface
  20. - marvell,pcie-port: the physical PCIe port number
  21. - status: either "disabled" or "okay"
  22. - device_type, set to "pci"
  23. - #address-cells, set to <3>
  24. - #size-cells, set to <2>
  25. - #interrupt-cells, set to <1>
  26. - ranges, empty property.
  27. - interrupt-map-mask and interrupt-map, standard PCI properties to
  28. define the mapping of the PCIe interface to interrupt numbers.
  29. and the following optional properties:
  30. - marvell,pcie-lane: the physical PCIe lane number, for ports having
  31. multiple lanes. If this property is not found, we assume that the
  32. value is 0.
  33. Example:
  34. pcie-controller {
  35. compatible = "marvell,armada-xp-pcie";
  36. status = "disabled";
  37. device_type = "pci";
  38. #address-cells = <3>;
  39. #size-cells = <2>;
  40. bus-range = <0x00 0xff>;
  41. ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */
  42. 0x82000000 0 0xd0042000 0xd0042000 0 0x00002000 /* Port 2.0 registers */
  43. 0x82000000 0 0xd0044000 0xd0044000 0 0x00002000 /* Port 0.1 registers */
  44. 0x82000000 0 0xd0048000 0xd0048000 0 0x00002000 /* Port 0.2 registers */
  45. 0x82000000 0 0xd004c000 0xd004c000 0 0x00002000 /* Port 0.3 registers */
  46. 0x82000000 0 0xd0080000 0xd0080000 0 0x00002000 /* Port 1.0 registers */
  47. 0x82000000 0 0xd0082000 0xd0082000 0 0x00002000 /* Port 3.0 registers */
  48. 0x82000000 0 0xd0084000 0xd0084000 0 0x00002000 /* Port 1.1 registers */
  49. 0x82000000 0 0xd0088000 0xd0088000 0 0x00002000 /* Port 1.2 registers */
  50. 0x82000000 0 0xd008c000 0xd008c000 0 0x00002000 /* Port 1.3 registers */
  51. 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */
  52. 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
  53. pcie@1,0 {
  54. device_type = "pci";
  55. assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>;
  56. reg = <0x0800 0 0 0 0>;
  57. #address-cells = <3>;
  58. #size-cells = <2>;
  59. #interrupt-cells = <1>;
  60. ranges;
  61. interrupt-map-mask = <0 0 0 0>;
  62. interrupt-map = <0 0 0 0 &mpic 58>;
  63. marvell,pcie-port = <0>;
  64. marvell,pcie-lane = <0>;
  65. clocks = <&gateclk 5>;
  66. status = "disabled";
  67. };
  68. pcie@2,0 {
  69. device_type = "pci";
  70. assigned-addresses = <0x82001000 0 0xd0044000 0 0x2000>;
  71. reg = <0x1000 0 0 0 0>;
  72. #address-cells = <3>;
  73. #size-cells = <2>;
  74. #interrupt-cells = <1>;
  75. ranges;
  76. interrupt-map-mask = <0 0 0 0>;
  77. interrupt-map = <0 0 0 0 &mpic 59>;
  78. marvell,pcie-port = <0>;
  79. marvell,pcie-lane = <1>;
  80. clocks = <&gateclk 6>;
  81. status = "disabled";
  82. };
  83. pcie@3,0 {
  84. device_type = "pci";
  85. assigned-addresses = <0x82001800 0 0xd0048000 0 0x2000>;
  86. reg = <0x1800 0 0 0 0>;
  87. #address-cells = <3>;
  88. #size-cells = <2>;
  89. #interrupt-cells = <1>;
  90. ranges;
  91. interrupt-map-mask = <0 0 0 0>;
  92. interrupt-map = <0 0 0 0 &mpic 60>;
  93. marvell,pcie-port = <0>;
  94. marvell,pcie-lane = <2>;
  95. clocks = <&gateclk 7>;
  96. status = "disabled";
  97. };
  98. pcie@4,0 {
  99. device_type = "pci";
  100. assigned-addresses = <0x82002000 0 0xd004c000 0 0x2000>;
  101. reg = <0x2000 0 0 0 0>;
  102. #address-cells = <3>;
  103. #size-cells = <2>;
  104. #interrupt-cells = <1>;
  105. ranges;
  106. interrupt-map-mask = <0 0 0 0>;
  107. interrupt-map = <0 0 0 0 &mpic 61>;
  108. marvell,pcie-port = <0>;
  109. marvell,pcie-lane = <3>;
  110. clocks = <&gateclk 8>;
  111. status = "disabled";
  112. };
  113. pcie@5,0 {
  114. device_type = "pci";
  115. assigned-addresses = <0x82002800 0 0xd0080000 0 0x2000>;
  116. reg = <0x2800 0 0 0 0>;
  117. #address-cells = <3>;
  118. #size-cells = <2>;
  119. #interrupt-cells = <1>;
  120. ranges;
  121. interrupt-map-mask = <0 0 0 0>;
  122. interrupt-map = <0 0 0 0 &mpic 62>;
  123. marvell,pcie-port = <1>;
  124. marvell,pcie-lane = <0>;
  125. clocks = <&gateclk 9>;
  126. status = "disabled";
  127. };
  128. pcie@6,0 {
  129. device_type = "pci";
  130. assigned-addresses = <0x82003000 0 0xd0084000 0 0x2000>;
  131. reg = <0x3000 0 0 0 0>;
  132. #address-cells = <3>;
  133. #size-cells = <2>;
  134. #interrupt-cells = <1>;
  135. ranges;
  136. interrupt-map-mask = <0 0 0 0>;
  137. interrupt-map = <0 0 0 0 &mpic 63>;
  138. marvell,pcie-port = <1>;
  139. marvell,pcie-lane = <1>;
  140. clocks = <&gateclk 10>;
  141. status = "disabled";
  142. };
  143. pcie@7,0 {
  144. device_type = "pci";
  145. assigned-addresses = <0x82003800 0 0xd0088000 0 0x2000>;
  146. reg = <0x3800 0 0 0 0>;
  147. #address-cells = <3>;
  148. #size-cells = <2>;
  149. #interrupt-cells = <1>;
  150. ranges;
  151. interrupt-map-mask = <0 0 0 0>;
  152. interrupt-map = <0 0 0 0 &mpic 64>;
  153. marvell,pcie-port = <1>;
  154. marvell,pcie-lane = <2>;
  155. clocks = <&gateclk 11>;
  156. status = "disabled";
  157. };
  158. pcie@8,0 {
  159. device_type = "pci";
  160. assigned-addresses = <0x82004000 0 0xd008c000 0 0x2000>;
  161. reg = <0x4000 0 0 0 0>;
  162. #address-cells = <3>;
  163. #size-cells = <2>;
  164. #interrupt-cells = <1>;
  165. ranges;
  166. interrupt-map-mask = <0 0 0 0>;
  167. interrupt-map = <0 0 0 0 &mpic 65>;
  168. marvell,pcie-port = <1>;
  169. marvell,pcie-lane = <3>;
  170. clocks = <&gateclk 12>;
  171. status = "disabled";
  172. };
  173. pcie@9,0 {
  174. device_type = "pci";
  175. assigned-addresses = <0x82004800 0 0xd0042000 0 0x2000>;
  176. reg = <0x4800 0 0 0 0>;
  177. #address-cells = <3>;
  178. #size-cells = <2>;
  179. #interrupt-cells = <1>;
  180. ranges;
  181. interrupt-map-mask = <0 0 0 0>;
  182. interrupt-map = <0 0 0 0 &mpic 99>;
  183. marvell,pcie-port = <2>;
  184. marvell,pcie-lane = <0>;
  185. clocks = <&gateclk 26>;
  186. status = "disabled";
  187. };
  188. pcie@10,0 {
  189. device_type = "pci";
  190. assigned-addresses = <0x82005000 0 0xd0082000 0 0x2000>;
  191. reg = <0x5000 0 0 0 0>;
  192. #address-cells = <3>;
  193. #size-cells = <2>;
  194. #interrupt-cells = <1>;
  195. ranges;
  196. interrupt-map-mask = <0 0 0 0>;
  197. interrupt-map = <0 0 0 0 &mpic 103>;
  198. marvell,pcie-port = <3>;
  199. marvell,pcie-lane = <0>;
  200. clocks = <&gateclk 27>;
  201. status = "disabled";
  202. };
  203. };