From: Mark Brown Date: Thu, 19 Jun 2014 10:42:18 +0000 (+0100) Subject: Merge remote-tracking branch 'lsk/v3.10/topic/aosp' into linux-linaro-lsk-android X-Git-Tag: firefly_0821_release~3680^2~97 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=40329a6815e0740c68fcdb596ea35c2884868426;p=firefly-linux-kernel-4.4.55.git Merge remote-tracking branch 'lsk/v3.10/topic/aosp' into linux-linaro-lsk-android Conflicts: net/wireless/nl80211.c --- 40329a6815e0740c68fcdb596ea35c2884868426 diff --cc drivers/cpufreq/cpufreq_stats.c index 038c7cca0cf3,3f5e279ff9d8..0aba4d750559 --- a/drivers/cpufreq/cpufreq_stats.c +++ b/drivers/cpufreq/cpufreq_stats.c @@@ -20,10 -20,9 +20,12 @@@ #include #include #include + #include + #include #include +#ifdef CONFIG_BL_SWITCHER +#include +#endif static spinlock_t cpufreq_stats_lock; @@@ -432,10 -645,15 +647,16 @@@ static int cpufreq_stats_setup(void return ret; } + create_all_freq_table(); + ret = sysfs_create_file(cpufreq_global_kobject, + &_attr_all_time_in_state.attr); + if (ret) + pr_warn("Error creating sysfs file for cpufreq stats\n"); + return 0; } -static void __exit cpufreq_stats_exit(void) + +static void cpufreq_stats_cleanup(void) { unsigned int cpu; @@@ -448,56 -666,9 +669,57 @@@ cpufreq_stats_free_table(cpu); cpufreq_stats_free_sysfs(cpu); } + cpufreq_allstats_free(); } +#ifdef CONFIG_BL_SWITCHER +static int cpufreq_stats_switcher_notifier(struct notifier_block *nfb, + unsigned long action, void *_arg) +{ + switch (action) { + case BL_NOTIFY_PRE_ENABLE: + case BL_NOTIFY_PRE_DISABLE: + cpufreq_stats_cleanup(); + break; + + case BL_NOTIFY_POST_ENABLE: + case BL_NOTIFY_POST_DISABLE: + cpufreq_stats_setup(); + break; + + default: + return NOTIFY_DONE; + } + + return NOTIFY_OK; +} + +static struct notifier_block switcher_notifier = { + .notifier_call = cpufreq_stats_switcher_notifier, +}; +#endif + +static int __init cpufreq_stats_init(void) +{ + int ret; + spin_lock_init(&cpufreq_stats_lock); + + ret = cpufreq_stats_setup(); +#ifdef CONFIG_BL_SWITCHER + if (!ret) + bL_switcher_register_notifier(&switcher_notifier); +#endif + return ret; +} + +static void __exit cpufreq_stats_exit(void) +{ +#ifdef CONFIG_BL_SWITCHER + bL_switcher_unregister_notifier(&switcher_notifier); +#endif + cpufreq_stats_cleanup(); +} + MODULE_AUTHOR("Zou Nan hai "); MODULE_DESCRIPTION("'cpufreq_stats' - A driver to export cpufreq stats " "through sysfs filesystem");