1a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham/*
2a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham * governor.h - internal header for devfreq governors.
3a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham *
4a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham * Copyright (C) 2011 Samsung Electronics
5a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham *	MyungJoo Ham <myungjoo.ham@samsung.com>
6a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham *
7a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham * This program is free software; you can redistribute it and/or modify
8a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham * it under the terms of the GNU General Public License version 2 as
9a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham * published by the Free Software Foundation.
10a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham *
11a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham * This header is for devfreq governors in drivers/devfreq/
12a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham */
13a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham
14a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham#ifndef _GOVERNOR_H
15a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham#define _GOVERNOR_H
16a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham
17a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham#include <linux/devfreq.h>
18a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham
19a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham#define to_devfreq(DEV)	container_of((DEV), struct devfreq, dev)
20a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham
217e6fdd4bad033fa2d73716377b184fa975b0d985Rajagopal Venkat/* Devfreq events */
227e6fdd4bad033fa2d73716377b184fa975b0d985Rajagopal Venkat#define DEVFREQ_GOV_START			0x1
237e6fdd4bad033fa2d73716377b184fa975b0d985Rajagopal Venkat#define DEVFREQ_GOV_STOP			0x2
247e6fdd4bad033fa2d73716377b184fa975b0d985Rajagopal Venkat#define DEVFREQ_GOV_INTERVAL			0x3
25206c30cfeb7c05dfb9fdfd81b1deb933627e43c1Rajagopal Venkat#define DEVFREQ_GOV_SUSPEND			0x4
26206c30cfeb7c05dfb9fdfd81b1deb933627e43c1Rajagopal Venkat#define DEVFREQ_GOV_RESUME			0x5
277e6fdd4bad033fa2d73716377b184fa975b0d985Rajagopal Venkat
28a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham/* Caution: devfreq->lock must be locked before calling update_devfreq */
29a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Hamextern int update_devfreq(struct devfreq *devfreq);
30a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham
317e6fdd4bad033fa2d73716377b184fa975b0d985Rajagopal Venkatextern void devfreq_monitor_start(struct devfreq *devfreq);
327e6fdd4bad033fa2d73716377b184fa975b0d985Rajagopal Venkatextern void devfreq_monitor_stop(struct devfreq *devfreq);
337e6fdd4bad033fa2d73716377b184fa975b0d985Rajagopal Venkatextern void devfreq_monitor_suspend(struct devfreq *devfreq);
347e6fdd4bad033fa2d73716377b184fa975b0d985Rajagopal Venkatextern void devfreq_monitor_resume(struct devfreq *devfreq);
357e6fdd4bad033fa2d73716377b184fa975b0d985Rajagopal Venkatextern void devfreq_interval_update(struct devfreq *devfreq,
367e6fdd4bad033fa2d73716377b184fa975b0d985Rajagopal Venkat					unsigned int *delay);
373aa173b8db200bb96354481acc0a5b9e123119feNishanth Menon
383aa173b8db200bb96354481acc0a5b9e123119feNishanth Menonextern int devfreq_add_governor(struct devfreq_governor *governor);
393aa173b8db200bb96354481acc0a5b9e123119feNishanth Menonextern int devfreq_remove_governor(struct devfreq_governor *governor);
403aa173b8db200bb96354481acc0a5b9e123119feNishanth Menon
41a3c98b8b2ede1f4230f49f9af7135cd902e71e83MyungJoo Ham#endif /* _GOVERNOR_H */
42