PCI: imx6: Add epc_features in imx6_pcie_drvdata
authorFrank Li <Frank.Li@nxp.com>
Tue, 20 Feb 2024 16:19:22 +0000 (11:19 -0500)
committerLorenzo Pieralisi <lpieralisi@kernel.org>
Mon, 4 Mar 2024 08:54:44 +0000 (09:54 +0100)
The i.MX EP exhibits variations in epc_features among different EP
configurations. This introduces the addition of epc_features in
imx6_pcie_drvdata to accommodate these differences. It's important to note
that there are no functional changes in this commit; instead, it lays the
groundwork for supporting i.MX95 EP functions.

Link: https://lore.kernel.org/r/20240220161924.3871774-13-Frank.Li@nxp.com
Signed-off-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
drivers/pci/controller/dwc/pci-imx6.c

index 2907a8f25e332ed7a5b721ccf1bf5be74365f81e..1b2f40f83f05db91ef5a43733fd967f43e6d616b 100644 (file)
@@ -99,6 +99,7 @@ struct imx6_pcie_drvdata {
        const u32 ltssm_mask;
        const u32 mode_off[IMX6_PCIE_MAX_INSTANCES];
        const u32 mode_mask[IMX6_PCIE_MAX_INSTANCES];
+       const struct pci_epc_features *epc_features;
        int (*init_phy)(struct imx6_pcie *pcie);
 };
 
@@ -1046,7 +1047,10 @@ static const struct pci_epc_features imx8m_pcie_epc_features = {
 static const struct pci_epc_features*
 imx6_pcie_ep_get_features(struct dw_pcie_ep *ep)
 {
-       return &imx8m_pcie_epc_features;
+       struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
+       struct imx6_pcie *imx6_pcie = to_imx6_pcie(pci);
+
+       return imx6_pcie->drvdata->epc_features;
 }
 
 static const struct dw_pcie_ep_ops pcie_ep_ops = {
@@ -1527,6 +1531,7 @@ static const struct imx6_pcie_drvdata drvdata[] = {
                .mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
                .mode_off[1] = IOMUXC_GPR12,
                .mode_mask[1] = IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE,
+               .epc_features = &imx8m_pcie_epc_features,
                .init_phy = imx8mq_pcie_init_phy,
        },
        [IMX8MM_EP] = {
@@ -1538,6 +1543,7 @@ static const struct imx6_pcie_drvdata drvdata[] = {
                .clks_cnt = ARRAY_SIZE(imx8mm_clks),
                .mode_off[0] = IOMUXC_GPR12,
                .mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
+               .epc_features = &imx8m_pcie_epc_features,
        },
        [IMX8MP_EP] = {
                .variant = IMX8MP_EP,
@@ -1548,6 +1554,7 @@ static const struct imx6_pcie_drvdata drvdata[] = {
                .clks_cnt = ARRAY_SIZE(imx8mm_clks),
                .mode_off[0] = IOMUXC_GPR12,
                .mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE,
+               .epc_features = &imx8m_pcie_epc_features,
        },
 };