From a439265b2ee4e6e71fe965f47eef73d325bf9452 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=BB=84=E6=B6=9B?= Date: Thu, 18 Aug 2011 18:40:54 +0800 Subject: [PATCH] rk29: cpufreq: fix cpu freq when reboot/shutdown --- arch/arm/mach-rk29/cpufreq.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/arch/arm/mach-rk29/cpufreq.c b/arch/arm/mach-rk29/cpufreq.c index 8216d2c4cd9d..fde8e1e4d510 100755 --- a/arch/arm/mach-rk29/cpufreq.c +++ b/arch/arm/mach-rk29/cpufreq.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -510,6 +511,23 @@ static struct notifier_block rk29_cpufreq_pm_notifier = { .notifier_call = rk29_cpufreq_pm_notifier_event, }; +static int rk29_cpufreq_reboot_notifier_event(struct notifier_block *this, + unsigned long event, void *ptr) +{ + struct cpufreq_policy *policy = cpufreq_cpu_get(0); + + if (policy) { + cpufreq_driver_target(policy, limit_avg_freq, DISABLE_FURTHER_CPUFREQ | CPUFREQ_RELATION_L); + cpufreq_cpu_put(policy); + } + + return NOTIFY_OK; +} + +static struct notifier_block rk29_cpufreq_reboot_notifier = { + .notifier_call = rk29_cpufreq_reboot_notifier_event, +}; + static int rk29_cpufreq_fb_notifier_event(struct notifier_block *this, unsigned long event, void *ptr) { @@ -547,6 +565,7 @@ static struct notifier_block rk29_cpufreq_fb_notifier = { static int __init rk29_cpufreq_register(void) { register_pm_notifier(&rk29_cpufreq_pm_notifier); + register_reboot_notifier(&rk29_cpufreq_reboot_notifier); rk29fb_register_notifier(&rk29_cpufreq_fb_notifier); return cpufreq_register_driver(&rk29_cpufreq_driver); -- 2.34.1