From 7175d2320ba70f0bd065a14783973c8cfbcc1d12 Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Fri, 25 Jan 2019 15:55:00 +0800 Subject: [PATCH] cpufreq: dt: Implement rockchip_cpufreq_suspend() Set CPU voltage to low temperature voltage before system suspend, so that it can resume successfully at low temperature. Change-Id: Ib9ab16558ff69ea80e862473ef9ec6bfa7cd61ad Signed-off-by: Finley Xiao --- drivers/cpufreq/cpufreq-dt.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c index 977e9b5ba881..4c1a97b9b4cc 100644 --- a/drivers/cpufreq/cpufreq-dt.c +++ b/drivers/cpufreq/cpufreq-dt.c @@ -409,6 +409,18 @@ static void cpufreq_ready(struct cpufreq_policy *policy) of_node_put(np); } +static int rockchip_cpufreq_suspend(struct cpufreq_policy *policy) +{ + struct private_data *priv = policy->driver_data; + int ret = 0; + + ret = cpufreq_generic_suspend(policy); + if (!ret) + rockchip_cpu_suspend_low_temp_adjust(priv->opp_info); + + return ret; +} + static struct cpufreq_driver dt_cpufreq_driver = { .flags = CPUFREQ_STICKY | CPUFREQ_NEED_INITIAL_FREQ_CHECK | CPUFREQ_HAVE_GOVERNOR_PER_POLICY, @@ -420,7 +432,11 @@ static struct cpufreq_driver dt_cpufreq_driver = { .ready = cpufreq_ready, .name = "cpufreq-dt", .attr = cpufreq_dt_attr, +#ifdef CONFIG_ARCH_ROCKCHIP + .suspend = rockchip_cpufreq_suspend, +#else .suspend = cpufreq_generic_suspend, +#endif }; static int dt_cpufreq_probe(struct platform_device *pdev)