> -----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

Reply via email to