aboutsummaryrefslogtreecommitdiffstats
path: root/package/boot/uboot-envtools/patches
diff options
context:
space:
mode:
authorLuka Perkov <luka@openwrt.org>2013-07-02 23:08:17 +0000
committerLuka Perkov <luka@openwrt.org>2013-07-02 23:08:17 +0000
commitd352ff6cac7230b9279e011fe00e2ff482733576 (patch)
tree2ba233527d52e83426f0739e577ecdcaeaf303df /package/boot/uboot-envtools/patches
parent62cb88f5028f6bd1b88dfda636e1e912d635d763 (diff)
downloadupstream-d352ff6cac7230b9279e011fe00e2ff482733576.tar.gz
upstream-d352ff6cac7230b9279e011fe00e2ff482733576.tar.bz2
upstream-d352ff6cac7230b9279e011fe00e2ff482733576.zip
uboot-envtools: upgrade to 2013.07-rc1
Support for writing on MMC devices has been added. Signed-off-by: Luka Perkov <luka@openwrt.org> SVN-Revision: 37135
Diffstat (limited to 'package/boot/uboot-envtools/patches')
-rw-r--r--package/boot/uboot-envtools/patches/110-add-support-for-MTD_ABSENT.patch19
-rw-r--r--package/boot/uboot-envtools/patches/115-writing-environment-for-mtd-devices.patch106
2 files changed, 125 insertions, 0 deletions
diff --git a/package/boot/uboot-envtools/patches/110-add-support-for-MTD_ABSENT.patch b/package/boot/uboot-envtools/patches/110-add-support-for-MTD_ABSENT.patch
new file mode 100644
index 0000000000..dd98b45d8f
--- /dev/null
+++ b/package/boot/uboot-envtools/patches/110-add-support-for-MTD_ABSENT.patch
@@ -0,0 +1,19 @@
+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;
diff --git a/package/boot/uboot-envtools/patches/115-writing-environment-for-mtd-devices.patch b/package/boot/uboot-envtools/patches/115-writing-environment-for-mtd-devices.patch
new file mode 100644
index 0000000000..96d0fd9892
--- /dev/null
+++ b/package/boot/uboot-envtools/patches/115-writing-environment-for-mtd-devices.patch
@@ -0,0 +1,106 @@
+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;