summaryrefslogtreecommitdiff
path: root/drivers/tty/serial/sccnxp.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-10-21 14:09:18 +0300
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-10-21 14:09:18 +0300
commita2ab5fc41533c952706ebdfaa378bb746e535cc1 (patch)
tree9fb86bb4e9ecb67f7e651d284c2f12c6c5d4378f /drivers/tty/serial/sccnxp.c
parenta380f2edef65b2447a043251bb3c00a9d2153a8b (diff)
parent0e708fc602531b8355b5de6ea7c98f09129b223f (diff)
downloadlinux-a2ab5fc41533c952706ebdfaa378bb746e535cc1.tar.xz
Merge branch 'pm-sleep' into pm-core
Diffstat (limited to 'drivers/tty/serial/sccnxp.c')
-rw-r--r--drivers/tty/serial/sccnxp.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/tty/serial/sccnxp.c b/drivers/tty/serial/sccnxp.c
index cdd2f942317c..b9c7a904c1ea 100644
--- a/drivers/tty/serial/sccnxp.c
+++ b/drivers/tty/serial/sccnxp.c
@@ -889,7 +889,16 @@ static int sccnxp_probe(struct platform_device *pdev)
goto err_out;
uartclk = 0;
} else {
- clk_prepare_enable(clk);
+ ret = clk_prepare_enable(clk);
+ if (ret)
+ goto err_out;
+
+ ret = devm_add_action_or_reset(&pdev->dev,
+ (void(*)(void *))clk_disable_unprepare,
+ clk);
+ if (ret)
+ goto err_out;
+
uartclk = clk_get_rate(clk);
}
@@ -988,7 +997,7 @@ static int sccnxp_probe(struct platform_device *pdev)
uart_unregister_driver(&s->uart);
err_out:
if (!IS_ERR(s->regulator))
- return regulator_disable(s->regulator);
+ regulator_disable(s->regulator);
return ret;
}