phy: stih41x-usb: Fixup stih41x_usb_phy_power_on failure path
authorAxel Lin <axel.lin@ingics.com>
Tue, 17 Mar 2015 00:39:01 +0000 (08:39 +0800)
committerKishon Vijay Abraham I <kishon@ti.com>
Wed, 25 Mar 2015 23:36:09 +0000 (05:06 +0530)
If stih41x_usb_phy_power_on() fails, we need to call clk_disable_unprepare()
before return error. This is to ensure we have balanced clk_enable/disable
calls.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Patrice Chotard <patrice.chotard@st.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
drivers/phy/phy-stih41x-usb.c

index a603801..c093b47 100644 (file)
@@ -87,8 +87,12 @@ static int stih41x_usb_phy_power_on(struct phy *phy)
                return ret;
        }
 
-       return regmap_update_bits(phy_dev->regmap, phy_dev->cfg->syscfg,
-                       phy_dev->cfg->oscok, phy_dev->cfg->oscok);
+       ret = regmap_update_bits(phy_dev->regmap, phy_dev->cfg->syscfg,
+                                phy_dev->cfg->oscok, phy_dev->cfg->oscok);
+       if (ret)
+               clk_disable_unprepare(phy_dev->clk);
+
+       return ret;
 }
 
 static int stih41x_usb_phy_power_off(struct phy *phy)