mirror of
https://xff.cz/git/u-boot/
synced 2025-09-27 21:41:16 +02:00
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>
This commit is contained in:
@@ -21,6 +21,7 @@ struct arch_global_data {
|
|||||||
uint64_t tsc_base; /* Initial value returned by rdtsc() */
|
uint64_t tsc_base; /* Initial value returned by rdtsc() */
|
||||||
uint32_t tsc_base_kclocks; /* Initial tsc as a kclocks value */
|
uint32_t tsc_base_kclocks; /* Initial tsc as a kclocks value */
|
||||||
uint32_t tsc_prev; /* For show_boot_progress() */
|
uint32_t tsc_prev; /* For show_boot_progress() */
|
||||||
|
uint32_t tsc_mhz; /* TSC frequency in MHz */
|
||||||
void *new_fdt; /* Relocated FDT */
|
void *new_fdt; /* Relocated FDT */
|
||||||
uint32_t bist; /* Built-in self test value */
|
uint32_t bist; /* Built-in self test value */
|
||||||
};
|
};
|
||||||
|
@@ -293,6 +293,9 @@ unsigned __attribute__((no_instrument_function)) long get_tbclk_mhz(void)
|
|||||||
{
|
{
|
||||||
unsigned long fast_calibrate;
|
unsigned long fast_calibrate;
|
||||||
|
|
||||||
|
if (gd->arch.tsc_mhz)
|
||||||
|
return gd->arch.tsc_mhz;
|
||||||
|
|
||||||
fast_calibrate = try_msr_calibrate_tsc();
|
fast_calibrate = try_msr_calibrate_tsc();
|
||||||
if (fast_calibrate)
|
if (fast_calibrate)
|
||||||
return fast_calibrate;
|
return fast_calibrate;
|
||||||
@@ -301,6 +304,7 @@ unsigned __attribute__((no_instrument_function)) long get_tbclk_mhz(void)
|
|||||||
if (!fast_calibrate)
|
if (!fast_calibrate)
|
||||||
panic("TSC frequency is ZERO");
|
panic("TSC frequency is ZERO");
|
||||||
|
|
||||||
|
gd->arch.tsc_mhz = fast_calibrate;
|
||||||
return fast_calibrate;
|
return fast_calibrate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user