mpc85xx: use image metadata
authorMathias Kresin <dev@kresin.me>
Tue, 24 Oct 2017 04:57:29 +0000 (06:57 +0200)
committerMathias Kresin <dev@kresin.me>
Wed, 25 Oct 2017 07:22:13 +0000 (09:22 +0200)
Append and enforce image metadata. Remove the device specific image
checks, they are replaced by image metadata.

Signed-off-by: Mathias Kresin <dev@kresin.me>
target/linux/mpc85xx/base-files/lib/upgrade/platform.sh
target/linux/mpc85xx/image/Makefile

index 6c1a140461a2c286c52bcd60400b255094ab1d34..67e8324c2aa84032d226efcb85018beedebee1b2 100755 (executable)
 #
 
 PART_NAME=firmware
 #
 
 PART_NAME=firmware
-
-get_magic_long_at() {
-       (get_image "$1" | dd bs=4 count=1 skip="$2" | hexdump -v -n 4 -e '1/1 "%02x"') 2>/dev/null
-}
-
-tplink_get_hwid() {
-       local part
-
-       part=$(find_mtd_part u-boot)
-       [ -z "$part" ] && return 1
-
-       dd if=$part bs=4 count=1 skip=81728 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-tplink_get_image_hwid() {
-       get_image "$@" | dd bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-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"'
-}
+REQUIRE_IMAGE_METADATA=1
 
 platform_check_image() {
 
 platform_check_image() {
-       local board=$(board_name)
-       local magic="$(get_magic_long "$1")"
-
-       [ "$#" -gt 1 ] && return 1
-
-       case $board in
-       aerohive,hiveap-330)
-               local init_magic=$(get_magic_long_at "$1" "65536")
-               local root_magic=$(get_magic_long_at "$1" "131072")
-               local kernel_magic=$(get_magic_long_at "$1" "10551296")
-
-               [ "$magic" != "d00dfeed" ] && {
-                       echo "Invalid dtb image type."
-                       return 1
-               }
-               [ "$init_magic" != "27051956" ] && {
-                       echo "Invalid initramfs image type."
-                       return 1
-               }
-               [ "$root_magic" != "68737173" ] && {
-                       echo "Invalid rootfs image type."
-                       return 1
-               }
-               [ "$kernel_magic" != "27051956" ] && {
-                       echo "Invalid kernel image type."
-                       return 1
-               }
-               return 0
-               ;;
-       tplink,tl-wdr4900-v1)
-               [ "$magic" != "01000000" ] && {
-                       echo "Invalid image type."
-                       return 1
-               }
-
-               local hwid
-               local imageid
-
-               hwid=$(tplink_get_hwid)
-               imageid=$(tplink_get_image_hwid "$1")
-
-               [ "$hwid" != "$imageid" ] && {
-                       echo "Invalid image, hardware ID mismatch, hw:$hwid image:$imageid."
-                       return 1
-               }
-
-               local boot_size
-
-               boot_size=$(tplink_get_image_boot_size "$1")
-               [ "$boot_size" != "00000000" ] && {
-                       echo "Invalid image, it contains a bootloader."
-                       return 1
-               }
-
-               return 0
-               ;;
-       esac
-
-       echo "Sysupgrade is not yet supported on $board."
-       return 1
+       return 0
 }
 
 }
 
-platform_do_upgrade() {
-       local board=$(board_name)
-
-       case "$board" in
-       *)
-               default_do_upgrade "$ARGV"
-               ;;
-       esac
-}
+# use default for platform_do_upgrade()
 
 disable_watchdog() {
        killall watchdog
 
 disable_watchdog() {
        killall watchdog
index f7de3bc5ce3af1e8fdee1cb68071ac56a3a6e637..7ae6e27b35460f661a8fef62df7d8b7ae98c32f6 100644 (file)
@@ -46,10 +46,11 @@ define Device/tl-wdr4900-v1
   TPLINK_HWREV := 1
   TPLINK_FLASHLAYOUT := 16Mppc
   KERNEL_NAME := cuImage.tl-wdr4900-v1
   TPLINK_HWREV := 1
   TPLINK_FLASHLAYOUT := 16Mppc
   KERNEL_NAME := cuImage.tl-wdr4900-v1
+  SUPPORTED_DEVICES:=tl-wdr4900-v1 tplink,tl-wdr4900-v1
   IMAGES := fdt.bin factory.bin sysupgrade.bin
   IMAGE/fdt.bin := append-dtb
   IMAGE/factory.bin := tplink-v1-image
   IMAGES := fdt.bin factory.bin sysupgrade.bin
   IMAGE/fdt.bin := append-dtb
   IMAGE/factory.bin := tplink-v1-image
-  IMAGE/sysupgrade.bin := tplink-v1-image -s
+  IMAGE/sysupgrade.bin := tplink-v1-image -s | append-metadata
 endef
 TARGET_DEVICES += tl-wdr4900-v1
 
 endef
 TARGET_DEVICES += tl-wdr4900-v1
 
@@ -63,12 +64,13 @@ define Device/hiveap-330
   BLOCKSIZE := 128k
   KERNEL_NAME := zImage
   KERNEL_SIZE := 8m
   BLOCKSIZE := 128k
   KERNEL_NAME := zImage
   KERNEL_SIZE := 8m
+  SUPPORTED_DEVICES := aerohive,hiveap-330
   IMAGES := fdt.bin sysupgrade.bin
   IMAGE/fdt.bin := append-dtb
   IMAGE/sysupgrade.bin := append-dtb | pad-to 256k | check-size 256k | \
        append-uImage-fakeramdisk-hdr | pad-to 256k | check-size 512k | \
        append-rootfs | pad-rootfs $$(BLOCKSIZE) | pad-to 41216k | check-size 41216k | \
   IMAGES := fdt.bin sysupgrade.bin
   IMAGE/fdt.bin := append-dtb
   IMAGE/sysupgrade.bin := append-dtb | pad-to 256k | check-size 256k | \
        append-uImage-fakeramdisk-hdr | pad-to 256k | check-size 512k | \
        append-rootfs | pad-rootfs $$(BLOCKSIZE) | pad-to 41216k | check-size 41216k | \
-       append-kernel
+       append-kernel | append-metadata
 endef
 TARGET_DEVICES += hiveap-330
 
 endef
 TARGET_DEVICES += hiveap-330