mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	This updates uboot-envtools to the version which comes with U-Boot 2011.06. The important novelity is that fw_setenv now supports batch processing, which greatly improves sysupgrade of the ALL0258N as otherwise we would have to overwrite uboot-env up to 8x in a single firmware upgrade. Unfortunately, no newer version of the sources is available from Debian, so we got to take it from the u-boot source which is kinda ugly... Signed-off-by: Daniel Golle <dgolle@allnet.de> SVN-Revision: 28566
		
			
				
	
	
		
			140 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- a/crc32.c
 | |
| +++ b/crc32.c
 | |
| @@ -8,21 +8,16 @@
 | |
|   * For conditions of distribution and use, see copyright notice in zlib.h
 | |
|   */
 | |
|  
 | |
| -#ifndef USE_HOSTCC
 | |
| -#include <common.h>
 | |
| -#endif
 | |
| -#include <compiler.h>
 | |
| -#include <u-boot/crc.h>
 | |
| +#include <stdint.h>
 | |
| +#include <asm/byteorder.h>
 | |
| +
 | |
| +#include "zlib.h"
 | |
|  
 | |
| -#if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
 | |
| -#include <watchdog.h>
 | |
| -#endif
 | |
| -#include "u-boot/zlib.h"
 | |
|  
 | |
|  #define local static
 | |
|  #define ZEXPORT	/* empty */
 | |
|  
 | |
| -#define tole(x) cpu_to_le32(x)
 | |
| +#define tole(x) __constant_cpu_to_le32(x)
 | |
|  
 | |
|  #ifdef DYNAMIC_CRC_TABLE
 | |
|  
 | |
| @@ -151,7 +146,7 @@ tole(0xb40bbe37L), tole(0xc30c8ea1L), to
 | |
|  
 | |
|  #if 0
 | |
|  /* =========================================================================
 | |
| - * This function can be used by asm versions of crc32()
 | |
| + * This function can be used by asm versions of uboot_crc32()
 | |
|   */
 | |
|  const uint32_t * ZEXPORT get_crc_table()
 | |
|  {
 | |
| @@ -183,7 +178,7 @@ uint32_t ZEXPORT crc32_no_comp(uint32_t
 | |
|      if (crc_table_empty)
 | |
|        make_crc_table();
 | |
|  #endif
 | |
| -    crc = cpu_to_le32(crc);
 | |
| +    crc = __cpu_to_le32(crc);
 | |
|      /* Align it */
 | |
|      if (((long)b) & 3 && len) {
 | |
|  	 uint8_t *p = (uint8_t *)b;
 | |
| @@ -212,11 +207,11 @@ uint32_t ZEXPORT crc32_no_comp(uint32_t
 | |
|  	 } while (--len);
 | |
|      }
 | |
|  
 | |
| -    return le32_to_cpu(crc);
 | |
| +    return __le32_to_cpu(crc);
 | |
|  }
 | |
|  #undef DO_CRC
 | |
|  
 | |
| -uint32_t ZEXPORT crc32 (uint32_t crc, const Bytef *p, uInt len)
 | |
| +uint32_t ZEXPORT uboot_crc32 (uint32_t crc, const Bytef *p, uInt len)
 | |
|  {
 | |
|       return crc32_no_comp(crc ^ 0xffffffffL, p, len) ^ 0xffffffffL;
 | |
|  }
 | |
| @@ -239,12 +234,12 @@ uint32_t ZEXPORT crc32_wd (uint32_t crc,
 | |
|  		chunk = end - curr;
 | |
|  		if (chunk > chunk_sz)
 | |
|  			chunk = chunk_sz;
 | |
| -		crc = crc32 (crc, curr, chunk);
 | |
| +		crc = uboot_crc32 (crc, curr, chunk);
 | |
|  		curr += chunk;
 | |
|  		WATCHDOG_RESET ();
 | |
|  	}
 | |
|  #else
 | |
| -	crc = crc32 (crc, buf, len);
 | |
| +	crc = uboot_crc32 (crc, buf, len);
 | |
|  #endif
 | |
|  
 | |
|  	return crc;
 | |
| --- a/fw_env.c
 | |
| +++ b/fw_env.c
 | |
| @@ -34,6 +34,7 @@
 | |
|  #include <sys/ioctl.h>
 | |
|  #include <sys/stat.h>
 | |
|  #include <unistd.h>
 | |
| +#include <zlib.h>
 | |
|  
 | |
|  #ifdef MTD_OLD
 | |
|  # include <stdint.h>
 | |
| @@ -210,13 +211,14 @@ static char default_environment[] = {
 | |
|  static int flash_io (int mode);
 | |
|  static char *envmatch (char * s1, char * s2);
 | |
|  static int parse_config (void);
 | |
| +uint32_t uboot_crc32 (uint32_t crc, const Bytef *p, uInt len);
 | |
|  
 | |
|  #if defined(CONFIG_FILE)
 | |
|  static int get_config (char *);
 | |
|  #endif
 | |
| -static inline ulong getenvsize (void)
 | |
| +static inline uint32_t getenvsize (void)
 | |
|  {
 | |
| -	ulong rc = CONFIG_ENV_SIZE - sizeof (long);
 | |
| +	uint32_t rc = CONFIG_ENV_SIZE - sizeof (uint32_t);
 | |
|  
 | |
|  	if (HaveRedundEnv)
 | |
|  		rc -= sizeof (char);
 | |
| @@ -346,7 +348,7 @@ int fw_env_close(void)
 | |
|  	/*
 | |
|  	 * Update CRC
 | |
|  	 */
 | |
| -	*environment.crc = crc32(0, (uint8_t *) environment.data, ENV_SIZE);
 | |
| +	*environment.crc = uboot_crc32(0, (uint8_t *) environment.data, ENV_SIZE);
 | |
|  
 | |
|  	/* write environment back to flash */
 | |
|  	if (flash_io(O_RDWR)) {
 | |
| @@ -802,7 +804,7 @@ static int flash_write_buf (int dev, int
 | |
|  		data = malloc (erase_len);
 | |
|  		if (!data) {
 | |
|  			fprintf (stderr,
 | |
| -				 "Cannot malloc %u bytes: %s\n",
 | |
| +				 "Cannot malloc %zu bytes: %s\n",
 | |
|  				 erase_len, strerror (errno));
 | |
|  			return -1;
 | |
|  		}
 | |
| @@ -1107,7 +1109,7 @@ int fw_env_open(void)
 | |
|  	if (flash_io (O_RDONLY))
 | |
|  		return -1;
 | |
|  
 | |
| -	crc0 = crc32 (0, (uint8_t *) environment.data, ENV_SIZE);
 | |
| +	crc0 = uboot_crc32 (0, (uint8_t *) environment.data, ENV_SIZE);
 | |
|  	crc0_ok = (crc0 == *environment.crc);
 | |
|  	if (!HaveRedundEnv) {
 | |
|  		if (!crc0_ok) {
 | |
| @@ -1151,7 +1153,7 @@ int fw_env_open(void)
 | |
|  			return -1;
 | |
|  		}
 | |
|  
 | |
| -		crc1 = crc32 (0, (uint8_t *) redundant->data, ENV_SIZE);
 | |
| +		crc1 = uboot_crc32 (0, (uint8_t *) redundant->data, ENV_SIZE);
 | |
|  		crc1_ok = (crc1 == redundant->crc);
 | |
|  		flag1 = redundant->flags;
 | |
|  
 |