brcm,iproc-pcie.txt 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. * Broadcom iProc PCIe controller with the platform bus interface
  2. Required properties:
  3. - compatible: Must be "brcm,iproc-pcie" for PAXB, or "brcm,iproc-pcie-paxc"
  4. for PAXC. PAXB-based root complex is used for external endpoint devices.
  5. PAXC-based root complex is connected to emulated endpoint devices
  6. internal to the ASIC
  7. - reg: base address and length of the PCIe controller I/O register space
  8. - #interrupt-cells: set to <1>
  9. - interrupt-map-mask and interrupt-map, standard PCI properties to define the
  10. mapping of the PCIe interface to interrupt numbers
  11. - linux,pci-domain: PCI domain ID. Should be unique for each host controller
  12. - bus-range: PCI bus numbers covered
  13. - #address-cells: set to <3>
  14. - #size-cells: set to <2>
  15. - device_type: set to "pci"
  16. - ranges: ranges for the PCI memory and I/O regions
  17. Optional properties:
  18. - phys: phandle of the PCIe PHY device
  19. - phy-names: must be "pcie-phy"
  20. - brcm,pcie-ob: Some iProc SoCs do not have the outbound address mapping done
  21. by the ASIC after power on reset. In this case, SW needs to configure it
  22. If the brcm,pcie-ob property is present, the following properties become
  23. effective:
  24. Required:
  25. - brcm,pcie-ob-axi-offset: The offset from the AXI address to the internal
  26. address used by the iProc PCIe core (not the PCIe address)
  27. - brcm,pcie-ob-window-size: The outbound address mapping window size (in MB)
  28. Optional:
  29. - brcm,pcie-ob-oarr-size: Some iProc SoCs need the OARR size bit to be set to
  30. increase the outbound window size
  31. MSI support (optional):
  32. For older platforms without MSI integrated in the GIC, iProc PCIe core provides
  33. an event queue based MSI support. The iProc MSI uses host memories to store
  34. MSI posted writes in the event queues
  35. - msi-parent: Link to the device node of the MSI controller. On newer iProc
  36. platforms, the MSI controller may be gicv2m or gicv3-its. On older iProc
  37. platforms without MSI support in its interrupt controller, one may use the
  38. event queue based MSI support integrated within the iProc PCIe core.
  39. When the iProc event queue based MSI is used, one needs to define the
  40. following properties in the MSI device node:
  41. - compatible: Must be "brcm,iproc-msi"
  42. - msi-controller: claims itself as an MSI controller
  43. - interrupt-parent: Link to its parent interrupt device
  44. - interrupts: List of interrupt IDs from its parent interrupt device
  45. Optional properties:
  46. - brcm,pcie-msi-inten: Needs to be present for some older iProc platforms that
  47. require the interrupt enable registers to be set explicitly to enable MSI
  48. Example:
  49. pcie0: pcie@18012000 {
  50. compatible = "brcm,iproc-pcie";
  51. reg = <0x18012000 0x1000>;
  52. #interrupt-cells = <1>;
  53. interrupt-map-mask = <0 0 0 0>;
  54. interrupt-map = <0 0 0 0 &gic GIC_SPI 100 IRQ_TYPE_NONE>;
  55. linux,pci-domain = <0>;
  56. bus-range = <0x00 0xff>;
  57. #address-cells = <3>;
  58. #size-cells = <2>;
  59. device_type = "pci";
  60. ranges = <0x81000000 0 0 0x28000000 0 0x00010000
  61. 0x82000000 0 0x20000000 0x20000000 0 0x04000000>;
  62. phys = <&phy 0 5>;
  63. phy-names = "pcie-phy";
  64. brcm,pcie-ob;
  65. brcm,pcie-ob-oarr-size;
  66. brcm,pcie-ob-axi-offset = <0x00000000>;
  67. brcm,pcie-ob-window-size = <256>;
  68. msi-parent = <&msi0>;
  69. /* iProc event queue based MSI */
  70. msi0: msi@18012000 {
  71. compatible = "brcm,iproc-msi";
  72. msi-controller;
  73. interrupt-parent = <&gic>;
  74. interrupts = <GIC_SPI 96 IRQ_TYPE_NONE>,
  75. <GIC_SPI 97 IRQ_TYPE_NONE>,
  76. <GIC_SPI 98 IRQ_TYPE_NONE>,
  77. <GIC_SPI 99 IRQ_TYPE_NONE>,
  78. };
  79. };
  80. pcie1: pcie@18013000 {
  81. compatible = "brcm,iproc-pcie";
  82. reg = <0x18013000 0x1000>;
  83. #interrupt-cells = <1>;
  84. interrupt-map-mask = <0 0 0 0>;
  85. interrupt-map = <0 0 0 0 &gic GIC_SPI 106 IRQ_TYPE_NONE>;
  86. linux,pci-domain = <1>;
  87. bus-range = <0x00 0xff>;
  88. #address-cells = <3>;
  89. #size-cells = <2>;
  90. device_type = "pci";
  91. ranges = <0x81000000 0 0 0x48000000 0 0x00010000
  92. 0x82000000 0 0x40000000 0x40000000 0 0x04000000>;
  93. phys = <&phy 1 6>;
  94. phy-names = "pcie-phy";
  95. };