summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/quark/Kconfig1
-rw-r--r--src/soc/intel/quark/tsc_freq.c16
2 files changed, 8 insertions, 9 deletions
diff --git a/src/soc/intel/quark/Kconfig b/src/soc/intel/quark/Kconfig
index c5efd4a296..8182caa51c 100644
--- a/src/soc/intel/quark/Kconfig
+++ b/src/soc/intel/quark/Kconfig
@@ -29,6 +29,7 @@ config CPU_SPECIFIC_OPTIONS
select BOOTBLOCK_SAVE_BIST_AND_TIMESTAMP
select C_ENVIRONMENT_BOOTBLOCK
select HAVE_HARD_RESET
+ select HAVE_MONOTONIC_TIMER
select NO_MMCONF_SUPPORT
select REG_SCRIPT
select RELOCATABLE_RAMSTAGE
diff --git a/src/soc/intel/quark/tsc_freq.c b/src/soc/intel/quark/tsc_freq.c
index eb8c46ecf2..e6d0369eff 100644
--- a/src/soc/intel/quark/tsc_freq.c
+++ b/src/soc/intel/quark/tsc_freq.c
@@ -17,20 +17,18 @@
#include <stdint.h>
#include <cpu/x86/msr.h>
#include <cpu/x86/tsc.h>
+#include <timer.h>
-static unsigned long bus_freq_khz(void)
+unsigned long tsc_freq_mhz(void)
{
/* CPU freq = 400 MHz */
- return 400 * 1000;
+ return 400;
}
-unsigned long tsc_freq_mhz(void)
+void timer_monotonic_get(struct mono_time *mt)
{
- /* assume ratio=1 */
- unsigned bclk_khz = bus_freq_khz();
-
- if (!bclk_khz)
- return 0;
+ uint64_t tsc_value;
- return (bclk_khz * 1) / 1000;
+ tsc_value = rdtscll();
+ mt->microseconds = tsc_value / tsc_freq_mhz();
}