> -----Original Message----- > From: Simon Glass [mailto:s...@chromium.org] > Sent: Sunday, October 20, 2019 8:38 PM > To: U-Boot Mailing List <u-boot@lists.denx.de> > Cc: Bin Meng <bmeng...@gmail.com>; Simon Glass <s...@chromium.org>; > Andy Shevchenko <andy.shevche...@gmail.com>; Bernhard Messerklinger > <bernhard.messerklin...@br-automation.com>; Park, Aiden > <aiden.p...@intel.com>; Simon Goldschmidt > <simon.k.r.goldschm...@gmail.com>; Stefan Roese <s...@denx.de> > Subject: [PATCH v3 022/108] x86: timer: Use a separate flag for whether > timer is inited > > At present the value of the timer base is used to determine whether the > timer has been set up or not. It is true that the timer is essentially never > exactly 0 when it is read. However 'time 0' may indicate the time that the > machine was reset so it is useful to be able to denote that. > > Update the code to use a separate flag instead. > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > Changes in v3: None > Changes in v2: None > > arch/x86/include/asm/global_data.h | 1 + > drivers/timer/tsc_timer.c | 3 ++- > 2 files changed, 3 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/include/asm/global_data.h > b/arch/x86/include/asm/global_data.h > index 17a4d344913..7f3ada06f61 100644 > --- a/arch/x86/include/asm/global_data.h > +++ b/arch/x86/include/asm/global_data.h > @@ -76,6 +76,7 @@ struct arch_global_data { > uint8_t x86_mask; > uint32_t x86_device; > uint64_t tsc_base; /* Initial value returned by rdtsc() */ > + bool tsc_inited; /* true if tsc is ready for use */ > unsigned long clock_rate; /* Clock rate of timer in Hz */ > void *new_fdt; /* Relocated FDT */ > uint32_t bist; /* Built-in self test value */ > diff --git a/drivers/timer/tsc_timer.c b/drivers/timer/tsc_timer.c index > f19d2237e4f..637c8ff25a5 100644 > --- a/drivers/timer/tsc_timer.c > +++ b/drivers/timer/tsc_timer.c > @@ -394,7 +394,7 @@ static int tsc_timer_get_count(struct udevice *dev, > u64 *count) > > static void tsc_timer_ensure_setup(bool early) { > - if (gd->arch.tsc_base) > + if (gd->arch.tsc_inited) > return; > gd->arch.tsc_base = rdtsc(); > > @@ -425,6 +425,7 @@ static void tsc_timer_ensure_setup(bool early) > done: > gd->arch.clock_rate = fast_calibrate * 1000000; > } > + gd->arch.tsc_inited = true; > } > > static int tsc_timer_probe(struct udevice *dev) > -- > 2.23.0.866.gb869b98d4c-goog
Verified with slimbootloader on QEMU and an APL board Tested-by: Aiden Park <aiden.p...@intel.com> Reviewed-by: Aiden Park <aiden.p...@intel.com> Best Regards, Aiden _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot