summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/cpuidle-t2.c
diff options
context:
space:
mode:
authorJoseph Lehrer <jlehrer@nvidia.com>2012-01-02 08:03:32 -0800
committerRohan Somvanshi <rsomvanshi@nvidia.com>2012-01-10 08:13:14 -0800
commit4e2472f3c4cb1efe24f2ef1875ccb0ecec500df1 (patch)
tree2adc7fb5b895cddaf411277bd41c29bc2f7c0af8 /arch/arm/mach-tegra/cpuidle-t2.c
parentb9a658c9cb48992716411298d1d61ca42997248f (diff)
arm: tegra: REVERT "use unsigned cpuidle latency variables"
Reverting until LP2 hang problem better understood. bug 896827 Reverts I8c8226433d26efbbc1579372c9a73cbc5897f26c Signed-off-by: Joseph Lehrer <jlehrer@nvidia.com> Change-Id: I9ae1f8e75b77049baf26480691b98e6f9cacca4e (cherry picked from commit c0b30ab66c5f1286a5c1f10777c436a80f8f2fa8) Reviewed-on: http://git-master/r/72905 Reviewed-by: Jon Mayo <jmayo@nvidia.com> Reviewed-by: Matt Wagner <mwagner@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Karan Jhavar <kjhavar@nvidia.com> Reviewed-by: Dan Willemsen <dwillemsen@nvidia.com> Reviewed-by: Joseph Lehrer <jlehrer@nvidia.com> Tested-by: Joseph Lehrer <jlehrer@nvidia.com> (cherry picked from commit 3d7b52eaf614848e8417c84b819c76faed306503) Reviewed-on: http://git-master/r/73951 Reviewed-by: Varun Wadekar <vwadekar@nvidia.com> Tested-by: Varun Wadekar <vwadekar@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/cpuidle-t2.c')
-rw-r--r--arch/arm/mach-tegra/cpuidle-t2.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/arch/arm/mach-tegra/cpuidle-t2.c b/arch/arm/mach-tegra/cpuidle-t2.c
index d95d0e712652..e5ff7c61f24c 100644
--- a/arch/arm/mach-tegra/cpuidle-t2.c
+++ b/arch/arm/mach-tegra/cpuidle-t2.c
@@ -76,7 +76,7 @@ static inline unsigned int time_to_bin(unsigned int time)
static void __iomem *clk_rst = IO_ADDRESS(TEGRA_CLK_RESET_BASE);
static void __iomem *pmc = IO_ADDRESS(TEGRA_PMC_BASE);
-static u64 tegra_cpu1_wake_by_time = LLONG_MAX;
+static s64 tegra_cpu1_wake_by_time = LLONG_MAX;
static int tegra2_reset_sleeping_cpu(int cpu)
{
@@ -163,7 +163,7 @@ static int tegra2_reset_other_cpus(int cpu)
bool tegra2_lp2_is_allowed(struct cpuidle_device *dev,
struct cpuidle_state *state)
{
- u64 request = ktime_to_us(tick_nohz_get_sleep_length());
+ s64 request = ktime_to_us(tick_nohz_get_sleep_length());
if (request < state->target_residency) {
/* Not enough time left to enter LP2 */
@@ -183,11 +183,11 @@ static inline void tegra2_lp3_fall_back(struct cpuidle_device *dev)
}
static int tegra2_idle_lp2_cpu_0(struct cpuidle_device *dev,
- struct cpuidle_state *state, unsigned int request)
+ struct cpuidle_state *state, s64 request)
{
ktime_t entry_time;
ktime_t exit_time;
- u64 wake_time;
+ s64 wake_time;
bool sleep_completed = false;
int bin;
int i;
@@ -213,7 +213,7 @@ static int tegra2_idle_lp2_cpu_0(struct cpuidle_device *dev,
/* CPU0 must wake up before CPU1. */
smp_rmb();
- wake_time = min_t(u64, wake_time, tegra_cpu1_wake_by_time);
+ wake_time = min_t(s64, wake_time, tegra_cpu1_wake_by_time);
/* LP2 actual targeted wake time */
request = wake_time - ktime_to_us(entry_time);
@@ -223,9 +223,9 @@ static int tegra2_idle_lp2_cpu_0(struct cpuidle_device *dev,
entry_time = ktime_get();
if (request > state->target_residency) {
- u64 sleep_time = request - tegra_lp2_exit_latency;
+ s64 sleep_time = request - tegra_lp2_exit_latency;
- bin = time_to_bin(request / 1000);
+ bin = time_to_bin((u32)request / 1000);
idle_stats.lp2_count++;
idle_stats.lp2_count_bin[bin]++;
@@ -252,9 +252,9 @@ static int tegra2_idle_lp2_cpu_0(struct cpuidle_device *dev,
* Stayed in LP2 for the full time until the next tick,
* adjust the exit latency based on measurement
*/
- u64 actual_time = ktime_to_us(ktime_sub(exit_time, entry_time));
- unsigned int offset = actual_time - request;
- unsigned int latency = tegra_lp2_exit_latency + offset / 16;
+ s64 actual_time = ktime_to_us(ktime_sub(exit_time, entry_time));
+ long offset = (long)(actual_time - request);
+ int latency = tegra_lp2_exit_latency + offset / 16;
latency = clamp(latency, 0, 10000);
tegra_lp2_exit_latency = latency;
smp_wmb();
@@ -263,7 +263,7 @@ static int tegra2_idle_lp2_cpu_0(struct cpuidle_device *dev,
idle_stats.lp2_completed_count_bin[bin]++;
idle_stats.in_lp2_time += actual_time;
- pr_debug("%d %lld %ld %d\n", request, actual_time,
+ pr_debug("%lld %lld %ld %d\n", request, actual_time,
offset, bin);
}
@@ -271,7 +271,7 @@ static int tegra2_idle_lp2_cpu_0(struct cpuidle_device *dev,
}
static void tegra2_idle_lp2_cpu_1(struct cpuidle_device *dev,
- struct cpuidle_state *state, unsigned int request)
+ struct cpuidle_state *state, s64 request)
{
#ifdef CONFIG_SMP
struct tegra_twd_context twd_context;
@@ -305,7 +305,7 @@ static void tegra2_idle_lp2_cpu_1(struct cpuidle_device *dev,
void tegra2_idle_lp2(struct cpuidle_device *dev,
struct cpuidle_state *state)
{
- u64 request = ktime_to_us(tick_nohz_get_sleep_length());
+ s64 request = ktime_to_us(tick_nohz_get_sleep_length());
bool last_cpu = tegra_set_cpu_in_lp2(dev->cpu);
cpu_pm_enter();