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 
131da177e4SLinus Torvalds #include <linux/kernel.h>
141da177e4SLinus Torvalds #include <linux/module.h>
151da177e4SLinus Torvalds #include <linux/cpufreq.h>
161da177e4SLinus Torvalds #include <linux/init.h>
171da177e4SLinus Torvalds 
18e08f5f5bSGautham R Shenoy #define dprintk(msg...) \
19e08f5f5bSGautham R Shenoy 	cpufreq_debug_printk(CPUFREQ_DEBUG_GOVERNOR, "performance", msg)
201da177e4SLinus Torvalds 
211da177e4SLinus Torvalds 
221da177e4SLinus Torvalds static int cpufreq_governor_performance(struct cpufreq_policy *policy,
231da177e4SLinus Torvalds 					unsigned int event)
241da177e4SLinus Torvalds {
251da177e4SLinus Torvalds 	switch (event) {
261da177e4SLinus Torvalds 	case CPUFREQ_GOV_START:
271da177e4SLinus Torvalds 	case CPUFREQ_GOV_LIMITS:
28e08f5f5bSGautham R Shenoy 		dprintk("setting to %u kHz because of event %u\n",
29e08f5f5bSGautham R Shenoy 						policy->max, event);
30e08f5f5bSGautham R Shenoy 		__cpufreq_driver_target(policy, policy->max,
31e08f5f5bSGautham R Shenoy 						CPUFREQ_RELATION_H);
321da177e4SLinus Torvalds 		break;
331da177e4SLinus Torvalds 	default:
341da177e4SLinus Torvalds 		break;
351da177e4SLinus Torvalds 	}
361da177e4SLinus Torvalds 	return 0;
371da177e4SLinus Torvalds }
381da177e4SLinus Torvalds 
39c4d14bc0SSven Wegener #ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE_MODULE
40c4d14bc0SSven Wegener static
41c4d14bc0SSven Wegener #endif
421da177e4SLinus Torvalds struct cpufreq_governor cpufreq_gov_performance = {
431da177e4SLinus Torvalds 	.name		= "performance",
441da177e4SLinus Torvalds 	.governor	= cpufreq_governor_performance,
451da177e4SLinus Torvalds 	.owner		= THIS_MODULE,
461da177e4SLinus Torvalds };
471da177e4SLinus Torvalds 
481da177e4SLinus Torvalds 
491da177e4SLinus Torvalds static int __init cpufreq_gov_performance_init(void)
501da177e4SLinus Torvalds {
511da177e4SLinus Torvalds 	return cpufreq_register_governor(&cpufreq_gov_performance);
521da177e4SLinus Torvalds }
531da177e4SLinus Torvalds 
541da177e4SLinus Torvalds 
551da177e4SLinus Torvalds static void __exit cpufreq_gov_performance_exit(void)
561da177e4SLinus Torvalds {
571da177e4SLinus Torvalds 	cpufreq_unregister_governor(&cpufreq_gov_performance);
581da177e4SLinus Torvalds }
591da177e4SLinus Torvalds 
601da177e4SLinus Torvalds 
611da177e4SLinus Torvalds MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>");
621da177e4SLinus Torvalds MODULE_DESCRIPTION("CPUfreq policy governor 'performance'");
631da177e4SLinus Torvalds MODULE_LICENSE("GPL");
641da177e4SLinus Torvalds 
651da177e4SLinus Torvalds fs_initcall(cpufreq_gov_performance_init);
661da177e4SLinus Torvalds module_exit(cpufreq_gov_performance_exit);
67