lkml.org 
[lkml]   [2022]   [Aug]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 6/6] PCI: imx6: Add iMX8MP PCIe support
    Date
    Add i.MX8MP PCIe support.

    Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
    Tested-by: Marek Vasut <marex@denx.de>
    Tested-by: Richard Leitner <richard.leitner@skidata.com>
    Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com>
    ---
    drivers/pci/controller/dwc/pci-imx6.c | 17 ++++++++++++++++-
    1 file changed, 16 insertions(+), 1 deletion(-)

    diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
    index 6e5debdbc55b..786f5737ca6a 100644
    --- a/drivers/pci/controller/dwc/pci-imx6.c
    +++ b/drivers/pci/controller/dwc/pci-imx6.c
    @@ -51,6 +51,7 @@ enum imx6_pcie_variants {
    IMX7D,
    IMX8MQ,
    IMX8MM,
    + IMX8MP,
    };

    #define IMX6_PCIE_FLAG_IMX6_PHY BIT(0)
    @@ -150,7 +151,8 @@ struct imx6_pcie {
    static unsigned int imx6_pcie_grp_offset(const struct imx6_pcie *imx6_pcie)
    {
    WARN_ON(imx6_pcie->drvdata->variant != IMX8MQ &&
    - imx6_pcie->drvdata->variant != IMX8MM);
    + imx6_pcie->drvdata->variant != IMX8MM &&
    + imx6_pcie->drvdata->variant != IMX8MP);
    return imx6_pcie->controller_id == 1 ? IOMUXC_GPR16 : IOMUXC_GPR14;
    }

    @@ -301,6 +303,7 @@ static void imx6_pcie_init_phy(struct imx6_pcie *imx6_pcie)
    {
    switch (imx6_pcie->drvdata->variant) {
    case IMX8MM:
    + case IMX8MP:
    /*
    * The PHY initialization had been done in the PHY
    * driver, break here directly.
    @@ -558,6 +561,7 @@ static int imx6_pcie_enable_ref_clk(struct imx6_pcie *imx6_pcie)
    break;
    case IMX8MM:
    case IMX8MQ:
    + case IMX8MP:
    ret = clk_prepare_enable(imx6_pcie->pcie_aux);
    if (ret) {
    dev_err(dev, "unable to enable pcie_aux clock\n");
    @@ -602,6 +606,7 @@ static void imx6_pcie_disable_ref_clk(struct imx6_pcie *imx6_pcie)
    break;
    case IMX8MM:
    case IMX8MQ:
    + case IMX8MP:
    clk_disable_unprepare(imx6_pcie->pcie_aux);
    break;
    default:
    @@ -669,6 +674,7 @@ static void imx6_pcie_assert_core_reset(struct imx6_pcie *imx6_pcie)
    reset_control_assert(imx6_pcie->pciephy_reset);
    fallthrough;
    case IMX8MM:
    + case IMX8MP:
    reset_control_assert(imx6_pcie->apps_reset);
    break;
    case IMX6SX:
    @@ -744,6 +750,7 @@ static int imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)
    break;
    case IMX6Q: /* Nothing to do */
    case IMX8MM:
    + case IMX8MP:
    break;
    }

    @@ -793,6 +800,7 @@ static void imx6_pcie_ltssm_enable(struct device *dev)
    case IMX7D:
    case IMX8MQ:
    case IMX8MM:
    + case IMX8MP:
    reset_control_deassert(imx6_pcie->apps_reset);
    break;
    }
    @@ -812,6 +820,7 @@ static void imx6_pcie_ltssm_disable(struct device *dev)
    case IMX7D:
    case IMX8MQ:
    case IMX8MM:
    + case IMX8MP:
    reset_control_assert(imx6_pcie->apps_reset);
    break;
    }
    @@ -1179,6 +1188,7 @@ static int imx6_pcie_probe(struct platform_device *pdev)
    }
    break;
    case IMX8MM:
    + case IMX8MP:
    imx6_pcie->pcie_aux = devm_clk_get(dev, "pcie_aux");
    if (IS_ERR(imx6_pcie->pcie_aux))
    return dev_err_probe(dev, PTR_ERR(imx6_pcie->pcie_aux),
    @@ -1320,6 +1330,10 @@ static const struct imx6_pcie_drvdata drvdata[] = {
    .variant = IMX8MM,
    .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
    },
    + [IMX8MP] = {
    + .variant = IMX8MP,
    + .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
    + },
    };

    static const struct of_device_id imx6_pcie_of_match[] = {
    @@ -1329,6 +1343,7 @@ static const struct of_device_id imx6_pcie_of_match[] = {
    { .compatible = "fsl,imx7d-pcie", .data = &drvdata[IMX7D], },
    { .compatible = "fsl,imx8mq-pcie", .data = &drvdata[IMX8MQ], },
    { .compatible = "fsl,imx8mm-pcie", .data = &drvdata[IMX8MM], },
    + { .compatible = "fsl,imx8mp-pcie", .data = &drvdata[IMX8MP], },
    {},
    };

    --
    2.25.1
    \
     
     \ /
      Last update: 2022-08-29 10:34    [W:3.689 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site