mvebu-pci.txt 6.2 KB

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