Commit cbcf8722 authored by Richard Zhu's avatar Richard Zhu Committed by Lorenzo Pieralisi
Browse files

phy: freescale: imx8m-pcie: Fix the wrong order of phy_init() and phy_power_on()

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: 1aa97b00 ("phy: freescale: pcie: Initialize the imx8 pcie standalone phy driver")
Tested-by: default avatarAlexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: default avatarRichard Zhu <hongxing.zhu@nxp.com>
Signed-off-by: default avatarLorenzo Pieralisi <lpieralisi@kernel.org>
Acked-by: default avatarVinod Koul <vkoul@kernel.org>
Acked-by: default avatarLorenzo Pieralisi <lpieralisi@kernel.org>
parent 3db1e531
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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:
+4 −4
Original line number Diff line number Diff line
@@ -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,
};