summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattias Nilsson <mattias.i.nilsson@stericsson.com>2011-11-23 18:31:33 +0100
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 10:59:22 +0200
commit859a4d909c641e43837c29a0fe383801c08f57a1 (patch)
tree050993600158025f3336d4f0cdff53129484e7b1
parent244cecb50ca351cf694d2bc0ba428182a03dd3f6 (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>
-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 8af6f10afc1..cf10e5f53c7 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;
}