diff options
author | Rasmus Villemoes <rasmus.villemoes@prevas.dk> | 2021-04-21 11:06:54 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2021-05-04 11:50:50 -0400 |
commit | 95fd9772011f29fad2c40fbc3060b5dac042152c (patch) | |
tree | e06d8d10b7e5cd0b011372786ae918067b982d3e /include/env.h | |
parent | 1cbfed8d3e9254d7e2a9466498ef867f7cb3f4cd (diff) | |
download | u-boot-95fd9772011f29fad2c40fbc3060b5dac042152c.zip u-boot-95fd9772011f29fad2c40fbc3060b5dac042152c.tar.gz u-boot-95fd9772011f29fad2c40fbc3060b5dac042152c.tar.bz2 |
env: allow environment to be amended from control dtb
It can be useful to use the same U-Boot binary for multiple purposes,
say the normal one, one for developers that allow breaking into the
U-Boot shell, and one for use during bootstrapping which runs a
special-purpose bootcmd. Or one can have several board variants that
can share almost all boot logic, but just needs a few tweaks in the
variables used by the boot script.
To that end, allow the control dtb to contain a /config/enviroment
node (or whatever one puts in fdt_env_path variable), whose
property/value pairs are used to update the run-time environment after
it has been loaded from its persistent location.
The indirection via fdt_env_path is for maximum flexibility - for
example, should the user wish (or board logic dictate) that the values
in the DTB should no longer be applied, one simply needs to delete the
fdt_env_path variable; that can even be done automatically by
including a
fdt_env_path = "";
property in the DTB node.
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'include/env.h')
-rw-r--r-- | include/env.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/env.h b/include/env.h index b5731e4..d5e2bcb 100644 --- a/include/env.h +++ b/include/env.h @@ -375,4 +375,19 @@ int env_get_char(int index); * This is used for those unfortunate archs with crappy toolchains */ void env_reloc(void); + + +/** + * env_import_fdt() - Import environment values from device tree blob + * + * This uses the value of the environment variable "env_fdt_path" as a + * path to an fdt node, whose property/value pairs are added to the + * environment. + */ +#ifdef CONFIG_ENV_IMPORT_FDT +void env_import_fdt(void); +#else +static inline void env_import_fdt(void) {} +#endif + #endif |