In case the PHY exit callback reports failure, reset init_count to 0 anyway,
so the next attempt at PHY initialization might try to reinitialize the PHY
and restore it to normal operation.

Signed-off-by: Marek Vasut <[email protected]>
---
Cc: Mattijs Korpershoek <[email protected]>
Cc: Roger Quadros <[email protected]>
Cc: Siddharth Vadapalli <[email protected]>
Cc: Tom Rini <[email protected]>
Cc: [email protected]
---
 drivers/phy/phy-uclass.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c
index 714be123856..f8d4fb3b41b 100644
--- a/drivers/phy/phy-uclass.c
+++ b/drivers/phy/phy-uclass.c
@@ -274,7 +274,7 @@ int generic_phy_exit(struct phy *phy)
 {
        struct phy_counts *counts;
        struct phy_ops const *ops;
-       int ret;
+       int ret = 0;
 
        if (!generic_phy_valid(phy))
                return 0;
@@ -292,12 +292,11 @@ int generic_phy_exit(struct phy *phy)
                if (ret) {
                        dev_err(phy->dev, "PHY: Failed to exit %s: %d.\n",
                                phy->dev->name, ret);
-                       return ret;
                }
        }
        counts->init_count = 0;
 
-       return 0;
+       return ret;
 }
 
 int generic_phy_power_on(struct phy *phy)
-- 
2.50.1

Reply via email to