[openfirmware] [commit] r2209 - in dev/usb2/hcd: . ehci ohci uhci
repository service
svn at openfirmware.info
Fri May 20 06:24:32 CEST 2011
Author: wmb
Date: Fri May 20 06:24:32 2011
New Revision: 2209
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2209
Log:
OLPC trac #10819 - Improved the previous fix for this problem, now correctly handling the case where you unplug a device and immediately plug in a different device on the same port.
Modified:
dev/usb2/hcd/ehci/probe.fth
dev/usb2/hcd/ohci/probe.fth
dev/usb2/hcd/probehub.fth
dev/usb2/hcd/uhci/probe.fth
Modified: dev/usb2/hcd/ehci/probe.fth
==============================================================================
--- dev/usb2/hcd/ehci/probe.fth Fri May 20 06:00:11 2011 (r2208)
+++ dev/usb2/hcd/ehci/probe.fth Fri May 20 06:24:32 2011 (r2209)
@@ -22,11 +22,10 @@
0 instance value probe-error? \ Back channel to selftest
: probe-root-hub-port ( port -- )
- false to probe-error? ( port )
- dup portsc@ 1 and 0= if ( port ) \ No device detected
- disable-old-nodes ( )
- exit ( -- )
- then ( port )
+ false to probe-error? ( port )
+ dup disable-old-nodes ( port )
+ dup portsc@ 1 and 0= if drop exit then ( port ) \ No device detected
+
dup portsc@ h# c00 and h# 400 = if \ A low speed device detected
dup disown-port \ Disown the port
else \ Don't know what it is
Modified: dev/usb2/hcd/ohci/probe.fth
==============================================================================
--- dev/usb2/hcd/ohci/probe.fth Fri May 20 06:00:11 2011 (r2208)
+++ dev/usb2/hcd/ohci/probe.fth Fri May 20 06:24:32 2011 (r2209)
@@ -5,20 +5,18 @@
headers
: probe-root-hub-port ( port -- )
- dup hc-rh-psta@ 1 and 0= if ( port )
- disable-old-nodes ( )
- exit ( -- )
- then ( port )
+ dup disable-old-nodes ( port )
+ dup hc-rh-psta@ 1 and 0= if drop exit then ( port )
\ Reset the port to determine the speed
- dup reset-port ( port )
+ dup reset-port ( port )
dup hc-rh-psta@ 200 and if speed-low else speed-full then ( port speed )
\ hub-port and hub-speed are irrelevant for OHCI (USB 1.1)
- 0 0 ( port speed hub-port hub-dev )
+ 0 0 ( port speed hub-port hub-dev )
\ Execute setup-new-node in root context and make-device-node in hub node context
- setup-new-node if execute then ( port dev xt )
+ setup-new-node if execute then ( port dev xt )
;
false value ports-powered?
Modified: dev/usb2/hcd/probehub.fth
==============================================================================
--- dev/usb2/hcd/probehub.fth Fri May 20 06:00:11 2011 (r2208)
+++ dev/usb2/hcd/probehub.fth Fri May 20 06:24:32 2011 (r2209)
@@ -68,10 +68,8 @@
over clear-status-change ( port error? )
if drop exit then ( port )
- hub-buf c@ 1 and 0= if ( port ) \ No device connected
- disable-old-nodes ( port )
- exit
- then
+ dup disable-old-nodes ( port )
+ hub-buf c@ 1 and 0= if drop exit then ( port ) \ No device connected
hub-buf le-w@ h# 600 and 9 >> ( port speed )
\ hub-port and hub-dev route USB 1.1 transactions through USB 2.0 hubs
@@ -142,10 +140,9 @@
1+ 1 ?do ( hub-dev )
dup i port-status-changed? if ( hub-dev connected? )
+ i disable-old-nodes ( hub-dev connected? )
if ( hub-dev )
dup i safe-probe-hub-port ( hub-dev )
- else \ Handle disconnect
- i disable-old-nodes ( hub-dev )
then ( hub-dev )
else ( hub-dev )
i port-is-hub? if ( hub-dev phandle )
Modified: dev/usb2/hcd/uhci/probe.fth
==============================================================================
--- dev/usb2/hcd/uhci/probe.fth Fri May 20 06:00:11 2011 (r2208)
+++ dev/usb2/hcd/uhci/probe.fth Fri May 20 06:24:32 2011 (r2209)
@@ -7,10 +7,8 @@
: probe-root-hub-port ( port -- )
\ Reset the port to perform connection status and speed detection
dup reset-port ( port )
- dup portsc@ 1 and 0= if ( port ) \ No device-connected
- disable-old-nodes ( )
- exit ( -- )
- then ( port )
+ dup disable-old-nodes ( port )
+ dup portsc@ 1 and 0= if drop exit then ( port ) \ No device-connected
dup portsc@ 100 and if speed-low else speed-full then ( port speed )
More information about the openfirmware
mailing list