diff options
author | Vadim Bendebury <vbendeb@chromium.org> | 2014-07-10 12:49:46 -0700 |
---|---|---|
committer | Marc Jones <marc.jones@se-eng.com> | 2015-01-12 05:55:45 +0100 |
commit | 1c5cdad09efa7d6bd196ad852dbeb5f740ac66e3 (patch) | |
tree | b122e84cdc7be7918cc41021913a3ce0d30691cc /payloads/libpayload/libc/time.c | |
parent | ab699846018d5a697d9d2c3f88031d932cc5fe58 (diff) | |
download | coreboot-1c5cdad09efa7d6bd196ad852dbeb5f740ac66e3.tar.xz |
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
Original-Change-Id: Iffb323db10e74b0ce3b4d59a56983bfee12e6805
Original-Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/207358
Original-Reviewed-by: David Hendricks <dhendrix@chromium.org>
(cherry picked from commit e1abf87d438de1a04714482d5b610671e8cc0663)
Signed-off-by: Marc Jones <marc.jones@se-eng.com>
Change-Id: Ia892726187ab040dd235f493c92856c15951cc06
Reviewed-on: http://review.coreboot.org/8128
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Tested-by: build bot (Jenkins)
Diffstat (limited to 'payloads/libpayload/libc/time.c')
-rw-r--r-- | payloads/libpayload/libc/time.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/payloads/libpayload/libc/time.c b/payloads/libpayload/libc/time.c index 0d8163495b..8d07c4f172 100644 --- a/payloads/libpayload/libc/time.c +++ b/payloads/libpayload/libc/time.c @@ -204,5 +204,5 @@ u64 timer_us(u64 base) } } - return timer_raw_value() / (hz / 1000000) - base; + return (1000000 * timer_raw_value()) / hz - base; } |