ar71xx:add support for E750A v4
[openwrt/openwrt.git] / target / linux / ar71xx / base-files / lib / upgrade / platform.sh
index 633a7e8e56731c8ae9f4fecb44cc296e1fcdd8b7..7db4899dc784a0efa1f2e8e0eb9704cbc9d43565 100755 (executable)
@@ -93,26 +93,37 @@ tplink_get_image_boot_size() {
        get_image "$@" | dd bs=4 count=1 skip=37 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
 }
 
+tplink_pharos_check_support_list() {
+       local image="$1"
+       local offset="$2"
+       local model="$3"
+       local trargs="$4"
+
+       # Here $image is given to dd directly instead of using get_image;
+       # otherwise the skip will take almost a second (as dd can't seek)
+       dd if="$image" bs=1 skip=$offset count=1024 2>/dev/null | tr -d "$trargs" | (
+               while IFS= read -r line; do
+                       [ "$line" = "$model" ] && exit 0
+               done
+
+               exit 1
+       )
+}
+
 tplink_pharos_check_image() {
-       local magic_long="$(get_magic_long "$1")"
-       [ "$magic_long" != "7f454c46" ] && {
-               echo "Invalid image magic '$magic_long'"
+       local image_magic="$(get_magic_long "$1")"
+       local board_magic="$2"
+       [ "$image_magic" != "$board_magic" ] && {
+               echo "Invalid image magic '$image_magic'. Expected '$board_magic'."
                return 1
        }
 
-       local model_string="$(tplink_pharos_get_model_string)"
-       local line
-
-       # Here $1 is given to dd directly instead of get_image as otherwise the skip
-       # will take almost a second (as dd can't seek then)
-       #
-       # This will fail if the image isn't local, but that's fine: as the
-       # read loop won't be executed at all, it will return true, so the image
-       # is accepted (loading the first 1.5M of a remote image for this check seems
-       # a bit extreme)
-       dd if="$1" bs=1 skip=1511432 count=1024 2>/dev/null | while read line; do
-               [ "$line" = "$model_string" ] && break
-       done || {
+       local model_string="$3"
+       local trargs="$4"
+
+       # New images have the support list at 7802888, old ones at 1511432
+       tplink_pharos_check_support_list "$1" 7802888 "$model_string" "$trargs" || \
+       tplink_pharos_check_support_list "$1" 1511432 "$model_string" "$trargs" || {
                echo "Unsupported image (model not in support-list)"
                return 1
        }
@@ -204,6 +215,7 @@ platform_check_image() {
        archer-c60-v1|\
        archer-c60-v2|\
        archer-c7-v4|\
+       archer-c7-v5|\
        bullet-m|\
        c-55|\
        carambola2|\
@@ -238,8 +250,10 @@ platform_check_image() {
        dr531|\
        dragino2|\
        e1700ac-v2|\
+       e558-v2|\
        e600g-v2|\
        e600gac-v2|\
+       e750a-v4|\
        ebr-2310-c1|\
        ens202ext|\
        epg5000|\
@@ -252,6 +266,7 @@ platform_check_image() {
        gl-ar300m|\
        gl-ar300|\
        gl-ar750|\
+       gl-ar750s|\
        gl-domino|\
        gl-mifi|\
        gl-usb150|\
@@ -475,6 +490,7 @@ platform_check_image() {
        tl-wr941nd|\
        tl-wr941nd-v5|\
        tl-wr941nd-v6|\
+       ts-d084|\
        wifi-pineapple-nano)
                local magic_ver="0100"
 
@@ -542,6 +558,7 @@ platform_check_image() {
        rb-951ui-2hnd|\
        rb-2011l|\
        rb-2011il|\
+       rb-2011ils|\
        rb-2011uas|\
        rb-2011uas-2hnd|\
        rb-2011uias|\
@@ -567,7 +584,11 @@ platform_check_image() {
        eap120|\
        wbs210|\
        wbs510)
-               tplink_pharos_check_image "$1" && return 0
+               tplink_pharos_check_image "$1" "7f454c46" "$(tplink_pharos_get_model_string)" '' && return 0
+               return 1
+               ;;
+       cpe210-v2)
+               tplink_pharos_check_image "$1" "01000000" "$(tplink_pharos_v2_get_model_string)" '\0\xff\r' && return 0
                return 1
                ;;
        a40|\
@@ -677,11 +698,15 @@ platform_check_image() {
                ;;
        # these boards use metadata images
        fritz300e|\
+       fritz4020|\
+       fritz450e|\
+       koala|\
        rb-750-r2|\
        rb-750p-pbr2|\
        rb-750up-r2|\
        rb-911-2hn|\
        rb-911-5hn|\
+       rb-931-2nd|\
        rb-941-2nd|\
        rb-951ui-2nd|\
        rb-952ui-5ac2nd|\
@@ -690,7 +715,8 @@ platform_check_image() {
        rb-map-2nd|\
        rb-mapl-2nd|\
        rb-wap-2nd|\
-       rb-wapg-5hact2hnd)
+       rb-wapg-5hact2hnd|\
+       rb-wapr-2nd)
                return 0
                ;;
        esac
@@ -708,6 +734,7 @@ platform_pre_upgrade() {
        rb-750up-r2|\
        rb-911-2hn|\
        rb-911-5hn|\
+       rb-931-2nd|\
        rb-941-2nd|\
        rb-951ui-2nd|\
        rb-952ui-5ac2nd|\
@@ -716,7 +743,8 @@ platform_pre_upgrade() {
        rb-map-2nd|\
        rb-mapl-2nd|\
        rb-wap-2nd|\
-       rb-wapg-5hact2hnd)
+       rb-wapg-5hact2hnd|\
+       rb-wapr-2nd)
                # erase firmware if booted from initramfs
                [ -z "$(rootfs_type)" ] && mtd erase firmware
                ;;
@@ -835,6 +863,7 @@ platform_do_upgrade() {
        rb-951g-2hnd|\
        rb-951ui-2hnd|\
        rb-2011il|\
+       rb-2011ils|\
        rb-2011l|\
        rb-2011uas|\
        rb-2011uas-2hnd|\