PCIe RP Controller VS PCIe EP Controller

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

PCIe RP Controller VS PCIe EP Controller

223 Views
shivam_jksel
Contributor I

Hi,

1) can you guide me to the file/code in linux kernel for the PCIe RP controller driver and also for PCIe EP controller driver?

2)  how does a RC Controller driver differs from the EP controller driver?


3) what are the role/responsibility/functions of a RC and EP controllers?

I want to buy two IMX boards which can act as PCI HOST and PCIe  EP, please suggest which boards will be fine . my use case is just to test out the complete basic PCIe end to end and how the EP RC talk to each other.

0 Kudos
3 Replies

192 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Dear @shivam_jksel .

 

>> Q2:

RC driver & EP roles are both supported in pci-imx6.c

static const struct of_device_id imx6_pcie_of_match[] = {
{ .compatible = "fsl,imx6q-pcie", .data = &drvdata[IMX6Q], },
{ .compatible = "fsl,imx6q-pcie-ep", .data = &drvdata[IMX6Q_EP], },
{ .compatible = "fsl,imx6sx-pcie", .data = &drvdata[IMX6SX], },
{ .compatible = "fsl,imx6sx-pcie-ep", .data = &drvdata[IMX6SX_EP], },
{ .compatible = "fsl,imx6qp-pcie", .data = &drvdata[IMX6QP], },
{ .compatible = "fsl,imx6qp-pcie-ep", .data = &drvdata[IMX6QP_EP], },
{ .compatible = "fsl,imx7d-pcie", .data = &drvdata[IMX7D], },
{ .compatible = "fsl,imx7d-pcie-ep", .data = &drvdata[IMX7D_EP], },
{ .compatible = "fsl,imx8mq-pcie", .data = &drvdata[IMX8MQ], },
{ .compatible = "fsl,imx8mq-pcie-ep", .data = &drvdata[IMX8MQ_EP], },
{ .compatible = "fsl,imx8mm-pcie", .data = &drvdata[IMX8MM], },
{ .compatible = "fsl,imx8mm-pcie-ep", .data = &drvdata[IMX8MM_EP], },
{ .compatible = "fsl,imx8mp-pcie", .data = &drvdata[IMX8MP], },
{ .compatible = "fsl,imx8mp-pcie-ep", .data = &drvdata[IMX8MP_EP], },
{ .compatible = "fsl,imx8qm-pcie", .data = &drvdata[IMX8QM], },
{ .compatible = "fsl,imx8qm-pcie-ep", .data = &drvdata[IMX8QM_EP], },
{ .compatible = "fsl,imx8qxp-pcie", .data = &drvdata[IMX8QXP], },
{ .compatible = "fsl,imx8qxp-pcie-ep", .data = &drvdata[IMX8QXP_EP], },
{},
};

 

Q3: 

Different dts .

-imx8mq-evk.dts, pcie RC

-imx8mq-evk-pci-ep.dts, EP

 

Thanks!

Regards,

weidong

0 Kudos

200 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Dear @shivam_jksel ,

 

1. About EVK boards.

--i.MX8MQ-EVK & i.MX8MM-EVK support PCIe GEN2, PCIe signals are connected to M.2 KEY E connector.

--i.MX8MP-EVK supports PCIe GEN3, also users can get PCIe signals on M.2 KEY E connectot.

you can evaluate above 3 boards.

 

2. About driver in linux kernel

Default configurations of Kernel have supported RC & EP driver.

weidong_sun_0-1710819959714.png

 

3. device tree

For EP role,  the dts for EP has been ready in device tree, on EP side, you should use it.

weidong_sun_1-1710820204335.png

 

 

Thanks!

Regards,

weidong

 

 

 

 

0 Kudos

195 Views
shivam_jksel
Contributor I

@weidong_sun

1)
 thanks for the name of the boards.

2)
the RC EP controller file structure in kernel is this, correct me if i am wrong:

     pci_subsytem <--> pcie_designware_host.c <--> pci_imx6.c <---> ROOT PORT CONTROLLER

     pci_subsytem <--> pcie_designware_ep.c <--> pci_imx6.c <---> END POINT CONTROLLER

3) 
device tree for RC is different or same? 

Regards,

0 Kudos