summaryrefslogtreecommitdiff
path: root/packages/zaurus-updater
diff options
context:
space:
mode:
Diffstat (limited to 'packages/zaurus-updater')
-rw-r--r--packages/zaurus-updater/zaurus-updater.bb2
-rw-r--r--packages/zaurus-updater/zaurus-updater/updater.sh125
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