phy: freescale: imx8m-pcie: Fix the wrong order of phy_init() and phy_power_on()
authorRichard Zhu <hongxing.zhu@nxp.com>
Mon, 5 Sep 2022 02:23:03 +0000 (10:23 +0800)
committerLorenzo Pieralisi <lpieralisi@kernel.org>
Mon, 3 Oct 2022 08:34:46 +0000 (10:34 +0200)
Refer to phy_core driver, phy_init() must be called before phy_power_on().
Fix the wrong order of phy_init() and phy_power_on() here.

Link: https://lore.kernel.org/r/1662344583-18874-1-git-send-email-hongxing.zhu@nxp.com
Fixes: 1aa97b002258 ("phy: freescale: pcie: Initialize the imx8 pcie standalone phy driver")
Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
Acked-by: Vinod Koul <vkoul@kernel.org>
Acked-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
drivers/pci/controller/dwc/pci-imx6.c
drivers/phy/freescale/phy-fsl-imx8m-pcie.c

index facc8e7..2616585 100644 (file)
@@ -945,7 +945,7 @@ static int imx6_pcie_host_init(struct dw_pcie_rp *pp)
        }
 
        if (imx6_pcie->phy) {
-               ret = phy_power_on(imx6_pcie->phy);
+               ret = phy_init(imx6_pcie->phy);
                if (ret) {
                        dev_err(dev, "pcie PHY power up failed\n");
                        goto err_clk_disable;
@@ -959,7 +959,7 @@ static int imx6_pcie_host_init(struct dw_pcie_rp *pp)
        }
 
        if (imx6_pcie->phy) {
-               ret = phy_init(imx6_pcie->phy);
+               ret = phy_power_on(imx6_pcie->phy);
                if (ret) {
                        dev_err(dev, "waiting for PHY ready timeout!\n");
                        goto err_phy_off;
@@ -971,7 +971,7 @@ static int imx6_pcie_host_init(struct dw_pcie_rp *pp)
 
 err_phy_off:
        if (imx6_pcie->phy)
-               phy_power_off(imx6_pcie->phy);
+               phy_exit(imx6_pcie->phy);
 err_clk_disable:
        imx6_pcie_clk_disable(imx6_pcie);
 err_reg_disable:
index ad7d2ed..c932864 100644 (file)
@@ -59,7 +59,7 @@ struct imx8_pcie_phy {
        bool                    clkreq_unused;
 };
 
-static int imx8_pcie_phy_init(struct phy *phy)
+static int imx8_pcie_phy_power_on(struct phy *phy)
 {
        int ret;
        u32 val, pad_mode;
@@ -137,14 +137,14 @@ static int imx8_pcie_phy_init(struct phy *phy)
        return ret;
 }
 
-static int imx8_pcie_phy_power_on(struct phy *phy)
+static int imx8_pcie_phy_init(struct phy *phy)
 {
        struct imx8_pcie_phy *imx8_phy = phy_get_drvdata(phy);
 
        return clk_prepare_enable(imx8_phy->clk);
 }
 
-static int imx8_pcie_phy_power_off(struct phy *phy)
+static int imx8_pcie_phy_exit(struct phy *phy)
 {
        struct imx8_pcie_phy *imx8_phy = phy_get_drvdata(phy);
 
@@ -155,8 +155,8 @@ static int imx8_pcie_phy_power_off(struct phy *phy)
 
 static const struct phy_ops imx8_pcie_phy_ops = {
        .init           = imx8_pcie_phy_init,
+       .exit           = imx8_pcie_phy_exit,
        .power_on       = imx8_pcie_phy_power_on,
-       .power_off      = imx8_pcie_phy_power_off,
        .owner          = THIS_MODULE,
 };