Skip to content
Snippets Groups Projects
Select Git revision
  • aa7c352f9841ab3fee5bf1de127a45e6310124a6
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

governor_powersave.c

Blame
  • governor_powersave.c 1.43 KiB
    /*
     *  linux/drivers/devfreq/governor_powersave.c
     *
     *  Copyright (C) 2011 Samsung Electronics
     *	MyungJoo Ham <myungjoo.ham@samsung.com>
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License version 2 as
     * published by the Free Software Foundation.
     */
    
    #include <linux/devfreq.h>
    #include <linux/module.h>
    #include "governor.h"
    
    static int devfreq_powersave_func(struct devfreq *df,
    				  unsigned long *freq)
    {
    	/*
    	 * target callback should be able to get ceiling value as
    	 * said in devfreq.h
    	 */
    	*freq = df->min_freq;
    	return 0;
    }
    
    static int devfreq_powersave_handler(struct devfreq *devfreq,
    				unsigned int event, void *data)
    {
    	int ret = 0;
    
    	if (event == DEVFREQ_GOV_START) {
    		mutex_lock(&devfreq->lock);
    		ret = update_devfreq(devfreq);
    		mutex_unlock(&devfreq->lock);
    	}
    
    	return ret;
    }
    
    static struct devfreq_governor devfreq_powersave = {
    	.name = DEVFREQ_GOV_POWERSAVE,
    	.get_target_freq = devfreq_powersave_func,
    	.event_handler = devfreq_powersave_handler,
    };
    
    static int __init devfreq_powersave_init(void)
    {
    	return devfreq_add_governor(&devfreq_powersave);
    }
    subsys_initcall(devfreq_powersave_init);
    
    static void __exit devfreq_powersave_exit(void)
    {
    	int ret;
    
    	ret = devfreq_remove_governor(&devfreq_powersave);
    	if (ret)
    		pr_err("%s: failed remove governor %d\n", __func__, ret);
    
    	return;
    }
    module_exit(devfreq_powersave_exit);
    MODULE_LICENSE("GPL");