[openfirmware] [commit] r2706 - in cpu: arm/olpc/1.75 x86/pc/olpc
repository service
svn at openfirmware.info
Mon Nov 28 06:37:17 CET 2011
Author: quozl
Date: Mon Nov 28 06:37:17 2011
New Revision: 2706
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2706
Log:
OLPC XO-1.75 - synchronise EC flags flash page when reprogramming manufacturing tags #11493 (thanks to Mitch for initial design on 22nd August), and fix flash-ec which was failing if any flags were set.
Modified:
cpu/arm/olpc/1.75/ecflash.fth
cpu/arm/olpc/1.75/edi.fth
cpu/x86/pc/olpc/setwp.fth
Modified: cpu/arm/olpc/1.75/ecflash.fth
==============================================================================
--- cpu/arm/olpc/1.75/ecflash.fth Mon Nov 28 01:05:38 2011 (r2705)
+++ cpu/arm/olpc/1.75/ecflash.fth Mon Nov 28 06:37:17 2011 (r2706)
@@ -36,6 +36,25 @@
;
\ Tells the EC to auto-restart after power cycling
: set-ec-reboot ( -- ) 1 h# f018 edi-b! ;
+: ?reflash-ec-flags ( adr -- )
+ use-edi-spi ( adr )
+ spi-start ( adr ) \ avoids holding EC in reset
+ load-base /flash-page ec-flags-offset edi-read-flash ( adr )
+ dup load-base /flash-page comp ( adr different? )
+ if
+ edi-open ( adr )
+ hdd-led-on ( adr )
+ ec-flags-offset erase-page ( adr )
+ ec-flags-offset edi-program-page ( )
+ hdd-led-off
+ set-ec-reboot
+ unreset-8051 \ should not return
+ ec-power-cycle
+ then
+ drop ( )
+ use-ssp-spi
+;
+: ignore-ec-flags ( adr -- ) ec-flags-offset + /flash-page erase ;
: reflash-ec
hdd-led-on
[ifdef] cl2-a1
@@ -50,13 +69,14 @@
." Verifying ..."
load-base /ec-flash + /ec-flash 0 edi-read-flash
[then]
+ load-base ignore-ec-flags
+ load-base /ec-flash + ignore-ec-flags
load-base load-base /ec-flash + /ec-flash comp
abort" Miscompare!"
cr
hdd-led-off
[ifndef] cl2-a1
." Restarting EC and rebooting" cr
- d# 2000 ms
set-ec-reboot
unreset-8051
[then]
Modified: cpu/arm/olpc/1.75/edi.fth
==============================================================================
--- cpu/arm/olpc/1.75/edi.fth Mon Nov 28 01:05:38 2011 (r2705)
+++ cpu/arm/olpc/1.75/edi.fth Mon Nov 28 06:37:17 2011 (r2706)
@@ -69,6 +69,7 @@
;
: unreset-8051 ( -- ) \ Reset 8-5
h# f010 edi-b@ 1 invert and h# f010 edi-b!
+ d# 2000 ms
;
\ 0 in bit 0 selects masked ROM as code source for 8051, 1 selects FLASH
Modified: cpu/x86/pc/olpc/setwp.fth
==============================================================================
--- cpu/x86/pc/olpc/setwp.fth Mon Nov 28 01:05:38 2011 (r2705)
+++ cpu/x86/pc/olpc/setwp.fth Mon Nov 28 06:37:17 2011 (r2706)
@@ -33,17 +33,48 @@
\ Set and clear the write-protect tag by copying, erasing, rewriting
: (put-mfg-data)
+ hdd-led-on
mfg-data-buf mfg-data-end-offset mfg-data-offset write-flash-range
+ hdd-led-off
;
: ram-find-tag ( name$ -- false | data$ true )
mfg-data-buf /flash-block + (find-tag)
;
+\ FIXME: ifdef XO-1.75
+
+: set-cp ( adr -- )
+ " CP" find-tag if ( adr len )
+ 2drop [char] C ( expected )
+ else ( )
+ 0 ( expected )
+ then ( expected )
+ swap c! ( )
+;
+
+: set-ap ( adr -- )
+ " AP" find-tag if ( adr len )
+ 2drop [char] A ( expected )
+ else ( )
+ 0 ( expected )
+ then ( expected )
+ swap 1+ c! ( )
+;
+
+/flash-page buffer: ec-flags-buf
+: ?sync-ec ( -- )
+ ec-flags-buf /flash-page erase
+ ec-flags-buf set-cp
+ ec-flags-buf set-ap
+ ec-flags-buf ?reflash-ec-flags
+;
+
\ Write mfg data from RAM to FLASH
: put-mfg-data ( -- )
spi-start spi-identify
(put-mfg-data)
+ ?sync-ec
spi-reprogrammed
;
More information about the openfirmware
mailing list