projects
/
openwrt
/
staging
/
hauke.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ar71xx: add support for Cisco Meraki Z1 Cloud Managed Teleworker Gateway
[openwrt/staging/hauke.git]
/
target
/
linux
/
ar71xx
/
base-files
/
lib
/
upgrade
/
merakinand.sh
diff --git
a/target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh
b/target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh
index cc7a86c93d74181d8218fe3fbe0de8cef675b4c5..78cde20a130707382968a8d6e65db4e020054857 100644
(file)
--- a/
target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh
+++ b/
target/linux/ar71xx/base-files/lib/upgrade/merakinand.sh
@@
-1,6
+1,6
@@
#!/bin/sh
#
#!/bin/sh
#
-# Copyright (C) 2015 Chris Blake <chrisrblake93@gmail.com>
+# Copyright (C) 2015
-2016
Chris Blake <chrisrblake93@gmail.com>
#
# Custom upgrade script for Meraki NAND devices (ex. MR18)
# Based on dir825.sh and stock nand functions
#
# Custom upgrade script for Meraki NAND devices (ex. MR18)
# Based on dir825.sh and stock nand functions
@@
-14,34
+14,52
@@
get_magic_at() {
dd bs=1 count=2 skip=$pos if=$mtddev 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
}
dd bs=1 count=2 skip=$pos if=$mtddev 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
}
-mr18_is_caldata_valid() {
- local mtddev=$1
+meraki_is_caldata_valid() {
+ local board=$1
+ local mtddev=$2
local magic
local magic
- magic=$(get_magic_at $mtddev 4096)
- [ "$magic" != "0202" ] && return 0
+ case "$board" in
+ "mr18")
+ magic=$(get_magic_at $mtddev 4096)
+ [ "$magic" != "0202" ] && return 0
+
+ magic=$(get_magic_at $mtddev 20480)
+ [ "$magic" != "0202" ] && return 0
- magic=$(get_magic_at $mtddev 20480)
- [ "$magic" != "0202" ] && return 0
+ magic=$(get_magic_at $mtddev 36864)
+ [ "$magic" != "0202" ] && return 0
+
+ return 1
+ ;;
+ "z1")
+ magic=$(get_magic_at $mtddev 4096)
+ [ "$magic" != "0202" ] && return 0
-
magic=$(get_magic_at $mtddev 36864
)
-
[ "$magic" != "0202
" ] && return 0
+
magic=$(get_magic_at $mtddev 86016
)
+
[ "$magic" != "a55a
" ] && return 0
- return 1
+ return 1
+ ;;
+ *)
+ return 1
+ ;;
+ esac
}
merakinand_copy_caldata() {
local cal_src=$1
local cal_dst=$2
}
merakinand_copy_caldata() {
local cal_src=$1
local cal_dst=$2
- local ubidev=
$( nand_find_ubi $CI_UBIPART )
+ local ubidev=
"$(nand_find_ubi $CI_UBIPART)"
local board_name="$(cat /tmp/sysinfo/board_name)"
local rootfs_size="$(ubinfo /dev/ubi0 -N rootfs_data | grep "Size" | awk '{ print $6 }')"
# Setup partitions using board name, in case of future platforms
case "$board_name" in
local board_name="$(cat /tmp/sysinfo/board_name)"
local rootfs_size="$(ubinfo /dev/ubi0 -N rootfs_data | grep "Size" | awk '{ print $6 }')"
# Setup partitions using board name, in case of future platforms
case "$board_name" in
- "mr18")
+ "mr18"|\
+ "z1")
# Src is MTD
# Src is MTD
- mtd_src=
$(find_mtd_chardev $cal_src)
+ mtd_src=
"$(find_mtd_chardev $cal_src)"
[ -n "$mtd_src" ] || {
echo "no mtd device found for partition $cal_src"
exit 1
[ -n "$mtd_src" ] || {
echo "no mtd device found for partition $cal_src"
exit 1
@@
-56,12
+74,12
@@
merakinand_copy_caldata() {
exit 1
}
exit 1
}
- m
r18_is_caldata_valid
"$mtd_src" && {
+ m
eraki_is_caldata_valid "$board_name"
"$mtd_src" && {
echo "no valid calibration data found in $cal_src"
exit 1
}
echo "no valid calibration data found in $cal_src"
exit 1
}
- m
r18_is_caldata_valid
"/dev/$mtd_dst" && {
+ m
eraki_is_caldata_valid "$board_name"
"/dev/$mtd_dst" && {
echo "Copying calibration data from $cal_src to $cal_dst..."
dd if="$mtd_src" of=/tmp/caldata.tmp 2>/dev/null
ubiupdatevol "/dev/$mtd_dst" /tmp/caldata.tmp
echo "Copying calibration data from $cal_src to $cal_dst..."
dd if="$mtd_src" of=/tmp/caldata.tmp 2>/dev/null
ubiupdatevol "/dev/$mtd_dst" /tmp/caldata.tmp
@@
-89,6
+107,11
@@
merakinand_do_kernel_check() {
echo "pass" && return 0
}
;;
echo "pass" && return 0
}
;;
+ "z1")
+ [ "$image_magic_word" == "4d495053" ] && {
+ echo "pass" && return 0
+ }
+ ;;
esac
exit 1
esac
exit 1
@@
-102,7
+125,8
@@
merakinand_do_platform_check() {
local kernel_magic="$(merakinand_do_kernel_check $1 $2)"
case "$board_name" in
local kernel_magic="$(merakinand_do_kernel_check $1 $2)"
case "$board_name" in
- "mr18")
+ "mr18"|\
+ "z1")
[ "$control_length" = 0 -o "$file_type" != "squashfs" -o "$kernel_magic" != "pass" ] && {
echo "Invalid sysupgrade file for $board_name"
return 1
[ "$control_length" = 0 -o "$file_type" != "squashfs" -o "$kernel_magic" != "pass" ] && {
echo "Invalid sysupgrade file for $board_name"
return 1
@@
-128,6
+152,11
@@
merakinand_do_upgrade() {
merakinand_copy_caldata "odm-caldata" "caldata"
nand_do_upgrade $1
;;
merakinand_copy_caldata "odm-caldata" "caldata"
nand_do_upgrade $1
;;
+ "z1")
+ # Check and create UBI caldata if it's invalid
+ merakinand_copy_caldata "origcaldata" "caldata"
+ nand_do_upgrade $1
+ ;;
*)
echo "Unsupported device $board_name";
exit 1
*)
echo "Unsupported device $board_name";
exit 1