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) | |
| download | olio-uboot-2014.01-7c7a23bd5a0bc149d2edd665ec46381726b24e0c.tar.xz olio-uboot-2014.01-7c7a23bd5a0bc149d2edd665ec46381726b24e0c.zip | |
* 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 fdfa4fcb6..76e84383d 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);  } |