diff options
Diffstat (limited to 'package/boot/uboot-envtools/patches')
4 files changed, 209 insertions, 0 deletions
diff --git a/package/boot/uboot-envtools/patches/001-crc32_func_signature.patch b/package/boot/uboot-envtools/patches/001-crc32_func_signature.patch new file mode 100644 index 0000000..f68f29e --- /dev/null +++ b/package/boot/uboot-envtools/patches/001-crc32_func_signature.patch @@ -0,0 +1,130 @@ +--- 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> +@@ -212,13 +213,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); +@@ -348,7 +350,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)) { +@@ -1116,7 +1118,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) { +@@ -1160,7 +1162,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; + diff --git a/package/boot/uboot-envtools/patches/002-makefile.patch b/package/boot/uboot-envtools/patches/002-makefile.patch new file mode 100644 index 0000000..b18bff6 --- /dev/null +++ b/package/boot/uboot-envtools/patches/002-makefile.patch @@ -0,0 +1,44 @@ +--- a/Makefile ++++ b/Makefile +@@ -21,34 +21,17 @@ + # MA 02111-1307 USA + # + +-include $(TOPDIR)/config.mk +- +-HOSTSRCS := $(SRCTREE)/lib/crc32.c fw_env.c fw_env_main.c ++SRCS := crc32.c fw_env.c fw_env_main.c + HEADERS := fw_env.h + +-# Compile for a hosted environment on the target +-HOSTCPPFLAGS = -idirafter $(SRCTREE)/include \ +- -idirafter $(OBJTREE)/include2 \ +- -idirafter $(OBJTREE)/include \ +- -DUSE_HOSTCC +- +-ifeq ($(MTD_VERSION),old) +-HOSTCPPFLAGS += -DMTD_OLD +-endif +- +-all: $(obj)fw_printenv +- +-# Some files complain if compiled with -pedantic, use HOSTCFLAGS_NOPED +-$(obj)fw_printenv: $(HOSTSRCS) $(HEADERS) +- $(HOSTCC) $(HOSTCFLAGS_NOPED) $(HOSTLDFLAGS) -o $@ $(HOSTSRCS) ++CPPFLAGS := -Wall $(CFLAGS) + +-clean: +- rm -f $(obj)fw_printenv ++all: fw_printenv + +-######################################################################### ++fw_printenv: $(SRCS) $(HEADERS) ++ $(CC) $(CPPFLAGS) $(SRCS) -o fw_printenv + +-include $(TOPDIR)/rules.mk +- +-sinclude $(obj).depend ++clean: ++ rm -f fw_printenv + + ######################################################################### diff --git a/package/boot/uboot-envtools/patches/003-nor-eraselen.patch b/package/boot/uboot-envtools/patches/003-nor-eraselen.patch new file mode 100644 index 0000000..c6eb59a --- /dev/null +++ b/package/boot/uboot-envtools/patches/003-nor-eraselen.patch @@ -0,0 +1,14 @@ +--- a/fw_env.c ++++ b/fw_env.c +@@ -790,7 +790,10 @@ static int flash_write_buf (int dev, int + erase_offset = (offset / blocklen) * blocklen; + + /* Maximum area we may use */ +- erase_len = top_of_range - erase_offset; ++ if (mtd_type == MTD_NANDFLASH) ++ erase_len = top_of_range - erase_offset; ++ else ++ erase_len = blocklen; + + blockstart = erase_offset; + /* Offset inside a block */ diff --git a/package/boot/uboot-envtools/patches/004-allow_mac_change.patch b/package/boot/uboot-envtools/patches/004-allow_mac_change.patch new file mode 100644 index 0000000..b7d600b --- /dev/null +++ b/package/boot/uboot-envtools/patches/004-allow_mac_change.patch @@ -0,0 +1,21 @@ +--- a/fw_env.c ++++ b/fw_env.c +@@ -46,8 +46,6 @@ + + #include "fw_env.h" + +-#include <config.h> +- + #define WHITESPACE(c) ((c == '\t') || (c == ' ')) + + #define min(x, y) ({ \ +@@ -401,9 +399,7 @@ int fw_env_write(char *name, char *value + if ( + (strcmp(name, "serial#") == 0) || + ((strcmp(name, "ethaddr") == 0) +-#if defined(CONFIG_OVERWRITE_ETHADDR_ONCE) && defined(CONFIG_ETHADDR) + && (strcmp(oldval, MK_STR(CONFIG_ETHADDR)) != 0) +-#endif /* CONFIG_OVERWRITE_ETHADDR_ONCE && CONFIG_ETHADDR */ + ) ) { + fprintf (stderr, "Can't overwrite \"%s\"\n", name); + errno = EROFS; |