Ver código fonte

mpc85xx: use image metadata

Append and enforce image metadata. Remove the device specific image
checks, they are replaced by image metadata.

Signed-off-by: Mathias Kresin <[email protected]>
Mathias Kresin 8 anos atrás
pai
commit
605ce5f6cd

+ 3 - 90
target/linux/mpc85xx/base-files/lib/upgrade/platform.sh

@@ -3,100 +3,13 @@
 #
 
 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() {
-	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

+ 4 - 2
target/linux/mpc85xx/image/Makefile

@@ -46,10 +46,11 @@ define Device/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
-  IMAGE/sysupgrade.bin := tplink-v1-image -s
+  IMAGE/sysupgrade.bin := tplink-v1-image -s | append-metadata
 endef
 TARGET_DEVICES += tl-wdr4900-v1
 
@@ -63,12 +64,13 @@ define Device/hiveap-330
   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 | \
-	append-kernel
+	append-kernel | append-metadata
 endef
 TARGET_DEVICES += hiveap-330