[openwrt/openwrt] uboot-envtools: add support for multiple config partitions

LEDE Commits lede-commits at lists.infradead.org
Thu Apr 8 08:21:19 BST 2021


ynezz pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/a3e9fd7e5b365aa2f0b8cc1dc0a2d7cf3daa3e1a

commit a3e9fd7e5b365aa2f0b8cc1dc0a2d7cf3daa3e1a
Author: Bjørn Mork <bjorn at mork.no>
AuthorDate: Tue Apr 6 11:43:03 2021 +0200

    uboot-envtools: add support for multiple config partitions
    
    Most (all?) of the realtek devices have two u-boot config partitions
    with a different set of variables in each. The U-Boot shell provides
    two sets of apps to manipulate these:
    
     printenv- print environment variables
     printsys- printsys - print system information variables
     saveenv - save environment variables to persistent storage
     savesys - savesys - save system information variables to persistent storage
     setenv  - set environment variables
     setsys  - setsys  - set system information variables
    
    Add support for multiple ubootenv configuration types, allowing
    more than one configuration file.
    
    Section names are not suitable for naming the different
    configurations since each file can be the result of multiple sections
    in case of backup partitions.
    
    Signed-off-by: Bjørn Mork <bjorn at mork.no>
---
 package/boot/uboot-envtools/Makefile               |  1 +
 package/boot/uboot-envtools/files/realtek          |  8 ++++-
 .../boot/uboot-envtools/files/uboot-envtools.sh    | 38 ++++++++++++++--------
 3 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/package/boot/uboot-envtools/Makefile b/package/boot/uboot-envtools/Makefile
index a9eccec0ce..03dc6c678d 100644
--- a/package/boot/uboot-envtools/Makefile
+++ b/package/boot/uboot-envtools/Makefile
@@ -61,6 +61,7 @@ MAKE_FLAGS += \
 define Package/uboot-envtools/conffiles
 /etc/config/ubootenv
 /etc/fw_env.config
+/etc/fw_sys.config
 endef
 
 define Package/uboot-envtools/install
diff --git a/package/boot/uboot-envtools/files/realtek b/package/boot/uboot-envtools/files/realtek
index a91ca82604..75a399208e 100644
--- a/package/boot/uboot-envtools/files/realtek
+++ b/package/boot/uboot-envtools/files/realtek
@@ -18,15 +18,21 @@ zyxel,gs1900-10hp)
 	idx="$(find_mtd_index u-boot-env)"
 	[ -n "$idx" ] && \
 		ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x400" "0x10000"
+	idx2="$(find_mtd_index u-boot-env2)"
+	[ -n "$idx2" ] && \
+		ubootenv_add_uci_sys_config "/dev/mtd$idx2" "0x0" "0x1000" "0x10000"
 	;;
 *)
 	idx="$(find_mtd_index u-boot-env)"
 	[ -n "$idx" ] && \
 		ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000"
+	idx2="$(find_mtd_index u-boot-env2)"
+	[ -n "$idx2" ] && \
+		ubootenv_add_uci_sys_config "/dev/mtd$idx2" "0x0" "0x1000" "0x10000"
 	;;
 esac
 
 config_load ubootenv
-config_foreach ubootenv_add_app_config ubootenv
+config_foreach ubootenv_add_app_config
 
 exit 0
diff --git a/package/boot/uboot-envtools/files/uboot-envtools.sh b/package/boot/uboot-envtools/files/uboot-envtools.sh
index 9218bc4e39..980c9962b1 100644
--- a/package/boot/uboot-envtools/files/uboot-envtools.sh
+++ b/package/boot/uboot-envtools/files/uboot-envtools.sh
@@ -3,34 +3,44 @@
 # Copyright (C) 2011-2012 OpenWrt.org
 #
 
-ubootenv_add_uci_config() {
-	local dev=$1
-	local offset=$2
-	local envsize=$3
-	local secsize=$4
-	local numsec=$5
+_ubootenv_add_uci_config() {
+	local cfgtype=$1
+	local dev=$2
+	local offset=$3
+	local envsize=$4
+	local secsize=$5
+	local numsec=$6
 	uci batch <<EOF
-add ubootenv ubootenv
-set ubootenv. at ubootenv[-1].dev='$dev'
-set ubootenv. at ubootenv[-1].offset='$offset'
-set ubootenv. at ubootenv[-1].envsize='$envsize'
-set ubootenv. at ubootenv[-1].secsize='$secsize'
-set ubootenv. at ubootenv[-1].numsec='$numsec'
+add ubootenv $cfgtype
+set ubootenv.@$cfgtype[-1].dev='$dev'
+set ubootenv.@$cfgtype[-1].offset='$offset'
+set ubootenv.@$cfgtype[-1].envsize='$envsize'
+set ubootenv.@$cfgtype[-1].secsize='$secsize'
+set ubootenv.@$cfgtype[-1].numsec='$numsec'
 EOF
 	uci commit ubootenv
 }
 
+ubootenv_add_uci_config() {
+	_ubootenv_add_uci_config "ubootenv" "$@"
+}
+
+ubootenv_add_uci_sys_config() {
+	_ubootenv_add_uci_config "ubootsys" "$@"
+}
+
 ubootenv_add_app_config() {
+	local cfgtype
 	local dev
 	local offset
 	local envsize
 	local secsize
 	local numsec
+	config_get cfgtype "$1" TYPE
 	config_get dev "$1" dev
 	config_get offset "$1" offset
 	config_get envsize "$1" envsize
 	config_get secsize "$1" secsize
 	config_get numsec "$1" numsec
-	grep -q "^[[:space:]]*${dev}[[:space:]]*${offset}" /etc/fw_env.config || echo "$dev $offset $envsize $secsize $numsec" >>/etc/fw_env.config
+	grep -q "^[[:space:]]*${dev}[[:space:]]*${offset}" "/etc/fw_${cfgtype#uboot}.config" || echo "$dev $offset $envsize $secsize $numsec" >>"/etc/fw_${cfgtype#uboot}.config"
 }
-



More information about the lede-commits mailing list