]> git.sur5r.net Git - u-boot/blobdiff - env/env.c
env: Rename env_driver_lookup_default and env_get_default_location
[u-boot] / env / env.c
index ac6a583a0231119cbf76e9283b37dcb1bd036f87..5a71f435f3719cfccdaa5457a0b96a4a3fb09ec6 100644 (file)
--- a/env/env.c
+++ b/env/env.c
@@ -10,7 +10,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static struct env_driver *env_driver_lookup(enum env_location loc)
+static struct env_driver *_env_driver_lookup(enum env_location loc)
 {
        struct env_driver *drv;
        const int n_ents = ll_entry_count(struct env_driver, env_driver);
@@ -26,14 +26,14 @@ static struct env_driver *env_driver_lookup(enum env_location loc)
        return NULL;
 }
 
-static enum env_location env_get_default_location(void)
+static enum env_location env_get_location(void)
 {
-       if IS_ENABLED(CONFIG_ENV_IS_IN_DATAFLASH)
-               return ENVL_DATAFLASH;
-       else if IS_ENABLED(CONFIG_ENV_IS_IN_EEPROM)
+       if IS_ENABLED(CONFIG_ENV_IS_IN_EEPROM)
                return ENVL_EEPROM;
        else if IS_ENABLED(CONFIG_ENV_IS_IN_FAT)
                return ENVL_FAT;
+       else if IS_ENABLED(CONFIG_ENV_IS_IN_EXT4)
+               return ENVL_EXT4;
        else if IS_ENABLED(CONFIG_ENV_IS_IN_FLASH)
                return ENVL_FLASH;
        else if IS_ENABLED(CONFIG_ENV_IS_IN_MMC)
@@ -54,12 +54,12 @@ static enum env_location env_get_default_location(void)
                return ENVL_UNKNOWN;
 }
 
-struct env_driver *env_driver_lookup_default(void)
+static struct env_driver *env_driver_lookup(void)
 {
-       enum env_location loc = env_get_default_location();
+       enum env_location loc = env_get_location();
        struct env_driver *drv;
 
-       drv = env_driver_lookup(loc);
+       drv = _env_driver_lookup(loc);
        if (!drv) {
                debug("%s: No environment driver for location %d\n", __func__,
                      loc);
@@ -69,11 +69,13 @@ 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();
+       struct env_driver *drv = env_driver_lookup();
        int ret;
 
+       if (gd->env_valid == ENV_INVALID)
+               return default_environment[index];
        if (!drv)
                return -ENODEV;
        if (!drv->get_char)
@@ -89,14 +91,14 @@ int env_get_char_new(int index)
 
 int env_load(void)
 {
-       struct env_driver *drv = env_driver_lookup_default();
+       struct env_driver *drv = env_driver_lookup();
        int ret = 0;
 
        if (!drv)
                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);
@@ -108,13 +110,15 @@ int env_load(void)
 
 int env_save(void)
 {
-       struct env_driver *drv = env_driver_lookup_default();
+       struct env_driver *drv = env_driver_lookup();
        int ret;
 
        if (!drv)
                return -ENODEV;
        if (!drv->save)
                return -ENOSYS;
+
+       printf("Saving Environment to %s...\n", drv->name);
        ret = drv->save();
        if (ret) {
                debug("%s: Environment failed to save (err=%d)\n", __func__,
@@ -127,7 +131,7 @@ int env_save(void)
 
 int env_init(void)
 {
-       struct env_driver *drv = env_driver_lookup_default();
+       struct env_driver *drv = env_driver_lookup();
        int ret = -ENOENT;
 
        if (!drv)
@@ -136,7 +140,7 @@ int env_init(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,19 +151,3 @@ int env_init(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();
-}
-