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:
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user