From mboxrd@z Thu Jan 1 00:00:00 1970 From: Park, Aiden Date: Mon, 21 Oct 2019 19:15:58 +0000 Subject: [U-Boot] [PATCH v3 022/108] x86: timer: Use a separate flag for whether timer is inited In-Reply-To: <20191021033913.220758-22-sjg@chromium.org> References: <20191021033913.220758-22-sjg@chromium.org> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de > -----Original Message----- > From: Simon Glass [mailto:sjg at chromium.org] > Sent: Sunday, October 20, 2019 8:38 PM > To: U-Boot Mailing List > Cc: Bin Meng ; Simon Glass ; > Andy Shevchenko ; Bernhard Messerklinger > ; Park, Aiden > ; Simon Goldschmidt > ; Stefan Roese > 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 > --- > > 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 Reviewed-by: Aiden Park Best Regards, Aiden