1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
21da177e4SLinus Torvalds /*
31da177e4SLinus Torvalds  *  linux/drivers/cpufreq/cpufreq_performance.c
41da177e4SLinus Torvalds  *
51da177e4SLinus Torvalds  *  Copyright (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
61da177e4SLinus Torvalds  */
71da177e4SLinus Torvalds 
8db701151SViresh Kumar #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
9db701151SViresh Kumar 
101da177e4SLinus Torvalds #include <linux/cpufreq.h>
111da177e4SLinus Torvalds #include <linux/init.h>
125ff0a268SViresh Kumar #include <linux/module.h>
131da177e4SLinus Torvalds 
cpufreq_gov_performance_limits(struct cpufreq_policy * policy)14e788892bSRafael J. Wysocki static void cpufreq_gov_performance_limits(struct cpufreq_policy *policy)
151da177e4SLinus Torvalds {
1616de72b9SRafael J. Wysocki 	pr_debug("setting to %u kHz\n", policy->max);
17e788892bSRafael J. Wysocki 	__cpufreq_driver_target(policy, policy->max, CPUFREQ_RELATION_H);
181da177e4SLinus Torvalds }
191da177e4SLinus Torvalds 
20de1df26bSRafael J. Wysocki static struct cpufreq_governor cpufreq_gov_performance = {
211da177e4SLinus Torvalds 	.name		= "performance",
221da177e4SLinus Torvalds 	.owner		= THIS_MODULE,
23218f6687SRafael J. Wysocki 	.flags		= CPUFREQ_GOV_STRICT_TARGET,
24e788892bSRafael J. Wysocki 	.limits		= cpufreq_gov_performance_limits,
251da177e4SLinus Torvalds };
261da177e4SLinus Torvalds 
27de1df26bSRafael J. Wysocki #ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE
cpufreq_default_governor(void)28de1df26bSRafael J. Wysocki struct cpufreq_governor *cpufreq_default_governor(void)
29de1df26bSRafael J. Wysocki {
30de1df26bSRafael J. Wysocki 	return &cpufreq_gov_performance;
31de1df26bSRafael J. Wysocki }
32de1df26bSRafael J. Wysocki #endif
33de1df26bSRafael J. Wysocki #ifndef CONFIG_CPU_FREQ_GOV_PERFORMANCE_MODULE
cpufreq_fallback_governor(void)34de1df26bSRafael J. Wysocki struct cpufreq_governor *cpufreq_fallback_governor(void)
35de1df26bSRafael J. Wysocki {
36de1df26bSRafael J. Wysocki 	return &cpufreq_gov_performance;
37de1df26bSRafael J. Wysocki }
38de1df26bSRafael J. Wysocki #endif
39de1df26bSRafael J. Wysocki 
401da177e4SLinus Torvalds MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>");
411da177e4SLinus Torvalds MODULE_DESCRIPTION("CPUfreq policy governor 'performance'");
421da177e4SLinus Torvalds MODULE_LICENSE("GPL");
431da177e4SLinus Torvalds 
4410dd8573SQuentin Perret cpufreq_governor_init(cpufreq_gov_performance);
4510dd8573SQuentin Perret cpufreq_governor_exit(cpufreq_gov_performance);
46