1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-04 02:02:08 +02:00

spl: Allow distinguishing between two phases in U-Boot

U-Boot has two distinct phases: before and after relocation. These are
commonly referred to as F (running from Flash) and R (Relocated and
running from RAM). Some drivers want to do different things in these
phases so update the SPL phase function to return a different value for
each.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Simon Glass
2019-09-25 08:56:30 -06:00
committed by Bin Meng
parent b51882d007
commit 59c871bca7

View File

@@ -50,9 +50,10 @@ static inline bool u_boot_first_phase(void)
} }
enum u_boot_phase { enum u_boot_phase {
PHASE_TPL, PHASE_TPL, /* Running in TPL */
PHASE_SPL, PHASE_SPL, /* Running in SPL */
PHASE_U_BOOT, PHASE_BOARD_F, /* Running in U-Boot before relocation */
PHASE_BOARD_R, /* Running in U-Boot after relocation */
}; };
/** /**
@@ -92,7 +93,7 @@ enum u_boot_phase {
* *
* but with this you can use: * but with this you can use:
* *
* if (spl_phase() == PHASE_U_BOOT) { * if (spl_phase() == PHASE_BOARD_F) {
* ... * ...
* } * }
* *
@@ -105,7 +106,12 @@ static inline enum u_boot_phase spl_phase(void)
#elif CONFIG_SPL_BUILD #elif CONFIG_SPL_BUILD
return PHASE_SPL; return PHASE_SPL;
#else #else
return PHASE_U_BOOT; DECLARE_GLOBAL_DATA_PTR;
if (!(gd->flags & GD_FLG_RELOC))
return PHASE_BOARD_F;
else
return PHASE_BOARD_R;
#endif #endif
} }