Commit 64cd64e7 authored by Dmitry Osipenko's avatar Dmitry Osipenko Committed by Rafael J. Wysocki

cpufreq: tegra20: Release clocks properly

Properly put requested clocks in the module init/exit code.
Signed-off-by: default avatarDmitry Osipenko <digetx@gmail.com>
Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Acked-by: default avatarThierry Reding <treding@nvidia.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 9b633cb6
...@@ -161,24 +161,45 @@ static struct cpufreq_driver tegra_cpufreq_driver = { ...@@ -161,24 +161,45 @@ static struct cpufreq_driver tegra_cpufreq_driver = {
static int __init tegra_cpufreq_init(void) static int __init tegra_cpufreq_init(void)
{ {
int err;
cpu_clk = clk_get_sys(NULL, "cclk"); cpu_clk = clk_get_sys(NULL, "cclk");
if (IS_ERR(cpu_clk)) if (IS_ERR(cpu_clk))
return PTR_ERR(cpu_clk); return PTR_ERR(cpu_clk);
pll_x_clk = clk_get_sys(NULL, "pll_x"); pll_x_clk = clk_get_sys(NULL, "pll_x");
if (IS_ERR(pll_x_clk)) if (IS_ERR(pll_x_clk)) {
return PTR_ERR(pll_x_clk); err = PTR_ERR(pll_x_clk);
goto put_cpu;
}
pll_p_clk = clk_get_sys(NULL, "pll_p"); pll_p_clk = clk_get_sys(NULL, "pll_p");
if (IS_ERR(pll_p_clk)) if (IS_ERR(pll_p_clk)) {
return PTR_ERR(pll_p_clk); err = PTR_ERR(pll_p_clk);
goto put_pll_x;
}
err = cpufreq_register_driver(&tegra_cpufreq_driver);
if (err)
goto put_pll_p;
return 0;
put_pll_p:
clk_put(pll_p_clk);
put_pll_x:
clk_put(pll_x_clk);
put_cpu:
clk_put(cpu_clk);
return cpufreq_register_driver(&tegra_cpufreq_driver); return err;
} }
static void __exit tegra_cpufreq_exit(void) static void __exit tegra_cpufreq_exit(void)
{ {
cpufreq_unregister_driver(&tegra_cpufreq_driver); cpufreq_unregister_driver(&tegra_cpufreq_driver);
clk_put(pll_p_clk);
clk_put(pll_x_clk);
clk_put(cpu_clk); clk_put(cpu_clk);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment