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