blob: b715a15ddfba1afd213934012bdc11a819866551 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001export_fitblk_bootdev() {
2 [ -e /sys/firmware/devicetree/base/chosen/rootdisk ] || return
3
4 local rootdisk="$(cat /sys/firmware/devicetree/base/chosen/rootdisk)"
5 local handle bootdev
6
7 for handle in /sys/class/mtd/mtd*/of_node/volumes/*/phandle; do
8 [ ! -e "$handle" ] && continue
9 if [ "$rootdisk" = "$(cat "$handle")" ]; then
10 if [ -e "${handle%/phandle}/volname" ]; then
11 export CI_KERNPART="$(cat "${handle%/phandle}/volname")"
12 elif [ -e "${handle%/phandle}/volid" ]; then
13 export CI_KERNVOLID="$(cat "${handle%/phandle}/volid")"
14 else
15 return
16 fi
17 export CI_UBIPART="$(cat "${handle%%/of_node*}/name")"
18 export CI_METHOD="ubi"
19 return
20 fi
21 done
22
23 for handle in /sys/class/mtd/mtd*/of_node/phandle; do
24 [ ! -e "$handle" ] && continue
25 if [ "$rootdisk" = "$(cat $handle)" ]; then
26 bootdev="${handle%/of_node/phandle}"
27 bootdev="${bootdev#/sys/class/mtd/}"
28 export PART_NAME="/dev/$bootdev"
29 export CI_METHOD="default"
30 return
31 fi
32 done
33
34 for handle in /sys/class/block/*/of_node/phandle; do
35 [ ! -e "$handle" ] && continue
36 if [ "$rootdisk" = "$(cat $handle)" ]; then
37 bootdev="${handle%/of_node/phandle}"
38 bootdev="${bootdev#/sys/class/block/}"
39 export EMMC_KERN_DEV="/dev/$bootdev"
40 export CI_METHOD="emmc"
41 return
42 fi
43 done
44}
45
46fit_do_upgrade() {
47 export_fitblk_bootdev
48 [ -n "$CI_METHOD" ] || return 1
49 [ -e /dev/fit0 ] && fitblk /dev/fit0
50 [ -e /dev/fitrw ] && fitblk /dev/fitrw
51
52 case "$CI_METHOD" in
53 emmc)
54 emmc_do_upgrade "$1"
55 ;;
56 default)
57 default_do_upgrade "$1"
58 ;;
59 ubi)
60 nand_do_upgrade "$1"
61 ;;
62 esac
63}