@ -1,112 +1,21 @@
. /lib/cns3xxx.sh
RAMFS_COPY_DATA = "/lib/cns3xxx.sh"
PART_NAME = firmware
CI_BLKSZ = 65536
platform_find_partitions( ) {
local first dev size erasesize name
while read dev size erasesize name; do
name = ${ name # '"' } ; name = ${ name % '"' }
case " $name " in
vmlinux.bin.l7| kernel| linux| rootfs)
if [ -z " $first " ] ; then
first = " $name "
else
echo " $erasesize : $first : $name "
break
fi
; ;
esac
done < /proc/mtd
}
platform_find_kernelpart( ) {
local part
for part in " ${ 1 % : * } " " ${ 1 #* : } " ; do
case " $part " in
vmlinux.bin.l7| kernel| linux)
echo " $part "
break
; ;
esac
done
}
platform_do_upgrade_combined( ) {
local partitions = $( platform_find_partitions)
local kernelpart = $( platform_find_kernelpart " ${ partitions #* : } " )
local erase_size = $(( 0 x${ partitions %% : * } )) ; partitions = " ${ partitions #* : } "
local kern_length = 0x$( dd if = " $1 " bs = 2 skip = 1 count = 4 2>/dev/null)
local kern_blocks = $(( $kern_length / $CI_BLKSZ ))
local root_blocks = $(( 0 x$( dd if = " $1 " bs = 2 skip = 5 count = 4 2>/dev/null) / $CI_BLKSZ ))
v "platform_do_upgrade_combined"
v " partitions= $partitions "
v " kernelpart= $kernelpart "
v " erase_size= $erase_size "
v " kern_blocks= $kern_blocks "
v " root_blocks= $root_blocks "
if [ -n " $partitions " ] && [ -n " $kernelpart " ] && \
[ ${ kern_blocks :- 0 } -gt 0 ] && \
[ ${ root_blocks :- 0 } -gt 0 ] && \
[ ${ erase_size :- 0 } -gt 0 ] ;
then
local append = ""
[ -f " $CONF_TAR " -a " $SAVE_CONFIG " -eq 1 ] && append = " -j $CONF_TAR "
dd if = " $1 " bs = $CI_BLKSZ skip = 1 count = $kern_blocks 2>/dev/null | mtd write - kernel
dd if = " $1 " bs = $CI_BLKSZ skip = $(( 1 + $kern_blocks )) count = $root_blocks 2>/dev/null | \
mtd -r $append write - rootfs
else
echo "invalid image"
fi
}
platform_check_image( ) {
local board = $( cns3xxx_board_name)
local magic = " $( get_magic_word " $1 " ) "
local magic_long = " $( get_magic_long " $1 " ) "
local magic = " $( get_magic_long " $1 " ) "
[ " $# " -gt 1 ] && return 1
case " $board " in
laguna)
[ " $magic " != "4349" ] && {
echo "Invalid image. Use *-sysupgrade.bin files on this board"
return 1
}
local md5_img = $( dd if = " $1 " bs = 2 skip = 9 count = 16 2>/dev/null)
local md5_chk = $( dd if = " $1 " bs = $CI_BLKSZ skip = 1 2>/dev/null | md5sum -) ; md5_chk = " ${ md5_chk %% * } "
if [ -n " $md5_img " -a -n " $md5_chk " ] && [ " $md5_img " = " $md5_chk " ] ; then
return 0
else
echo " Invalid image. Contents do not match checksum (image: $md5_img calculated: $md5_chk ) "
return 1
fi
return 0
; ;
esac
echo " Sysupgrade is not yet supported on $board . "
return 1
[ " $magic " != "27051956" ] && {
echo "Invalid image type."
return 1
}
return 0
}
platform_do_upgrade( ) {
local board = $( cns3xxx_board_name)
v " board= $board "
case " $board " in
laguna)
platform_do_upgrade_combined " $ARGV "
; ;
*)
default_do_upgrade " $ARGV "
; ;
esac
default_do_upgrade " $ARGV "
}
disable_watchdog( ) {