[U-Boot] [PATCH 4/4] x86: Save TSC frequency in the global data
Bin Meng
bmeng.cn at gmail.com
Tue Nov 4 15:58:42 CET 2014
Return the saved TSC frequency in get_tbclk_mhz().
Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
---
arch/x86/include/asm/global_data.h | 1 +
arch/x86/lib/tsc_timer.c | 4 ++++
2 files changed, 5 insertions(+)
diff --git a/arch/x86/include/asm/global_data.h b/arch/x86/include/asm/global_data.h
index 721e7dc..7f22336 100644
--- a/arch/x86/include/asm/global_data.h
+++ b/arch/x86/include/asm/global_data.h
@@ -21,6 +21,7 @@ struct arch_global_data {
uint64_t tsc_base; /* Initial value returned by rdtsc() */
uint32_t tsc_base_kclocks; /* Initial tsc as a kclocks value */
uint32_t tsc_prev; /* For show_boot_progress() */
+ uint32_t tsc_mhz; /* TSC frequency in MHz */
void *new_fdt; /* Relocated FDT */
};
diff --git a/arch/x86/lib/tsc_timer.c b/arch/x86/lib/tsc_timer.c
index 8a0abde..b5f0458 100644
--- a/arch/x86/lib/tsc_timer.c
+++ b/arch/x86/lib/tsc_timer.c
@@ -293,6 +293,9 @@ unsigned __attribute__((no_instrument_function)) long get_tbclk_mhz(void)
{
unsigned long fast_calibrate;
+ if (gd->arch.tsc_mhz)
+ return gd->arch.tsc_mhz;
+
fast_calibrate = try_msr_calibrate_tsc();
if (fast_calibrate)
return fast_calibrate;
@@ -301,6 +304,7 @@ unsigned __attribute__((no_instrument_function)) long get_tbclk_mhz(void)
if (!fast_calibrate)
panic("TSC frequency is ZERO");
+ gd->arch.tsc_mhz = fast_calibrate;
return fast_calibrate;
}
--
1.8.2.1
More information about the U-Boot
mailing list