mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-29 08:00:26 +09:00
bootstage: Require timer_get_boot_us() to be defined
At present we provide a default version of this function for use by bootstage. However it uses the system timer and therefore likely requires driver model. This makes it impossible to time driver-model init. Drop the function and require boards to provide their own. Add a sandbox version also. There is a default implememtation in lib/time.c for boards which use CONFIG_SYS_TIMER_COUNTER. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
9fb34b01f7
commit
c87dc38d8f
@ -139,3 +139,14 @@ done:
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ulong timer_get_boot_us(void)
|
||||||
|
{
|
||||||
|
static uint64_t base_count;
|
||||||
|
uint64_t count = os_get_nsec();
|
||||||
|
|
||||||
|
if (!base_count)
|
||||||
|
base_count = count;
|
||||||
|
|
||||||
|
return (count - base_count) / 1000;
|
||||||
|
}
|
||||||
|
@ -292,23 +292,6 @@ void bootstage_report(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ulong __timer_get_boot_us(void)
|
|
||||||
{
|
|
||||||
static ulong base_time;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We can't implement this properly. Return 0 on the first call and
|
|
||||||
* larger values after that.
|
|
||||||
*/
|
|
||||||
if (base_time)
|
|
||||||
return get_timer(base_time) * 1000;
|
|
||||||
base_time = get_timer(0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ulong timer_get_boot_us(void)
|
|
||||||
__attribute__((weak, alias("__timer_get_boot_us")));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Append data to a memory buffer
|
* Append data to a memory buffer
|
||||||
*
|
*
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
* This file implements recording of each stage of the boot process. It is
|
* This file implements recording of each stage of the boot process. It is
|
||||||
* intended to implement timing of each stage, reporting this information
|
* intended to implement timing of each stage, reporting this information
|
||||||
* to the user and passing it to the OS for logging / further analysis.
|
* to the user and passing it to the OS for logging / further analysis.
|
||||||
|
* Note that it requires timer_get_boot_us() to be defined by the board
|
||||||
*
|
*
|
||||||
* Copyright (c) 2011 The Chromium OS Authors.
|
* Copyright (c) 2011 The Chromium OS Authors.
|
||||||
*
|
*
|
||||||
@ -209,7 +210,7 @@ enum bootstage_id {
|
|||||||
/*
|
/*
|
||||||
* Return the time since boot in microseconds, This is needed for bootstage
|
* Return the time since boot in microseconds, This is needed for bootstage
|
||||||
* and should be defined in CPU- or board-specific code. If undefined then
|
* and should be defined in CPU- or board-specific code. If undefined then
|
||||||
* millisecond resolution will be used (the standard get_timer()).
|
* you will get a link error.
|
||||||
*/
|
*/
|
||||||
ulong timer_get_boot_us(void);
|
ulong timer_get_boot_us(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user