X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fbrcm47xx%2Fbase-files%2Flib%2Fupgrade%2Fplatform.sh;h=f64e19b2135aa501016fc3875e6632f4256ed225;hb=31e9445b7e614f54daa0caf3148e223d088311ab;hp=b9110a7589961ceaccae8513c684838a5e5b0e42;hpb=44b128b0aa202e6539b9375197a0703c2c37dc36;p=openwrt%2Fstaging%2Flynxis.git diff --git a/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh b/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh index b9110a7589..f64e19b213 100644 --- a/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh @@ -6,17 +6,15 @@ get_magic_long_at() { dd if="$1" skip=$2 bs=1 count=4 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' } -platform_machine() { - grep "machine" /proc/cpuinfo | sed "s/.*:[ \t]*//" -} - platform_expected_image() { - local machine=$(platform_machine) + local machine=$(board_name) case "$machine" in "Netgear WGR614 V8") echo "chk U12H072T00_NETGEAR"; return;; "Netgear WGR614 V9") echo "chk U12H094T00_NETGEAR"; return;; "Netgear WGR614 V10") echo "chk U12H139T01_NETGEAR"; return;; + "Netgear WN2500RP V1") echo "chk U12H197T00_NETGEAR"; return;; + "Netgear WN2500RP V2") echo "chk U12H294T00_NETGEAR"; return;; "Netgear WNDR3300") echo "chk U12H093T00_NETGEAR"; return;; "Netgear WNDR3400 V1") echo "chk U12H155T00_NETGEAR"; return;; "Netgear WNDR3400 V2") echo "chk U12H187T00_NETGEAR"; return;; @@ -36,6 +34,7 @@ platform_expected_image() { "Linksys E1000 V1") echo "cybertan E100"; return;; "Linksys E1000 V2") echo "cybertan E100"; return;; "Linksys E1000 V2.1") echo "cybertan E100"; return;; + "Linksys E1200 V1") echo "cybetran E120"; return;; "Linksys E1200 V2") echo "cybertan E122"; return;; "Linksys E2000 V1") echo "cybertan 32XN"; return;; "Linksys E3000 V1") echo "cybertan 61XN"; return;; @@ -45,7 +44,8 @@ platform_expected_image() { "Linksys WRT150N V1") echo "cybertan N150"; return;; "Linksys WRT160N V1") echo "cybertan N150"; return;; "Linksys WRT160N V3") echo "cybertan N150"; return;; - "Linksys WRT300N V1.1") echo "cybertan EWCB"; return;; + "Linksys WRT300N V1") echo "cybertan EWCB"; return;; + "Linksys WRT300N V1.1") echo "cybertan EWC2"; return;; "Linksys WRT310N V1") echo "cybertan 310N"; return;; "Linksys WRT310N V2") echo "cybertan 310N"; return;; "Linksys WRT610N V1") echo "cybertan 610N"; return;; @@ -97,7 +97,7 @@ platform_check_image() { error=1 } - if ! otrx -c "$1" -o "$header_len"; then + if ! otrx check "$1" -o "$header_len"; then echo "No valid TRX firmware in the CHK image" error=1 fi @@ -112,12 +112,16 @@ platform_check_image() { error=1 } - if ! otrx -c "$1" -o 32; then + if ! otrx check "$1" -o 32; then echo "No valid TRX firmware in the CyberTAN image" error=1 fi ;; "trx") + if ! otrx check "$1"; then + echo "Invalid (corrupted?) TRX firmware" + error=1 + fi ;; *) echo "Invalid image type. Please use only .trx files" @@ -128,29 +132,25 @@ platform_check_image() { return $error } -platform_do_upgrade_chk() { +platform_trx_from_chk_cmd() { local header_len=$((0x$(get_magic_long_at "$1" 4))) - local trx="/tmp/$1.trx" - dd if="$1" of="$trx" bs=$header_len skip=1 - shift - default_do_upgrade "$trx" "$@" + echo -n dd bs=$header_len skip=1 } -platform_do_upgrade_cybertan() { - local trx="/tmp/$1.trx" - - dd if="$1" of="$trx" bs=32 skip=1 - shift - default_do_upgrade "$trx" "$@" +platform_trx_from_cybertan_cmd() { + echo -n dd bs=32 skip=1 } platform_do_upgrade() { local file_type=$(brcm47xx_identify "$1") + local trx="$1" + local cmd="" case "$file_type" in - "chk") platform_do_upgrade_chk "$ARGV";; - "cybertan") platform_do_upgrade_cybertan "$ARGV";; - *) default_do_upgrade "$ARGV";; + "chk") cmd=$(platform_trx_from_chk_cmd "$trx");; + "cybertan") cmd=$(platform_trx_from_cybertan_cmd "$trx");; esac + + default_do_upgrade "$trx" "$cmd" }