summaryrefslogtreecommitdiff
path: root/drivers/cpufreq
diff options
context:
space:
mode:
authorMattias Nilsson <mattias.i.nilsson@stericsson.com>2011-11-23 18:31:33 +0100
committerPhilippe Langlais <philippe.langlais@linaro.org>2012-03-19 08:49:20 +0100
commitbe882fb9230e6dc85df85d0b432318e7d3fbb8b6 (patch)
tree7ecd798de1b5f10f440ad7f88fa4a797f7e17007 /drivers/cpufreq
parentd48af07c4a50cd01a2d090a29bd5eee443449da0 (diff)
cpufreq: set the dbx500 maxopp frequency according to prcmu firmware version
This patch updates the initialization of the cpufreq table for dbx500, to take the PRCMU firmware version into account. ST Ericsson ID: 369379 ST Ericsson FOSS-OUT ID: trivial Change-Id: I501b29248eddabeddc171a0979728aef63ce4940 Signed-off-by: Mattias Nilsson <mattias.i.nilsson@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/40033 Reviewed-by: QABUILD Reviewed-by: Bengt JONSSON <bengt.g.jonsson@stericsson.com> Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r--drivers/cpufreq/dbx500-cpufreq.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/drivers/cpufreq/dbx500-cpufreq.c b/drivers/cpufreq/dbx500-cpufreq.c
index e27c2b3294b..9a583189737 100644
--- a/drivers/cpufreq/dbx500-cpufreq.c
+++ b/drivers/cpufreq/dbx500-cpufreq.c
@@ -136,6 +136,27 @@ static unsigned int dbx500_cpufreq_getspeed(unsigned int cpu)
return freq_table[i].frequency;
}
+static void __init dbx500_cpufreq_init_maxopp_freq(void)
+{
+ struct prcmu_fw_version *fw_version = prcmu_get_fw_version();
+
+ if ((fw_version == NULL) || !prcmu_has_arm_maxopp())
+ return;
+
+ switch (fw_version->project) {
+ case PRCMU_FW_PROJECT_U8500:
+ case PRCMU_FW_PROJECT_U9500:
+ freq_table[3].frequency = 1000000;
+ break;
+ case PRCMU_FW_PROJECT_U8500_C2:
+ case PRCMU_FW_PROJECT_U9500_C2:
+ freq_table[3].frequency = 1150000;
+ break;
+ default:
+ break;
+ }
+}
+
static bool initialized;
static void __init dbx500_cpufreq_early_init(void)
@@ -143,17 +164,13 @@ static void __init dbx500_cpufreq_early_init(void)
if (cpu_is_u5500()) {
freq_table = db5500_freq_table;
idx2opp = db5500_idx2opp;
-
} else if (cpu_is_u8500()) {
freq_table = db8500_freq_table;
idx2opp = db8500_idx2opp;
- if (prcmu_has_arm_maxopp())
- freq_table[3].frequency = 1000000;
-
+ dbx500_cpufreq_init_maxopp_freq();
} else {
ux500_unknown_soc();
}
-
initialized = true;
}