linux/drivers/cpufreq/cpufreq_powersave.c
<<
>>
Prefs
   1/*
   2 *  linux/drivers/cpufreq/cpufreq_powersave.c
   3 *
   4 *  Copyright (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
   5 *
   6 *
   7 * This program is free software; you can redistribute it and/or modify
   8 * it under the terms of the GNU General Public License version 2 as
   9 * published by the Free Software Foundation.
  10 *
  11 */
  12
  13#include <linux/kernel.h>
  14#include <linux/module.h>
  15#include <linux/cpufreq.h>
  16#include <linux/init.h>
  17
  18#define dprintk(msg...) \
  19        cpufreq_debug_printk(CPUFREQ_DEBUG_GOVERNOR, "powersave", msg)
  20
  21static int cpufreq_governor_powersave(struct cpufreq_policy *policy,
  22                                        unsigned int event)
  23{
  24        switch (event) {
  25        case CPUFREQ_GOV_START:
  26        case CPUFREQ_GOV_LIMITS:
  27                dprintk("setting to %u kHz because of event %u\n",
  28                                                        policy->min, event);
  29                __cpufreq_driver_target(policy, policy->min,
  30                                                CPUFREQ_RELATION_L);
  31                break;
  32        default:
  33                break;
  34        }
  35        return 0;
  36}
  37
  38#ifndef CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE
  39static
  40#endif
  41struct cpufreq_governor cpufreq_gov_powersave = {
  42        .name           = "powersave",
  43        .governor       = cpufreq_governor_powersave,
  44        .owner          = THIS_MODULE,
  45};
  46
  47static int __init cpufreq_gov_powersave_init(void)
  48{
  49        return cpufreq_register_governor(&cpufreq_gov_powersave);
  50}
  51
  52
  53static void __exit cpufreq_gov_powersave_exit(void)
  54{
  55        cpufreq_unregister_governor(&cpufreq_gov_powersave);
  56}
  57
  58
  59MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>");
  60MODULE_DESCRIPTION("CPUfreq policy governor 'powersave'");
  61MODULE_LICENSE("GPL");
  62
  63#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE
  64fs_initcall(cpufreq_gov_powersave_init);
  65#else
  66module_init(cpufreq_gov_powersave_init);
  67#endif
  68module_exit(cpufreq_gov_powersave_exit);
  69