PM / devfreq: exynos4: Use devm_devfreq_* function using device resource management

This patch uses devm_devfreq_add_device()/devm_devfreq_register_opp_notifier()
to control automatically the resource of devfreq.

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Cc: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-samsung-soc@vger.kernel.org
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
This commit is contained in:
Chanwoo Choi 2014-05-09 16:43:10 +09:00 committed by MyungJoo Ham
parent d5b040d0ca
commit c1b13d4e54

View File

@ -979,7 +979,7 @@ static int exynos4_busfreq_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, data); platform_set_drvdata(pdev, data);
data->devfreq = devfreq_add_device(dev, &exynos4_devfreq_profile, data->devfreq = devm_devfreq_add_device(dev, &exynos4_devfreq_profile,
"simple_ondemand", NULL); "simple_ondemand", NULL);
if (IS_ERR(data->devfreq)) if (IS_ERR(data->devfreq))
return PTR_ERR(data->devfreq); return PTR_ERR(data->devfreq);
@ -991,27 +991,20 @@ static int exynos4_busfreq_probe(struct platform_device *pdev)
busfreq_mon_reset(ppmu_data); busfreq_mon_reset(ppmu_data);
/* Register opp_notifier for Exynos4 busfreq */ /* Register opp_notifier for Exynos4 busfreq */
err = devfreq_register_opp_notifier(dev, data->devfreq); err = devm_devfreq_register_opp_notifier(dev, data->devfreq);
if (err < 0) { if (err < 0) {
dev_err(dev, "Failed to register opp notifier\n"); dev_err(dev, "Failed to register opp notifier\n");
goto err_notifier_opp; return err;
} }
/* Register pm_notifier for Exynos4 busfreq */ /* Register pm_notifier for Exynos4 busfreq */
err = register_pm_notifier(&data->pm_notifier); err = register_pm_notifier(&data->pm_notifier);
if (err) { if (err) {
dev_err(dev, "Failed to setup pm notifier\n"); dev_err(dev, "Failed to setup pm notifier\n");
goto err_notifier_pm; return err;
} }
return 0; return 0;
err_notifier_pm:
devfreq_unregister_opp_notifier(dev, data->devfreq);
err_notifier_opp:
devfreq_remove_device(data->devfreq);
return err;
} }
static int exynos4_busfreq_remove(struct platform_device *pdev) static int exynos4_busfreq_remove(struct platform_device *pdev)
@ -1020,10 +1013,6 @@ static int exynos4_busfreq_remove(struct platform_device *pdev)
/* Unregister all of notifier chain */ /* Unregister all of notifier chain */
unregister_pm_notifier(&data->pm_notifier); unregister_pm_notifier(&data->pm_notifier);
devfreq_unregister_opp_notifier(data->dev, data->devfreq);
/* Remove devfreq instance */
devfreq_remove_device(data->devfreq);
return 0; return 0;
} }