diff options
author | Luis Araneda <luaraneda@gmail.com> | 2018-04-06 11:23:34 -0300 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2018-04-18 23:59:32 +0200 |
commit | 68150d3125447a40cf103aeefd9bcb6c874e6769 (patch) | |
tree | e2c78ddaccb31c4da0dc874a0d412f5332b63233 /package/boot/uboot-envtools/patches/300-support-env-in-ubivol-chardev.patch | |
parent | 7b758f7f4faceaea6b2d484658dfecd0e3ea3e23 (diff) | |
download | upstream-68150d3125447a40cf103aeefd9bcb6c874e6769.tar.gz upstream-68150d3125447a40cf103aeefd9bcb6c874e6769.tar.bz2 upstream-68150d3125447a40cf103aeefd9bcb6c874e6769.zip |
uboot-envtools: update to 2018.03
Several changes has been made:
+ AES support has been removed by
upstream commit c6831c7 (2017-11-14)
[remove patch "200-fw_env_no_aes.patch"]
+ Support for UBI volumes has beed added by
upstream commit 34255b9 (2017-11-15)
[remove patch "300-support-env-in-ubivol-chardev.patch"]
+ A command line argument has beed added ("-c") to manually indicate
the location of the environment configuration file
Also, patch "400-u-boot-2015.10-stdint.patch" is no longer
necessary, and the config option to enable UBI support has
been removed.
Size comparisons:
fw_printenv size:
Target Before After
ar71xx 15,189 bytes 18,133 bytes (+2,944 bytes)
ipq40xx 20,873 bytes 20,987 bytes (+114 bytes)
mvebu 20,881 bytes 20,991 bytes (+110 bytes)
ramips 15,128 bytes 18,072 bytes (+2,944 bytes)
OPKG package size:
Target Before After
ar71xx 11,309 bytes 12,875 bytes (+1,566 bytes)
ipq40xx 11,772 bytes 13,299 bytes (+1,527 bytes)
mvebu 11,609 bytes 13,114 bytes (+1,505 bytes)
ramips 10,975 bytes 12,503 bytes (+1,528 bytes)
Compile tested: ipq40xx (musl, glibc, gcc5-musl), ar71xx, mvebu, ramips
Run tested: ipq40xx (ASUS RT-AC58U)
Signed-off-by: Luis Araneda <luaraneda@gmail.com>
Diffstat (limited to 'package/boot/uboot-envtools/patches/300-support-env-in-ubivol-chardev.patch')
-rw-r--r-- | package/boot/uboot-envtools/patches/300-support-env-in-ubivol-chardev.patch | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/package/boot/uboot-envtools/patches/300-support-env-in-ubivol-chardev.patch b/package/boot/uboot-envtools/patches/300-support-env-in-ubivol-chardev.patch deleted file mode 100644 index 75d3804ed4..0000000000 --- a/package/boot/uboot-envtools/patches/300-support-env-in-ubivol-chardev.patch +++ /dev/null @@ -1,163 +0,0 @@ -From 6e2630a0fc872d0db34157972f6dc3941f6d66dd Mon Sep 17 00:00:00 2001 -From: Daniel Golle <daniel@makrotopia.org> -Date: Mon, 19 May 2014 21:38:01 +0200 -Subject: [PATCH] tools/env: add support for env in ubi volume chardev - -Signed-off-by: Daniel Golle <daniel@makrotopia.org> ---- - tools/env/Makefile | 5 ++++ - tools/env/fw_env.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++------- - 2 files changed, 71 insertions(+), 10 deletions(-) - ---- a/tools/env/Makefile -+++ b/tools/env/Makefile -@@ -24,6 +24,13 @@ ifeq ($(MTD_VERSION),old) - HOST_EXTRACFLAGS += -DMTD_OLD - endif - -+ifeq ($(UBI),y) -+HOST_EXTRACFLAGS += -DUBI -+HOST_LOADLIBES = "-Wl,--gc-sections,-lubi-utils" -+else -+HOST_LOADLIBES = "-Wl,--gc-sections" -+endif -+ - always := fw_printenv - hostprogs-y := fw_printenv - ---- a/tools/env/fw_env.c -+++ b/tools/env/fw_env.c -@@ -31,6 +31,9 @@ - # include <mtd/mtd-user.h> - #endif - -+#ifdef UBI -+# include <libubi.h> -+#endif - #include "fw_env.h" - - #include <aes.h> -@@ -811,6 +814,11 @@ static int flash_write_buf (int dev, int - off_t top_of_range; /* end of the last block we may use */ - loff_t blockstart; /* running start of the current block - - MEMGETBADBLOCK needs 64 bits */ -+#ifdef UBI -+ libubi_t *libubi = NULL;/* pointer to libubi struct */ -+#else -+ void *libubi = NULL; -+#endif - int rc; - - /* -@@ -916,7 +924,30 @@ static int flash_write_buf (int dev, int - continue; - } - -- if (mtd_type != MTD_ABSENT) { -+#ifdef UBI -+ if (mtd_type == MTD_UBIVOLUME) { -+ struct ubi_vol_info volinfo; -+ libubi = libubi_open(); -+ if (libubi) -+ rc = ubi_get_vol_info(libubi, -+ DEVNAME(dev_current), &volinfo); -+ if (libubi && !rc) { -+ erasesize = volinfo.leb_size; -+ int leb = blockstart / erasesize; -+ if (volinfo.type != UBI_STATIC_VOLUME) -+ rc = ubi_leb_change_start(libubi, fd, -+ leb, erasesize); -+ else -+ rc = ubi_update_start(libubi, fd, -+ erasesize); -+ } -+ if (libubi && rc) { -+ libubi_close(libubi); -+ libubi = NULL; -+ } -+ } -+#endif -+ if (!libubi && mtd_type != MTD_ABSENT) { - erase.start = blockstart; - ioctl(fd, MEMUNLOCK, &erase); - /* These do not need an explicit erase cycle */ -@@ -933,7 +964,8 @@ static int flash_write_buf (int dev, int - fprintf (stderr, - "Seek error on %s: %s\n", - DEVNAME (dev), strerror (errno)); -- return -1; -+ processed = -1; -+ goto out; - } - - #ifdef DEBUG -@@ -943,10 +975,11 @@ static int flash_write_buf (int dev, int - if (write (fd, data + processed, erasesize) != erasesize) { - fprintf (stderr, "Write error on %s: %s\n", - DEVNAME (dev), strerror (errno)); -- return -1; -+ processed = -1; -+ goto out; - } - -- if (mtd_type != MTD_ABSENT) -+ if (!libubi && mtd_type != MTD_ABSENT) - ioctl(fd, MEMLOCK, &erase); - - processed += erasesize; -@@ -957,6 +990,11 @@ static int flash_write_buf (int dev, int - if (write_total > count) - free (data); - -+out: -+#ifdef UBI -+ if (libubi) -+ libubi_close(libubi); -+#endif - return processed; - } - -@@ -1068,12 +1106,8 @@ static int flash_read (int fd) - - if (S_ISCHR(st.st_mode)) { - rc = ioctl(fd, MEMGETINFO, &mtdinfo); -- if (rc < 0) { -- fprintf(stderr, "Cannot get MTD information for %s\n", -- DEVNAME(dev_current)); -- return -1; -- } -- if (mtdinfo.type != MTD_NORFLASH && -+ if (!rc && -+ mtdinfo.type != MTD_NORFLASH && - mtdinfo.type != MTD_NANDFLASH && - mtdinfo.type != MTD_DATAFLASH && - mtdinfo.type != MTD_UBIVOLUME) { -@@ -1081,6 +1115,28 @@ static int flash_read (int fd) - mtdinfo.type, DEVNAME(dev_current)); - return -1; - } -+#ifdef UBI -+ if (rc) { -+ libubi_t *libubi; -+ struct ubi_vol_info volinfo; -+ libubi = libubi_open(); -+ if (!libubi) -+ return -ENOMEM; -+ -+ rc = ubi_get_vol_info(libubi, DEVNAME(dev_current), -+ &volinfo); -+ if (rc) { -+ libubi_close(libubi); -+ return -ENODEV; -+ } -+ memset(&mtdinfo, 0, sizeof(mtdinfo)); -+ mtdinfo.type = MTD_UBIVOLUME; -+ mtdinfo.size = volinfo.data_bytes; -+ mtdinfo.erasesize = volinfo.leb_size; -+ mtdinfo.writesize = volinfo.leb_size; -+ libubi_close(libubi); -+ } -+#endif - } else { - memset(&mtdinfo, 0, sizeof(mtdinfo)); - mtdinfo.type = MTD_ABSENT; |