diff options
author | Shuah Khan <shuahkh@osg.samsung.com> | 2017-01-10 18:05:28 -0500 |
---|---|---|
committer | Felipe Balbi <felipe.balbi@linux.intel.com> | 2017-01-12 03:03:59 -0500 |
commit | 8ae584d1951f241efd45499f8774fd7066f22823 (patch) | |
tree | c736c17d6e57bfb5a6f57e956fa8c406f1775ded | |
parent | 866932e2771f35d20ed2f1865bcf6af8dba765bb (diff) |
usb: dwc3: exynos fix axius clock error path to do cleanup
Axius clock error path returns without disabling clock and suspend clock.
Fix it to disable them before returning error.
Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
-rw-r--r-- | drivers/usb/dwc3/dwc3-exynos.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/usb/dwc3/dwc3-exynos.c b/drivers/usb/dwc3/dwc3-exynos.c index e27899bb5706..e956306d9b0f 100644 --- a/drivers/usb/dwc3/dwc3-exynos.c +++ b/drivers/usb/dwc3/dwc3-exynos.c | |||
@@ -138,7 +138,8 @@ static int dwc3_exynos_probe(struct platform_device *pdev) | |||
138 | exynos->axius_clk = devm_clk_get(dev, "usbdrd30_axius_clk"); | 138 | exynos->axius_clk = devm_clk_get(dev, "usbdrd30_axius_clk"); |
139 | if (IS_ERR(exynos->axius_clk)) { | 139 | if (IS_ERR(exynos->axius_clk)) { |
140 | dev_err(dev, "no AXI UpScaler clk specified\n"); | 140 | dev_err(dev, "no AXI UpScaler clk specified\n"); |
141 | return -ENODEV; | 141 | ret = -ENODEV; |
142 | goto axius_clk_err; | ||
142 | } | 143 | } |
143 | clk_prepare_enable(exynos->axius_clk); | 144 | clk_prepare_enable(exynos->axius_clk); |
144 | } else { | 145 | } else { |
@@ -196,6 +197,7 @@ err3: | |||
196 | regulator_disable(exynos->vdd33); | 197 | regulator_disable(exynos->vdd33); |
197 | err2: | 198 | err2: |
198 | clk_disable_unprepare(exynos->axius_clk); | 199 | clk_disable_unprepare(exynos->axius_clk); |
200 | axius_clk_err: | ||
199 | clk_disable_unprepare(exynos->susp_clk); | 201 | clk_disable_unprepare(exynos->susp_clk); |
200 | clk_disable_unprepare(exynos->clk); | 202 | clk_disable_unprepare(exynos->clk); |
201 | return ret; | 203 | return ret; |