bootcount: allow to use this feature on TPL

This commit add an option TPL_BOOTCOUNT_LIMIT to
use bootcount on TPL.

Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Philippe Reynes 2020-12-11 19:56:47 +01:00 committed by Tom Rini
parent e9ebc17e59
commit 4d145f26dd
4 changed files with 15 additions and 5 deletions

View File

@ -186,7 +186,7 @@ config SPL_BOOTROM_SUPPORT
config SPL_BOOTCOUNT_LIMIT config SPL_BOOTCOUNT_LIMIT
bool "Support bootcount in SPL" bool "Support bootcount in SPL"
depends on SPL_ENV_SUPPORT depends on SPL_ENV_SUPPORT && !TPL_BOOTCOUNT_LIMIT
help help
On some boards, which use 'falcon' mode, it is necessary to check On some boards, which use 'falcon' mode, it is necessary to check
and increment the number of boot attempts. Such boards do not and increment the number of boot attempts. Such boards do not
@ -1382,6 +1382,13 @@ config TPL_BOARD_INIT
spl_board_init() from board_init_r(). This function should be spl_board_init() from board_init_r(). This function should be
provided by the board. provided by the board.
config TPL_BOOTCOUNT_LIMIT
bool "Support bootcount in TPL"
depends on TPL_ENV_SUPPORT
help
If this option is enabled, the TPL will support bootcount.
For example, it may be useful to choose the device to boot.
config TPL_LDSCRIPT config TPL_LDSCRIPT
string "Linker script for the TPL stage" string "Linker script for the TPL stage"
depends on TPL depends on TPL

View File

@ -837,7 +837,9 @@ ulong spl_relocate_stack_gd(void)
#endif #endif
} }
#if defined(CONFIG_BOOTCOUNT_LIMIT) && !defined(CONFIG_SPL_BOOTCOUNT_LIMIT) #if defined(CONFIG_BOOTCOUNT_LIMIT) && \
((!defined(CONFIG_TPL_BUILD) && !defined(CONFIG_SPL_BOOTCOUNT_LIMIT)) || \
(defined(CONFIG_TPL_BUILD) && !defined(CONFIG_TPL_BOOTCOUNT_LIMIT)))
void bootcount_store(ulong a) void bootcount_store(ulong a)
{ {
} }

View File

@ -69,6 +69,7 @@ endif
ifdef CONFIG_TPL_BUILD ifdef CONFIG_TPL_BUILD
obj-$(CONFIG_TPL_BOOTCOUNT_LIMIT) += bootcount/
obj-$(CONFIG_TPL_MPC8XXX_INIT_DDR_SUPPORT) += ddr/fsl/ obj-$(CONFIG_TPL_MPC8XXX_INIT_DDR_SUPPORT) += ddr/fsl/
endif endif

View File

@ -69,7 +69,7 @@ void bootcount_store(ulong);
*/ */
ulong bootcount_load(void); ulong bootcount_load(void);
#if defined(CONFIG_SPL_BOOTCOUNT_LIMIT) || defined(CONFIG_BOOTCOUNT_LIMIT) #if defined(CONFIG_SPL_BOOTCOUNT_LIMIT) || defined(CONFIG_TPL_BOOTCOUNT_LIMIT) || defined(CONFIG_BOOTCOUNT_LIMIT)
#if !defined(CONFIG_SYS_BOOTCOUNT_LE) && !defined(CONFIG_SYS_BOOTCOUNT_BE) #if !defined(CONFIG_SYS_BOOTCOUNT_LE) && !defined(CONFIG_SYS_BOOTCOUNT_BE)
# if __BYTE_ORDER == __LITTLE_ENDIAN # if __BYTE_ORDER == __LITTLE_ENDIAN
@ -130,7 +130,7 @@ static inline void bootcount_inc(void)
#ifndef CONFIG_SPL_BUILD #ifndef CONFIG_SPL_BUILD
/* Only increment bootcount when no bootcount support in SPL */ /* Only increment bootcount when no bootcount support in SPL */
#ifndef CONFIG_SPL_BOOTCOUNT_LIMIT #if !defined(CONFIG_SPL_BOOTCOUNT_LIMIT) && !defined(CONFIG_TPL_BOOTCOUNT_LIMIT)
bootcount_store(++bootcount); bootcount_store(++bootcount);
#endif #endif
env_set_ulong("bootcount", bootcount); env_set_ulong("bootcount", bootcount);
@ -140,5 +140,5 @@ static inline void bootcount_inc(void)
#else #else
static inline int bootcount_error(void) { return 0; } static inline int bootcount_error(void) { return 0; }
static inline void bootcount_inc(void) {} static inline void bootcount_inc(void) {}
#endif /* CONFIG_SPL_BOOTCOUNT_LIMIT || CONFIG_BOOTCOUNT_LIMIT */ #endif /* CONFIG_SPL_BOOTCOUNT_LIMIT || CONFIG_TPL_BOOTCOUNT_LIMIT || CONFIG_BOOTCOUNT_LIMIT */
#endif /* _BOOTCOUNT_H__ */ #endif /* _BOOTCOUNT_H__ */