mirror of
https://github.com/torvalds/linux.git
synced 2024-09-20 15:03:04 +00:00
PCI: imx6: Simplify PHY handling by using IMX6_PCIE_FLAG_HAS_PHYDRV
Since some i.MX platforms make use of a separate PHY driver, use IMX6_PCIE_FLAG_HAS_PHYDRV flag to identify them and get the reference to PHY from DT to simplify the code. Link: https://lore.kernel.org/r/20240220161924.3871774-3-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>
This commit is contained in:
parent
6a40185838
commit
4e37c2f487
|
@ -60,6 +60,9 @@ enum imx6_pcie_variants {
|
|||
#define IMX6_PCIE_FLAG_IMX6_PHY BIT(0)
|
||||
#define IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE BIT(1)
|
||||
#define IMX6_PCIE_FLAG_SUPPORTS_SUSPEND BIT(2)
|
||||
#define IMX6_PCIE_FLAG_HAS_PHYDRV BIT(3)
|
||||
|
||||
#define imx6_check_flag(pci, val) (pci->drvdata->flags & val)
|
||||
|
||||
#define IMX6_PCIE_MAX_CLKS 6
|
||||
|
||||
|
@ -1277,6 +1280,13 @@ static int imx6_pcie_probe(struct platform_device *pdev)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (imx6_check_flag(imx6_pcie, IMX6_PCIE_FLAG_HAS_PHYDRV)) {
|
||||
imx6_pcie->phy = devm_phy_get(dev, "pcie-phy");
|
||||
if (IS_ERR(imx6_pcie->phy))
|
||||
return dev_err_probe(dev, PTR_ERR(imx6_pcie->phy),
|
||||
"failed to get pcie phy\n");
|
||||
}
|
||||
|
||||
switch (imx6_pcie->drvdata->variant) {
|
||||
case IMX8MQ:
|
||||
case IMX8MQ_EP:
|
||||
|
@ -1308,11 +1318,6 @@ static int imx6_pcie_probe(struct platform_device *pdev)
|
|||
return dev_err_probe(dev, PTR_ERR(imx6_pcie->apps_reset),
|
||||
"failed to get pcie apps reset control\n");
|
||||
|
||||
imx6_pcie->phy = devm_phy_get(dev, "pcie-phy");
|
||||
if (IS_ERR(imx6_pcie->phy))
|
||||
return dev_err_probe(dev, PTR_ERR(imx6_pcie->phy),
|
||||
"failed to get pcie phy\n");
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1456,14 +1461,17 @@ static const struct imx6_pcie_drvdata drvdata[] = {
|
|||
},
|
||||
[IMX8MM] = {
|
||||
.variant = IMX8MM,
|
||||
.flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
|
||||
.flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND |
|
||||
IMX6_PCIE_FLAG_HAS_PHYDRV |
|
||||
IMX6_PCIE_FLAG_HAS_APP_RESET,
|
||||
.gpr = "fsl,imx8mm-iomuxc-gpr",
|
||||
.clk_names = imx8mm_clks,
|
||||
.clks_cnt = ARRAY_SIZE(imx8mm_clks),
|
||||
},
|
||||
[IMX8MP] = {
|
||||
.variant = IMX8MP,
|
||||
.flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
|
||||
.flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND |
|
||||
IMX6_PCIE_FLAG_HAS_PHYDRV,
|
||||
.gpr = "fsl,imx8mp-iomuxc-gpr",
|
||||
.clk_names = imx8mm_clks,
|
||||
.clks_cnt = ARRAY_SIZE(imx8mm_clks),
|
||||
|
@ -1477,6 +1485,7 @@ static const struct imx6_pcie_drvdata drvdata[] = {
|
|||
},
|
||||
[IMX8MM_EP] = {
|
||||
.variant = IMX8MM_EP,
|
||||
.flags = IMX6_PCIE_FLAG_HAS_PHYDRV,
|
||||
.mode = DW_PCIE_EP_TYPE,
|
||||
.gpr = "fsl,imx8mm-iomuxc-gpr",
|
||||
.clk_names = imx8mm_clks,
|
||||
|
@ -1484,6 +1493,7 @@ static const struct imx6_pcie_drvdata drvdata[] = {
|
|||
},
|
||||
[IMX8MP_EP] = {
|
||||
.variant = IMX8MP_EP,
|
||||
.flags = IMX6_PCIE_FLAG_HAS_PHYDRV,
|
||||
.mode = DW_PCIE_EP_TYPE,
|
||||
.gpr = "fsl,imx8mp-iomuxc-gpr",
|
||||
.clk_names = imx8mm_clks,
|
||||
|
|
Loading…
Reference in New Issue
Block a user