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 
191da177e4SLinus Torvalds static int cpufreq_governor_performance(struct cpufreq_policy *policy,
201da177e4SLinus Torvalds 					unsigned int event)
211da177e4SLinus Torvalds {
221da177e4SLinus Torvalds 	switch (event) {
231da177e4SLinus Torvalds 	case CPUFREQ_GOV_LIMITS:
2416de72b9SRafael J. Wysocki 		pr_debug("setting to %u kHz\n", policy->max);
25e08f5f5bSGautham R Shenoy 		__cpufreq_driver_target(policy, policy->max,
26e08f5f5bSGautham R Shenoy 						CPUFREQ_RELATION_H);
271da177e4SLinus Torvalds 		break;
281da177e4SLinus Torvalds 	default:
291da177e4SLinus Torvalds 		break;
301da177e4SLinus Torvalds 	}
311da177e4SLinus Torvalds 	return 0;
321da177e4SLinus Torvalds }
331da177e4SLinus Torvalds 
34de1df26bSRafael J. Wysocki static struct cpufreq_governor cpufreq_gov_performance = {
351da177e4SLinus Torvalds 	.name		= "performance",
361da177e4SLinus Torvalds 	.governor	= cpufreq_governor_performance,
371da177e4SLinus Torvalds 	.owner		= THIS_MODULE,
381da177e4SLinus Torvalds };
391da177e4SLinus Torvalds 
401da177e4SLinus Torvalds static int __init cpufreq_gov_performance_init(void)
411da177e4SLinus Torvalds {
421da177e4SLinus Torvalds 	return cpufreq_register_governor(&cpufreq_gov_performance);
431da177e4SLinus Torvalds }
441da177e4SLinus Torvalds 
451da177e4SLinus Torvalds static void __exit cpufreq_gov_performance_exit(void)
461da177e4SLinus Torvalds {
471da177e4SLinus Torvalds 	cpufreq_unregister_governor(&cpufreq_gov_performance);
481da177e4SLinus Torvalds }
491da177e4SLinus Torvalds 
50de1df26bSRafael J. Wysocki #ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE
51de1df26bSRafael J. Wysocki struct cpufreq_governor *cpufreq_default_governor(void)
52de1df26bSRafael J. Wysocki {
53de1df26bSRafael J. Wysocki 	return &cpufreq_gov_performance;
54de1df26bSRafael J. Wysocki }
55de1df26bSRafael J. Wysocki #endif
56de1df26bSRafael J. Wysocki #ifndef CONFIG_CPU_FREQ_GOV_PERFORMANCE_MODULE
57de1df26bSRafael J. Wysocki struct cpufreq_governor *cpufreq_fallback_governor(void)
58de1df26bSRafael J. Wysocki {
59de1df26bSRafael J. Wysocki 	return &cpufreq_gov_performance;
60de1df26bSRafael J. Wysocki }
61de1df26bSRafael J. Wysocki #endif
62de1df26bSRafael J. Wysocki 
631da177e4SLinus Torvalds MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>");
641da177e4SLinus Torvalds MODULE_DESCRIPTION("CPUfreq policy governor 'performance'");
651da177e4SLinus Torvalds MODULE_LICENSE("GPL");
661da177e4SLinus Torvalds 
671da177e4SLinus Torvalds fs_initcall(cpufreq_gov_performance_init);
681da177e4SLinus Torvalds module_exit(cpufreq_gov_performance_exit);
69