qcom,pcie.txt 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. * Qualcomm PCI express root complex
  2. - compatible:
  3. Usage: required
  4. Value type: <stringlist>
  5. Definition: Value should contain
  6. - "qcom,pcie-ipq8064" for ipq8064
  7. - "qcom,pcie-apq8064" for apq8064
  8. - "qcom,pcie-apq8084" for apq8084
  9. - reg:
  10. Usage: required
  11. Value type: <prop-encoded-array>
  12. Definition: Register ranges as listed in the reg-names property
  13. - reg-names:
  14. Usage: required
  15. Value type: <stringlist>
  16. Definition: Must include the following entries
  17. - "parf" Qualcomm specific registers
  18. - "dbi" Designware PCIe registers
  19. - "elbi" External local bus interface registers
  20. - "config" PCIe configuration space
  21. - device_type:
  22. Usage: required
  23. Value type: <string>
  24. Definition: Should be "pci". As specified in designware-pcie.txt
  25. - #address-cells:
  26. Usage: required
  27. Value type: <u32>
  28. Definition: Should be 3. As specified in designware-pcie.txt
  29. - #size-cells:
  30. Usage: required
  31. Value type: <u32>
  32. Definition: Should be 2. As specified in designware-pcie.txt
  33. - ranges:
  34. Usage: required
  35. Value type: <prop-encoded-array>
  36. Definition: As specified in designware-pcie.txt
  37. - interrupts:
  38. Usage: required
  39. Value type: <prop-encoded-array>
  40. Definition: MSI interrupt
  41. - interrupt-names:
  42. Usage: required
  43. Value type: <stringlist>
  44. Definition: Should contain "msi"
  45. - #interrupt-cells:
  46. Usage: required
  47. Value type: <u32>
  48. Definition: Should be 1. As specified in designware-pcie.txt
  49. - interrupt-map-mask:
  50. Usage: required
  51. Value type: <prop-encoded-array>
  52. Definition: As specified in designware-pcie.txt
  53. - interrupt-map:
  54. Usage: required
  55. Value type: <prop-encoded-array>
  56. Definition: As specified in designware-pcie.txt
  57. - clocks:
  58. Usage: required
  59. Value type: <prop-encoded-array>
  60. Definition: List of phandle and clock specifier pairs as listed
  61. in clock-names property
  62. - clock-names:
  63. Usage: required
  64. Value type: <stringlist>
  65. Definition: Should contain the following entries
  66. - "iface" Configuration AHB clock
  67. - clock-names:
  68. Usage: required for ipq/apq8064
  69. Value type: <stringlist>
  70. Definition: Should contain the following entries
  71. - "core" Clocks the pcie hw block
  72. - "phy" Clocks the pcie PHY block
  73. - clock-names:
  74. Usage: required for apq8084
  75. Value type: <stringlist>
  76. Definition: Should contain the following entries
  77. - "aux" Auxiliary (AUX) clock
  78. - "bus_master" Master AXI clock
  79. - "bus_slave" Slave AXI clock
  80. - resets:
  81. Usage: required
  82. Value type: <prop-encoded-array>
  83. Definition: List of phandle and reset specifier pairs as listed
  84. in reset-names property
  85. - reset-names:
  86. Usage: required for ipq/apq8064
  87. Value type: <stringlist>
  88. Definition: Should contain the following entries
  89. - "axi" AXI reset
  90. - "ahb" AHB reset
  91. - "por" POR reset
  92. - "pci" PCI reset
  93. - "phy" PHY reset
  94. - reset-names:
  95. Usage: required for apq8084
  96. Value type: <stringlist>
  97. Definition: Should contain the following entries
  98. - "core" Core reset
  99. - power-domains:
  100. Usage: required for apq8084
  101. Value type: <prop-encoded-array>
  102. Definition: A phandle and power domain specifier pair to the
  103. power domain which is responsible for collapsing
  104. and restoring power to the peripheral
  105. - vdda-supply:
  106. Usage: required
  107. Value type: <phandle>
  108. Definition: A phandle to the core analog power supply
  109. - vdda_phy-supply:
  110. Usage: required for ipq/apq8064
  111. Value type: <phandle>
  112. Definition: A phandle to the analog power supply for PHY
  113. - vdda_refclk-supply:
  114. Usage: required for ipq/apq8064
  115. Value type: <phandle>
  116. Definition: A phandle to the analog power supply for IC which generates
  117. reference clock
  118. - phys:
  119. Usage: required for apq8084
  120. Value type: <phandle>
  121. Definition: List of phandle(s) as listed in phy-names property
  122. - phy-names:
  123. Usage: required for apq8084
  124. Value type: <stringlist>
  125. Definition: Should contain "pciephy"
  126. - <name>-gpios:
  127. Usage: optional
  128. Value type: <prop-encoded-array>
  129. Definition: List of phandle and gpio specifier pairs. Should contain
  130. - "perst-gpios" PCIe endpoint reset signal line
  131. - "wake-gpios" PCIe endpoint wake signal line
  132. * Example for ipq/apq8064
  133. pcie@1b500000 {
  134. compatible = "qcom,pcie-apq8064", "qcom,pcie-ipq8064", "snps,dw-pcie";
  135. reg = <0x1b500000 0x1000
  136. 0x1b502000 0x80
  137. 0x1b600000 0x100
  138. 0x0ff00000 0x100000>;
  139. reg-names = "dbi", "elbi", "parf", "config";
  140. device_type = "pci";
  141. linux,pci-domain = <0>;
  142. bus-range = <0x00 0xff>;
  143. num-lanes = <1>;
  144. #address-cells = <3>;
  145. #size-cells = <2>;
  146. ranges = <0x81000000 0 0 0x0fe00000 0 0x00100000 /* I/O */
  147. 0x82000000 0 0 0x08000000 0 0x07e00000>; /* memory */
  148. interrupts = <GIC_SPI 238 IRQ_TYPE_NONE>;
  149. interrupt-names = "msi";
  150. #interrupt-cells = <1>;
  151. interrupt-map-mask = <0 0 0 0x7>;
  152. interrupt-map = <0 0 0 1 &intc 0 36 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
  153. <0 0 0 2 &intc 0 37 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
  154. <0 0 0 3 &intc 0 38 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
  155. <0 0 0 4 &intc 0 39 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
  156. clocks = <&gcc PCIE_A_CLK>,
  157. <&gcc PCIE_H_CLK>,
  158. <&gcc PCIE_PHY_CLK>;
  159. clock-names = "core", "iface", "phy";
  160. resets = <&gcc PCIE_ACLK_RESET>,
  161. <&gcc PCIE_HCLK_RESET>,
  162. <&gcc PCIE_POR_RESET>,
  163. <&gcc PCIE_PCI_RESET>,
  164. <&gcc PCIE_PHY_RESET>;
  165. reset-names = "axi", "ahb", "por", "pci", "phy";
  166. pinctrl-0 = <&pcie_pins_default>;
  167. pinctrl-names = "default";
  168. };
  169. * Example for apq8084
  170. pcie0@fc520000 {
  171. compatible = "qcom,pcie-apq8084", "snps,dw-pcie";
  172. reg = <0xfc520000 0x2000>,
  173. <0xff000000 0x1000>,
  174. <0xff001000 0x1000>,
  175. <0xff002000 0x2000>;
  176. reg-names = "parf", "dbi", "elbi", "config";
  177. device_type = "pci";
  178. linux,pci-domain = <0>;
  179. bus-range = <0x00 0xff>;
  180. num-lanes = <1>;
  181. #address-cells = <3>;
  182. #size-cells = <2>;
  183. ranges = <0x81000000 0 0 0xff200000 0 0x00100000 /* I/O */
  184. 0x82000000 0 0x00300000 0xff300000 0 0x00d00000>; /* memory */
  185. interrupts = <GIC_SPI 243 IRQ_TYPE_NONE>;
  186. interrupt-names = "msi";
  187. #interrupt-cells = <1>;
  188. interrupt-map-mask = <0 0 0 0x7>;
  189. interrupt-map = <0 0 0 1 &intc 0 244 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
  190. <0 0 0 2 &intc 0 245 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
  191. <0 0 0 3 &intc 0 247 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
  192. <0 0 0 4 &intc 0 248 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
  193. clocks = <&gcc GCC_PCIE_0_CFG_AHB_CLK>,
  194. <&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
  195. <&gcc GCC_PCIE_0_SLV_AXI_CLK>,
  196. <&gcc GCC_PCIE_0_AUX_CLK>;
  197. clock-names = "iface", "master_bus", "slave_bus", "aux";
  198. resets = <&gcc GCC_PCIE_0_BCR>;
  199. reset-names = "core";
  200. power-domains = <&gcc PCIE0_GDSC>;
  201. vdda-supply = <&pma8084_l3>;
  202. phys = <&pciephy0>;
  203. phy-names = "pciephy";
  204. perst-gpio = <&tlmm 70 GPIO_ACTIVE_LOW>;
  205. pinctrl-0 = <&pcie0_pins_default>;
  206. pinctrl-names = "default";
  207. };