[OpenBIOS] r817 - cpu/x86/pc/olpc dev/olpc/kb3700

svn at openbios.org svn at openbios.org
Wed Mar 5 21:50:36 CET 2008


Author: wmb
Date: 2008-03-05 21:50:35 +0100 (Wed, 05 Mar 2008)
New Revision: 817

Modified:
   cpu/x86/pc/olpc/security.fth
   dev/olpc/kb3700/battery.fth
Log:
OLPC Trac #5422 - continue booting if the firmware update is deferred
due to insufficient power.


Modified: cpu/x86/pc/olpc/security.fth
===================================================================
--- cpu/x86/pc/olpc/security.fth	2008-02-27 04:40:24 UTC (rev 816)
+++ cpu/x86/pc/olpc/security.fth	2008-03-05 20:50:35 UTC (rev 817)
@@ -652,6 +652,51 @@
    drop
 ;
 
+: do-firmware-update  ( img$ -- )
+   visible
+
+   tuck flash-buf  swap move   ( len )
+
+   ['] ?image-valid  catch  ?dup  if    ( )
+      visible
+      red-letters
+      ." Bad firmware image file - "  .error
+      ." Continuing with old firmware" cr
+      black-letters
+      exit
+   then
+
+   true to file-loaded?
+
+   d# 12,000 wait-until   \ Wait for EC to notice the battery
+
+   ['] ?enough-power  catch  ?dup  if
+      visible
+      red-letters
+      ." Unsafe to update firmware now - " .error
+      ."  Continuing with old firmware" cr
+      black-letters
+      exit
+   then
+
+   " Updating firmware" ?lease-debug-cr
+
+   ec-indexed-io-off?  if
+      visible
+      ." Restarting to enable SPI FLASH writing."  cr
+      d# 3000 ms
+      ec-ixio-reboot
+      security-failure
+   then
+
+   \ Latch alternate? flag for next startup
+   alternate?  if  [char] A h# 82 cmos!  then
+
+   reflash      \ Should power-off and reboot
+   show-x
+   " Reflash returned, unexpectedly" .security-failure
+;
+
 : load-from-device  ( devname$ -- done? )
 
    d# 16 0  +icon-xy  show-dot
@@ -667,36 +712,7 @@
          " new - " ?lease-debug
          fwkey$ to pubkey$
          img$  sig$  fw-valid?  if
-            visible
-
-            img$ tuck flash-buf  swap move   ( len )
-
-            ?image-valid                     ( )
-            true to file-loaded?
-            " Updating firmware" ?lease-debug-cr
-
-            ec-indexed-io-off?  if
-               visible
-               ." Restarting to enable SPI FLASH writing."  cr
-               d# 3000 ms
-               ec-ixio-reboot
-               security-failure
-            then
-
-            d# 12,000 wait-until   \ Wait for EC to notice the battery
-
-            ['] ?enough-power  catch  ?dup  if
-               visible
-               red-letters .error black-letters
-               security-failure
-            then
-
-            \ Latch alternate? flag for next startup
-            alternate?  if  [char] A h# 82 cmos!  then
-
-            reflash      \ Should power-off and reboot
-            show-x
-            " Reflash returned, unexpectedly" .security-failure
+            img$  do-firmware-update
          then
          show-lock
       then

Modified: dev/olpc/kb3700/battery.fth
===================================================================
--- dev/olpc/kb3700/battery.fth	2008-02-27 04:40:24 UTC (rev 816)
+++ dev/olpc/kb3700/battery.fth	2008-03-05 20:50:35 UTC (rev 817)
@@ -105,9 +105,9 @@
 ;
 
 : ?enough-power  ( )
-   bat-status@                                 ( stat )
-   dup  h# 10 and  0=  abort" AC not present"  ( stat )
-   dup  1 and  0=  abort" Battery not present" ( stat )
+   bat-status@                                    ( stat )
+   dup  h# 10 and  0=  abort" No external power"  ( stat )
+   dup  1 and  0=  abort" No battery"             ( stat )
    4 and  abort" Battery low"  
 ;
 




More information about the OpenBIOS mailing list