2014-11-05 16:45:11 +08:00
|
|
|
Freescale Layerscape PCIe controller
|
|
|
|
|
2015-10-16 15:19:19 +08:00
|
|
|
This PCIe host controller is based on the Synopsys DesignWare PCIe IP
|
2021-07-18 19:40:50 +08:00
|
|
|
and thus inherits all the common properties defined in snps,dw-pcie.yaml.
|
2014-11-05 16:45:11 +08:00
|
|
|
|
2015-10-16 15:19:19 +08:00
|
|
|
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.
|
|
|
|
|
2014-11-05 16:45:11 +08:00
|
|
|
Required properties:
|
2015-10-16 15:19:19 +08:00
|
|
|
- compatible: should contain the platform identifier such as:
|
2019-02-21 11:16:17 +08:00
|
|
|
RC mode:
|
2018-11-07 13:35:22 +08:00
|
|
|
"fsl,ls1021a-pcie"
|
|
|
|
"fsl,ls2080a-pcie", "fsl,ls2085a-pcie"
|
2017-08-04 14:41:33 +08:00
|
|
|
"fsl,ls2088a-pcie"
|
2017-08-04 14:41:34 +08:00
|
|
|
"fsl,ls1088a-pcie"
|
2016-10-25 20:36:56 +08:00
|
|
|
"fsl,ls1046a-pcie"
|
2018-11-07 13:35:17 +08:00
|
|
|
"fsl,ls1043a-pcie"
|
2017-09-19 17:26:56 +08:00
|
|
|
"fsl,ls1012a-pcie"
|
2019-09-02 11:43:17 +08:00
|
|
|
"fsl,ls1028a-pcie"
|
2019-02-21 11:16:17 +08:00
|
|
|
EP mode:
|
2022-03-12 07:49:37 +08:00
|
|
|
"fsl,ls1028a-pcie-ep", "fsl,ls-pcie-ep"
|
2019-02-21 11:16:17 +08:00
|
|
|
"fsl,ls1046a-pcie-ep", "fsl,ls-pcie-ep"
|
2020-09-18 16:00:17 +08:00
|
|
|
"fsl,ls1088a-pcie-ep", "fsl,ls-pcie-ep"
|
|
|
|
"fsl,ls2088a-pcie-ep", "fsl,ls-pcie-ep"
|
2020-10-26 13:14:47 +08:00
|
|
|
"fsl,lx2160ar2-pcie-ep", "fsl,ls-pcie-ep"
|
2017-09-02 05:35:50 +08:00
|
|
|
- reg: base addresses and lengths of the PCIe controller register blocks.
|
2014-11-05 16:45:11 +08:00
|
|
|
- interrupts: A list of interrupt outputs of the controller. Must contain an
|
|
|
|
entry for each entry in the interrupt-names property.
|
2022-03-12 07:49:38 +08:00
|
|
|
- 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).
|
2014-11-05 16:45:11 +08:00
|
|
|
- fsl,pcie-scfg: Must include two entries.
|
|
|
|
The first entry must be a link to the SCFG device node
|
2022-03-12 07:49:36 +08:00
|
|
|
The second entry is the physical PCIe controller index starting from '0'.
|
2014-11-05 16:45:11 +08:00
|
|
|
This is used to get SCFG PEXN registers
|
2016-06-07 14:55:45 +08:00
|
|
|
- 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.
|
2014-11-05 16:45:11 +08:00
|
|
|
|
2022-03-12 07:49:35 +08:00
|
|
|
Optional properties:
|
|
|
|
- big-endian: If the PEX_LUT and PF register block is in big-endian, specify
|
|
|
|
this property.
|
|
|
|
|
2014-11-05 16:45:11 +08:00
|
|
|
Example:
|
|
|
|
|
2022-03-12 07:49:38 +08:00
|
|
|
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 */
|
|
|
|
};
|