Author: wmb
Date: Tue Nov 20 23:27:07 2012
New Revision: 3444
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3444
Log:
USB - Changed selftest logic so that it will not destroy (by wanton reprobing) the setup of devices that were connected prior to the execution of selftest. This fixes OLPC trac #12254 and corrects the fix to OLPC trac #11845. I also made it possible to invoke the fisheye test by supplying the argument "fisheye" to the usb path, as in "test /usb:fisheye" or "test /usb:fisheye/hub" . The fisheye test is only available when diag-switch? is false.
Modified:
dev/usb2/hcd/device.fth
dev/usb2/hcd/ehci/probe.fth
dev/usb2/hcd/hcd.fth
dev/usb2/hcd/probehub.fth
Modified: dev/usb2/hcd/device.fth
==============================================================================
--- dev/usb2/hcd/device.fth Tue Nov 20 02:49:48 2012 (r3443)
+++ dev/usb2/hcd/device.fth Tue Nov 20 23:27:07 2012 (r3444)
@@ -357,6 +357,46 @@
drop ( )
;
+: find-port-node ( port -- true | phandle false)
+ my-self ihandle>phandle child ( port phandle )
+ begin ?dup while ( port phandle )
+ " reg" 2 pick get-package-property 0= if ( port phandle adr len )
+ decode-int nip nip ( port phandle port1 )
+ 2 pick = if ( port phandle )
+ \ Check if the node has been disabled
+ " assigned-address" ( port phandle propname$ )
+ 2 pick get-package-property 0= if ( port phandle adr len )
+ decode-int nip nip ( port phandle assigned-address )
+ -1 <> if ( port phandle )
+ nip false exit
+ then
+ then ( port phandle )
+ then ( port phandle )
+ then ( port phandle )
+ peer ( port phandle' )
+ repeat ( port )
+ drop ( )
+ true
+;
+
+: .phandle-property ( phandle prop-name$ -- )
+ rot get-package-property 0= if ( adr len )
+ decode-string type 2drop
+ then
+;
+: .usb-device ( port -- )
+ find-port-node if
+ ." Can't find device node for USB port!" cr
+ else ( phandle )
+ dup " device_type" .phandle-property ( phandle )
+ ." ,"
+ dup " vendor$" .phandle-property ( phandle )
+ ." ,"
+ dup " device$" .phandle-property ( phandle )
+ drop ( )
+ then
+;
+
: (make-device-node) ( dev port intf -- )
swap ( dev intf port )
3dup reuse-old-node? if ( dev intf port )
Modified: dev/usb2/hcd/ehci/probe.fth
==============================================================================
--- dev/usb2/hcd/ehci/probe.fth Tue Nov 20 02:49:48 2012 (r3443)
+++ dev/usb2/hcd/ehci/probe.fth Tue Nov 20 23:27:07 2012 (r3444)
@@ -84,9 +84,10 @@
: power-usb-ports ( -- ) ;
+: port-changed? ( port# -- flag ) portsc@ 2 and 0<> ;
: ports-changed? ( -- flag )
#ports 0 ?do
- i portsc@ 2 and if true unloop exit then
+ i port-changed? if true unloop exit then
loop
false
;
@@ -95,7 +96,7 @@
probe-setup
#ports 0 ?do \ For each port
- i portsc@ 2 and if \ Connection changed
+ i port-changed? if \ Connection changed
\ i rm-obsolete-children \ Remove obsolete device nodes
i probe-root-hub-port \ Probe it
else
@@ -154,58 +155,36 @@
open-count 0= if free-dma-buf unmap-regs then
;
-: .occupied ( port -- ) ." USB 2.0 port " u. ." in use" cr ;
: regs{ ( -- prev ) ehci-reg dup 0= if map-regs then ;
: }regs ( prev -- ) 0= if unmap-regs then ;
-: fisheye ( -- )
- regs{
- #testable-ports 0 ?do
- i port-connected? if
- i .occupied
- else
- ." Fisheye pattern out to USB 2.0 port " i u. cr
- i test-port-begin
- d# 2,000 ms
- i test-port-end
- 0 i portsc! i reset-port i power-port
- then
- loop
- }regs
-;
-
-: thorough ( -- error? )
- #testable-ports 0 ?do
- i port-connected? if
- i .occupied
- else
- ." Please connect a device to USB port " i u. cr
- i wait-connect if true unloop exit then
- then
- loop
- false
-;
-
-: sagacity ( -- error? )
+: selftest ( -- error? )
+ open 0= if true exit then
#testable-ports 0 ?do
- ." USB port " i u. ." ... "
+ ." USB port " i u. ." : "
i port-connected? if
- i wait-connect if true unloop exit then
+ ." In use - "
+ i .usb-device cr
else
- ." Empty" cr
+ diagnostic-mode? if
+ ." Please connect a device" cr
+ i wait-connect if true unloop exit then
+ i .usb-device cr
+ else
+ fisheye? if
+ ." Fisheye pattern" cr
+ i test-port-begin
+ d# 2,000 ms
+ i test-port-end
+ 0 i portsc! i reset-port i power-port
+ else
+ ." Empty" cr
+ then
+ then
then
loop
false
-;
-
-: selftest ( -- error? )
- regs{ ( prev )
- diagnostic-mode? if
- thorough
- else
- sagacity
- then ( prev error? )
- swap }regs ( error? )
+ close
;
headers
Modified: dev/usb2/hcd/hcd.fth
==============================================================================
--- dev/usb2/hcd/hcd.fth Tue Nov 20 02:49:48 2012 (r3443)
+++ dev/usb2/hcd/hcd.fth Tue Nov 20 23:27:07 2012 (r3444)
@@ -116,12 +116,15 @@
\ " rm-usb-children" $find if execute else 3drop then
\ ;
+false instance value fisheye?
+
: parse-my-args ( -- )
my-args
begin dup while
ascii , left-parse-string ( rem$' opt$ )
2dup " debug" $= if debug-on then
2dup " noprobe" $= if true to noprobe? then
+ 2dup " fisheye" $= if true to fisheye? then
2drop ( rem$ )
repeat ( rem$ )
2drop ( )
Modified: dev/usb2/hcd/probehub.fth
==============================================================================
--- dev/usb2/hcd/probehub.fth Tue Nov 20 02:49:48 2012 (r3443)
+++ dev/usb2/hcd/probehub.fth Tue Nov 20 23:27:07 2012 (r3444)
@@ -195,24 +195,31 @@
." Get-port-status failed for hub port " r@ u. cr
r> drop true exit ( -- true )
then ( )
+ ." Hub port " r@ u. ." : " ( )
hub-buf c@ 8 and if \ Connected ( )
- ." Hub port " r@ u. ." in over current" cr
+ ." In over current" cr ( )
r> drop true exit ( -- true )
then ( )
hub-buf c@ 1 and if \ Connected ( )
- ." Hub port " r@ u. ." in use" cr ( )
+ ." In use - " ( )
+ r@ .usb-device cr ( )
else ( )
diagnostic-mode? if ( )
- ." Please connect a device to USB hub port " r@ u. cr ( )
- r@ wait-hub-connect if r> drop true exit then ( )
- else ( )
- ." Fisheye pattern out to USB hub port " r@ u. cr ( )
- r@ 4 test-hub-port ( )
- d# 2,000 ms ( )
- r@ untest-hub-port ( )
- r@ reset-hub-port r@ power-hub-port ( )
- then ( )
- then ( )
+ ." Please connect a device" cr ( )
+ r@ wait-hub-connect if r> drop true exit then ( )
+ r@ .usb-device cr ( )
+ else ( )
+ " fisheye?" $call-parent if ( )
+ ." Fisheye pattern" cr ( )
+ r@ 4 test-hub-port ( )
+ d# 2,000 ms ( )
+ r@ untest-hub-port ( )
+ r@ reset-hub-port r@ power-hub-port ( )
+ else ( )
+ ." Empty" cr ( )
+ then ( )
+ then ( )
+ then ( )
r> drop false
;
Author: quozl
Date: Mon Nov 19 23:37:03 2012
New Revision: 3442
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3442
Log:
OLPC - report NiMH battery cooling status bit
Modified:
dev/olpc/kb3700/batstat.fth
Modified: dev/olpc/kb3700/batstat.fth
==============================================================================
--- dev/olpc/kb3700/batstat.fth Sat Nov 17 05:20:25 2012 (r3441)
+++ dev/olpc/kb3700/batstat.fth Mon Nov 19 23:37:03 2012 (r3442)
@@ -107,6 +107,7 @@
dup h# 20 and if ." charging " then
dup h# 40 and if ." discharging " then
dup h# 80 and if ." trickle " then
+ dup h# 100 and if ." cooling " then
else
." No battery "
then