aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/mach-ux500/pm/cpufreq-db5500.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-ux500/pm/cpufreq-db5500.c')
-rw-r--r--arch/arm/mach-ux500/pm/cpufreq-db5500.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/arch/arm/mach-ux500/pm/cpufreq-db5500.c b/arch/arm/mach-ux500/pm/cpufreq-db5500.c
new file mode 100644
index 00000000000..c68caa064e1
--- /dev/null
+++ b/arch/arm/mach-ux500/pm/cpufreq-db5500.c
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) ST-Ericsson SA 2011
+ *
+ * License Terms: GNU General Public License v2
+ */
+
+#include <linux/kernel.h>
+#include <linux/cpufreq.h>
+
+#include <mach/prcmu.h>
+
+#include "cpufreq.h"
+
+static struct cpufreq_frequency_table freq_table[] = {
+ [0] = {
+ .index = 0,
+ .frequency = 200000,
+ },
+ [1] = {
+ .index = 1,
+ .frequency = 300000,
+ },
+ [2] = {
+ .index = 2,
+ .frequency = 600000,
+ },
+ [3] = {
+ .index = 3,
+ .frequency = CPUFREQ_TABLE_END,
+ },
+};
+
+static enum arm_opp idx2opp[] = {
+ ARM_EXTCLK,
+ ARM_50_OPP,
+ ARM_100_OPP,
+};
+
+static int __init u5500_cpufreq_register(void)
+{
+ int i = 0;
+
+ BUILD_BUG_ON(ARRAY_SIZE(idx2opp) + 1 != ARRAY_SIZE(freq_table));
+
+ pr_info("u5500-cpufreq : Available frequencies:\n");
+ while (freq_table[i].frequency != CPUFREQ_TABLE_END)
+ pr_info(" %d Mhz\n", freq_table[i++].frequency/1000);
+
+ return ux500_cpufreq_register(freq_table, idx2opp);
+}
+device_initcall(u5500_cpufreq_register);