diff options
3 files changed, 109 insertions, 68 deletions
diff --git a/Documentation/devicetree/bindings/pci/designware-pcie.txt b/Documentation/devicetree/bindings/pci/designware-pcie.txt index d6fae13ff062..d0d15ee42834 100644 --- a/Documentation/devicetree/bindings/pci/designware-pcie.txt +++ b/Documentation/devicetree/bindings/pci/designware-pcie.txt | |||
| @@ -1,15 +1,7 @@ | |||
| 1 | * Synopsys Designware PCIe interface | 1 | * Synopsys Designware PCIe interface |
| 2 | 2 | ||
| 3 | Required properties: | 3 | Required properties: |
| 4 | - compatible: should contain "snps,dw-pcie" to identify the | 4 | - compatible: should contain "snps,dw-pcie" to identify the core. |
| 5 | core, plus an identifier for the specific instance, such | ||
| 6 | as "samsung,exynos5440-pcie" or "fsl,imx6q-pcie". | ||
| 7 | - reg: base addresses and lengths of the pcie controller, | ||
| 8 | the phy controller, additional register for the phy controller. | ||
| 9 | - interrupts: interrupt values for level interrupt, | ||
| 10 | pulse interrupt, special interrupt. | ||
| 11 | - clocks: from common clock binding: handle to pci clock. | ||
| 12 | - clock-names: from common clock binding: should be "pcie" and "pcie_bus". | ||
| 13 | - #address-cells: set to <3> | 5 | - #address-cells: set to <3> |
| 14 | - #size-cells: set to <2> | 6 | - #size-cells: set to <2> |
| 15 | - device_type: set to "pci" | 7 | - device_type: set to "pci" |
| @@ -19,65 +11,11 @@ Required properties: | |||
| 19 | to define the mapping of the PCIe interface to interrupt | 11 | to define the mapping of the PCIe interface to interrupt |
| 20 | numbers. | 12 | numbers. |
| 21 | - num-lanes: number of lanes to use | 13 | - num-lanes: number of lanes to use |
| 14 | - clocks: Must contain an entry for each entry in clock-names. | ||
| 15 | See ../clocks/clock-bindings.txt for details. | ||
| 16 | - clock-names: Must include the following entries: | ||
| 17 | - "pcie" | ||
| 18 | - "pcie_bus" | ||
| 22 | 19 | ||
| 23 | Optional properties: | 20 | Optional properties: |
| 24 | - reset-gpio: gpio pin number of power good signal | 21 | - reset-gpio: gpio pin number of power good signal |
| 25 | |||
| 26 | Optional properties for fsl,imx6q-pcie | ||
| 27 | - power-on-gpio: gpio pin number of power-enable signal | ||
| 28 | - wake-up-gpio: gpio pin number of incoming wakeup signal | ||
| 29 | - disable-gpio: gpio pin number of outgoing rfkill/endpoint disable signal | ||
| 30 | |||
| 31 | Example: | ||
| 32 | |||
| 33 | SoC specific DT Entry: | ||
| 34 | |||
| 35 | pcie@290000 { | ||
| 36 | compatible = "samsung,exynos5440-pcie", "snps,dw-pcie"; | ||
| 37 | reg = <0x290000 0x1000 | ||
| 38 | 0x270000 0x1000 | ||
| 39 | 0x271000 0x40>; | ||
| 40 | interrupts = <0 20 0>, <0 21 0>, <0 22 0>; | ||
| 41 | clocks = <&clock 28>, <&clock 27>; | ||
| 42 | clock-names = "pcie", "pcie_bus"; | ||
| 43 | #address-cells = <3>; | ||
| 44 | #size-cells = <2>; | ||
| 45 | device_type = "pci"; | ||
| 46 | ranges = <0x00000800 0 0x40000000 0x40000000 0 0x00001000 /* configuration space */ | ||
| 47 | 0x81000000 0 0 0x40001000 0 0x00010000 /* downstream I/O */ | ||
| 48 | 0x82000000 0 0x40011000 0x40011000 0 0x1ffef000>; /* non-prefetchable memory */ | ||
| 49 | #interrupt-cells = <1>; | ||
| 50 | interrupt-map-mask = <0 0 0 0>; | ||
| 51 | interrupt-map = <0x0 0 &gic 53>; | ||
| 52 | num-lanes = <4>; | ||
| 53 | }; | ||
| 54 | |||
| 55 | pcie@2a0000 { | ||
| 56 | compatible = "samsung,exynos5440-pcie", "snps,dw-pcie"; | ||
| 57 | reg = <0x2a0000 0x1000 | ||
| 58 | 0x272000 0x1000 | ||
| 59 | 0x271040 0x40>; | ||
| 60 | interrupts = <0 23 0>, <0 24 0>, <0 25 0>; | ||
| 61 | clocks = <&clock 29>, <&clock 27>; | ||
| 62 | clock-names = "pcie", "pcie_bus"; | ||
| 63 | #address-cells = <3>; | ||
| 64 | #size-cells = <2>; | ||
| 65 | device_type = "pci"; | ||
| 66 | ranges = <0x00000800 0 0x60000000 0x60000000 0 0x00001000 /* configuration space */ | ||
| 67 | 0x81000000 0 0 0x60001000 0 0x00010000 /* downstream I/O */ | ||
| 68 | 0x82000000 0 0x60011000 0x60011000 0 0x1ffef000>; /* non-prefetchable memory */ | ||
| 69 | #interrupt-cells = <1>; | ||
| 70 | interrupt-map-mask = <0 0 0 0>; | ||
| 71 | interrupt-map = <0x0 0 &gic 56>; | ||
| 72 | num-lanes = <4>; | ||
| 73 | }; | ||
| 74 | |||
| 75 | Board specific DT Entry: | ||
| 76 | |||
| 77 | pcie@290000 { | ||
| 78 | reset-gpio = <&pin_ctrl 5 0>; | ||
| 79 | }; | ||
| 80 | |||
| 81 | pcie@2a0000 { | ||
| 82 | reset-gpio = <&pin_ctrl 22 0>; | ||
| 83 | }; | ||
diff --git a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt new file mode 100644 index 000000000000..9455fd0ec830 --- /dev/null +++ b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt | |||
| @@ -0,0 +1,38 @@ | |||
| 1 | * Freescale i.MX6 PCIe interface | ||
| 2 | |||
| 3 | This PCIe host controller is based on the Synopsis Designware PCIe IP | ||
| 4 | and thus inherits all the common properties defined in designware-pcie.txt. | ||
| 5 | |||
| 6 | Required properties: | ||
| 7 | - compatible: "fsl,imx6q-pcie" | ||
| 8 | - reg: base addresse and length of the pcie controller | ||
| 9 | - interrupts: A list of interrupt outputs of the controller. Must contain an | ||
| 10 | entry for each entry in the interrupt-names property. | ||
| 11 | - interrupt-names: Must include the following entries: | ||
| 12 | - "msi": The interrupt that is asserted when an MSI is received | ||
| 13 | - clock-names: Must include the following additional entries: | ||
| 14 | - "pcie_phy" | ||
| 15 | |||
| 16 | Example: | ||
| 17 | |||
| 18 | pcie@0x01000000 { | ||
| 19 | compatible = "fsl,imx6q-pcie", "snps,dw-pcie"; | ||
| 20 | reg = <0x01ffc000 0x4000>; | ||
| 21 | #address-cells = <3>; | ||
| 22 | #size-cells = <2>; | ||
| 23 | device_type = "pci"; | ||
| 24 | ranges = <0x00000800 0 0x01f00000 0x01f00000 0 0x00080000 | ||
| 25 | 0x81000000 0 0 0x01f80000 0 0x00010000 | ||
| 26 | 0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; | ||
| 27 | num-lanes = <1>; | ||
| 28 | interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; | ||
| 29 | interrupt-names = "msi"; | ||
| 30 | #interrupt-cells = <1>; | ||
| 31 | interrupt-map-mask = <0 0 0 0x7>; | ||
| 32 | interrupt-map = <0 0 0 1 &intc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, | ||
| 33 | <0 0 0 2 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>, | ||
| 34 | <0 0 0 3 &intc GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>, | ||
| 35 | <0 0 0 4 &intc GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; | ||
| 36 | clocks = <&clks 144>, <&clks 206>, <&clks 189>; | ||
| 37 | clock-names = "pcie", "pcie_bus", "pcie_phy"; | ||
| 38 | }; | ||
diff --git a/Documentation/devicetree/bindings/pci/samsung,exynos5440-pcie.txt b/Documentation/devicetree/bindings/pci/samsung,exynos5440-pcie.txt new file mode 100644 index 000000000000..4f9d23d2ed67 --- /dev/null +++ b/Documentation/devicetree/bindings/pci/samsung,exynos5440-pcie.txt | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | * Samsung Exynos 5440 PCIe interface | ||
| 2 | |||
| 3 | This PCIe host controller is based on the Synopsis Designware PCIe IP | ||
| 4 | and thus inherits all the common properties defined in designware-pcie.txt. | ||
| 5 | |||
| 6 | Required properties: | ||
| 7 | - compatible: "samsung,exynos5440-pcie" | ||
| 8 | - reg: base addresses and lengths of the pcie controller, | ||
| 9 | the phy controller, additional register for the phy controller. | ||
| 10 | - interrupts: A list of interrupt outputs for level interrupt, | ||
| 11 | pulse interrupt, special interrupt. | ||
| 12 | |||
| 13 | Example: | ||
| 14 | |||
| 15 | SoC specific DT Entry: | ||
| 16 | |||
| 17 | pcie@290000 { | ||
| 18 | compatible = "samsung,exynos5440-pcie", "snps,dw-pcie"; | ||
| 19 | reg = <0x290000 0x1000 | ||
| 20 | 0x270000 0x1000 | ||
| 21 | 0x271000 0x40>; | ||
| 22 | interrupts = <0 20 0>, <0 21 0>, <0 22 0>; | ||
| 23 | clocks = <&clock 28>, <&clock 27>; | ||
| 24 | clock-names = "pcie", "pcie_bus"; | ||
| 25 | #address-cells = <3>; | ||
| 26 | #size-cells = <2>; | ||
| 27 | device_type = "pci"; | ||
| 28 | ranges = <0x00000800 0 0x40000000 0x40000000 0 0x00001000 /* configuration space */ | ||
| 29 | 0x81000000 0 0 0x40001000 0 0x00010000 /* downstream I/O */ | ||
| 30 | 0x82000000 0 0x40011000 0x40011000 0 0x1ffef000>; /* non-prefetchable memory */ | ||
| 31 | #interrupt-cells = <1>; | ||
| 32 | interrupt-map-mask = <0 0 0 0>; | ||
| 33 | interrupt-map = <0 0 0 0 &gic GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; | ||
| 34 | num-lanes = <4>; | ||
| 35 | }; | ||
| 36 | |||
| 37 | pcie@2a0000 { | ||
| 38 | compatible = "samsung,exynos5440-pcie", "snps,dw-pcie"; | ||
| 39 | reg = <0x2a0000 0x1000 | ||
| 40 | 0x272000 0x1000 | ||
| 41 | 0x271040 0x40>; | ||
| 42 | interrupts = <0 23 0>, <0 24 0>, <0 25 0>; | ||
| 43 | clocks = <&clock 29>, <&clock 27>; | ||
| 44 | clock-names = "pcie", "pcie_bus"; | ||
| 45 | #address-cells = <3>; | ||
| 46 | #size-cells = <2>; | ||
| 47 | device_type = "pci"; | ||
| 48 | ranges = <0x00000800 0 0x60000000 0x60000000 0 0x00001000 /* configuration space */ | ||
| 49 | 0x81000000 0 0 0x60001000 0 0x00010000 /* downstream I/O */ | ||
| 50 | 0x82000000 0 0x60011000 0x60011000 0 0x1ffef000>; /* non-prefetchable memory */ | ||
| 51 | #interrupt-cells = <1>; | ||
| 52 | interrupt-map-mask = <0 0 0 0>; | ||
| 53 | interrupt-map = <0 0 0 0 &gic GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>; | ||
| 54 | num-lanes = <4>; | ||
| 55 | }; | ||
| 56 | |||
| 57 | Board specific DT Entry: | ||
| 58 | |||
| 59 | pcie@290000 { | ||
| 60 | reset-gpio = <&pin_ctrl 5 0>; | ||
| 61 | }; | ||
| 62 | |||
| 63 | pcie@2a0000 { | ||
| 64 | reset-gpio = <&pin_ctrl 22 0>; | ||
| 65 | }; | ||
