aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Mork <bjorn@mork.no>2021-04-06 11:43:03 +0200
committerPetr Štetiar <ynezz@true.cz>2021-04-08 09:20:59 +0200
commita3e9fd7e5b365aa2f0b8cc1dc0a2d7cf3daa3e1a (patch)
tree21950eb3d8dad8f467d6520bd02852e5ef86d052
parentf2c8c62d98f2137d8af896e56d5e29759cf48715 (diff)
downloadupstream-a3e9fd7e5b365aa2f0b8cc1dc0a2d7cf3daa3e1a.tar.gz
upstream-a3e9fd7e5b365aa2f0b8cc1dc0a2d7cf3daa3e1a.tar.bz2
upstream-a3e9fd7e5b365aa2f0b8cc1dc0a2d7cf3daa3e1a.zip
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@mork.no>
-rw-r--r--package/boot/uboot-envtools/Makefile1
-rw-r--r--package/boot/uboot-envtools/files/realtek8
-rw-r--r--package/boot/uboot-envtools/files/uboot-envtools.sh38
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.@ubootenv[-1].dev='$dev'
-set ubootenv.@ubootenv[-1].offset='$offset'
-set ubootenv.@ubootenv[-1].envsize='$envsize'
-set ubootenv.@ubootenv[-1].secsize='$secsize'
-set ubootenv.@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"
}
-