aboutsummaryrefslogtreecommitdiffstats
path: root/package/uboot-envtools/patches
diff options
context:
space:
mode:
Diffstat (limited to 'package/uboot-envtools/patches')
-rw-r--r--package/uboot-envtools/patches/001-crc32_func_signature.patch130
-rw-r--r--package/uboot-envtools/patches/002-makefile.patch44
-rw-r--r--package/uboot-envtools/patches/003-nor-eraselen.patch14
-rw-r--r--package/uboot-envtools/patches/004-allow_mac_change.patch21
4 files changed, 209 insertions, 0 deletions
diff --git a/package/uboot-envtools/patches/001-crc32_func_signature.patch b/package/uboot-envtools/patches/001-crc32_func_signature.patch
new file mode 100644
index 000000000..f68f29ea0
--- /dev/null
+++ b/package/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/uboot-envtools/patches/002-makefile.patch b/package/uboot-envtools/patches/002-makefile.patch
new file mode 100644
index 000000000..b18bff6e7
--- /dev/null
+++ b/package/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/uboot-envtools/patches/003-nor-eraselen.patch b/package/uboot-envtools/patches/003-nor-eraselen.patch
new file mode 100644
index 000000000..c6eb59a72
--- /dev/null
+++ b/package/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/uboot-envtools/patches/004-allow_mac_change.patch b/package/uboot-envtools/patches/004-allow_mac_change.patch
new file mode 100644
index 000000000..b7d600b69
--- /dev/null
+++ b/package/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;