]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - env/env.c
env: Allow env_load() to detect errors
[people/ms/u-boot.git] / env / env.c
index 12cd4750df49b56c29d644f92e19bfe778d9f982..1255d57f48d29ece6a668cc85c41c0c3cc8d1d08 100644 (file)
--- a/env/env.c
+++ b/env/env.c
@@ -54,7 +54,7 @@ static enum env_location env_get_default_location(void)
                return ENVL_UNKNOWN;
 }
 
-static struct env_driver *env_driver_lookup_default(void)
+struct env_driver *env_driver_lookup_default(void)
 {
        enum env_location loc = env_get_default_location();
        struct env_driver *drv;
@@ -69,11 +69,13 @@ static struct env_driver *env_driver_lookup_default(void)
        return drv;
 }
 
-int env_get_char_new(int index)
+int env_get_char(int index)
 {
        struct env_driver *drv = env_driver_lookup_default();
        int ret;
 
+       if (!gd->env_valid)
+               return default_environment[index];
        if (!drv)
                return -ENODEV;
        if (!drv->get_char)
@@ -96,7 +98,7 @@ int env_load(void)
                return -ENODEV;
        if (!drv->load)
                return 0;
-       drv->load();  /* TODO(sjg@chromium.org): Make this return an error */
+       ret = drv->load();
        if (ret) {
                debug("%s: Environment failed to load (err=%d)\n", __func__,
                      ret);
@@ -125,7 +127,7 @@ int env_save(void)
        return 0;
 }
 
-int env_init_new(void)
+int env_init(void)
 {
        struct env_driver *drv = env_driver_lookup_default();
        int ret = -ENOENT;
@@ -136,7 +138,7 @@ int env_init_new(void)
                ret = drv->init();
        if (ret == -ENOENT) {
                gd->env_addr = (ulong)&default_environment[0];
-               gd->env_valid = 0;
+               gd->env_valid = ENV_VALID;
 
                return 0;
        } else if (ret) {
@@ -147,23 +149,3 @@ int env_init_new(void)
 
        return 0;
 }
-
-unsigned char env_get_char_spec(int index)
-{
-       return *(uchar *)(gd->env_addr + index);
-}
-
-void env_relocate_spec(void)
-{
-       env_load();
-}
-
-int saveenv(void)
-{
-       return env_save();
-}
-
-int env_init(void)
-{
-       return env_init_new();
-}