[openfirmware] [commit] r3196 - cpu/arm/olpc
repository service
svn at openfirmware.info
Sat Aug 18 07:25:14 CEST 2012
Author: quozl
Date: Sat Aug 18 07:25:14 2012
New Revision: 3196
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3196
Log:
OLPC CL4 - Neonode, add display of MSP430 firmware version, fix display of low signal test results, add a minimum field strength value for customisation, read boot complete message before already-ready open, identify short or open components by silkscreen layer identifier.
Modified:
cpu/arm/olpc/nn-touchscreen.fth
Modified: cpu/arm/olpc/nn-touchscreen.fth
==============================================================================
--- cpu/arm/olpc/nn-touchscreen.fth Fri Aug 17 19:29:15 2012 (r3195)
+++ cpu/arm/olpc/nn-touchscreen.fth Sat Aug 18 07:25:14 2012 (r3196)
@@ -53,7 +53,7 @@
2drop ( )
;
-: read-boot-complete ( -- ) h# 07 d# 20 anticipate ;
+: read-boot-complete ( -- ) h# 07 d# 0 anticipate ;
: initialise ( -- ) h# 01 h# 01 h# ee 3 twsi-out h# 01 d# 20 anticipate ;
@@ -86,8 +86,8 @@
no-data? if
reset
no-data? if pbuf /pbuf free-mem false exit then
- read-boot-complete
then
+ read-boot-complete
['] configure catch if pbuf /pbuf free-mem false exit then
true
;
@@ -111,43 +111,218 @@
;
-0 value faults
-: fault faults 1+ to faults ;
+: (.version) ( addr -- )
+ dup c@ over 1+ c@ bwjoin ( addr version )
+ (.) type
+;
+
+: .version ( addr -- )
+ pbuf 2+ c@ h# 1e <> abort" bad response"
+ ." Neonode zForce Touch Driver firmware version "
+ pbuf 3 + 3 0 do ( addr )
+ (.version) 2+
+ [char] . emit
+ loop ( addr )
+ (.version) ( )
+;
+
+: test-version ( -- )
+ h# 1e h# 01 h# ee 3 twsi-out
+ h# 1e d# 30 anticipate
-: .bits ( addr low high -- addr )
- ." ( " swap do ( addr )
- i over bittest if
- i .d fault
- then
- loop ." )" cr ( addr )
+ .version
+ cr
;
+
+0 value faults
+: fault faults 1+ to faults ;
+
: 4sp ." " ;
: 8sp ." " ;
+[ifdef] nn-components
+\ optional decoding of component identifiers
+
+\ bit descriptions
+\ shorts have been verified
+\ a trailing ? means this combination is untested
+string-array x-os
+
+ ," PD13 open?" \ 01 00 00 00 00 00 00 00
+ ," PD14 open?" \ 02 00 00 00 00 00 00 00
+ ," PD15 open?" \ 04 00 00 00 00 00 00 00
+ ," PD16 open?" \ 08 00 00 00 00 00 00 00
+ ," PD17 open?" \ 10 00 00 00 00 00 00 00
+ ," PD18 open?" \ 20 00 00 00 00 00 00 00
+ ," PD19 open?" \ 40 00 00 00 00 00 00 00
+ ," PD20 open?" \ 80 00 00 00 00 00 00 00
+
+ ," PD21 open?" \ 00 01 00 00 00 00 00 00
+ ," PD22 open?" \ 00 02 00 00 00 00 00 00
+ ," PD23 open?" \ 00 04 00 00 00 00 00 00
+ ," PD24 open?" \ 00 08 00 00 00 00 00 00
+ ," PD25 open?" \ 00 10 00 00 00 00 00 00
+ ," PD26 open?" \ 00 20 00 00 00 00 00 00
+ ," PD27 open?" \ 00 40 00 00 00 00 00 00
+ ," PD28 open?" \ 00 80 00 00 00 00 00 00
+
+ ," PD13 short" \ 00 00 01 00 00 00 00 00
+ ," PD14 short" \ 00 00 02 00 00 00 00 00
+ ," PD15 short" \ 00 00 04 00 00 00 00 00
+ ," PD16 short" \ 00 00 08 00 00 00 00 00
+ ," PD17 short" \ 00 00 10 00 00 00 00 00
+ ," PD18 short" \ 00 00 20 00 00 00 00 00
+ ," PD19 short" \ 00 00 40 00 00 00 00 00
+ ," PD20 short" \ 00 00 80 00 00 00 00 00
+
+ ," PD21 short" \ 00 00 00 01 00 00 00 00
+ ," PD22 short" \ 00 00 00 02 00 00 00 00
+ ," PD23 short" \ 00 00 00 04 00 00 00 00
+ ," PD24 short" \ 00 00 00 08 00 00 00 00
+ ," PD25 short" \ 00 00 00 10 00 00 00 00
+ ," PD26 short" \ 00 00 00 20 00 00 00 00
+ ," PD27 short" \ 00 00 00 40 00 00 00 00
+ ," PD28 short" \ 00 00 00 80 00 00 00 00
+
+ ," IR12 short" \ 00 00 00 00 01 00 00 00
+ ," IR13 short" \ 00 00 00 00 02 00 00 00
+ ," IR14 short" \ 00 00 00 00 04 00 00 00
+ ," IR15 short" \ 00 00 00 00 08 00 00 00
+ ," IR16 short" \ 00 00 00 00 10 00 00 00
+ ," IR17 short" \ 00 00 00 00 20 00 00 00
+ ," IR18 short" \ 00 00 00 00 40 00 00 00
+ ," IR19 short" \ 00 00 00 00 80 00 00 00
+
+ ," IR20 short" \ 00 00 00 00 00 01 00 00
+ ," IR21 short" \ 00 00 00 00 00 02 00 00
+ ," IR22 short" \ 00 00 00 00 00 04 00 00
+ ," IR23 short" \ 00 00 00 00 00 08 00 00
+ ," IR24 short" \ 00 00 00 00 00 10 00 00
+ ," IR25 short" \ 00 00 00 00 00 20 00 00
+ ," IR26 short" \ 00 00 00 00 00 40 00 00
+ ," reserved?" \ 00 00 00 00 00 80 00 00
+
+ ," IR12 open?" \ 00 00 00 00 00 00 01 00
+ ," IR13 open?" \ 00 00 00 00 00 00 02 00
+ ," IR14 open?" \ 00 00 00 00 00 00 04 00
+ ," IR15 open?" \ 00 00 00 00 00 00 08 00
+ ," IR16 open?" \ 00 00 00 00 00 00 10 00
+ ," IR17 open?" \ 00 00 00 00 00 00 20 00
+ ," IR18 open?" \ 00 00 00 00 00 00 40 00
+ ," IR19 open?" \ 00 00 00 00 00 00 80 00
+
+ ," IR20 open?" \ 00 00 00 00 00 00 00 01
+ ," IR21 open?" \ 00 00 00 00 00 00 00 02
+ ," IR22 open?" \ 00 00 00 00 00 00 00 04
+ ," IR23 open?" \ 00 00 00 00 00 00 00 08
+ ," IR24 open?" \ 00 00 00 00 00 00 00 10
+ ," IR25 open?" \ 00 00 00 00 00 00 00 20
+ ," IR26 open?" \ 00 00 00 00 00 00 00 40
+ ," reserved?" \ 00 00 00 00 00 00 00 80
+
+end-string-array
+
+string-array y-os
+
+ ," PD4 open?" \ 01 00 00 00 00 00
+ ," PD3 open?" \ 02 00 00 00 00 00
+ ," PD2 open?" \ 04 00 00 00 00 00
+ ," PD1 open?" \ 08 00 00 00 00 00
+ ," PD12 open?" \ 10 00 00 00 00 00
+ ," PD11 open?" \ 20 00 00 00 00 00
+ ," PD10 open?" \ 40 00 00 00 00 00
+ ," PD9 open?" \ 80 00 00 00 00 00
+
+ ," PD8 open?" \ 00 01 00 00 00 00
+ ," PD7 open?" \ 00 02 00 00 00 00
+ ," PD6 open?" \ 00 04 00 00 00 00
+ ," PD5 open?" \ 00 08 00 00 00 00
+ ," PD12 short" \ 00 10 00 00 00 00
+ ," PD11 short" \ 00 20 00 00 00 00
+ ," PD10 short" \ 00 40 00 00 00 00
+ ," PD9 short" \ 00 80 00 00 00 00
+
+ ," PD8 short" \ 00 00 01 00 00 00
+ ," PD7 short" \ 00 00 02 00 00 00
+ ," PD6 short" \ 00 00 04 00 00 00
+ ," PD5 short" \ 00 00 08 00 00 00
+ ," PD4 short" \ 00 00 10 00 00 00
+ ," PD3 short" \ 00 00 20 00 00 00
+ ," PD2 short" \ 00 00 40 00 00 00
+ ," PD1 short" \ 00 00 80 00 00 00
+
+ ," IR11 short" \ 00 00 00 01 00 00
+ ," IR10 short" \ 00 00 00 02 00 00
+ ," IR9 short" \ 00 00 00 04 00 00
+ ," IR8 short" \ 00 00 00 08 00 00
+ ," IR7 short" \ 00 00 00 10 00 00
+ ," IR6 short" \ 00 00 00 20 00 00
+ ," IR5 short" \ 00 00 00 40 00 00
+ ," IR4 short" \ 00 00 00 80 00 00
+
+ ," IR3 short" \ 00 00 00 00 01 00
+ ," IR2 short" \ 00 00 00 00 02 00
+ ," IR1 short" \ 00 00 00 00 04 00
+ ," reserved?" \ 00 00 00 00 08 00
+ ," reserved?" \ 00 00 00 00 10 00
+ ," IR11 open?" \ 00 00 00 00 20 00
+ ," IR10 open?" \ 00 00 00 00 40 00
+ ," IR9 open?" \ 00 00 00 00 80 00
+
+ ," IR8 open?" \ 00 00 00 00 00 01
+ ," IR7 open?" \ 00 00 00 00 00 02
+ ," IR6 open?" \ 00 00 00 00 00 04
+ ," IR5 open?" \ 00 00 00 00 00 08
+ ," IR4 open?" \ 00 00 00 00 00 10
+ ," IR3 open?" \ 00 00 00 00 00 20
+ ," IR2 open?" \ 00 00 00 00 00 40
+ ," IR1 open?" \ 00 00 00 00 00 80
+
+end-string-array
+
+defer our-os
+' noop is our-os
+[then]
+
+d# 64 constant /x-os
+d# 48 constant /y-os
+
: test-os-axis ( axis -- )
h# 21 h# 02 h# ee 4 twsi-out
h# 21 d# 30 anticipate
pbuf 2+ c@ h# 21 <> abort" bad response"
- pbuf 3 + c@ if h# 0a else h# 0e then >r ( r:nleds )
- pbuf 5 + ( r:nleds array )
+ pbuf d# 5 + ( addr )
- \ bit array layout: | open_pd | short_pd | short_led | open_led |
- \ subarray widths: | npds bits | npds bits | nleds bits | nleds bits |
- \ npds = nleds+1
-
- \ FIXME: express failed devices in terms of IR PCB component names.
- \ 0 npds
- 8sp ." open_pd=" 0 r@ 1+ .bits
- \ npds npds*2
- 8sp ." short_pd=" r@ 1+ r@ 1+ 2* .bits
- \ npds*2 npds*2+nleds
- 8sp ." short_led=" r@ 1+ 2* dup r@ + .bits
- \ npds*2+nleds npds*2+nleds*2
- 8sp ." open_led=" r@ 1+ 2* r@ + dup r@ + .bits
- r> drop drop ( )
+ pbuf 3 + c@ if
+ pbuf 4 + c@ h# 16 <> abort" bad signals y"
+ [ifdef] nn-components
+ ['] y-os to our-os
+ [then]
+ /y-os ( addr bits# )
+ else
+ pbuf 4 + c@ h# 1e <> abort" bad signals x"
+ [ifdef] nn-components
+ ['] x-os to our-os
+ [then]
+ /x-os ( addr bits# )
+ then
+
+ 0 do ( addr )
+ dup c@ ( addr byte )
+ i 8 mod ( addr byte bit# )
+ rshift 1 and if ( addr )
+ 8sp
+ [ifdef] nn-components
+ i our-os count type
+ [then]
+ ." ( bit " i .d ." )" cr
+ fault
+ then ( addr )
+ i 8 mod 7 = if 1+ then ( addr' )
+ loop drop ( )
cr
;
@@ -157,6 +332,18 @@
4sp ." Y Axis" cr 1 test-os-axis
;
+[ifdef] nn-components
+d# 11 constant x-ir-0 \ first X axis IR component identifier
+d# 12 constant x-pd-0 \ first X axis PD component identifier
+d# -1 constant x-up \ direction of numbering
+
+d# 12 constant y-ir-0
+d# 13 constant y-pd-0
+d# 1 constant y-up
+[then]
+
+d# 1 value fss-min
+
: test-fss-axis ( axis -- )
d# 64 swap h# 0f h# 03 h# ee 5 twsi-out
h# 0f d# 20 anticipate
@@ -165,14 +352,18 @@
push-decimal
pbuf 4 + c@ 0 do ( )
pbuf 5 + i + c@
- dup 0= if fault then
+ dup fss-min < if fault then
4 .r space
i d# 10 mod d# 9 = if cr 8sp then
loop cr
pop-base
+[ifdef] nn-components
+ \ FIXME: express failed signals in terms of IR PCB component names.
+ \ Y axis, IR11 PD12, IR11 PD11, IR10 PD11 ... IR1 PD1
+ \ X axis, IR12 PD13, IR12 PD14, IR13 PD14 ... IR26 PD28
+[then]
\ FIXME: using a light guide, characterise a low signal level,
\ detect, and fail self test
- \ FIXME: express failed signals in terms of IR PCB component names.
;
: test-fss
@@ -187,10 +378,19 @@
pbuf 2+ c@ h# 0d <> abort" bad response"
8sp
- pbuf 4 + c@ >r ( r:nsigs )
- pbuf 5 + ( r:nsigs array )
- 0 r@ 1+ .bits ( r:nsigs array )
- r> drop drop ( )
+ pbuf 5 + ( addr )
+ pbuf 4 + c@ ( addr #bits )
+ ." ( " 0 do ( addr )
+ dup c@ ( addr byte )
+ i 8 mod ( addr byte bit# )
+ rshift 1 and if ( addr )
+ i .d
+ fault
+ then
+ i 8 mod ( addr rem )
+ 7 = if 1+ then ( addr' )
+ loop drop ( )
+ ." )" cr
cr
\ FIXME: express low signals in terms of IR PCB component names.
;
@@ -213,6 +413,7 @@
diagnostic-mode? if
0 to faults
+ test-version
test-os
test-fss
test-ls
More information about the openfirmware
mailing list