qcom,pcie.txt 8.2 KB

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