[openfirmware] [commit] r2033 - dev/olpc/kb3700
repository service
svn at openfirmware.info
Tue Nov 23 23:34:45 CET 2010
Author: wmb
Date: Tue Nov 23 23:34:45 2010
New Revision: 2033
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2033
Log:
OLPC XO-1.75 - Fixed race condition in EC SPI module.
Modified:
dev/olpc/kb3700/spicmd.fth
Modified: dev/olpc/kb3700/spicmd.fth
==============================================================================
--- dev/olpc/kb3700/spicmd.fth Tue Nov 23 00:42:23 2010 (r2032)
+++ dev/olpc/kb3700/spicmd.fth Tue Nov 23 23:34:45 2010 (r2033)
@@ -241,6 +241,7 @@
pulse-ack
;
: (upstream) ( -- )
+ rxavail 2 <> if ." ec-spi rxavail = " rxavail . cr debug-me then
ssp-ssdr rl@ ssp-ssdr rl@ ( channel# data )
debug? if
." UP: " over . dup . cr
@@ -265,7 +266,9 @@
;
: poll ( -- )
+ lock[
ssp-ready? if do-state then
+ ]unlock
debug? if key? if key drop debug-me then then
;
: cancel-command ( -- ) \ Called when the command child times out
@@ -354,10 +357,20 @@
dup 5 > abort" Too many EC command arguments"
ec-cmdbuf 3 + swap bounds ?do i c! loop ( )
;
+: timed-get-data ( -- b )
+ get-msecs d# 20 + begin ( limit )
+ " get-data?" $call-parent if ( limit data )
+ nip exit
+ then ( limit )
+ dup get-msecs - 0< ( limit )
+ until ( limit )
+ drop
+ true abort" EC command result timeout"
+;
+
: get-results ( -- [ results ] )
ec-respbuf #results bounds ?do
- begin " get-data?" $call-parent until ( byte )
- i c!
+ timed-get-data i c!
loop
#results 0 ?do \ XXX maybe this loop should go backwards?
More information about the openfirmware
mailing list