diff options
Diffstat (limited to 'packages/zaurus-updater')
-rw-r--r-- | packages/zaurus-updater/zaurus-updater.bb | 2 | ||||
-rw-r--r-- | packages/zaurus-updater/zaurus-updater/updater.sh | 125 |
2 files changed, 72 insertions, 55 deletions
diff --git a/packages/zaurus-updater/zaurus-updater.bb b/packages/zaurus-updater/zaurus-updater.bb index ee4c85e646..f98ece35d7 100644 --- a/packages/zaurus-updater/zaurus-updater.bb +++ b/packages/zaurus-updater/zaurus-updater.bb @@ -1,7 +1,7 @@ DESCRIPTION = "Encrypted shellscript for the Zaurus ROM update" DEPENDS = "encdec-updater-native" LICENSE = "zaurus-updater" -PR = "r13" +PR = "r18" PACKAGES = "" PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/packages/zaurus-updater/zaurus-updater/updater.sh b/packages/zaurus-updater/zaurus-updater/updater.sh index 709cbbc9a9..2efa946f6c 100644 --- a/packages/zaurus-updater/zaurus-updater/updater.sh +++ b/packages/zaurus-updater/zaurus-updater/updater.sh @@ -1,5 +1,4 @@ #!/bin/sh - # # One updater.sh to rule them all # @@ -22,10 +21,19 @@ # # 2007.11.23 Koen Kooi # - consistent error messages -## - fix flashing from case sensitive filesystem (e.g. ext2) +# - fix flashing from case sensitive filesystem (e.g. ext2) +# # 2007.11.23 Matthias 'CoreDump' Hentges # - Always treat MTD_PART_SIZE as HEX when comparing sizes # - Thanks to ZeroChaos for debugging +# +# 2007.12.04 Matthias 'CoreDump' Hentges +# - Unb0rk flashing of Akita kernels +# +# 2007.12.10 Marcin 'Hrw' Juszkiewicz +# - Reformatted file - please use spaces not tabs +# - "version check" is only on Tosa and Poodle - breaks other machines +# DATAPATH=$1 TMPPATH=/tmp/update @@ -151,17 +159,20 @@ do_flashing() if [ $DATASIZE -gt `printf "%d" $MTD_PART_SIZE` ] then echo "Error: File is too big to flash!" - echo "$FLASH_TYPE: [$DATASIZE] > [`printf "%d" ${MTD_PART_SIZE}`]" + echo "$FLASH_TYPE: [$DATASIZE] > [`printf "%d" ${MTD_PART_SIZE}`]" return fi - #check version - /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD - if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1 + if [ "$ZAURUS" = "tosa" ] || [ "$ZAURUS" = "poodle" ] then - #no version info... - rm -f $TMPHEAD > /dev/null 2>&1 - DATAPOS=0 + #check version + /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD + if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1 + then + #no version info... + rm -f $TMPHEAD > /dev/null 2>&1 + DATAPOS=0 + fi fi if [ $ISFORMATTED = 0 ] @@ -190,42 +201,51 @@ do_flashing() /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1 fi - #loop - while [ $DATAPOS -lt $DATASIZE ] - do - #data create - bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE - TMPSIZE=`wc -c $TMPDATA` - TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` - DATAPOS=`expr $DATAPOS + $TMPSIZE` - - #handle data file - if [ $ISLOGICAL = 0 ] - then - next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` - if [ "$next_addr" = "" ]; then - echo "Error: flash write" - rm $TMPDATA > /dev/null 2>&1 - RESULT=3 - break; - fi - ADDR=$next_addr - else - /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1 - ADDR=`expr $ADDR + $TMPSIZE` - fi - - rm $TMPDATA > /dev/null 2>&1 - - #progress - SPNUM=0 - while [ $SPNUM -lt $PROGSTEP ] - do - echo -n '.' - SPNUM=`expr $SPNUM + 1` - done - done - + # Looks like Akita is quite unique when it comes to kernel flashing + + if [ "$ZAURUS" = "akita" ] && [ $FLASH_TYPE = kernel ]; then + echo $TARGETFILE':'$DATASIZE'bytes' + echo ' ' > /tmp/data + /sbin/nandlogical $LOGOCAL_MTD WRITE 0x60100 16 /tmp/data > /dev/null 2>&1 + /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE $TARGETFILE > /dev/null 2>&1 + /sbin/nandlogical $LOGOCAL_MTD WRITE 0x21bff0 16 /tmp/data > /dev/null 2>&1 + else + #loop + while [ $DATAPOS -lt $DATASIZE ] + do + #data create + bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE + TMPSIZE=`wc -c $TMPDATA` + TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` + DATAPOS=`expr $DATAPOS + $TMPSIZE` + + #handle data file + if [ $ISLOGICAL = 0 ] + then + next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` + if [ "$next_addr" = "" ]; then + echo "Error: flash write" + rm $TMPDATA > /dev/null 2>&1 + RESULT=3 + break; + fi + ADDR=$next_addr + else + /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1 + ADDR=`expr $ADDR + $TMPSIZE` + fi + + rm $TMPDATA > /dev/null 2>&1 + + #progress + SPNUM=0 + while [ $SPNUM -lt $PROGSTEP ] + do + echo -n '.' + SPNUM=`expr $SPNUM + 1` + done + done + fi echo '' #finish @@ -298,9 +318,9 @@ do DATASIZE=`echo $DATASIZE | cut -d' ' -f1` # make TARGETFILE lowercase - TARGETFILE=`echo $TARGETFILE|tr A-Z a-z` + TARGETFILE_LC=`echo $TARGETFILE|tr A-Z a-z` - case "$TARGETFILE" in + case "$TARGETFILE_LC" in zimage|zimage.bin) if [ $FLASHED_KERNEL != 0 ] @@ -317,10 +337,9 @@ do ONESIZE=524288 HDTOP=`expr $DATASIZE - 16` /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE - echo "HDTOP=$HDTOP" - FLASH_TYPE="kernel" + FLASH_TYPE="kernel" do_flashing - FLASH_TYPE="" + FLASH_TYPE="" ;; initrd.bin) @@ -339,9 +358,9 @@ do DATAPOS=16 ONESIZE=1048576 /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE - FLASH_TYPE="rootfs" + FLASH_TYPE="rootfs" do_flashing - FLASH_TYPE="" + FLASH_TYPE="" ;; hdimage1.tgz) @@ -356,8 +375,6 @@ do esac done -/bin/sh - # reboot exit 0 |