[WIP] add basic support cpe210v2
[openwrt/staging/lynxis.git] / target / linux / ar71xx / base-files / lib / upgrade / platform.sh
index 85fc1e91226a83bb590f61395d224548e0fb7d34..36ee082e5e67dd32a8412713811cce673e477e18 100755 (executable)
@@ -7,7 +7,7 @@
 
 PART_NAME=firmware
 RAMFS_COPY_DATA=/lib/ar71xx.sh
-[ -x /usr/sbin/nandwrite ] && RAMFS_COPY_BIN=/usr/sbin/nandwrite
+RAMFS_COPY_BIN='nandwrite'
 
 CI_BLKSZ=65536
 CI_LDADR=0x80060000
@@ -94,9 +94,10 @@ tplink_get_image_boot_size() {
 }
 
 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
        }
 
@@ -110,7 +111,7 @@ tplink_pharos_check_image() {
        # 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
+       dd if="$1" bs=1 skip=1511432 count=1024 2>/dev/null | tr -d '\0\xff\r' | while read line; do
                [ "$line" = "$model_string" ] && break
        done || {
                echo "Unsupported image (model not in support-list)"
@@ -184,7 +185,7 @@ alfa_check_image() {
 }
 
 platform_nand_board_name() {
-       local board=$(ar71xx_board_name)
+       local board=$(board_name)
 
        case "$board" in
        rb*) echo "routerboard";;
@@ -193,7 +194,7 @@ platform_nand_board_name() {
 }
 
 platform_check_image() {
-       local board=$(ar71xx_board_name)
+       local board=$(board_name)
        local magic="$(get_magic_word "$1")"
        local magic_long="$(get_magic_long "$1")"
 
@@ -203,6 +204,7 @@ platform_check_image() {
        airgatewaypro|\
        airgateway|\
        airrouter|\
+       ap121f|\
        ap132|\
        ap531b0|\
        ap90q|\
@@ -215,6 +217,7 @@ platform_check_image() {
        carambola2|\
        cf-e316n-v2|\
        cf-e320n-v2|\
+       cf-e355ac|\
        cf-e380ac-v1|\
        cf-e380ac-v2|\
        cf-e520n|\
@@ -249,6 +252,7 @@ platform_check_image() {
        gl-ar300|\
        gl-domino|\
        gl-mifi|\
+       gl-usb150|\
        hiwifi-hc6361|\
        hornet-ub-x2|\
        jwap230|\
@@ -287,6 +291,7 @@ platform_check_image() {
        wpj342|\
        wpj344|\
        wpj531|\
+       wpj558|\
        wpj563|\
        wrt400n|\
        wrtnode2q|\
@@ -323,7 +328,6 @@ platform_check_image() {
        hornet-ub|\
        mr12|\
        mr16|\
-       wpj558|\
        zbt-we1526|\
        zcn-1523h-2|\
        zcn-1523h-5)
@@ -447,6 +451,7 @@ platform_check_image() {
        tl-wr841n-v9|\
        tl-wr842n-v2|\
        tl-wr842n-v3|\
+       tl-wr902ac-v1|\
        tl-wr941nd-v5|\
        tl-wr941nd-v6|\
        tl-wr940n-v4|\
@@ -540,7 +545,14 @@ platform_check_image() {
        eap120|\
        wbs210|\
        wbs510)
-               tplink_pharos_check_image "$1" && return 0
+               # magic = .ELF
+               tplink_pharos_check_image "$1" "7f454c46" && return 0
+               return 1
+               ;;
+       cpe210v2|\
+       cpe510v2)
+               # magic = mktplinkfw v1 header
+               tplink_pharos_check_image "$1" "01000000" && return 0
                return 1
                ;;
        a40|\
@@ -667,7 +679,7 @@ platform_check_image() {
 }
 
 platform_pre_upgrade() {
-       local board=$(ar71xx_board_name)
+       local board=$(board_name)
 
        case "$board" in
        c-60|\
@@ -726,7 +738,7 @@ platform_pre_upgrade() {
 }
 
 platform_nand_pre_upgrade() {
-       local board=$(ar71xx_board_name)
+       local board=$(board_name)
 
        case "$board" in
        rb*)
@@ -741,7 +753,7 @@ platform_nand_pre_upgrade() {
 }
 
 platform_do_upgrade() {
-       local board=$(ar71xx_board_name)
+       local board=$(board_name)
 
        case "$board" in
        all0258n)