libpayload: improve us timer accuracy

In cases where timer clock frequency is not an integer number of
megahertz, the calculations in timer_us() lack accuracy.

This patch modifies calculations to reduce the error. The maximum
interval this calculation would support decreases, but it still is in
excess of 1844674 seconds for a timer clocked by 10 MHz, which is more
than enough.

BUG=none
TEST=manual
  . verified timer accuracy using a depthcharge CLI command

Change-Id: Iffb323db10e74b0ce3b4d59a56983bfee12e6805
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/207358
Reviewed-by: David Hendricks <dhendrix@chromium.org>
This commit is contained in:
Vadim Bendebury 2014-07-10 12:49:46 -07:00 committed by chrome-internal-fetch
commit e1abf87d43

View file

@ -204,5 +204,5 @@ u64 timer_us(u64 base)
}
}
return timer_raw_value() / (hz / 1000000) - base;
return (1000000 * timer_raw_value()) / hz - base;
}