Author: quozl Date: Sat Nov 3 03:34:49 2012 New Revision: 3414 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3414
Log: OLPC XO-4 - touchscreen, switch to latest firmware 0.0.0.7 with missing IR PCB support, determine available version number from file, enable automatic reflash for wider testing (breaks manufacturing tests on B1).
Modified: cpu/arm/olpc/4.0/nn-version.fth cpu/arm/olpc/nnflash.fth
Modified: cpu/arm/olpc/4.0/nn-version.fth ============================================================================== --- cpu/arm/olpc/4.0/nn-version.fth Sat Nov 3 00:17:39 2012 (r3413) +++ cpu/arm/olpc/4.0/nn-version.fth Sat Nov 3 03:34:49 2012 (r3414) @@ -1,5 +1,2 @@ \ The Neonode touchscreen firmware -macro: NN_VERSION 0_0_0_6 - -\ FIXME: change in nnflash.fth too, until it knows how to read it -\ using Neonode's instructions. +macro: NN_VERSION 0_0_0_7
Modified: cpu/arm/olpc/nnflash.fth ============================================================================== --- cpu/arm/olpc/nnflash.fth Sat Nov 3 00:17:39 2012 (r3413) +++ cpu/arm/olpc/nnflash.fth Sat Nov 3 03:34:49 2012 (r3414) @@ -1,11 +1,38 @@ \ See license at end of file purpose: Reflash a Neonode touchscreen controller
+: (nnv) ( version.d adr -- version.d ) + 2 $number abort" nn.hex, not a number" + >r 8 dlshift swap r> or swap +; + +: $nn-version ( file$ -- version.d ) + $read-open ( ) + 3 0 do + load-base d# 100 ifd @ read-line abort" nn.hex, read-line failed" 2drop + loop + load-base d# 25 + ( adr ) + >r 0. ( version.d r: adr ) + r@ d# 2 + (nnv) r@ (nnv) r@ d# 6 + (nnv) r@ d# 4 + (nnv) + r@ d# 10 + (nnv) r@ d# 8 + (nnv) r@ d# 14 + (nnv) r@ d# 12 + (nnv) + r> drop ( version.d ) + ifd @ fclose + \ 59ms +; + : get-touchscreen-version ( -- version.d ) " /touchscreen" open-dev ( handle ) dup 0= abort" could not open touchscreen" " get-version" 2 pick $call-method ( handle version.d ) >r >r close-dev r> r> ( version.d ) + \ 20ms first time, 270ms subsequent +; + +: nn-up-to-date? ( file$ -- flag ) + $nn-version ( version-in-file.d ) + 2dup h# 0001.0000.0000.0000. d>= abort" nn.hex, major version conflict" + get-touchscreen-version ( version-in-file.d version-in-controller.d ) + d<= ;
: nn-image$ " rom:\nn.hex" ; @@ -15,11 +42,6 @@ ; : flash-nn ( "filename" -- ) safe-parse-word ?enough-power reflash-nn ; : flash-nn! ( "filename" -- ) safe-parse-word reflash-nn ; -: nn-up-to-date? ( file$ -- flag ) - 2drop h# 0000.0000.0000.0006. \ FIXME: get version from file - get-touchscreen-version \ 20ms first time, 270ms subsequent - d<= -;
: update-nn-flash ( -- ) nn-image$ 2dup nn-up-to-date? if @@ -32,7 +54,8 @@ : update-nn-flash? ( -- flag ) \ XO-4 B1 have clear lightguides incompatible with later versions \ of touchscreen firmware. - board-revision h# 4b20 < if false exit then + \ (disabled temporarily so that automatic update can be tested) + \ board-revision h# 4b20 < if false exit then nn-image$ nn-up-to-date? 0= ;