b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | export_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 | |
| 46 | fit_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 | } |