ramips: support dual image feature on ALFA Network boards
[openwrt/openwrt.git] / target / linux / ramips / base-files / lib / upgrade / platform.sh
index 2fad95021ce1710e5a1686553356fdb98ed99575..eff2ba967cdcc7b8395b0ebcf260915d97503352 100755 (executable)
@@ -5,6 +5,9 @@
 PART_NAME=firmware
 REQUIRE_IMAGE_METADATA=1
 
+RAMFS_COPY_BIN='fw_printenv fw_setenv'
+RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
+
 platform_check_image() {
        return 0
 }
@@ -13,6 +16,7 @@ platform_pre_upgrade() {
        local board=$(board_name)
 
        case "$board" in
+       mikrotik,rb750gr3|\
        mikrotik,rbm11g|\
        mikrotik,rbm33g)
                [ -z "$(rootfs_type)" ] && mtd erase firmware
@@ -26,7 +30,7 @@ platform_nand_pre_upgrade() {
        case "$board" in
        ubnt-erx|\
        ubnt-erx-sfp)
-               platform_upgrade_ubnt_erx "$ARGV"
+               platform_upgrade_ubnt_erx "$1"
                ;;
        esac
 }
@@ -35,15 +39,35 @@ platform_do_upgrade() {
        local board=$(board_name)
 
        case "$board" in
+       alfa-network,ac1200rm|\
+       alfa-network,awusfree1|\
+       alfa-network,tube-e4g)
+               [ "$(fw_printenv -n dual_image 2>/dev/null)" = "1" ] &&\
+               [ -n "$(find_mtd_part backup)" ] && {
+                       PART_NAME=backup
+                       if [ "$(fw_printenv -n bootactive 2>/dev/null)" = "1" ]; then
+                               fw_setenv bootactive 2 || exit 1
+                       else
+                               fw_setenv bootactive 1 || exit 1
+                       fi
+               }
+               default_do_upgrade "$1"
+               ;;
        hc5962|\
-       mir3g|\
        r6220|\
+       netgear,r6350|\
        ubnt-erx|\
-       ubnt-erx-sfp)
-               nand_do_upgrade "$ARGV"
+       ubnt-erx-sfp|\
+       xiaomi,mir3g|\
+       xiaomi,mir3p)
+               nand_do_upgrade "$1"
+               ;;
+       tplink,c50-v4)
+               MTD_ARGS="-t romfile"
+               default_do_upgrade "$1"
                ;;
        *)
-               default_do_upgrade "$ARGV"
+               default_do_upgrade "$1"
                ;;
        esac
 }