env: Move set_default_vars to env.h
[oweals/u-boot.git] / env / env.c
index 4b417b90a2912c201f201514e840d644f03e45e7..9d421e81256ba50c101d06c8e3660052bc02af55 100644 (file)
--- a/env/env.c
+++ b/env/env.c
@@ -5,6 +5,7 @@
  */
 
 #include <common.h>
+#include <env.h>
 #include <environment.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -24,6 +25,8 @@ void env_fix_drivers(void)
                        entry->load += gd->reloc_off;
                if (entry->save)
                        entry->save += gd->reloc_off;
+               if (entry->erase)
+                       entry->erase += gd->reloc_off;
                if (entry->init)
                        entry->init += gd->reloc_off;
        }
@@ -254,6 +257,34 @@ int env_save(void)
        return -ENODEV;
 }
 
+int env_erase(void)
+{
+       struct env_driver *drv;
+
+       drv = env_driver_lookup(ENVOP_ERASE, gd->env_load_prio);
+       if (drv) {
+               int ret;
+
+               if (!drv->erase)
+                       return -ENODEV;
+
+               if (!env_has_inited(drv->location))
+                       return -ENODEV;
+
+               printf("Erasing Environment on %s... ", drv->name);
+               ret = drv->erase();
+               if (ret)
+                       printf("Failed (%d)\n", ret);
+               else
+                       printf("OK\n");
+
+               if (!ret)
+                       return 0;
+       }
+
+       return -ENODEV;
+}
+
 int env_init(void)
 {
        struct env_driver *drv;