From 6bb999a64b764f428594e85d054fc38d16ebd53d Mon Sep 17 00:00:00 2001
From: Vincent Guittot <vincent.guittot@stericsson.com>
Date: Mon, 11 Oct 2010 16:11:16 +0200
Subject: [PATCH] cpufreq_getspeed can't return negative value

---
 arch/arm/mach-ux500/cpufreq.c |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-ux500/cpufreq.c b/arch/arm/mach-ux500/cpufreq.c
index 4454a08..2afcd63 100755
--- a/arch/arm/mach-ux500/cpufreq.c
+++ b/arch/arm/mach-ux500/cpufreq.c
@@ -31,6 +31,12 @@ static struct cpufreq_frequency_table freq_table[] = {
 	}
 };
 
+enum u8500_freq_idx {
+          ARM_EXTCLK_OPP_FREQ = 0,
+          ARM_50_OPP_FREQ,
+          ARM_100_OPP_FREQ,
+};
+
 static struct freq_attr *u8500_cpufreq_attr[] = {
 	&cpufreq_freq_attr_scaling_available_freqs,
 	NULL,
@@ -96,11 +102,13 @@ unsigned int u8500_getspeed(unsigned int cpu)
 	enum arm_opp_t opp = prcmu_get_arm_opp();
 
 	switch (opp) {
-	case ARM_EXTCLK: return freq_table[0].frequency;
-	case ARM_50_OPP: return freq_table[1].frequency;
-	case ARM_100_OPP: return freq_table[2].frequency;
+	case ARM_EXTCLK: return freq_table[ARM_EXTCLK_OPP_FREQ].frequency;
+	case ARM_50_OPP: return freq_table[ARM_50_OPP_FREQ].frequency;
+	case ARM_100_OPP: return freq_table[ARM_100_OPP_FREQ].frequency;
 	default:
-			  return -EINVAL;
+		/* During boot, the returned value is undefined */
+		/* In this case, we set the max frequency */
+		return freq_table[ARM_100_OPP_FREQ].frequency;
 	}
 	return 0;
 }
-- 
1.7.0.4

