ipq806x: add support for indicating the boot and upgrade state using four leds
[lede-git/.git] / target / linux / ipq806x / base-files / lib / upgrade / platform.sh
index c0e19a128739378473848a72ab4f7642dcecc946..87689306531accb13114e742db873bfdc5de93c2 100644 (file)
@@ -6,11 +6,23 @@ platform_check_image() {
        local board=$(ipq806x_board_name)
 
        case "$board" in
-       AP148 |\
-       r7500)
+       ap148 |\
+       d7800 |\
+       ea8500 |\
+       r7500 |\
+       r7500v2 |\
+       r7800)
                nand_do_platform_check $board $1
                return $?;
                ;;
+       c2600)
+               local magic_long="$(get_magic_long "$1")"
+               [ "$magic_long" != "27051956" ] && {
+                       echo "Invalid image, bad magic: $magic_long"
+                       return 1
+               }
+               return 0;
+               ;;
        *)
                return 1;
        esac
@@ -20,11 +32,36 @@ platform_pre_upgrade() {
        local board=$(ipq806x_board_name)
 
        case "$board" in
-       AP148 |\
-       r7500)
+       ap148 |\
+       d7800 |\
+       r7500 |\
+       r7500v2 |\
+       r7800)
                nand_do_upgrade "$1"
                ;;
+       ea8500)
+               linksys_preupgrade "$1"
+               ;;
+       esac
+}
+
+platform_do_upgrade() {
+       local board=$(ipq806x_board_name)
+
+       case "$board" in
+       c2600)
+               PART_NAME="os-image:rootfs"
+               MTD_CONFIG_ARGS="-s 0x200000"
+               default_do_upgrade "$ARGV"
+               ;;
+       ea8500)
+               platform_do_upgrade_linksys "$ARGV"
+               ;;
        esac
 }
 
-# use default for platform_do_upgrade()
+blink_led() {
+       . /etc/diag.sh; set_state upgrade
+}
+
+append sysupgrade_pre_upgrade blink_led