summaryrefslogtreecommitdiff
path: root/env/env.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2017-08-03 21:22:02 +0300
committerTom Rini <trini@konsulko.com>2017-08-16 03:50:27 +0300
commit7938822a6b75b69fff9793b6b1769dddf1249525 (patch)
tree10eacede3b5e5e51bac424bd54036dedb97c4d8f /env/env.c
parente5bce247b01ae057f05cc80178f0df28ec1d27a7 (diff)
downloadu-boot-7938822a6b75b69fff9793b6b1769dddf1249525.tar.xz
env: Drop common init() functions
Most of the init() implementations just use the default environment. Adjust env_init_new() to do this automatically, and drop the redundant code. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'env/env.c')
-rw-r--r--env/env.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/env/env.c b/env/env.c
index d327f9cdff..12cd4750df 100644
--- a/env/env.c
+++ b/env/env.c
@@ -128,14 +128,18 @@ int env_save(void)
int env_init_new(void)
{
struct env_driver *drv = env_driver_lookup_default();
- int ret;
+ int ret = -ENOENT;
if (!drv)
return -ENODEV;
- if (!drv->init)
- return -ENOSYS;
- ret = drv->init();
- if (ret) {
+ if (drv->init)
+ ret = drv->init();
+ if (ret == -ENOENT) {
+ gd->env_addr = (ulong)&default_environment[0];
+ gd->env_valid = 0;
+
+ return 0;
+ } else if (ret) {
debug("%s: Environment failed to init (err=%d)\n", __func__,
ret);
return ret;