[openfirmware] [commit] r3533 - cpu/arm/olpc dev dev/usb2/device/keyboard
repository service
svn at openfirmware.info
Mon Feb 4 08:50:34 CET 2013
Author: quozl
Date: Mon Feb 4 08:50:34 2013
New Revision: 3533
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3533
Log:
OLPC - allocate any heap during driver open rather than during an alarm handler, for the /ap-sp, /keyboard, and /usb/keyboard drivers, fixes #12466, tested with 128,000 boot cycles across four units.
Modified:
cpu/arm/olpc/spcmd.fth
dev/pckbd.fth
dev/usb2/device/keyboard/kbd.fth
Modified: cpu/arm/olpc/spcmd.fth
==============================================================================
--- cpu/arm/olpc/spcmd.fth Mon Feb 4 08:47:38 2013 (r3532)
+++ cpu/arm/olpc/spcmd.fth Mon Feb 4 08:50:34 2013 (r3533)
@@ -49,21 +49,21 @@
#queues /n* buffer: heads : head ( -- adr ) heads queue# na+ ;
#queues /n* buffer: tails : tail ( -- adr ) tails queue# na+ ;
-#queues /q * buffer: qs : q ( adr -- ) qs queue# /q * + ;
+#queues /q * buffer: qs : q ( -- adr ) qs queue# /q * + ;
/q 1- value q-end
: init-queues ( -- )
#queues 0 do
i to queue#
- 0 head ! 0 tail ! /q 1- to q-end
+ 0 head ! 0 tail ! q drop /q 1- to q-end
loop
;
: inc-q-ptr ( pointer-addr -- )
dup @ q-end >= if 0 swap ! else /c swap +! then
;
-false value locked? \ Interrupt lockout for get-scan
+false value locked? \ Interrupt lockout for get-data?
: lock ( -- ) true to locked? ;
: unlock ( -- ) false to locked? ;
@@ -125,6 +125,7 @@
0 value open-count
: open ( -- flag )
open-count 0= if
+ init-queues
my-address my-space h# 1000 " map-in" $call-parent is reg-base
data? 0= if send-rdy then
then
Modified: dev/pckbd.fth
==============================================================================
--- dev/pckbd.fth Mon Feb 4 08:47:38 2013 (r3532)
+++ dev/pckbd.fth Mon Feb 4 08:50:34 2013 (r3533)
@@ -55,7 +55,7 @@
/q dup buffer: q
1- value q-end
-: init-q ( -- ) 0 head ! 0 tail ! /q 1- to q-end ;
+: init-q ( -- ) 0 head ! 0 tail ! q drop /q 1- to q-end ;
: inc-q-ptr ( pointer-addr -- )
dup @ q-end >= if 0 swap ! else /c swap +! then
;
Modified: dev/usb2/device/keyboard/kbd.fth
==============================================================================
--- dev/usb2/device/keyboard/kbd.fth Mon Feb 4 08:47:38 2013 (r3532)
+++ dev/usb2/device/keyboard/kbd.fth Mon Feb 4 08:50:34 2013 (r3533)
@@ -67,7 +67,10 @@
\ examined by getkey (to application)
/qe buffer: null-entry \ Buffer to hold a null entry
-: init-q ( -- ) 0 head ! 0 tail ! #qe 1- to q-end ;
+: init-q ( -- )
+ 0 head ! 0 tail ! q drop #qe 1- to q-end
+ last-entry drop new-entry drop cur-entry drop null-entry drop
+;
: inc-q-ptr ( pointer-addr -- )
dup @ q-end >= if 0 swap ! else 1 swap +! then
;
@@ -370,6 +373,7 @@
: open ( -- flag )
kbd-refcount @ if 1 +refcnt true exit then
+ init-q
init-kbd-buf
setup-hardware? if
free-kbd-buf
More information about the openfirmware
mailing list