mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-09 03:21:51 +00:00
spl: Add a function to determine the U-Boot phase
U-Boot is built in three phases: TPL, SPL and U-Boot proper. Sometimes it is necessary to use different init code depending on the phase. For example, TPL might do very basic CPU init, SPL might do a little more and U-Boot proper might bring the CPU up to full speed and enable all cores. Add a function which allows easy determination of the current phase being built. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
3cd7198153
commit
8e83b76df4
1 changed files with 60 additions and 0 deletions
|
@ -49,6 +49,66 @@ static inline bool u_boot_first_phase(void)
|
|||
return false;
|
||||
}
|
||||
|
||||
enum u_boot_phase {
|
||||
PHASE_TPL,
|
||||
PHASE_SPL,
|
||||
PHASE_U_BOOT,
|
||||
};
|
||||
|
||||
/**
|
||||
* spl_phase() - Find out the phase of U-Boot
|
||||
*
|
||||
* This can be used to avoid #ifdef logic and use if() instead.
|
||||
*
|
||||
* For example, to include code only in TPL, you might do:
|
||||
*
|
||||
* #ifdef CONFIG_TPL_BUILD
|
||||
* ...
|
||||
* #endif
|
||||
*
|
||||
* but with this you can use:
|
||||
*
|
||||
* if (spl_phase() == PHASE_TPL) {
|
||||
* ...
|
||||
* }
|
||||
*
|
||||
* To include code only in SPL, you might do:
|
||||
*
|
||||
* #if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD)
|
||||
* ...
|
||||
* #endif
|
||||
*
|
||||
* but with this you can use:
|
||||
*
|
||||
* if (spl_phase() == PHASE_SPL) {
|
||||
* ...
|
||||
* }
|
||||
*
|
||||
* To include code only in U-Boot proper, you might do:
|
||||
*
|
||||
* #ifndef CONFIG_SPL_BUILD
|
||||
* ...
|
||||
* #endif
|
||||
*
|
||||
* but with this you can use:
|
||||
*
|
||||
* if (spl_phase() == PHASE_U_BOOT) {
|
||||
* ...
|
||||
* }
|
||||
*
|
||||
* @return U-Boot phase
|
||||
*/
|
||||
static inline enum u_boot_phase spl_phase(void)
|
||||
{
|
||||
#ifdef CONFIG_TPL_BUILD
|
||||
return PHASE_TPL;
|
||||
#elif CONFIG_SPL_BUILD
|
||||
return PHASE_SPL;
|
||||
#else
|
||||
return PHASE_U_BOOT;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* A string name for SPL or TPL */
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
# ifdef CONFIG_TPL_BUILD
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue