]> git.sur5r.net Git - u-boot/blobdiff - common/env_nvram.c
Merge branch 'master' of git://www.denx.de/git/u-boot-mips
[u-boot] / common / env_nvram.c
index fdfa4fcb65f8c23dc5faab8f919388cc2471a68f..7c18896cb04fa88b42ec92275547eacfa1d18406 100644 (file)
 
 #include <common.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #ifdef CFG_ENV_IS_IN_NVRAM /* Environment is in NVRAM */
 
 #include <command.h>
 #include <environment.h>
-#include <cmd_nvedit.h>
 #include <linux/stddef.h>
-#include <malloc.h>
 
 #ifdef CFG_NVRAM_ACCESS_ROUTINE
 extern void *nvram_read(void *dest, const long src, size_t count);
@@ -66,7 +66,7 @@ extern int default_environment_size;
 extern uchar (*env_get_char)(int);
 extern uchar env_get_char_memory (int index);
 
-
+#ifdef CONFIG_AMIGAONEG3SE
 uchar env_get_char_spec (int index)
 {
 #ifdef CFG_NVRAM_ACCESS_ROUTINE
@@ -76,11 +76,27 @@ uchar env_get_char_spec (int index)
 
        return c;
 #else
-       DECLARE_GLOBAL_DATA_PTR;
+       uchar retval;
+       enable_nvram();
+       retval = *((uchar *)(gd->env_addr + index));
+       disable_nvram();
+       return retval;
+#endif
+}
+#else
+uchar env_get_char_spec (int index)
+{
+#ifdef CFG_NVRAM_ACCESS_ROUTINE
+       uchar c;
+
+       nvram_read(&c, CFG_ENV_ADDR+index, 1);
 
+       return c;
+#else
        return *((uchar *)(gd->env_addr + index));
 #endif
 }
+#endif
 
 void env_relocate_spec (void)
 {
@@ -94,12 +110,18 @@ void env_relocate_spec (void)
 int saveenv (void)
 {
        int rcode = 0;
-
+#ifdef CONFIG_AMIGAONEG3SE
+       enable_nvram();
+#endif
 #ifdef CFG_NVRAM_ACCESS_ROUTINE
        nvram_write(CFG_ENV_ADDR, env_ptr, CFG_ENV_SIZE);
 #else
        if (memcpy ((char *)CFG_ENV_ADDR, env_ptr, CFG_ENV_SIZE) == NULL)
                    rcode = 1 ;
+#endif
+#ifdef CONFIG_AMIGAONEG3SE
+       udelay(10000);
+       disable_nvram();
 #endif
        return rcode;
 }
@@ -112,8 +134,9 @@ int saveenv (void)
  */
 int env_init (void)
 {
-       DECLARE_GLOBAL_DATA_PTR;
-
+#ifdef CONFIG_AMIGAONEG3SE
+       enable_nvram();
+#endif
 #if defined(CFG_NVRAM_ACCESS_ROUTINE)
        ulong crc;
        uchar data[ENV_SIZE];
@@ -131,7 +154,9 @@ int env_init (void)
                gd->env_addr  = (ulong)&default_environment[0];
                gd->env_valid = 0;
        }
-
+#ifdef CONFIG_AMIGAONEG3SE
+       disable_nvram();
+#endif
        return (0);
 }