[U-Boot] [PATCH v2 4/4] x86: Save TSC frequency in the global data

Return the saved TSC frequency in get_tbclk_mhz().
Signed-off-by: Bin Meng bmeng.cn@gmail.com Acked-by: Simon Glass sjg@chromium.org Tested-by: Simon Glass sjg@chromium.org --- 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 3e3073a..186b97e 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 */ uint32_t bist; /* Built-in self test value */ }; 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; }

On 9 November 2014 07:19, Bin Meng bmeng.cn@gmail.com wrote:
Return the saved TSC frequency in get_tbclk_mhz().
Signed-off-by: Bin Meng bmeng.cn@gmail.com Acked-by: Simon Glass sjg@chromium.org Tested-by: Simon Glass sjg@chromium.org
Applied to u-boot-x86/master, thanks!
participants (2)
-
Bin Meng
-
Simon Glass