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 <dev@kresin.me>
This commit is contained in:
Mathias Kresin 2017-10-24 06:57:29 +02:00
parent dcbbac55ed
commit 605ce5f6cd
2 changed files with 7 additions and 92 deletions

View file

@ -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

View file

@ -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