Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

PCI: imx6: Add i.MX8Q PCIe Endpoint (EP) support

Add support for the i.MX8Q series (i.MX8QM, i.MX8QXP, and i.MX8DXL) PCIe
Endpoint (EP). On the i.MX8Q platforms, the PCI bus addresses differ
from the CPU addresses. However, the DesignWare (DWC) driver already
handles this in the common code.

Link: https://lore.kernel.org/r/20241119-pci_fixup_addr-v8-7-c4bfa5193288@nxp.com
Signed-off-by: Frank Li <Frank.Li@nxp.com>
[kwilczynski: commit log]
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Richard Zhu <hongxing.zhu@nxp.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>

authored by

Frank Li and committed by
Bjorn Helgaas
687aedb7 3d220725

+20
+20
drivers/pci/controller/dwc/pci-imx6.c
··· 70 70 IMX8MQ_EP, 71 71 IMX8MM_EP, 72 72 IMX8MP_EP, 73 + IMX8Q_EP, 73 74 IMX95_EP, 74 75 }; 75 76 ··· 1083 1082 .align = SZ_64K, 1084 1083 }; 1085 1084 1085 + static const struct pci_epc_features imx8q_pcie_epc_features = { 1086 + .linkup_notifier = false, 1087 + .msi_capable = true, 1088 + .msix_capable = false, 1089 + .bar[BAR_1] = { .type = BAR_RESERVED, }, 1090 + .bar[BAR_3] = { .type = BAR_RESERVED, }, 1091 + .bar[BAR_5] = { .type = BAR_RESERVED, }, 1092 + .align = SZ_64K, 1093 + }; 1094 + 1086 1095 /* 1087 1096 * BAR# | Default BAR enable | Default BAR Type | Default BAR Size | BAR Sizing Scheme 1088 1097 * ================================================================================================ ··· 1689 1678 .epc_features = &imx8m_pcie_epc_features, 1690 1679 .enable_ref_clk = imx8mm_pcie_enable_ref_clk, 1691 1680 }, 1681 + [IMX8Q_EP] = { 1682 + .variant = IMX8Q_EP, 1683 + .flags = IMX_PCIE_FLAG_HAS_PHYDRV, 1684 + .mode = DW_PCIE_EP_TYPE, 1685 + .epc_features = &imx8q_pcie_epc_features, 1686 + .clk_names = imx8q_clks, 1687 + .clks_cnt = ARRAY_SIZE(imx8q_clks), 1688 + }, 1692 1689 [IMX95_EP] = { 1693 1690 .variant = IMX95_EP, 1694 1691 .flags = IMX_PCIE_FLAG_HAS_SERDES | ··· 1726 1707 { .compatible = "fsl,imx8mq-pcie-ep", .data = &drvdata[IMX8MQ_EP], }, 1727 1708 { .compatible = "fsl,imx8mm-pcie-ep", .data = &drvdata[IMX8MM_EP], }, 1728 1709 { .compatible = "fsl,imx8mp-pcie-ep", .data = &drvdata[IMX8MP_EP], }, 1710 + { .compatible = "fsl,imx8q-pcie-ep", .data = &drvdata[IMX8Q_EP], }, 1729 1711 { .compatible = "fsl,imx95-pcie-ep", .data = &drvdata[IMX95_EP], }, 1730 1712 {}, 1731 1713 };