diff options
Diffstat (limited to 'target/linux/mpc85xx/base-files/lib/upgrade')
4 files changed, 241 insertions, 0 deletions
diff --git a/target/linux/mpc85xx/base-files/lib/upgrade/.svn/entries b/target/linux/mpc85xx/base-files/lib/upgrade/.svn/entries new file mode 100644 index 0000000..f107025 --- /dev/null +++ b/target/linux/mpc85xx/base-files/lib/upgrade/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +36060 +svn://svn.openwrt.org/openwrt/trunk/target/linux/mpc85xx/base-files/lib/upgrade +svn://svn.openwrt.org/openwrt + + + +2013-02-21T19:20:34.086008Z +35733 +juhosg + + + + + + + + + + + + + + +3c298f89-4303-0410-b956-a3cf2f4a3e73 + +platform.sh +file + + + + +2013-03-17T12:12:30.000000Z +929c2712d12ab3f956f5516892b566a1 +2013-02-21T19:20:34.086008Z +35733 +juhosg +has-props + + + + + + + + + + + + + + + + + + + + +1565 + diff --git a/target/linux/mpc85xx/base-files/lib/upgrade/.svn/prop-base/platform.sh.svn-base b/target/linux/mpc85xx/base-files/lib/upgrade/.svn/prop-base/platform.sh.svn-base new file mode 100644 index 0000000..03b5bfa --- /dev/null +++ b/target/linux/mpc85xx/base-files/lib/upgrade/.svn/prop-base/platform.sh.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +END diff --git a/target/linux/mpc85xx/base-files/lib/upgrade/.svn/text-base/platform.sh.svn-base b/target/linux/mpc85xx/base-files/lib/upgrade/.svn/text-base/platform.sh.svn-base new file mode 100644 index 0000000..dbd179f --- /dev/null +++ b/target/linux/mpc85xx/base-files/lib/upgrade/.svn/text-base/platform.sh.svn-base @@ -0,0 +1,85 @@ +# +# Copyright (C) 2011 OpenWrt.org +# + +. /lib/mpc85xx.sh + +PART_NAME=firmware +RAMFS_COPY_DATA=/lib/mpc85xx.sh + +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"' +} + +platform_check_image() { + local board=$(mpc85xx_board_name) + local magic="$(get_magic_long "$1")" + + [ "$ARGC" -gt 1 ] && return 1 + + case $board in + 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 +} + +platform_do_upgrade() { + local board=$(mpc85xx_board_name) + + case "$board" in + *) + default_do_upgrade "$ARGV" + ;; + esac +} + +disable_watchdog() { + killall watchdog + ( ps | grep -v 'grep' | grep '/dev/watchdog' ) && { + echo 'Could not disable watchdog' + return 1 + } +} + +append sysupgrade_pre_upgrade disable_watchdog diff --git a/target/linux/mpc85xx/base-files/lib/upgrade/platform.sh b/target/linux/mpc85xx/base-files/lib/upgrade/platform.sh new file mode 100755 index 0000000..dbd179f --- /dev/null +++ b/target/linux/mpc85xx/base-files/lib/upgrade/platform.sh @@ -0,0 +1,85 @@ +# +# Copyright (C) 2011 OpenWrt.org +# + +. /lib/mpc85xx.sh + +PART_NAME=firmware +RAMFS_COPY_DATA=/lib/mpc85xx.sh + +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"' +} + +platform_check_image() { + local board=$(mpc85xx_board_name) + local magic="$(get_magic_long "$1")" + + [ "$ARGC" -gt 1 ] && return 1 + + case $board in + 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 +} + +platform_do_upgrade() { + local board=$(mpc85xx_board_name) + + case "$board" in + *) + default_do_upgrade "$ARGV" + ;; + esac +} + +disable_watchdog() { + killall watchdog + ( ps | grep -v 'grep' | grep '/dev/watchdog' ) && { + echo 'Could not disable watchdog' + return 1 + } +} + +append sysupgrade_pre_upgrade disable_watchdog |