diff options
author | Mattias Nilsson <mattias.i.nilsson@stericsson.com> | 2011-11-23 18:31:33 +0100 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 10:59:22 +0200 |
commit | 859a4d909c641e43837c29a0fe383801c08f57a1 (patch) | |
tree | 050993600158025f3336d4f0cdff53129484e7b1 | |
parent | 244cecb50ca351cf694d2bc0ba428182a03dd3f6 (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.c | 27 |
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; } |