14 #include <linux/kernel.h>
15 #include <linux/module.h>
24 #define OSIRIS_GPIO_DVS S3C2410_GPB(5)
28 static void osiris_dvs_tps_setdvs(
bool on)
30 unsigned vregs1 = 0, vdcdc2 = 0;
52 static bool cur_dvs =
false;
59 bool old_dvs = is_dvs(&freqs->
old);
60 bool new_dvs = is_dvs(&freqs->
new);
67 freqs->
old.armclk, freqs->
old.hclk,
68 freqs->
new.armclk, freqs->
new.hclk);
72 if (old_dvs & !new_dvs ||
74 pr_debug(
"%s: exiting dvs\n", __func__);
80 if (!old_dvs & new_dvs ||
93 .notifier_call = osiris_dvs_notify,
114 dev_err(&pdev->
dev,
"failed to register with cpufreq\n");
118 osiris_dvs_tps_setdvs(
true);
135 osiris_dvs_tps_setdvs(
false);
148 static int osiris_dvs_suspend(
struct device *
dev)
151 osiris_dvs_tps_setdvs(
false);
157 static int osiris_dvs_resume(
struct device *
dev)
159 osiris_dvs_tps_setdvs(
true);
163 static const struct dev_pm_ops osiris_dvs_pm = {
164 .suspend = osiris_dvs_suspend,
165 .resume = osiris_dvs_resume,
169 .probe = osiris_dvs_probe,
172 .name =
"osiris-dvs",
174 .pm = &osiris_dvs_pm,