diff options
author | wdenk <wdenk> | 2002-12-07 00:20:59 +0000 |
---|---|---|
committer | wdenk <wdenk> | 2002-12-07 00:20:59 +0000 |
commit | 7c7a23bd5a0bc149d2edd665ec46381726b24e0c (patch) | |
tree | d859f82ea2561180db2ffd7569f0b9007d710769 /common/env_nvram.c | |
parent | 1f53a41603b9093c59741f4208fef0ab3790d6ce (diff) |
* Patch by Hans-Joerg Frieden, 06 Dec 2002LABEL_2002_12_07_0120
Fix misc problems with AmigaOne support
* Patch by Chris Hallinan, 3 Dec 2002:
minor cleanup to the MPC8245 EPIC driver
* Patch by Pierre Aubert , 28 Nov 2002
Add support for external (SIU) interrupts on MPC8xx
* Patch by Pierre Aubert , 28 Nov 2002
Fix nested syscalls bug in standalone applications
* Patch by David Müller, 27 Nov 2002:
fix output of "pciinfo" command for CardBus bridge devices.
* Fix bug in TQM8260 board detection - boards got stuck when board ID
was not readable
Diffstat (limited to 'common/env_nvram.c')
-rw-r--r-- | common/env_nvram.c | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/common/env_nvram.c b/common/env_nvram.c index fdfa4fcb65f..76e84383d51 100644 --- a/common/env_nvram.c +++ b/common/env_nvram.c @@ -66,7 +66,25 @@ 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 + uchar c; + + nvram_read(&c, CFG_ENV_ADDR+index, 1); + 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 @@ -81,6 +99,7 @@ uchar env_get_char_spec (int index) return *((uchar *)(gd->env_addr + index)); #endif } +#endif void env_relocate_spec (void) { @@ -94,13 +113,19 @@ 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; } @@ -113,7 +138,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 +158,9 @@ int env_init (void) gd->env_addr = (ulong)&default_environment[0]; gd->env_valid = 0; } - +#ifdef CONFIG_AMIGAONEG3SE + disable_nvram(); +#endif return (0); } |