diff options
author | Axel Lin <axel.lin@ingics.com> | 2015-03-17 08:39:01 +0800 |
---|---|---|
committer | Kishon Vijay Abraham I <kishon@ti.com> | 2015-03-26 05:06:09 +0530 |
commit | 080de5ba390c54b7504c43b36ae21911acf66b30 (patch) | |
tree | 65ae710b35ff71025efe3738119b3f9ff108fb5c /drivers/phy | |
parent | 739ae3452d0ee199b3cfe5e52214d9ccd8e358ea (diff) |
phy: stih41x-usb: Fixup stih41x_usb_phy_power_on failure path
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>
Diffstat (limited to 'drivers/phy')
-rw-r--r-- | drivers/phy/phy-stih41x-usb.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/phy/phy-stih41x-usb.c b/drivers/phy/phy-stih41x-usb.c index a603801293ff..c093b472b57d 100644 --- a/drivers/phy/phy-stih41x-usb.c +++ b/drivers/phy/phy-stih41x-usb.c @@ -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) |