Freescale Layerscape PCIe controller

This PCIe host controller is based on the Synopsys DesignWare PCIe IP
and thus inherits all the common properties defined in snps,dw-pcie.yaml.

This controller derives its clocks from the Reset Configuration Word (RCW)
which is used to describe the PLL settings at the time of chip-reset.

Also as per the available Reference Manuals, there is no specific 'version'
register available in the Freescale PCIe controller register set,
which can allow determining the underlying DesignWare PCIe controller version
information.

Required properties:
- compatible: should contain the platform identifier such as:
  RC mode:
        "fsl,ls1021a-pcie"
        "fsl,ls2080a-pcie", "fsl,ls2085a-pcie"
        "fsl,ls2088a-pcie"
        "fsl,ls1088a-pcie"
        "fsl,ls1046a-pcie"
        "fsl,ls1043a-pcie"
        "fsl,ls1012a-pcie"
        "fsl,ls1028a-pcie"
  EP mode:
	"fsl,ls1028a-pcie-ep", "fsl,ls-pcie-ep"
	"fsl,ls1046a-pcie-ep", "fsl,ls-pcie-ep"
	"fsl,ls1088a-pcie-ep", "fsl,ls-pcie-ep"
	"fsl,ls2088a-pcie-ep", "fsl,ls-pcie-ep"
	"fsl,lx2160ar2-pcie-ep", "fsl,ls-pcie-ep"
- reg: base addresses and lengths of the PCIe controller register blocks.
- interrupts: A list of interrupt outputs of the controller. Must contain an
  entry for each entry in the interrupt-names property.
- interrupt-names: It could include the following entries:
  "aer": Used for interrupt line which reports AER events when
	 non MSI/MSI-X/INTx mode is used
  "pme": Used for interrupt line which reports PME events when
	 non MSI/MSI-X/INTx mode is used
  "intr": Used for SoCs(like ls2080a, lx2160a, ls2080a, ls2088a, ls1088a)
	  which has a single interrupt line for miscellaneous controller
	  events(could include AER and PME events).
- fsl,pcie-scfg: Must include two entries.
  The first entry must be a link to the SCFG device node
  The second entry is the physical PCIe controller index starting from '0'.
  This is used to get SCFG PEXN registers
- dma-coherent: Indicates that the hardware IP block can ensure the coherency
  of the data transferred from/to the IP block. This can avoid the software
  cache flush/invalid actions, and improve the performance significantly.

Optional properties:
- big-endian: If the PEX_LUT and PF register block is in big-endian, specify
  this property.

Example:

        pcie@3400000 {
                compatible = "fsl,ls1088a-pcie";
                reg = <0x00 0x03400000 0x0 0x00100000>, /* controller registers */
                      <0x20 0x00000000 0x0 0x00002000>; /* configuration space */
                reg-names = "regs", "config";
                interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>; /* aer interrupt */
                interrupt-names = "aer";
                #address-cells = <3>;
                #size-cells = <2>;
                device_type = "pci";
                dma-coherent;
                num-viewport = <256>;
                bus-range = <0x0 0xff>;
                ranges = <0x81000000 0x0 0x00000000 0x20 0x00010000 0x0 0x00010000   /* downstream I/O */
                          0x82000000 0x0 0x40000000 0x20 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
                msi-parent = <&its>;
                #interrupt-cells = <1>;
                interrupt-map-mask = <0 0 0 7>;
                interrupt-map = <0000 0 0 1 &gic 0 0 0 109 IRQ_TYPE_LEVEL_HIGH>,
                                <0000 0 0 2 &gic 0 0 0 110 IRQ_TYPE_LEVEL_HIGH>,
                                <0000 0 0 3 &gic 0 0 0 111 IRQ_TYPE_LEVEL_HIGH>,
                                <0000 0 0 4 &gic 0 0 0 112 IRQ_TYPE_LEVEL_HIGH>;
                iommu-map = <0 &smmu 0 1>; /* Fixed-up by bootloader */
        };
