bootcount: allow to use this feature on TPL
authorPhilippe Reynes <philippe.reynes@softathome.com>
Fri, 11 Dec 2020 18:56:47 +0000 (19:56 +0100)
committerTom Rini <trini@konsulko.com>
Wed, 27 Jan 2021 21:58:57 +0000 (16:58 -0500)
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>
common/spl/Kconfig
common/spl/spl.c
drivers/Makefile
include/bootcount.h

index bdc229f..774541c 100644 (file)
@@ -186,7 +186,7 @@ config SPL_BOOTROM_SUPPORT
 
 config SPL_BOOTCOUNT_LIMIT
        bool "Support bootcount in SPL"
-       depends on SPL_ENV_SUPPORT
+       depends on SPL_ENV_SUPPORT && !TPL_BOOTCOUNT_LIMIT
        help
          On some boards, which use 'falcon' mode, it is necessary to check
          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
          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
         string "Linker script for the TPL stage"
        depends on TPL
index 835c53d..8b73744 100644 (file)
@@ -837,7 +837,9 @@ ulong spl_relocate_stack_gd(void)
 #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)
 {
 }
index e371bc3..c562a71 100644 (file)
@@ -69,6 +69,7 @@ endif
 
 ifdef CONFIG_TPL_BUILD
 
+obj-$(CONFIG_TPL_BOOTCOUNT_LIMIT) += bootcount/
 obj-$(CONFIG_TPL_MPC8XXX_INIT_DDR_SUPPORT) += ddr/fsl/
 
 endif
index cd30403..b1d1fe5 100644 (file)
@@ -69,7 +69,7 @@ void bootcount_store(ulong);
  */
 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 __BYTE_ORDER == __LITTLE_ENDIAN
@@ -130,7 +130,7 @@ static inline void bootcount_inc(void)
 
 #ifndef CONFIG_SPL_BUILD
        /* 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);
 #endif
        env_set_ulong("bootcount", bootcount);
@@ -140,5 +140,5 @@ static inline void bootcount_inc(void)
 #else
 static inline int bootcount_error(void) { return 0; }
 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__ */