mvebu: base-files: autodetect upgrade device
[openwrt/staging/dedeckeh.git] / target / linux / mvebu / base-files / lib / upgrade / sdcard.sh
1 get_magic_at() {
2 local file="$1"
3 local pos="$2"
4 get_image "$file" | dd bs=1 count=2 skip="$pos" 2>/dev/null | hexdump -v -n 2 -e '1/1 "%02x"'
5 }
6
7 platform_check_image_sdcard() {
8 local file="$1"
9 local magic
10
11 magic=$(get_magic_at "$file" 510)
12 [ "$magic" != "55aa" ] && {
13 echo "Failed to verify MBR boot signature."
14 return 1
15 }
16
17 return 0;
18 }
19
20 platform_do_upgrade_sdcard() {
21 local board=$(board_name)
22 local diskdev
23
24 sync
25 if export_bootdevice && export_partdevice diskdev 0; then
26 get_image "$1" | dd of=/dev/$diskdev bs=2M conv=fsync
27 fi
28
29 case "$board" in
30 armada-385-turris-omnia)
31 fw_setenv openwrt_bootargs 'earlyprintk console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=auto rootwait'
32 fw_setenv openwrt_mmcload 'setenv bootargs "$openwrt_bootargs cfg80211.freg=$regdomain"; fatload mmc 0 0x01000000 zImage; fatload mmc 0 0x02000000 armada-385-turris-omnia.dtb'
33 fw_setenv factory_mmcload 'setenv bootargs "$bootargs cfg80211.freg=$regdomain"; btrload mmc 0 0x01000000 boot/zImage @; btrload mmc 0 0x02000000 boot/dtb @'
34 fw_setenv mmcboot 'run openwrt_mmcload || run factory_mmcload; bootz 0x01000000 - 0x02000000'
35 ;;
36 esac
37
38 sleep 1
39 }
40
41 platform_copy_config_sdcard() {
42 local partdev
43
44 if export_partdevice partdev 1; then
45 mkdir -p /boot
46 [ -f /boot/kernel.img ] || mount -o rw,noatime /dev/$partdev /boot
47 cp -af "$CONF_TAR" /boot/
48 sync
49 umount /boot
50 fi
51 }