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.
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
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.
3. device tree
For EP role, the dts for EP has been ready in device tree, on EP side, you should use it.
Thanks!
Regards,
weidong
@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,