|
|
@@ -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
|
|
|
+}
|