diff options
Diffstat (limited to 'drivers/devfreq/governor_performance.c')
-rw-r--r-- | drivers/devfreq/governor_performance.c | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/drivers/devfreq/governor_performance.c b/drivers/devfreq/governor_performance.c index af75ddd4f158..c72f942f30a8 100644 --- a/drivers/devfreq/governor_performance.c +++ b/drivers/devfreq/governor_performance.c | |||
@@ -10,6 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/devfreq.h> | 12 | #include <linux/devfreq.h> |
13 | #include <linux/module.h> | ||
13 | #include "governor.h" | 14 | #include "governor.h" |
14 | 15 | ||
15 | static int devfreq_performance_func(struct devfreq *df, | 16 | static int devfreq_performance_func(struct devfreq *df, |
@@ -26,14 +27,41 @@ static int devfreq_performance_func(struct devfreq *df, | |||
26 | return 0; | 27 | return 0; |
27 | } | 28 | } |
28 | 29 | ||
29 | static int performance_init(struct devfreq *devfreq) | 30 | static int devfreq_performance_handler(struct devfreq *devfreq, |
31 | unsigned int event, void *data) | ||
30 | { | 32 | { |
31 | return update_devfreq(devfreq); | 33 | int ret = 0; |
34 | |||
35 | if (event == DEVFREQ_GOV_START) { | ||
36 | mutex_lock(&devfreq->lock); | ||
37 | ret = update_devfreq(devfreq); | ||
38 | mutex_unlock(&devfreq->lock); | ||
39 | } | ||
40 | |||
41 | return ret; | ||
32 | } | 42 | } |
33 | 43 | ||
34 | const struct devfreq_governor devfreq_performance = { | 44 | static struct devfreq_governor devfreq_performance = { |
35 | .name = "performance", | 45 | .name = "performance", |
36 | .init = performance_init, | ||
37 | .get_target_freq = devfreq_performance_func, | 46 | .get_target_freq = devfreq_performance_func, |
38 | .no_central_polling = true, | 47 | .event_handler = devfreq_performance_handler, |
39 | }; | 48 | }; |
49 | |||
50 | static int __init devfreq_performance_init(void) | ||
51 | { | ||
52 | return devfreq_add_governor(&devfreq_performance); | ||
53 | } | ||
54 | subsys_initcall(devfreq_performance_init); | ||
55 | |||
56 | static void __exit devfreq_performance_exit(void) | ||
57 | { | ||
58 | int ret; | ||
59 | |||
60 | ret = devfreq_remove_governor(&devfreq_performance); | ||
61 | if (ret) | ||
62 | pr_err("%s: failed remove governor %d\n", __func__, ret); | ||
63 | |||
64 | return; | ||
65 | } | ||
66 | module_exit(devfreq_performance_exit); | ||
67 | MODULE_LICENSE("GPL"); | ||