fitblk: move shell functions to common file
Move shell functions used for sysupgrade into /lib/upgrade/fit.sh. Introduce improved fitblk boot device detection function which works also in case ubiblock devices have not yet been created or even UBI itself not yet being attached. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
parent
9d8d0509bf
commit
ec2dc60d57
|
@ -1,7 +1,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=fitblk
|
PKG_NAME:=fitblk
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
PKG_LICENSE:=GPL-2.0-only
|
PKG_LICENSE:=GPL-2.0-only
|
||||||
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
|
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
|
||||||
|
|
||||||
|
@ -36,6 +36,8 @@ endef
|
||||||
define Package/fitblk/install
|
define Package/fitblk/install
|
||||||
$(INSTALL_DIR) $(1)/usr/sbin
|
$(INSTALL_DIR) $(1)/usr/sbin
|
||||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/fitblk $(1)/usr/sbin/
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/fitblk $(1)/usr/sbin/
|
||||||
|
$(INSTALL_DIR) $(1)/lib/upgrade
|
||||||
|
$(INSTALL_DATA) ./files/fit.sh $(1)/lib/upgrade
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,fitblk))
|
$(eval $(call BuildPackage,fitblk))
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
export_fitblk_bootdev() {
|
||||||
|
[ -e /sys/firmware/devicetree/base/chosen/rootdisk ] || return
|
||||||
|
|
||||||
|
local rootdisk="$(cat /sys/firmware/devicetree/base/chosen/rootdisk)"
|
||||||
|
local handle bootdev
|
||||||
|
|
||||||
|
for handle in /sys/class/mtd/mtd*/of_node/volumes/*/phandle; do
|
||||||
|
[ ! -e "$handle" ] && continue
|
||||||
|
if [ "$rootdisk" = "$(cat "$handle")" ]; then
|
||||||
|
if [ -e "${handle%/phandle}/volname" ]; then
|
||||||
|
export CI_KERNPART="$(cat "${handle%/phandle}/volname")"
|
||||||
|
elif [ -e "${handle%/phandle}/volid" ]; then
|
||||||
|
export CI_KERNVOLID="$(cat "${handle%/phandle}/volid")"
|
||||||
|
else
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
export CI_UBIPART="$(cat "${handle%%/of_node*}/name")"
|
||||||
|
export CI_METHOD="ubi"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for handle in /sys/class/mtd/mtd*/of_node/phandle; do
|
||||||
|
[ ! -e "$handle" ] && continue
|
||||||
|
if [ "$rootdisk" = "$(cat $handle)" ]; then
|
||||||
|
bootdev="${handle%/of_node/phandle}"
|
||||||
|
bootdev="${bootdev#/sys/class/mtd/}"
|
||||||
|
export PART_NAME="/dev/$bootdev"
|
||||||
|
export CI_METHOD="default"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for handle in /sys/class/block/*/of_node/phandle; do
|
||||||
|
[ ! -e "$handle" ] && continue
|
||||||
|
if [ "$rootdisk" = "$(cat $handle)" ]; then
|
||||||
|
bootdev="${handle%/of_node/phandle}"
|
||||||
|
bootdev="${bootdev#/sys/class/block/}"
|
||||||
|
export EMMC_KERN_DEV="/dev/$bootdev"
|
||||||
|
export CI_METHOD="emmc"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
fit_do_upgrade() {
|
||||||
|
export_fitblk_bootdev
|
||||||
|
[ -n "$CI_METHOD" ] || return 1
|
||||||
|
[ -e /dev/fit0 ] && fitblk /dev/fit0
|
||||||
|
[ -e /dev/fitrw ] && fitblk /dev/fitrw
|
||||||
|
|
||||||
|
case "$CI_METHOD" in
|
||||||
|
emmc)
|
||||||
|
emmc_do_upgrade "$1"
|
||||||
|
;;
|
||||||
|
default)
|
||||||
|
default_do_upgrade "$1"
|
||||||
|
;;
|
||||||
|
ubi)
|
||||||
|
nand_do_upgrade "$1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
Loading…
Reference in New Issue