[PATCH 7/7] PCI: designware: split samsung and fsl bindings

Tim Harvey tharvey at gateworks.com
Fri Feb 28 15:23:15 EST 2014


On Fri, Feb 28, 2014 at 9:28 AM, Lucas Stach <l.stach at pengutronix.de> wrote:
> The glue around the core designware IP is
> significantly different between the Exynos and
> i.MX, which is reflected in the DT bindings.
>
> Note that this patch doesn't change any bindings,
> but just alters the documentation to match reality
> of deployed DTs and kernels.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
> ---
>  .../devicetree/bindings/pci/designware-pcie.txt    | 69 +--------------------
>  .../devicetree/bindings/pci/fsl,imx6q-pcie.txt     | 48 +++++++++++++++
>  .../bindings/pci/samsung,exynos5440-pcie.txt       | 70 ++++++++++++++++++++++
>  3 files changed, 119 insertions(+), 68 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
>  create mode 100644 Documentation/devicetree/bindings/pci/samsung,exynos5440-pcie.txt
>
> diff --git a/Documentation/devicetree/bindings/pci/designware-pcie.txt b/Documentation/devicetree/bindings/pci/designware-pcie.txt
> index d6fae13ff062..8274c80fe874 100644
> --- a/Documentation/devicetree/bindings/pci/designware-pcie.txt
> +++ b/Documentation/devicetree/bindings/pci/designware-pcie.txt
> @@ -1,15 +1,7 @@
>  * Synopsys Designware PCIe interface
>
>  Required properties:
> -- compatible: should contain "snps,dw-pcie" to identify the
> -       core, plus an identifier for the specific instance, such
> -       as "samsung,exynos5440-pcie" or "fsl,imx6q-pcie".
> -- reg: base addresses and lengths of the pcie controller,
> -       the phy controller, additional register for the phy controller.
> -- interrupts: interrupt values for level interrupt,
> -       pulse interrupt, special interrupt.
> -- clocks: from common clock binding: handle to pci clock.
> -- clock-names: from common clock binding: should be "pcie" and "pcie_bus".
> +- compatible: should contain "snps,dw-pcie" to identify the core.
>  - #address-cells: set to <3>
>  - #size-cells: set to <2>
>  - device_type: set to "pci"
> @@ -22,62 +14,3 @@ Required properties:
>
>  Optional properties:
>  - reset-gpio: gpio pin number of power good signal
> -
> -Optional properties for fsl,imx6q-pcie
> -- power-on-gpio: gpio pin number of power-enable signal
> -- wake-up-gpio: gpio pin number of incoming wakeup signal
> -- disable-gpio: gpio pin number of outgoing rfkill/endpoint disable signal
> -
> -Example:
> -
> -SoC specific DT Entry:
> -
> -       pcie at 290000 {
> -               compatible = "samsung,exynos5440-pcie", "snps,dw-pcie";
> -               reg = <0x290000 0x1000
> -                       0x270000 0x1000
> -                       0x271000 0x40>;
> -               interrupts = <0 20 0>, <0 21 0>, <0 22 0>;
> -               clocks = <&clock 28>, <&clock 27>;
> -               clock-names = "pcie", "pcie_bus";
> -               #address-cells = <3>;
> -               #size-cells = <2>;
> -               device_type = "pci";
> -               ranges = <0x00000800 0 0x40000000 0x40000000 0 0x00001000   /* configuration space */
> -                         0x81000000 0 0          0x40001000 0 0x00010000   /* downstream I/O */
> -                         0x82000000 0 0x40011000 0x40011000 0 0x1ffef000>; /* non-prefetchable memory */
> -               #interrupt-cells = <1>;
> -               interrupt-map-mask = <0 0 0 0>;
> -               interrupt-map = <0x0 0 &gic 53>;
> -               num-lanes = <4>;
> -       };
> -
> -       pcie at 2a0000 {
> -               compatible = "samsung,exynos5440-pcie", "snps,dw-pcie";
> -               reg = <0x2a0000 0x1000
> -                       0x272000 0x1000
> -                       0x271040 0x40>;
> -               interrupts = <0 23 0>, <0 24 0>, <0 25 0>;
> -               clocks = <&clock 29>, <&clock 27>;
> -               clock-names = "pcie", "pcie_bus";
> -               #address-cells = <3>;
> -               #size-cells = <2>;
> -               device_type = "pci";
> -               ranges = <0x00000800 0 0x60000000 0x60000000 0 0x00001000   /* configuration space */
> -                         0x81000000 0 0          0x60001000 0 0x00010000   /* downstream I/O */
> -                         0x82000000 0 0x60011000 0x60011000 0 0x1ffef000>; /* non-prefetchable memory */
> -               #interrupt-cells = <1>;
> -               interrupt-map-mask = <0 0 0 0>;
> -               interrupt-map = <0x0 0 &gic 56>;
> -               num-lanes = <4>;
> -       };
> -
> -Board specific DT Entry:
> -
> -       pcie at 290000 {
> -               reset-gpio = <&pin_ctrl 5 0>;
> -       };
> -
> -       pcie at 2a0000 {
> -               reset-gpio = <&pin_ctrl 22 0>;
> -       };
> 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..93fbfd62f13c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
> @@ -0,0 +1,48 @@
> +* Freescale i.MX6 PCIe interface
> +
> +This PCIe host controller is based on the Synopsis Designware PCIe IP
> +and thus inherits all the common properties defined in designware-pcie.txt.
> +
> +Required properties:
> +- compatible: "fsl,imx6q-pcie"
> +- reg: base addresse and length of the pcie controller
> +- interrupts: First entry must contain interrupt handle for controller
> +  INTA output.
> +- clocks: Must contain an entry for each entry in clock-names.
> +       See ../clocks/clock-bindings.txt for details.
> +- clock-names: Must include the following entries:
> +       - "pcie_ref_125m"
> +       - "sata_ref_100m"
> +       - "lvds_gate"
> +       - "pcie_axi"
> +
> +Optional properties:
> +- power-on-gpio: gpio pin number of power-enable signal
> +- wake-up-gpio:  gpio pin number of incoming wakeup signal
> +- disable-gpio:  gpio pin number of outgoing rfkill/endpoint disable signal
> +
> +Example:
> +
> +       pcie at 0x01000000 {
> +               compatible = "fsl,imx6q-pcie", "snps,dw-pcie";
> +               reg = <0x01ffc000 0x4000>;
> +               #address-cells = <3>;
> +               #size-cells = <2>;
> +               device_type = "pci";
> +               ranges = <0x00000800 0 0x01f00000 0x01f00000 0 0x00080000
> +                         0x81000000 0 0          0x01f80000 0 0x00010000
> +                         0x82000000 0 0x01000000 0x01000000 0 0x00f00000>;
> +               num-lanes = <1>;
> +
> +               interrupts = <0 123 0x04>;

Lucas,

I'm still trying to understand DT interrupt specification and mapping.
 Should this be:

interrupts = <0 123 IRQ_TYPE_LEVEL_HIGH>

It seems there is a lot of mixed use of numbers vs defines from
linux/include/dt-bindings in dts files for both gpio and interrupt
levels.

Thanks,

Tim

> +
> +               #interrupt-cells = <1>;
> +               interrupt-map-mask = <0 0 0 0x7>;
> +               interrupt-map = <0 0 0 1 &intc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
> +                               <0 0 0 2 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
> +                               <0 0 0 3 &intc GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
> +                               <0 0 0 4 &intc GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
> +
> +               clocks = <&clks 189>, <&clks 187>, <&clks 206>, <&clks 144>;
> +               clock-names = "pcie_ref_125m", "sata_ref_100m", "lvds_gate", "pcie_axi";
> +       };
> 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..0b4de1014876
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pci/samsung,exynos5440-pcie.txt
> @@ -0,0 +1,70 @@
> +* Samsung Exynos 5440 PCIe interface
> +
> +This PCIe host controller is based on the Synopsis Designware PCIe IP
> +and thus inherits all the common properties defined in designware-pcie.txt.
> +
> +Required properties:
> +- compatible: "samsung,exynos5440-pcie"
> +- reg: base addresses and lengths of the pcie controller,
> +       the phy controller, additional register for the phy controller.
> +- interrupts: A list of interrupt outputs for level interrupt,
> +       pulse interrupt, special interrupt.
> +- clocks: Must contain an entry for each entry in clock-names.
> +       See ../clocks/clock-bindings.txt for details.
> +- clock-names: Must include the following entries:
> +       - "pcie"
> +       - "pcie_bus"
> +
> +Example:
> +
> +SoC specific DT Entry:
> +
> +       pcie at 290000 {
> +               compatible = "samsung,exynos5440-pcie", "snps,dw-pcie";
> +               reg = <0x290000 0x1000
> +                       0x270000 0x1000
> +                       0x271000 0x40>;
> +               interrupts = <0 20 0>, <0 21 0>, <0 22 0>;
> +               clocks = <&clock 28>, <&clock 27>;
> +               clock-names = "pcie", "pcie_bus";
> +               #address-cells = <3>;
> +               #size-cells = <2>;
> +               device_type = "pci";
> +               ranges = <0x00000800 0 0x40000000 0x40000000 0 0x00001000   /* configuration space */
> +                         0x81000000 0 0          0x40001000 0 0x00010000   /* downstream I/O */
> +                         0x82000000 0 0x40011000 0x40011000 0 0x1ffef000>; /* non-prefetchable memory */
> +               #interrupt-cells = <1>;
> +               interrupt-map-mask = <0 0 0 0>;
> +               interrupt-map = <0 0 0 0 &gic GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
> +               num-lanes = <4>;
> +       };
> +
> +       pcie at 2a0000 {
> +               compatible = "samsung,exynos5440-pcie", "snps,dw-pcie";
> +               reg = <0x2a0000 0x1000
> +                       0x272000 0x1000
> +                       0x271040 0x40>;
> +               interrupts = <0 23 0>, <0 24 0>, <0 25 0>;
> +               clocks = <&clock 29>, <&clock 27>;
> +               clock-names = "pcie", "pcie_bus";
> +               #address-cells = <3>;
> +               #size-cells = <2>;
> +               device_type = "pci";
> +               ranges = <0x00000800 0 0x60000000 0x60000000 0 0x00001000   /* configuration space */
> +                         0x81000000 0 0          0x60001000 0 0x00010000   /* downstream I/O */
> +                         0x82000000 0 0x60011000 0x60011000 0 0x1ffef000>; /* non-prefetchable memory */
> +               #interrupt-cells = <1>;
> +               interrupt-map-mask = <0 0 0 0>;
> +               interrupt-map = <0 0 0 0 &gic GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
> +               num-lanes = <4>;
> +       };
> +
> +Board specific DT Entry:
> +
> +       pcie at 290000 {
> +               reset-gpio = <&pin_ctrl 5 0>;
> +       };
> +
> +       pcie at 2a0000 {
> +               reset-gpio = <&pin_ctrl 22 0>;
> +       };
> --
> 1.8.5.3
>



More information about the linux-arm-kernel mailing list