]> git.sur5r.net Git - u-boot/blobdiff - env/fat.c
env: Rename env_driver_lookup_default and env_get_default_location
[u-boot] / env / fat.c
index b51c920cd45fdc01cda9d5ad353c184b73f8e395..ec49c39053691a5d6638fc64af2e9caf910ca5ea 100644 (file)
--- a/env/fat.c
+++ b/env/fat.c
 #include <fat.h>
 #include <mmc.h>
 
-char *env_name_spec = "FAT";
-
-env_t *env_ptr;
+#ifdef CONFIG_SPL_BUILD
+/* TODO(sjg@chromium.org): Figure out why this is needed */
+# if !defined(CONFIG_TARGET_AM335X_EVM) || defined(CONFIG_SPL_OS_BOOT)
+#  define LOADENV
+# endif
+#else
+# define LOADENV
+# if defined(CONFIG_CMD_SAVEENV)
+#  define CMD_SAVEENV
+# endif
+#endif
 
 DECLARE_GLOBAL_DATA_PTR;
 
-int env_init(void)
-{
-       /* use default */
-       gd->env_addr = (ulong)&default_environment[0];
-       gd->env_valid = 1;
-
-       return 0;
-}
-
-#ifdef CONFIG_CMD_SAVEENV
-int saveenv(void)
+#ifdef CMD_SAVEENV
+static int env_fat_save(void)
 {
        env_t   env_new;
        struct blk_desc *dev_desc = NULL;
@@ -72,9 +71,10 @@ int saveenv(void)
        puts("done\n");
        return 0;
 }
-#endif /* CONFIG_CMD_SAVEENV */
+#endif /* CMD_SAVEENV */
 
-void env_relocate_spec(void)
+#ifdef LOADENV
+static int env_fat_load(void)
 {
        ALLOC_CACHE_ALIGN_BUFFER(char, buf, CONFIG_ENV_SIZE);
        struct blk_desc *dev_desc = NULL;
@@ -103,8 +103,22 @@ void env_relocate_spec(void)
        }
 
        env_import(buf, 1);
-       return;
+       return 0;
 
 err_env_relocate:
        set_default_env(NULL);
+
+       return -EIO;
 }
+#endif /* LOADENV */
+
+U_BOOT_ENV_LOCATION(fat) = {
+       .location       = ENVL_FAT,
+       ENV_NAME("FAT")
+#ifdef LOADENV
+       .load           = env_fat_load,
+#endif
+#ifdef CMD_SAVEENV
+       .save           = env_save_ptr(env_fat_save),
+#endif
+};