]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
PM / devfreq: register governors with devfreq framework
authorNishanth Menon <nm@ti.com>
Mon, 29 Oct 2012 20:01:44 +0000 (15:01 -0500)
committerMyungJoo Ham <myungjoo.ham@samsung.com>
Tue, 20 Nov 2012 09:46:22 +0000 (18:46 +0900)
With the new registration functions, governors can be now
registered with devfreq framework.

NOTE: generates 'discards qualifiers from pointer target type'
build warnings, which the next patche in this series fixes

Cc: Rajagopal Venkat <rajagopal.venkat@linaro.org>
Cc: MyungJoo Ham <myungjoo.ham@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Kevin Hilman <khilman@ti.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Nishanth Menon <nm@ti.com>
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
drivers/devfreq/governor_performance.c
drivers/devfreq/governor_powersave.c
drivers/devfreq/governor_simpleondemand.c
drivers/devfreq/governor_userspace.c

index eea3f9bd78947331fe5b5ce8d9e8b6e6fac7de18..db8ff77dbed2c6b46bdecdcb4314b91dbab6b667 100644 (file)
@@ -45,3 +45,21 @@ const struct devfreq_governor devfreq_performance = {
        .get_target_freq = devfreq_performance_func,
        .event_handler = devfreq_performance_handler,
 };
+
+static int __init devfreq_performance_init(void)
+{
+       return devfreq_add_governor(&devfreq_performance);
+}
+subsys_initcall(devfreq_performance_init);
+
+static void __exit devfreq_performance_exit(void)
+{
+       int ret;
+
+       ret = devfreq_remove_governor(&devfreq_performance);
+       if (ret)
+               pr_err("%s: failed remove governor %d\n", __func__, ret);
+
+       return;
+}
+module_exit(devfreq_performance_exit);
index 2868d98ed3e23bd3075b046e25a9b120f77c223e..30f0fca8d63554d174343bddf6cba59b0e236530 100644 (file)
@@ -42,3 +42,21 @@ const struct devfreq_governor devfreq_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);
index b5cf0fb24efeb4d15ed762bf6df5a28a49bfc73b..85f9ed531b1e19ee1ea13c51c0a089d8391fda8f 100644 (file)
@@ -125,3 +125,21 @@ const struct devfreq_governor devfreq_simple_ondemand = {
        .get_target_freq = devfreq_simple_ondemand_func,
        .event_handler = devfreq_simple_ondemand_handler,
 };
+
+static int __init devfreq_simple_ondemand_init(void)
+{
+       return devfreq_add_governor(&devfreq_simple_ondemand);
+}
+subsys_initcall(devfreq_simple_ondemand_init);
+
+static void __exit devfreq_simple_ondemand_exit(void)
+{
+       int ret;
+
+       ret = devfreq_remove_governor(&devfreq_simple_ondemand);
+       if (ret)
+               pr_err("%s: failed remove governor %d\n", __func__, ret);
+
+       return;
+}
+module_exit(devfreq_simple_ondemand_exit);
index 7067555bd4441060528bd8e1395c80de8df27b9f..110f178fec04e130c3cea06b016393cd346214ff 100644 (file)
@@ -140,3 +140,21 @@ const struct devfreq_governor devfreq_userspace = {
        .get_target_freq = devfreq_userspace_func,
        .event_handler = devfreq_userspace_handler,
 };
+
+static int __init devfreq_userspace_init(void)
+{
+       return devfreq_add_governor(&devfreq_userspace);
+}
+subsys_initcall(devfreq_userspace_init);
+
+static void __exit devfreq_userspace_exit(void)
+{
+       int ret;
+
+       ret = devfreq_remove_governor(&devfreq_userspace);
+       if (ret)
+               pr_err("%s: failed remove governor %d\n", __func__, ret);
+
+       return;
+}
+module_exit(devfreq_userspace_exit);