diff options
author | Kishon Vijay Abraham I <kishon@ti.com> | 2021-03-19 15:41:16 +0300 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2021-03-31 14:12:51 +0300 |
commit | 5b4f5757f83be34d1428a1ffbb68d4a1966e9aae (patch) | |
tree | 46bee8f07deabbb89218e11e94da8b763a535cea /drivers/phy/cadence/phy-cadence-sierra.c | |
parent | 3f2ec77c954c6707a7caab1be35afe0ccf57135e (diff) | |
download | linux-5b4f5757f83be34d1428a1ffbb68d4a1966e9aae.tar.xz |
phy: cadence: Sierra: Fix PHY power_on sequence
Commit 44d30d622821d ("phy: cadence: Add driver for Sierra PHY")
de-asserts PHY_RESET even before the configurations are loaded in
phy_init(). However PHY_RESET should be de-asserted only after
all the configurations has been initialized, instead of de-asserting
in probe. Fix it here.
Fixes: 44d30d622821d ("phy: cadence: Add driver for Sierra PHY")
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Cc: <stable@vger.kernel.org> # v5.4+
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Link: https://lore.kernel.org/r/20210319124128.13308-2-kishon@ti.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/phy/cadence/phy-cadence-sierra.c')
-rw-r--r-- | drivers/phy/cadence/phy-cadence-sierra.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/phy/cadence/phy-cadence-sierra.c b/drivers/phy/cadence/phy-cadence-sierra.c index 26a0badabe38..19f32ae877b9 100644 --- a/drivers/phy/cadence/phy-cadence-sierra.c +++ b/drivers/phy/cadence/phy-cadence-sierra.c @@ -319,6 +319,12 @@ static int cdns_sierra_phy_on(struct phy *gphy) u32 val; int ret; + ret = reset_control_deassert(sp->phy_rst); + if (ret) { + dev_err(dev, "Failed to take the PHY out of reset\n"); + return ret; + } + /* Take the PHY lane group out of reset */ ret = reset_control_deassert(ins->lnk_rst); if (ret) { @@ -616,7 +622,6 @@ static int cdns_sierra_phy_probe(struct platform_device *pdev) pm_runtime_enable(dev); phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate); - reset_control_deassert(sp->phy_rst); return PTR_ERR_OR_ZERO(phy_provider); put_child: |