PCI Express is a third-generation I/O interconnect targeting low-cost, high-volume, multi-platform interconnection. The NXP i.MX95 CPU has two independent PCI Express (PCIe) controllers, each supporting a single-lane link up to Gen 3 speeds.
The BSP configures the PCIe port 0 to act as Root Complex (RC).
On the ConnectCore 95 system-on-module:
-
The PCIe buses are available on the LGA pads.
On the ConnectCore 95 Development Kit:
-
The PCIe port 0 is available in the PCIe mini card connector J18.
Kernel configuration
You can manage the PCIe driver support through the kernel configuration option:
-
Freescale i.MX6/7/8 PCIe controller (
CONFIG_PCI_IMX6)
This option is enabled as built-in on the default ConnectCore 95 kernel configuration file.
Kernel driver
The PCIe bus driver for the ConnectCore 95 system-on-module is located at drivers/pci/controller/dwc/pci-imx6.c.
Device tree bindings and customization
The i.MX95 PCIe interface device tree binding is documented at Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml.
Example: PCIe (Mini card) on the ConnectCore 95 Development Kit
Definition of the PCIe bus
pcie0: pcie@4c300000 {
compatible = "fsl,imx95-pcie";
reg = <0 0x4c300000 0 0x10000>,
<0 0x4c360000 0 0x20000>,
<0 0x60100000 0 0xfe00000>;
reg-names = "dbi", "atu", "config";
[...]
status = "disabled";
};
serdes0_ssr: ssr@4c340000 {
compatible = "fsl,imx95-serdes-syscfg", "syscon";
reg = <0 0x4c340000 0 0x2000>;
};
pcie1: pcie@4c380000 {
compatible = "fsl,imx95-pcie";
reg = <0 0x4c380000 0 0x10000>,
<0 0x4c3e0000 0 0x20000>,
<8 0x80100000 0 0xfe00000>;
reg-names = "dbi", "atu", "config";
[...]
status = "disabled";
};
pcie1_ep: pcie-ep@4c380000 {
compatible = "fsl,imx95-pcie-ep";
reg = <0 0x4c380000 0 0x10000>,
<0 0x4c3a0000 0 0x1000>,
<0 0x4c3e0000 0 0x1000>,
<0 0x4c3f0000 0 0x10000>,
<0xa 0 1 0>;
reg-names = "dbi", "dbi2", "atu", "dma", "addr_space";
[...]
status = "disabled";
};
serdes1_ssr: ssr@4c3c0000 {
compatible = "fsl,imx95-serdes-syscfg", "syscon";
reg = <0 0x4c3c0000 0 0x2000>;
};
PCIe port on the ConnectCore 95 Development Kit
&pcie0 {
vpcie-supply = <®_3v3_dvk>;
fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_OUTPUT>;
status = "okay";
};
/*
* Disabled by default. To enable it, on the DVK, 0-ohm selection resistors must
* be swapped from PCIE0 lines to the PCIE1 lines.
*/
&pcie1 {
vpcie-supply = <®_3v3_dvk>;
fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_OUTPUT>;
status = "disabled";
};
&pcie1_ep {
vpcie-supply = <®_3v3_dvk>;
status = "disabled";
};