PCI: imx6: Add i.MX8MP PCIe EP support
Add the i.MX8MP PCIe EP support. Link: https://lore.kernel.org/r/1673847684-31893-15-git-send-email-hongxing.zhu@nxp.com Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com> Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
This commit is contained in:
parent
fb3217e2cf
commit
c435669a41
|
@ -54,6 +54,7 @@ enum imx6_pcie_variants {
|
|||
IMX8MP,
|
||||
IMX8MQ_EP,
|
||||
IMX8MM_EP,
|
||||
IMX8MP_EP,
|
||||
};
|
||||
|
||||
#define IMX6_PCIE_FLAG_IMX6_PHY BIT(0)
|
||||
|
@ -158,7 +159,8 @@ static unsigned int imx6_pcie_grp_offset(const struct imx6_pcie *imx6_pcie)
|
|||
imx6_pcie->drvdata->variant != IMX8MQ_EP &&
|
||||
imx6_pcie->drvdata->variant != IMX8MM &&
|
||||
imx6_pcie->drvdata->variant != IMX8MM_EP &&
|
||||
imx6_pcie->drvdata->variant != IMX8MP);
|
||||
imx6_pcie->drvdata->variant != IMX8MP &&
|
||||
imx6_pcie->drvdata->variant != IMX8MP_EP);
|
||||
return imx6_pcie->controller_id == 1 ? IOMUXC_GPR16 : IOMUXC_GPR14;
|
||||
}
|
||||
|
||||
|
@ -323,6 +325,7 @@ static void imx6_pcie_init_phy(struct imx6_pcie *imx6_pcie)
|
|||
case IMX8MM:
|
||||
case IMX8MM_EP:
|
||||
case IMX8MP:
|
||||
case IMX8MP_EP:
|
||||
/*
|
||||
* The PHY initialization had been done in the PHY
|
||||
* driver, break here directly.
|
||||
|
@ -584,6 +587,7 @@ static int imx6_pcie_enable_ref_clk(struct imx6_pcie *imx6_pcie)
|
|||
case IMX8MQ:
|
||||
case IMX8MQ_EP:
|
||||
case IMX8MP:
|
||||
case IMX8MP_EP:
|
||||
ret = clk_prepare_enable(imx6_pcie->pcie_aux);
|
||||
if (ret) {
|
||||
dev_err(dev, "unable to enable pcie_aux clock\n");
|
||||
|
@ -631,6 +635,7 @@ static void imx6_pcie_disable_ref_clk(struct imx6_pcie *imx6_pcie)
|
|||
case IMX8MQ:
|
||||
case IMX8MQ_EP:
|
||||
case IMX8MP:
|
||||
case IMX8MP_EP:
|
||||
clk_disable_unprepare(imx6_pcie->pcie_aux);
|
||||
break;
|
||||
default:
|
||||
|
@ -701,6 +706,7 @@ static void imx6_pcie_assert_core_reset(struct imx6_pcie *imx6_pcie)
|
|||
case IMX8MM:
|
||||
case IMX8MM_EP:
|
||||
case IMX8MP:
|
||||
case IMX8MP_EP:
|
||||
reset_control_assert(imx6_pcie->apps_reset);
|
||||
break;
|
||||
case IMX6SX:
|
||||
|
@ -779,6 +785,7 @@ static int imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)
|
|||
case IMX8MM:
|
||||
case IMX8MM_EP:
|
||||
case IMX8MP:
|
||||
case IMX8MP_EP:
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -831,6 +838,7 @@ static void imx6_pcie_ltssm_enable(struct device *dev)
|
|||
case IMX8MM:
|
||||
case IMX8MM_EP:
|
||||
case IMX8MP:
|
||||
case IMX8MP_EP:
|
||||
reset_control_deassert(imx6_pcie->apps_reset);
|
||||
break;
|
||||
}
|
||||
|
@ -853,6 +861,7 @@ static void imx6_pcie_ltssm_disable(struct device *dev)
|
|||
case IMX8MM:
|
||||
case IMX8MM_EP:
|
||||
case IMX8MP:
|
||||
case IMX8MP_EP:
|
||||
reset_control_assert(imx6_pcie->apps_reset);
|
||||
break;
|
||||
}
|
||||
|
@ -1105,6 +1114,7 @@ static int imx6_add_pcie_ep(struct imx6_pcie *imx6_pcie,
|
|||
switch (imx6_pcie->drvdata->variant) {
|
||||
case IMX8MQ_EP:
|
||||
case IMX8MM_EP:
|
||||
case IMX8MP_EP:
|
||||
pcie_dbi2_offset = SZ_1M;
|
||||
break;
|
||||
default:
|
||||
|
@ -1319,6 +1329,7 @@ static int imx6_pcie_probe(struct platform_device *pdev)
|
|||
case IMX8MM:
|
||||
case IMX8MM_EP:
|
||||
case IMX8MP:
|
||||
case IMX8MP_EP:
|
||||
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),
|
||||
|
@ -1488,6 +1499,11 @@ static const struct imx6_pcie_drvdata drvdata[] = {
|
|||
.mode = DW_PCIE_EP_TYPE,
|
||||
.gpr = "fsl,imx8mm-iomuxc-gpr",
|
||||
},
|
||||
[IMX8MP_EP] = {
|
||||
.variant = IMX8MP_EP,
|
||||
.mode = DW_PCIE_EP_TYPE,
|
||||
.gpr = "fsl,imx8mp-iomuxc-gpr",
|
||||
},
|
||||
};
|
||||
|
||||
static const struct of_device_id imx6_pcie_of_match[] = {
|
||||
|
@ -1500,6 +1516,7 @@ static const struct of_device_id imx6_pcie_of_match[] = {
|
|||
{ .compatible = "fsl,imx8mp-pcie", .data = &drvdata[IMX8MP], },
|
||||
{ .compatible = "fsl,imx8mq-pcie-ep", .data = &drvdata[IMX8MQ_EP], },
|
||||
{ .compatible = "fsl,imx8mm-pcie-ep", .data = &drvdata[IMX8MM_EP], },
|
||||
{ .compatible = "fsl,imx8mp-pcie-ep", .data = &drvdata[IMX8MP_EP], },
|
||||
{},
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue