diff options
-rw-r--r-- | drivers/cpuidle/governors/menu.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c index ee88838d7f08..a56081ce170f 100644 --- a/drivers/cpuidle/governors/menu.c +++ b/drivers/cpuidle/governors/menu.c @@ -200,18 +200,19 @@ static u64 div_round64(u64 dividend, u32 divisor) static void get_typical_interval(struct menu_device *data) { int i, divisor; - uint64_t max, avg, stddev; - int64_t thresh = LLONG_MAX; /* Discard outliers above this value. */ + unsigned int max, thresh; + uint64_t avg, stddev; + + thresh = UINT_MAX; /* Discard outliers above this value */ again: - /* first calculate average and standard deviation of the past */ + /* First calculate the average of past intervals */ max = 0; avg = 0; divisor = 0; - stddev = 0; for (i = 0; i < INTERVALS; i++) { - int64_t value = data->intervals[i]; + unsigned int value = data->intervals[i]; if (value <= thresh) { avg += value; divisor++; @@ -221,8 +222,10 @@ again: } do_div(avg, divisor); + /* Then try to determine standard deviation */ + stddev = 0; for (i = 0; i < INTERVALS; i++) { - int64_t value = data->intervals[i]; + unsigned int value = data->intervals[i]; if (value <= thresh) { int64_t diff = value - avg; stddev += diff * diff; |