u-boot-brain/env
Rasmus Villemoes 6d3524c2ad env/sf.c: honour CONFIG_SPL_SAVEENV
Deciding whether to compile the env_sf_save() function based solely on
CONFIG_SPL_BUILD is wrong: For U-Boot proper, it leads to a build
warning in case CONFIG_CMD_SAVEENV=n (because the initialization of
the .save member is guarded by CONFIG_CMD_SAVEENV, while the
env_sf_save() function is built if !CONFIG_SPL_BUILD - and even
without the CONFIG_CMD_SAVEENV guard, the env_save_ptr() macro would
just expand to NULL, with no reference to env_sf_save visible to the
compiler). And for SPL, when one selects CONFIG_SPL_SAVEENV, one
obviously expects to actually be able to save the environment.

The compiler warning can be fixed by using a "<something> ?
env_sf_save : NULL" construction instead of a macro that just eats its
argument and expands to NULL. That way, if <something> is false,
env_sf_save gets eliminated as dead code, but the compiler still sees
the reference to it.

For <something>, we can use CONFIG_IS_ENABLED(SAVEENV), which is true
precisely:

- For U-Boot proper, when CONFIG_CMD_SAVEENV is set (because
  CONFIG_SAVEENV is a hidden config symbol that gets set if and only
  if CONFIG_CMD_SAVEENV is set).
- For SPL, when CONFIG_SPL_SAVEENV is set.

As a bonus, this also removes quite a few preprocessor conditionals.

This has been run-time tested on a mpc8309-derived board to verify
that saving the environment does indeed work in SPL with these patches
applied.

Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
2020-05-08 18:29:11 -04:00
..
Kconfig env: add SAVEENV as an alias of the CMD_SAVEENV symbol 2020-04-24 10:10:00 -04:00
Makefile env: remove callback.o for an SPL build 2020-04-24 10:09:59 -04:00
attr.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
callback.c make env_entry::callback conditional on !CONFIG_SPL_BUILD 2020-04-24 10:09:59 -04:00
common.c common: Move sorting functions to their own header file 2019-12-02 18:23:08 -05:00
eeprom.c common: Move old EEPROM functions into a new header 2019-12-02 18:25:25 -05:00
embedded.c env: Finish migration of common ENV options 2019-11-20 18:32:09 -05:00
env.c env: Rename environment.h to env_internal.h 2019-08-11 19:27:31 -04:00
ext4.c env/ext4.c: remove CONFIG_CMD_SAVEENV ifdef 2020-04-24 10:10:00 -04:00
fat.c env/fat.c: remove private CMD_SAVEENV logic 2020-04-24 10:10:00 -04:00
flags.c make env_entry::callback conditional on !CONFIG_SPL_BUILD 2020-04-24 10:09:59 -04:00
flash.c common: Move flash_perror() to flash.h 2020-01-17 13:26:48 -05:00
mmc.c env: Update env_addr for mmc environment driver 2020-03-09 18:11:24 -05:00
nand.c crc32: Use the crc.h header for crc functions 2019-12-02 18:23:08 -05:00
nowhere.c env: Rename environment.h to env_internal.h 2019-08-11 19:27:31 -04:00
nvram.c env: make file-scope env_ptr variables static 2020-04-17 12:29:43 -04:00
onenand.c env: Rename environment.h to env_internal.h 2019-08-11 19:27:31 -04:00
remote.c env: make file-scope env_ptr variables static 2020-04-17 12:29:43 -04:00
sata.c env: Remove useless CONFIG_ENV_SIZE_REDUND and fix ENV_IS_REDUND check 2019-11-20 18:31:24 -05:00
sf.c env/sf.c: honour CONFIG_SPL_SAVEENV 2020-05-08 18:29:11 -04:00
ubi.c env: Rename environment.h to env_internal.h 2019-08-11 19:27:31 -04:00