From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chanwoo Choi Subject: [PATCH 4/4] devfreq: exynos4: Use SET_SYSTEM_SLEEP_PM_OPS macro instead of legacy method Date: Wed, 12 Mar 2014 20:48:02 +0900 Message-ID: <1394624882-2989-5-git-send-email-cw00.choi@samsung.com> References: <1394624882-2989-1-git-send-email-cw00.choi@samsung.com> Return-path: In-reply-to: <1394624882-2989-1-git-send-email-cw00.choi@samsung.com> Sender: linux-kernel-owner@vger.kernel.org To: myungjoo.ham@samsung.com, kyungmin.park@samsung.com Cc: rafael.j.wysocki@intel.com, nm@ti.com, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@vger.kernel.org, Chanwoo Choi List-Id: linux-pm@vger.kernel.org This patch use SET_SYSTEM_SLEEP_PM_OPS macro instead of legacy method. Also, Before entering suspend state, disable ppmu's clock to remove power-leakage in suspend state. Signed-off-by: Chanwoo Choi --- drivers/devfreq/exynos/exynos4_bus.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/drivers/devfreq/exynos/exynos4_bus.c b/drivers/devfreq/exynos/exynos4_bus.c index 0c5b99e..7e1540a 100644 --- a/drivers/devfreq/exynos/exynos4_bus.c +++ b/drivers/devfreq/exynos/exynos4_bus.c @@ -1229,16 +1229,40 @@ static int exynos4_busfreq_remove(struct platform_device *pdev) return 0; } +#ifdef CONFIG_PM_SLEEP static int exynos4_busfreq_resume(struct device *dev) { struct busfreq_data *data = dev_get_drvdata(dev); + int i; + + /* Enable clock after wake-up from suspend state */ + for (i = 0; i < PPMU_END; i++) + clk_prepare_enable(data->clk_ppmu[i]); + /* Reset PPMU to check utilization again */ busfreq_mon_reset(data); + + return 0; +} + +static int exynos4_busfreq_suspend(struct device *dev) +{ + struct busfreq_data *data = dev_get_drvdata(dev); + int i; + + /* + * Disable clock before entering suspend state + * to reduce leakage power on suspend state. + */ + for (i = 0; i < PPMU_END; i++) + clk_disable_unprepare(data->clk_ppmu[i]); + return 0; } +#endif static const struct dev_pm_ops exynos4_busfreq_pm = { - .resume = exynos4_busfreq_resume, + SET_SYSTEM_SLEEP_PM_OPS(exynos4_busfreq_suspend, exynos4_busfreq_resume) }; static const struct platform_device_id exynos4_busfreq_id[] = { -- 1.8.0