162306a36Sopenharmony_ciFreescale Layerscape PCIe controller
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciThis PCIe host controller is based on the Synopsys DesignWare PCIe IP
462306a36Sopenharmony_ciand thus inherits all the common properties defined in snps,dw-pcie.yaml.
562306a36Sopenharmony_ci
662306a36Sopenharmony_ciThis controller derives its clocks from the Reset Configuration Word (RCW)
762306a36Sopenharmony_ciwhich is used to describe the PLL settings at the time of chip-reset.
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciAlso as per the available Reference Manuals, there is no specific 'version'
1062306a36Sopenharmony_ciregister available in the Freescale PCIe controller register set,
1162306a36Sopenharmony_ciwhich can allow determining the underlying DesignWare PCIe controller version
1262306a36Sopenharmony_ciinformation.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciRequired properties:
1562306a36Sopenharmony_ci- compatible: should contain the platform identifier such as:
1662306a36Sopenharmony_ci  RC mode:
1762306a36Sopenharmony_ci        "fsl,ls1021a-pcie"
1862306a36Sopenharmony_ci        "fsl,ls2080a-pcie", "fsl,ls2085a-pcie"
1962306a36Sopenharmony_ci        "fsl,ls2088a-pcie"
2062306a36Sopenharmony_ci        "fsl,ls1088a-pcie"
2162306a36Sopenharmony_ci        "fsl,ls1046a-pcie"
2262306a36Sopenharmony_ci        "fsl,ls1043a-pcie"
2362306a36Sopenharmony_ci        "fsl,ls1012a-pcie"
2462306a36Sopenharmony_ci        "fsl,ls1028a-pcie"
2562306a36Sopenharmony_ci  EP mode:
2662306a36Sopenharmony_ci	"fsl,ls1028a-pcie-ep", "fsl,ls-pcie-ep"
2762306a36Sopenharmony_ci	"fsl,ls1046a-pcie-ep", "fsl,ls-pcie-ep"
2862306a36Sopenharmony_ci	"fsl,ls1088a-pcie-ep", "fsl,ls-pcie-ep"
2962306a36Sopenharmony_ci	"fsl,ls2088a-pcie-ep", "fsl,ls-pcie-ep"
3062306a36Sopenharmony_ci	"fsl,lx2160ar2-pcie-ep", "fsl,ls-pcie-ep"
3162306a36Sopenharmony_ci- reg: base addresses and lengths of the PCIe controller register blocks.
3262306a36Sopenharmony_ci- interrupts: A list of interrupt outputs of the controller. Must contain an
3362306a36Sopenharmony_ci  entry for each entry in the interrupt-names property.
3462306a36Sopenharmony_ci- interrupt-names: It could include the following entries:
3562306a36Sopenharmony_ci  "aer": Used for interrupt line which reports AER events when
3662306a36Sopenharmony_ci	 non MSI/MSI-X/INTx mode is used
3762306a36Sopenharmony_ci  "pme": Used for interrupt line which reports PME events when
3862306a36Sopenharmony_ci	 non MSI/MSI-X/INTx mode is used
3962306a36Sopenharmony_ci  "intr": Used for SoCs(like ls2080a, lx2160a, ls2080a, ls2088a, ls1088a)
4062306a36Sopenharmony_ci	  which has a single interrupt line for miscellaneous controller
4162306a36Sopenharmony_ci	  events(could include AER and PME events).
4262306a36Sopenharmony_ci- fsl,pcie-scfg: Must include two entries.
4362306a36Sopenharmony_ci  The first entry must be a link to the SCFG device node
4462306a36Sopenharmony_ci  The second entry is the physical PCIe controller index starting from '0'.
4562306a36Sopenharmony_ci  This is used to get SCFG PEXN registers
4662306a36Sopenharmony_ci- dma-coherent: Indicates that the hardware IP block can ensure the coherency
4762306a36Sopenharmony_ci  of the data transferred from/to the IP block. This can avoid the software
4862306a36Sopenharmony_ci  cache flush/invalid actions, and improve the performance significantly.
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciOptional properties:
5162306a36Sopenharmony_ci- big-endian: If the PEX_LUT and PF register block is in big-endian, specify
5262306a36Sopenharmony_ci  this property.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciExample:
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci        pcie@3400000 {
5762306a36Sopenharmony_ci                compatible = "fsl,ls1088a-pcie";
5862306a36Sopenharmony_ci                reg = <0x00 0x03400000 0x0 0x00100000>, /* controller registers */
5962306a36Sopenharmony_ci                      <0x20 0x00000000 0x0 0x00002000>; /* configuration space */
6062306a36Sopenharmony_ci                reg-names = "regs", "config";
6162306a36Sopenharmony_ci                interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>; /* aer interrupt */
6262306a36Sopenharmony_ci                interrupt-names = "aer";
6362306a36Sopenharmony_ci                #address-cells = <3>;
6462306a36Sopenharmony_ci                #size-cells = <2>;
6562306a36Sopenharmony_ci                device_type = "pci";
6662306a36Sopenharmony_ci                dma-coherent;
6762306a36Sopenharmony_ci                num-viewport = <256>;
6862306a36Sopenharmony_ci                bus-range = <0x0 0xff>;
6962306a36Sopenharmony_ci                ranges = <0x81000000 0x0 0x00000000 0x20 0x00010000 0x0 0x00010000   /* downstream I/O */
7062306a36Sopenharmony_ci                          0x82000000 0x0 0x40000000 0x20 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
7162306a36Sopenharmony_ci                msi-parent = <&its>;
7262306a36Sopenharmony_ci                #interrupt-cells = <1>;
7362306a36Sopenharmony_ci                interrupt-map-mask = <0 0 0 7>;
7462306a36Sopenharmony_ci                interrupt-map = <0000 0 0 1 &gic 0 0 0 109 IRQ_TYPE_LEVEL_HIGH>,
7562306a36Sopenharmony_ci                                <0000 0 0 2 &gic 0 0 0 110 IRQ_TYPE_LEVEL_HIGH>,
7662306a36Sopenharmony_ci                                <0000 0 0 3 &gic 0 0 0 111 IRQ_TYPE_LEVEL_HIGH>,
7762306a36Sopenharmony_ci                                <0000 0 0 4 &gic 0 0 0 112 IRQ_TYPE_LEVEL_HIGH>;
7862306a36Sopenharmony_ci                iommu-map = <0 &smmu 0 1>; /* Fixed-up by bootloader */
7962306a36Sopenharmony_ci        };
80