PKG_NAME:=uboot-envtools
PKG_DISTNAME:=u-boot
-PKG_VERSION:=2013.07-rc1
-PKG_RELEASE:=2
+PKG_VERSION:=2013.07
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_DISTNAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=ftp://ftp.denx.de/pub/u-boot
-PKG_MD5SUM:=9b14d9a8981ce2e429956af7cc96996e
+PKG_MD5SUM:=8445162690052e6afd4b8f87af2bb557
PKG_BUILD_DIR:=$(BUILD_DIR)/u-boot-$(PKG_VERSION)
--- /dev/null
+From: Oliver Metz <oliver@freetz.org>
+Subject: [PATCH v2 1/2] fw_env: add redundant env support for MTD_ABSENT
+
+Signed-off-by: Oliver Metz <oliver@freetz.org>
+Tested-by: Luka Perkov <luka@openwrt.org>
+---
+
+v1 -> v2:
+ * correct spelling of redundant
+
+http://lists.denx.de/pipermail/u-boot/2013-August/161694.html
+http://patchwork.ozlabs.org/patch/270993/
+
+ tools/env/fw_env.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/tools/env/fw_env.c
++++ b/tools/env/fw_env.c
+@@ -1152,6 +1152,9 @@ int fw_env_open(void)
+ } else if (DEVTYPE(dev_current) == MTD_UBIVOLUME &&
+ DEVTYPE(!dev_current) == MTD_UBIVOLUME) {
+ environment.flag_scheme = FLAG_INCREMENTAL;
++ } else if (DEVTYPE(dev_current) == MTD_ABSENT &&
++ DEVTYPE(!dev_current) == MTD_ABSENT) {
++ environment.flag_scheme = FLAG_INCREMENTAL;
+ } else {
+ fprintf (stderr, "Incompatible flash types!\n");
+ return -1;
--- /dev/null
+From: Oliver Metz <oliver@freetz.org>
+Subject: [PATCH v2 2/2] fw_env: fix writing environment for mtd devices
+
+Signed-off-by: Oliver Metz <oliver@freetz.org>
+Tested-by: Luka Perkov <luka@openwrt.org>
+---
+
+v1 -> v2:
+ * fix checkpatch.pl warnings
+
+http://lists.denx.de/pipermail/u-boot/2013-August/161695.html
+http://patchwork.ozlabs.org/patch/270994/
+
+ tools/env/fw_env.c | 70 ++++++++++++++++++++++++++++++++----------------------
+ 1 file changed, 42 insertions(+), 28 deletions(-)
+
+--- a/tools/env/fw_env.c
++++ b/tools/env/fw_env.c
+@@ -743,27 +743,39 @@ static int flash_write_buf (int dev, int
+ MEMGETBADBLOCK needs 64 bits */
+ int rc;
+
+- blocklen = DEVESIZE (dev);
++ /*
++ * For mtd devices only offset and size of the environment do matter
++ */
++ if (mtd_type == MTD_ABSENT) {
++ blocklen = count;
++ top_of_range = offset + count;
++ erase_len = blocklen;
++ blockstart = offset;
++ block_seek = 0;
++ write_total = blocklen;
++ } else {
++ blocklen = DEVESIZE(dev);
+
+- top_of_range = ((DEVOFFSET(dev) / blocklen) +
+- ENVSECTORS (dev)) * blocklen;
++ top_of_range = ((DEVOFFSET(dev) / blocklen) +
++ ENVSECTORS(dev)) * blocklen;
+
+- erase_offset = (offset / blocklen) * blocklen;
++ erase_offset = (offset / blocklen) * blocklen;
+
+- /* Maximum area we may use */
+- erase_len = top_of_range - erase_offset;
++ /* Maximum area we may use */
++ erase_len = top_of_range - erase_offset;
+
+- blockstart = erase_offset;
+- /* Offset inside a block */
+- block_seek = offset - erase_offset;
++ blockstart = erase_offset;
++ /* Offset inside a block */
++ block_seek = offset - erase_offset;
+
+- /*
+- * Data size we actually have to write: from the start of the block
+- * to the start of the data, then count bytes of data, and to the
+- * end of the block
+- */
+- write_total = ((block_seek + count + blocklen - 1) /
+- blocklen) * blocklen;
++ /*
++ * Data size we actually write: from the start of the block
++ * to the start of the data, then count bytes of data, and
++ * to the end of the block
++ */
++ write_total = ((block_seek + count + blocklen - 1) /
++ blocklen) * blocklen;
++ }
+
+ /*
+ * Support data anywhere within erase sectors: read out the complete
+@@ -834,17 +846,18 @@ static int flash_write_buf (int dev, int
+ continue;
+ }
+
+- erase.start = blockstart;
+- ioctl (fd, MEMUNLOCK, &erase);
+- /* These do not need an explicit erase cycle */
+- if (mtd_type != MTD_ABSENT &&
+- mtd_type != MTD_DATAFLASH)
+- if (ioctl (fd, MEMERASE, &erase) != 0) {
+- fprintf (stderr, "MTD erase error on %s: %s\n",
+- DEVNAME (dev),
+- strerror (errno));
+- return -1;
+- }
++ if (mtd_type != MTD_ABSENT) {
++ erase.start = blockstart;
++ ioctl(fd, MEMUNLOCK, &erase);
++ /* These do not need an explicit erase cycle */
++ if (mtd_type != MTD_DATAFLASH)
++ if (ioctl(fd, MEMERASE, &erase) != 0) {
++ fprintf(stderr,
++ "MTD erase error on %s: %s\n",
++ DEVNAME(dev), strerror(errno));
++ return -1;
++ }
++ }
+
+ if (lseek (fd, blockstart, SEEK_SET) == -1) {
+ fprintf (stderr,
+@@ -863,7 +876,8 @@ static int flash_write_buf (int dev, int
+ return -1;
+ }
+
+- ioctl (fd, MEMLOCK, &erase);
++ if (mtd_type != MTD_ABSENT)
++ ioctl(fd, MEMLOCK, &erase);
+
+ processed += blocklen;
+ block_seek = 0;
+++ /dev/null
-tools/fw_env: add redundant env support for MTD_ABSENT
-
-Signed-off-by: Oliver Metz <oliver@freetz.org>
----
- tools/env/fw_env.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/tools/env/fw_env.c
-+++ b/tools/env/fw_env.c
-@@ -1164,6 +1164,9 @@ int fw_env_open(void)
- } else if (DEVTYPE(dev_current) == MTD_UBIVOLUME &&
- DEVTYPE(!dev_current) == MTD_UBIVOLUME) {
- environment.flag_scheme = FLAG_INCREMENTAL;
-+ } else if (DEVTYPE(dev_current) == MTD_ABSENT &&
-+ DEVTYPE(!dev_current) == MTD_ABSENT) {
-+ environment.flag_scheme = FLAG_INCREMENTAL;
- } else {
- fprintf (stderr, "Incompatible flash types!\n");
- return -1;
+++ /dev/null
-tools/fw_env: fix writing environment for mtd devices
-
-Signed-off-by: Oliver Metz <oliver@freetz.org>
----
- tools/env/fw_env.c | 71 ++++++++++++++++++++++++++++++++----------------------
- 1 file changed, 42 insertions(+), 29 deletions(-)
-
---- a/tools/env/fw_env.c
-+++ b/tools/env/fw_env.c
-@@ -743,27 +743,39 @@ static int flash_write_buf (int dev, int
- MEMGETBADBLOCK needs 64 bits */
- int rc;
-
-- blocklen = DEVESIZE (dev);
-+ /*
-+ * For mtd devices only offset and size of the environment do matter
-+ */
-+ if (mtd_type == MTD_ABSENT) {
-+ blocklen = count;
-+ top_of_range = offset + count;
-+ erase_len = blocklen;
-+ blockstart = offset;
-+ block_seek = 0;
-+ write_total = blocklen;
-+ } else {
-+ blocklen = DEVESIZE (dev);
-
-- top_of_range = ((DEVOFFSET(dev) / blocklen) +
-- ENVSECTORS (dev)) * blocklen;
-+ top_of_range = ((DEVOFFSET(dev) / blocklen) +
-+ ENVSECTORS (dev)) * blocklen;
-
-- erase_offset = (offset / blocklen) * blocklen;
-+ erase_offset = (offset / blocklen) * blocklen;
-
-- /* Maximum area we may use */
-- erase_len = top_of_range - erase_offset;
-+ /* Maximum area we may use */
-+ erase_len = top_of_range - erase_offset;
-
-- blockstart = erase_offset;
-- /* Offset inside a block */
-- block_seek = offset - erase_offset;
-+ blockstart = erase_offset;
-+ /* Offset inside a block */
-+ block_seek = offset - erase_offset;
-
-- /*
-- * Data size we actually have to write: from the start of the block
-- * to the start of the data, then count bytes of data, and to the
-- * end of the block
-- */
-- write_total = ((block_seek + count + blocklen - 1) /
-- blocklen) * blocklen;
-+ /*
-+ * Data size we actually write: from the start of the block
-+ * to the start of the data, then count bytes of data, and to the
-+ * end of the block
-+ */
-+ write_total = ((block_seek + count + blocklen - 1) /
-+ blocklen) * blocklen;
-+ }
-
- /*
- * Support data anywhere within erase sectors: read out the complete
-@@ -834,17 +846,18 @@ static int flash_write_buf (int dev, int
- continue;
- }
-
-- erase.start = blockstart;
-- ioctl (fd, MEMUNLOCK, &erase);
-- /* These do not need an explicit erase cycle */
-- if (mtd_type != MTD_ABSENT &&
-- mtd_type != MTD_DATAFLASH)
-- if (ioctl (fd, MEMERASE, &erase) != 0) {
-- fprintf (stderr, "MTD erase error on %s: %s\n",
-- DEVNAME (dev),
-- strerror (errno));
-- return -1;
-- }
-+ if (mtd_type != MTD_ABSENT) {
-+ erase.start = blockstart;
-+ ioctl (fd, MEMUNLOCK, &erase);
-+ /* These do not need an explicit erase cycle */
-+ if (mtd_type != MTD_DATAFLASH)
-+ if (ioctl (fd, MEMERASE, &erase) != 0) {
-+ fprintf (stderr, "MTD erase error on %s: %s\n",
-+ DEVNAME (dev),
-+ strerror (errno));
-+ return -1;
-+ }
-+ }
-
- if (lseek (fd, blockstart, SEEK_SET) == -1) {
- fprintf (stderr,
-@@ -862,8 +875,8 @@ static int flash_write_buf (int dev, int
- DEVNAME (dev), strerror (errno));
- return -1;
- }
--
-- ioctl (fd, MEMLOCK, &erase);
-+ if (mtd_type != MTD_ABSENT)
-+ ioctl (fd, MEMLOCK, &erase);
-
- processed += blocklen;
- block_seek = 0;