Author: wmb
Date: Fri Sep 14 08:19:54 2012
New Revision: 3304
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3304
Log:
OLPC XO-4 - better support for different SPI FLASH sizes.
Modified:
cpu/arm/olpc/cl4/config.fth
dev/olpc/spiflash/spiflash.fth
dev/olpc/spiflash/spiui.fth
Modified: cpu/arm/olpc/cl4/config.fth
==============================================================================
--- cpu/arm/olpc/cl4/config.fth Fri Sep 14 08:18:41 2012 (r3303)
+++ cpu/arm/olpc/cl4/config.fth Fri Sep 14 08:19:54 2012 (r3304)
@@ -13,10 +13,10 @@
h# 10.0000 constant /rom \ Total size of SPI FLASH
-/rom h# 1.0000 - constant mfg-data-offset \ Offset to manufacturing data area in SPI FLASH
-/rom constant mfg-data-end-offset \ Offset to end of manufacturing data area in SPI FLASH
-mfg-data-offset h# 30 - constant crc-offset \ e.g. 1e.ffd0
-crc-offset h# 10 - constant signature-offset \ e.g. 1e.ffc0
+: mfg-data-offset /rom h# 1.0000 - ; \ Offset to start of manufacturing data area in SPI FLASH
+: mfg-data-end-offset /rom ; \ Offset to end of manufacturing data area in SPI FLASH
+: crc-offset mfg-data-offset h# 30 - ; \ e.g. 1e.ffd0
+: signature-offset crc-offset h# 10 - ; \ e.g. 1e.ffc0
: signature$ " CL4" ;
: model$ " olpc,XO-CL4" ;
Modified: dev/olpc/spiflash/spiflash.fth
==============================================================================
--- dev/olpc/spiflash/spiflash.fth Fri Sep 14 08:18:41 2012 (r3303)
+++ dev/olpc/spiflash/spiflash.fth Fri Sep 14 08:19:54 2012 (r3304)
@@ -297,6 +297,9 @@
\ those commands. The AB command seems to be supported by all
\ of them, so it's a good starting point.
+: 2mb-flash ( -- ) h# 20.0000 to /flash ;
+: 1mb-flash ( -- ) h# 10.0000 to /flash ;
+
0 value spi-id#
: spi-identify ( -- )
ab-id to spi-id#
@@ -305,11 +308,11 @@
\ a common page-write part or the SST part with its
\ unique auto-increment address writing scheme.
spi-id# case
- h# 13 of ['] common-write endof
- h# 34 of ['] common-write endof
- h# bf of ['] sst-write endof
- h# 14 of ['] common-write endof
- h# 35 of ['] common-write endof
+ h# 13 of ['] common-write 1mb-flash endof
+ h# 34 of ['] common-write 1mb-flash endof
+ h# bf of ['] sst-write 1mb-flash endof
+ h# 14 of ['] common-write 1mb-flash endof
+ h# 35 of ['] common-write 2mb-flash endof
\ On some old board the ID would read as 14 when it should have been something else.
\ On CL4, 14 is the expected ID.
\ ." The SPI FLASH ID reads as 14. This is due to an infrequent hardware problem." cr
@@ -335,6 +338,7 @@
h# 13 of ." type 13 - Spansion, Winbond, or ST" endof
h# 14 of ." type 14 - 2 MB" endof
h# 34 of ." type 34 - Macronyx" endof
+ h# 35 of ." type 35 - 2 MB" endof
endcase
then
;
@@ -364,7 +368,7 @@
['] erase-spi-block to flash-erase-block
['] spi-protect to flash-protect
use-spi-flash-read \ Might be overridden
- h# 10.0000 to /flash
+ [ifdef] /rom /rom [else] h# 10.0000 [then] to /flash
/spi-eblock to /flash-block
;
use-spi-flash
Modified: dev/olpc/spiflash/spiui.fth
==============================================================================
--- dev/olpc/spiflash/spiui.fth Fri Sep 14 08:18:41 2012 (r3303)
+++ dev/olpc/spiflash/spiui.fth Fri Sep 14 08:19:54 2012 (r3304)
@@ -69,7 +69,25 @@
r> <> abort" Firmware image has bad internal CRC"
;
+[ifndef] 2meg h# 20.0000 constant 2meg [then]
+: +1m ( offset -- offset' ) 1meg + ;
+
+\ This is for upgrading an XO-4 with a 2 MiB FLASH part from
+\ a 1 MiB installed OFW image to a 2 MiB OFW image.
+\ After flash-open, /flash is the size of the physical SPI FLASH device.
+\ On exit, /flash is the size of the image, i.e. the amount to program.
+\ /rom is the size of the image that is currently running.
+: ?upgrade-to-2mb ( len -- len )
+ flash-open \ Sets /flash according to the device installed
+ dup 2meg = /rom 1meg = and /flash 2meg = and if
+ signature-offset +1m to signature-offset
+ mfg-data-offset +1m to mfg-data-offset
+ crc-offset +1m to crc-offset
+ then
+;
+
: ?image-valid ( len -- )
+ flash-open \ Sets /flash according to the device installed
/flash <> abort" Image file is the wrong length"
." Got firmware version: "
@@ -88,7 +106,7 @@
: $get-file ( "filename" -- )
$read-open
- flash-buf /flash ifd @ fgets ( len )
+ flash-buf 2meg ifd @ fgets ( len )
ifd @ fclose
?image-valid
Author: quozl
Date: Mon Sep 10 10:39:51 2012
New Revision: 3300
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3300
Log:
OLPC XO-4 B1 - add new SPI FLASH ID 35 for MXIC 25U1635E
Modified:
dev/olpc/spiflash/spiflash.fth
Modified: dev/olpc/spiflash/spiflash.fth
==============================================================================
--- dev/olpc/spiflash/spiflash.fth Fri Sep 7 10:39:55 2012 (r3299)
+++ dev/olpc/spiflash/spiflash.fth Mon Sep 10 10:39:51 2012 (r3300)
@@ -308,7 +308,8 @@
h# 13 of ['] common-write endof
h# 34 of ['] common-write endof
h# bf of ['] sst-write endof
- h# 14 of ['] common-write endof
+ h# 14 of ['] common-write endof
+ h# 35 of ['] common-write endof
\ On some old board the ID would read as 14 when it should have been something else.
\ On CL4, 14 is the expected ID.
\ ." The SPI FLASH ID reads as 14. This is due to an infrequent hardware problem." cr