[openfirmware] [commit] r3404 - cpu/arm/olpc
repository service
svn at openfirmware.info
Thu Nov 1 00:32:08 CET 2012
Author: quozl
Date: Thu Nov 1 00:32:08 2012
New Revision: 3404
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3404
Log:
OLPC XO-4 - touchscreen rework for firmware 0.0.0.6, which contained new behaviours not previously advised by Neonode
Modified:
cpu/arm/olpc/nn-touchscreen.fth
cpu/arm/olpc/nnflash.fth
Modified: cpu/arm/olpc/nn-touchscreen.fth
==============================================================================
--- cpu/arm/olpc/nn-touchscreen.fth Wed Oct 31 23:38:29 2012 (r3403)
+++ cpu/arm/olpc/nn-touchscreen.fth Thu Nov 1 00:32:08 2012 (r3404)
@@ -17,7 +17,6 @@
create nn-os \ open short test
create nn-fll \ forced LED levels test
-create nn-version \ version display
create nn-watch \ graphical signal tests
create nn-fss \ optional fixed signal strength test
@@ -29,6 +28,17 @@
d# 15 value xleds
d# 11 value yleds
+0. 2value version#
+: get-version ( -- version.d ) version# ;
+
+: (.)' ( version-segment.w -- ) (.) type [char] . emit ;
+
+: .version ( version.d -- ) lwsplit (.)' (.)' lwsplit (.)' (.)' ;
+
+: show-version ( -- )
+ ." Neonode zForce Touch Driver firmware version " version# .version cr
+;
+
\ XXX these are really platform-related, not touchscreen-related
: targets? ( -- flag ) final-test? ;
: (.tsmsg) ( -- ) 0 d# 27 at-xy ." Touchscreen test. Type a key to exit" cr ;
@@ -43,7 +53,9 @@
: 2u.x base @ >r hex 0 <# # # #> type r> base ! ;
[then]
-: x>x' ( x -- x' ) screen-w swap - ; \ reverse x coordinate
+defer x>x' ' noop to x>x'
+: (x>x') ( x -- x' ) screen-w swap - ; \ reverse x coordinate
+: set-reverse-x ['] (x>x') to x>x' ;
: set-gpios
[ifdef] olpc-cl2
@@ -55,11 +67,7 @@
;
\ Neonode requested 250 ms
-\ we observe for 0.0.0.5
-\ less than 38 ms yields no response to reset,
-\ 40 ms yields 100 ms overall version check, and
-\ 45 ms yields 84 ms overall version check.
-: reset ( -- ) touch-rst-gpio# dup gpio-clr gpio-set d# 50 ms ;
+: reset ( -- ) touch-rst-gpio# dup gpio-clr gpio-set d# 250 ms ;
: hold-reset ( -- ) touch-rst-gpio# gpio-clr ;
: no-data? ( -- no-data? ) touch-int-gpio# gpio-pin@ ;
@@ -104,6 +112,13 @@
: read-boot-complete ( -- ) h# 07 d# 0 anticipate ;
+: read-version
+ h# 1e h# 01 h# ee 3 bytes-out h# 1e d# 100 anticipate
+ pbuf 2+ c@ h# 1e <> abort" bad response"
+ pbuf 9 + le-w@ pbuf 7 + le-w@ wljoin pbuf 5 + le-w@ pbuf 3 + le-w@ wljoin
+ to version#
+;
+
: initialise ( -- ) h# 01 h# 01 h# ee 3 bytes-out h# 01 d# 20 anticipate ;
: set-resolution ( -- )
@@ -125,6 +140,8 @@
: configure ( -- )
configure? if
+ read-version
+ version# h# 6. d< if set-reverse-x then
initialise
set-resolution
start
@@ -202,42 +219,6 @@
-[ifdef] nn-version \ version display
-: (.version) ( addr -- )
- dup c@ over 1+ c@ bwjoin ( addr version )
- (.) type
-;
-
-: .version ( -- )
- pbuf 3 + 3 0 do ( addr )
- (.version) 2+
- [char] . emit
- loop ( addr )
- (.version) drop ( )
-;
-
-: (version) ( -- )
- h# 1e h# 01 h# ee 3 bytes-out
- h# 1e d# 30 anticipate
- pbuf 2+ c@ h# 1e <> abort" bad response"
-;
-
-: test-version ( -- )
- (version)
- ." Neonode zForce Touch Driver firmware version "
- .version
- cr
-;
-
-: get-version ( -- version.d )
- (version)
- pbuf 9 + le-w@ pbuf 7 + le-w@ wljoin pbuf 5 + le-w@ pbuf 3 + le-w@ wljoin
-;
-
-[then]
-
-
-
[ifdef] nn-os \ open short test
[ifdef] nn-components
@@ -1003,7 +984,7 @@
: mb-smt ( -- error? )
open 0= if true exit then
- test-version
+ show-version
close
false
;
@@ -1034,7 +1015,7 @@
diagnostic-mode? if
0 to faults
- [ifdef] nn-version test-version [then]
+ show-version
[ifdef] nn-os test-os [then]
[ifdef] nn-fss test-fss [then]
[ifdef] nn-fll test-fll [then]
Modified: cpu/arm/olpc/nnflash.fth
==============================================================================
--- cpu/arm/olpc/nnflash.fth Wed Oct 31 23:38:29 2012 (r3403)
+++ cpu/arm/olpc/nnflash.fth Thu Nov 1 00:32:08 2012 (r3404)
@@ -17,7 +17,7 @@
: 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
+ get-touchscreen-version \ 20ms first time, 270ms subsequent
d<=
;
More information about the openfirmware
mailing list