diff options
author | luka <luka@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-07-02 23:08:17 +0000 |
---|---|---|
committer | luka <luka@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2013-07-02 23:08:17 +0000 |
commit | 34e7e19817c695a3bd92527887f85b4451aa22a4 (patch) | |
tree | 93cca56b395d9eea021514fbf50893c1fcca4794 /package/boot/uboot-envtools/patches | |
parent | 0affe6808f17614a4d177f5d5eabad3f4a8b3293 (diff) |
[package] uboot-envtools: upgrade to 2013.07-rc1
Support for writing on MMC devices has been added.
Signed-off-by: Luka Perkov <luka@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37135 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/boot/uboot-envtools/patches')
-rw-r--r-- | package/boot/uboot-envtools/patches/110-add-support-for-MTD_ABSENT.patch | 19 | ||||
-rw-r--r-- | package/boot/uboot-envtools/patches/115-writing-environment-for-mtd-devices.patch | 106 |
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; |