[PATCH v2 1/2] env: add SAVEENV as an alias of the CMD_SAVEENV symbol

Tom Rini trini at konsulko.com
Sat May 9 00:59:03 CEST 2020


On Fri, Mar 27, 2020 at 12:01:59AM +0100, Rasmus Villemoes wrote:

> Currently, quite a few storage drivers currently do not honour
> SPL_SAVEENV. That is, whether or not one enables CONFIG_SPL_SAVEENV,
> the backend drivers do not provide the .save method. Witness
> 
> env/fat.c:#ifdef CONFIG_SPL_BUILD
> ...
> env/fat.c-#else
> env/fat.c-# define LOADENV
> env/fat.c:# if defined(CONFIG_CMD_SAVEENV)
> env/fat.c:#  define CMD_SAVEENV
> env/fat.c-# endif
> env/fat.c-#endif
> env/fat.c-
> env/fat.c:#ifdef CMD_SAVEENV
> env/fat.c-static int env_fat_save(void)
> 
> env/flash.c:#ifndef CONFIG_SPL_BUILD
> env/flash.c:# if defined(CONFIG_CMD_SAVEENV) && defined(CONFIG_CMD_FLASH)
> env/flash.c:#  define CMD_SAVEENV
> ...
> env/flash.c:#ifdef CMD_SAVEENV
> env/flash.c-static int env_flash_save(void)
> 
> env/mmc.c:#if defined(CONFIG_CMD_SAVEENV) && !defined(CONFIG_SPL_BUILD)
> env/mmc.c-static inline int write_env(struct mmc *mmc, unsigned long size,
> 
> env/nand.c:#if defined(CONFIG_CMD_SAVEENV) && defined(CONFIG_CMD_NAND) && \
> env/nand.c:             !defined(CONFIG_SPL_BUILD)
> env/nand.c:#define CMD_SAVEENV
> ...
> env/nand.c:#ifdef CMD_SAVEENV
> env/nand.c-/*
> env/nand.c- * The legacy NAND code saved the environment in the first NAND device i.e.,
> env/nand.c- * nand_dev_desc + 0. This is also the behaviour using the new NAND code.
> env/nand.c- */
> env/nand.c-static int writeenv(size_t offset, u_char *buf)
> 
> env/sf.c:#ifndef CONFIG_SPL_BUILD
> env/sf.c:#define CMD_SAVEENV
> env/sf.c-#define INITENV
> env/sf.c-#endif
> ...
> env/sf.c:#ifdef CMD_SAVEENV
> env/sf.c-static int env_sf_save(void)
> 
> In all these cases, the mere presence of CONFIG_SPL_BUILD means the
> save method does not get built.
> 
> Now, it is currently a bit awkward to write a proper test for whether
> saving the environment is enabled in the current context; something
> like
> 
> #if (!defined(CONFIG_SPL_BUILD) && defined(CONFIG_CMD_SAVEENV)) || \
>     (defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_SAVEENV))
> 
> But we already have a rather elegant mechanism that implicitly does
> the CONFIG_SPL_BUILD tests, namely CONFIG_IS_ENABLED(). Using that
> requires that the controlling config symbols follow a strict pattern:
> FOO for U-Boot proper, SPL_FOO for SPL.
> 
> This patch introduces CONFIG_SAVEENV as an alias for
> CONFIG_CMD_SAVEENV. That way, the above can simply be written
> 
> #if CONFIG_IS_ENABLED(SAVEENV)
> 
> and moreover, CONFIG_IS_ENABLED(SAVEENV) can also be used in C code,
> avoiding ifdeffery and providing more compile testing.
> 
> Signed-off-by: Rasmus Villemoes <rasmus.villemoes at prevas.dk>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200508/13fa5b6d/attachment.sig>


More information about the U-Boot mailing list