diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/phy/phy-samsung-usb2.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/phy/phy-samsung-usb2.c b/drivers/phy/phy-samsung-usb2.c index 4a12f66b7fb5..55b6994932e3 100644 --- a/drivers/phy/phy-samsung-usb2.c +++ b/drivers/phy/phy-samsung-usb2.c | |||
@@ -37,10 +37,14 @@ static int samsung_usb2_phy_power_on(struct phy *phy) | |||
37 | spin_lock(&drv->lock); | 37 | spin_lock(&drv->lock); |
38 | ret = inst->cfg->power_on(inst); | 38 | ret = inst->cfg->power_on(inst); |
39 | spin_unlock(&drv->lock); | 39 | spin_unlock(&drv->lock); |
40 | if (ret) | ||
41 | goto err_power_on; | ||
40 | } | 42 | } |
41 | 43 | ||
42 | return 0; | 44 | return 0; |
43 | 45 | ||
46 | err_power_on: | ||
47 | clk_disable_unprepare(drv->ref_clk); | ||
44 | err_instance_clk: | 48 | err_instance_clk: |
45 | clk_disable_unprepare(drv->clk); | 49 | clk_disable_unprepare(drv->clk); |
46 | err_main_clk: | 50 | err_main_clk: |
@@ -51,7 +55,7 @@ static int samsung_usb2_phy_power_off(struct phy *phy) | |||
51 | { | 55 | { |
52 | struct samsung_usb2_phy_instance *inst = phy_get_drvdata(phy); | 56 | struct samsung_usb2_phy_instance *inst = phy_get_drvdata(phy); |
53 | struct samsung_usb2_phy_driver *drv = inst->drv; | 57 | struct samsung_usb2_phy_driver *drv = inst->drv; |
54 | int ret = 0; | 58 | int ret; |
55 | 59 | ||
56 | dev_dbg(drv->dev, "Request to power_off \"%s\" usb phy\n", | 60 | dev_dbg(drv->dev, "Request to power_off \"%s\" usb phy\n", |
57 | inst->cfg->label); | 61 | inst->cfg->label); |
@@ -59,10 +63,12 @@ static int samsung_usb2_phy_power_off(struct phy *phy) | |||
59 | spin_lock(&drv->lock); | 63 | spin_lock(&drv->lock); |
60 | ret = inst->cfg->power_off(inst); | 64 | ret = inst->cfg->power_off(inst); |
61 | spin_unlock(&drv->lock); | 65 | spin_unlock(&drv->lock); |
66 | if (ret) | ||
67 | return ret; | ||
62 | } | 68 | } |
63 | clk_disable_unprepare(drv->ref_clk); | 69 | clk_disable_unprepare(drv->ref_clk); |
64 | clk_disable_unprepare(drv->clk); | 70 | clk_disable_unprepare(drv->clk); |
65 | return ret; | 71 | return 0; |
66 | } | 72 | } |
67 | 73 | ||
68 | static struct phy_ops samsung_usb2_phy_ops = { | 74 | static struct phy_ops samsung_usb2_phy_ops = { |