PM / devfreq: map devfreq drivers to governor using name
[deliverable/linux.git] / drivers / devfreq / governor_simpleondemand.c
index 3716a659122bdfabbc3f6a06ed30e6b55c4fd0c4..a870a24bb56b05731e8b9a0c804bbdfc5126b1e9 100644 (file)
@@ -104,6 +104,15 @@ static int devfreq_simple_ondemand_handler(struct devfreq *devfreq,
        case DEVFREQ_GOV_INTERVAL:
                devfreq_interval_update(devfreq, (unsigned int *)data);
                break;
+
+       case DEVFREQ_GOV_SUSPEND:
+               devfreq_monitor_suspend(devfreq);
+               break;
+
+       case DEVFREQ_GOV_RESUME:
+               devfreq_monitor_resume(devfreq);
+               break;
+
        default:
                break;
        }
@@ -111,8 +120,26 @@ static int devfreq_simple_ondemand_handler(struct devfreq *devfreq,
        return 0;
 }
 
-const struct devfreq_governor devfreq_simple_ondemand = {
+static struct devfreq_governor devfreq_simple_ondemand = {
        .name = "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);
This page took 0.030048 seconds and 5 git commands to generate.