X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=common%2Fenv_nvram.c;h=7c18896cb04fa88b42ec92275547eacfa1d18406;hb=0b20335015945cc9aedf27356e51aa3a0b0cdc48;hp=fdfa4fcb65f8c23dc5faab8f919388cc2471a68f;hpb=c609719b8d1b2dca590e0ed499016d041203e403;p=u-boot diff --git a/common/env_nvram.c b/common/env_nvram.c index fdfa4fcb65..7c18896cb0 100644 --- a/common/env_nvram.c +++ b/common/env_nvram.c @@ -42,13 +42,13 @@ #include +DECLARE_GLOBAL_DATA_PTR; + #ifdef CFG_ENV_IS_IN_NVRAM /* Environment is in NVRAM */ #include #include -#include #include -#include #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); }