diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2014-11-25 05:34:22 -0500 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-11-30 20:49:33 -0500 |
commit | c6104fdbb2f83ad7696220e14fee54e14935f04b (patch) | |
tree | 8b4ddb26e2ef62b529bcde99e1899ed2154db74c /drivers/cpufreq | |
parent | 2f0f609f2e3b874e8acf895459939903e6574d9c (diff) |
exynos5440: free OPP table created during ->init()
OPP layer now supports freeing of OPPs and we should free them once they aren't
useful anymore.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r-- | drivers/cpufreq/exynos5440-cpufreq.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/cpufreq/exynos5440-cpufreq.c b/drivers/cpufreq/exynos5440-cpufreq.c index f33f25b483ca..27a57ed9eb2c 100644 --- a/drivers/cpufreq/exynos5440-cpufreq.c +++ b/drivers/cpufreq/exynos5440-cpufreq.c | |||
@@ -371,7 +371,7 @@ static int exynos_cpufreq_probe(struct platform_device *pdev) | |||
371 | if (ret) { | 371 | if (ret) { |
372 | dev_err(dvfs_info->dev, | 372 | dev_err(dvfs_info->dev, |
373 | "failed to init cpufreq table: %d\n", ret); | 373 | "failed to init cpufreq table: %d\n", ret); |
374 | goto err_put_node; | 374 | goto err_free_opp; |
375 | } | 375 | } |
376 | dvfs_info->freq_count = dev_pm_opp_get_opp_count(dvfs_info->dev); | 376 | dvfs_info->freq_count = dev_pm_opp_get_opp_count(dvfs_info->dev); |
377 | exynos_sort_descend_freq_table(); | 377 | exynos_sort_descend_freq_table(); |
@@ -423,6 +423,8 @@ static int exynos_cpufreq_probe(struct platform_device *pdev) | |||
423 | 423 | ||
424 | err_free_table: | 424 | err_free_table: |
425 | dev_pm_opp_free_cpufreq_table(dvfs_info->dev, &dvfs_info->freq_table); | 425 | dev_pm_opp_free_cpufreq_table(dvfs_info->dev, &dvfs_info->freq_table); |
426 | err_free_opp: | ||
427 | of_free_opp_table(dvfs_info->dev); | ||
426 | err_put_node: | 428 | err_put_node: |
427 | of_node_put(np); | 429 | of_node_put(np); |
428 | dev_err(&pdev->dev, "%s: failed initialization\n", __func__); | 430 | dev_err(&pdev->dev, "%s: failed initialization\n", __func__); |
@@ -433,6 +435,7 @@ static int exynos_cpufreq_remove(struct platform_device *pdev) | |||
433 | { | 435 | { |
434 | cpufreq_unregister_driver(&exynos_driver); | 436 | cpufreq_unregister_driver(&exynos_driver); |
435 | dev_pm_opp_free_cpufreq_table(dvfs_info->dev, &dvfs_info->freq_table); | 437 | dev_pm_opp_free_cpufreq_table(dvfs_info->dev, &dvfs_info->freq_table); |
438 | of_free_opp_table(dvfs_info->dev); | ||
436 | return 0; | 439 | return 0; |
437 | } | 440 | } |
438 | 441 | ||