11da177e4SLinus Torvalds /*
21da177e4SLinus Torvalds  *  linux/drivers/cpufreq/cpufreq_performance.c
31da177e4SLinus Torvalds  *
41da177e4SLinus Torvalds  *  Copyright (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
51da177e4SLinus Torvalds  *
61da177e4SLinus Torvalds  *
71da177e4SLinus Torvalds  * This program is free software; you can redistribute it and/or modify
81da177e4SLinus Torvalds  * it under the terms of the GNU General Public License version 2 as
91da177e4SLinus Torvalds  * published by the Free Software Foundation.
101da177e4SLinus Torvalds  *
111da177e4SLinus Torvalds  */
121da177e4SLinus Torvalds 
13db701151SViresh Kumar #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
14db701151SViresh Kumar 
151da177e4SLinus Torvalds #include <linux/cpufreq.h>
161da177e4SLinus Torvalds #include <linux/init.h>
175ff0a268SViresh Kumar #include <linux/module.h>
181da177e4SLinus Torvalds 
19e788892bSRafael J. Wysocki static void cpufreq_gov_performance_limits(struct cpufreq_policy *policy)
201da177e4SLinus Torvalds {
2116de72b9SRafael J. Wysocki 	pr_debug("setting to %u kHz\n", policy->max);
22e788892bSRafael J. Wysocki 	__cpufreq_driver_target(policy, policy->max, CPUFREQ_RELATION_H);
231da177e4SLinus Torvalds }
241da177e4SLinus Torvalds 
25de1df26bSRafael J. Wysocki static struct cpufreq_governor cpufreq_gov_performance = {
261da177e4SLinus Torvalds 	.name		= "performance",
271da177e4SLinus Torvalds 	.owner		= THIS_MODULE,
28e788892bSRafael J. Wysocki 	.limits		= cpufreq_gov_performance_limits,
291da177e4SLinus Torvalds };
301da177e4SLinus Torvalds 
311da177e4SLinus Torvalds static int __init cpufreq_gov_performance_init(void)
321da177e4SLinus Torvalds {
331da177e4SLinus Torvalds 	return cpufreq_register_governor(&cpufreq_gov_performance);
341da177e4SLinus Torvalds }
351da177e4SLinus Torvalds 
361da177e4SLinus Torvalds static void __exit cpufreq_gov_performance_exit(void)
371da177e4SLinus Torvalds {
381da177e4SLinus Torvalds 	cpufreq_unregister_governor(&cpufreq_gov_performance);
391da177e4SLinus Torvalds }
401da177e4SLinus Torvalds 
41de1df26bSRafael J. Wysocki #ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE
42de1df26bSRafael J. Wysocki struct cpufreq_governor *cpufreq_default_governor(void)
43de1df26bSRafael J. Wysocki {
44de1df26bSRafael J. Wysocki 	return &cpufreq_gov_performance;
45de1df26bSRafael J. Wysocki }
46de1df26bSRafael J. Wysocki #endif
47de1df26bSRafael J. Wysocki #ifndef CONFIG_CPU_FREQ_GOV_PERFORMANCE_MODULE
48de1df26bSRafael J. Wysocki struct cpufreq_governor *cpufreq_fallback_governor(void)
49de1df26bSRafael J. Wysocki {
50de1df26bSRafael J. Wysocki 	return &cpufreq_gov_performance;
51de1df26bSRafael J. Wysocki }
52de1df26bSRafael J. Wysocki #endif
53de1df26bSRafael J. Wysocki 
541da177e4SLinus Torvalds MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>");
551da177e4SLinus Torvalds MODULE_DESCRIPTION("CPUfreq policy governor 'performance'");
561da177e4SLinus Torvalds MODULE_LICENSE("GPL");
571da177e4SLinus Torvalds 
581da177e4SLinus Torvalds fs_initcall(cpufreq_gov_performance_init);
591da177e4SLinus Torvalds module_exit(cpufreq_gov_performance_exit);
60