forked from Minki/linux
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: 1aa97b0022
("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>
This commit is contained in:
parent
3db1e531e4
commit
cbcf8722b5
@ -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:
|
||||
|
@ -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,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user