#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);
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
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)
{
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;
}
*/
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];
gd->env_addr = (ulong)&default_environment[0];
gd->env_valid = 0;
}
-
+#ifdef CONFIG_AMIGAONEG3SE
+ disable_nvram();
+#endif
return (0);
}