| // SPDX-License-Identifier: GPL-2.0-only | 
 | /* | 
 |  * linux/drivers/cpufreq/cpufreq_powersave.c | 
 |  * | 
 |  * Copyright (C) 2002 - 2003 Dominik Brodowski <[email protected]> | 
 |  */ | 
 |  | 
 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | 
 |  | 
 | #include <linux/cpufreq.h> | 
 | #include <linux/init.h> | 
 | #include <linux/module.h> | 
 |  | 
 | static void cpufreq_gov_powersave_limits(struct cpufreq_policy *policy) | 
 | { | 
 | 	pr_debug("setting to %u kHz\n", policy->min); | 
 | 	__cpufreq_driver_target(policy, policy->min, CPUFREQ_RELATION_L); | 
 | } | 
 |  | 
 | static struct cpufreq_governor cpufreq_gov_powersave = { | 
 | 	.name		= "powersave", | 
 | 	.limits		= cpufreq_gov_powersave_limits, | 
 | 	.owner		= THIS_MODULE, | 
 | }; | 
 |  | 
 | static int __init cpufreq_gov_powersave_init(void) | 
 | { | 
 | 	return cpufreq_register_governor(&cpufreq_gov_powersave); | 
 | } | 
 |  | 
 | static void __exit cpufreq_gov_powersave_exit(void) | 
 | { | 
 | 	cpufreq_unregister_governor(&cpufreq_gov_powersave); | 
 | } | 
 |  | 
 | MODULE_AUTHOR("Dominik Brodowski <[email protected]>"); | 
 | MODULE_DESCRIPTION("CPUfreq policy governor 'powersave'"); | 
 | MODULE_LICENSE("GPL"); | 
 |  | 
 | #ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE | 
 | struct cpufreq_governor *cpufreq_default_governor(void) | 
 | { | 
 | 	return &cpufreq_gov_powersave; | 
 | } | 
 |  | 
 | fs_initcall(cpufreq_gov_powersave_init); | 
 | #else | 
 | module_init(cpufreq_gov_powersave_init); | 
 | #endif | 
 | module_exit(cpufreq_gov_powersave_exit); |