zaurus-updater: Try to unb0rk the flashing of Akita kernels. Still needs work
authorMatthias Hentges <oe@hentges.net>
Tue, 4 Dec 2007 23:48:04 +0000 (23:48 +0000)
committerMatthias Hentges <oe@hentges.net>
Tue, 4 Dec 2007 23:48:04 +0000 (23:48 +0000)
packages/zaurus-updater/zaurus-updater.bb
packages/zaurus-updater/zaurus-updater/updater.sh

index ee4c85e..cb52c55 100644 (file)
@@ -1,7 +1,7 @@
 DESCRIPTION = "Encrypted shellscript for the Zaurus ROM update"
 DEPENDS = "encdec-updater-native"
 LICENSE = "zaurus-updater"
-PR = "r13"
+PR = "r14"
 
 PACKAGES = ""
 PACKAGE_ARCH = "${MACHINE_ARCH}"
index 709cbbc..178fcee 100644 (file)
@@ -1,5 +1,4 @@
 #!/bin/sh
-
 #
 # One updater.sh to rule them all
 #
 #
 # 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
 
 DATAPATH=$1
 TMPPATH=/tmp/update
@@ -190,42 +193,53 @@ 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;
+       # Looks like Akita is quite unique when it comes to kernel flashing
+       
+       if [ "$ZAURUS" = "akita" ] && [ $FLASH_TYPE = kernel ]; then 
+               echo "Note: Flashing Akita kernel"
+               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     
+               echo "Kernel: Finished"
+       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
-                       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
+                       rm $TMPDATA > /dev/null 2>&1
 
-               #progress
-               SPNUM=0
-               while [ $SPNUM -lt $PROGSTEP ]
-               do
-                       echo -n '.'
-                       SPNUM=`expr $SPNUM + 1`
+                       #progress
+                       SPNUM=0
+                       while [ $SPNUM -lt $PROGSTEP ]
+                       do
+                               echo -n '.'
+                               SPNUM=`expr $SPNUM + 1`
+                       done
                done
-       done
-
+       fi
     echo ''
 
     #finish