Author: wmb Date: 2007-05-22 03:52:08 +0200 (Tue, 22 May 2007) New Revision: 412
Modified: cpu/x86/pc/olpc/suspend.fth dev/usb2/hcd/ehci/probe.fth Log: OLPC - USB2 devices now work after suspend/resume.
Modified: cpu/x86/pc/olpc/suspend.fth =================================================================== --- cpu/x86/pc/olpc/suspend.fth 2007-05-22 01:51:09 UTC (rev 411) +++ cpu/x86/pc/olpc/suspend.fth 2007-05-22 01:52:08 UTC (rev 412) @@ -28,6 +28,7 @@ " video-save" stdout @ $call-method \ Freeze display s3 " video-restore" stdout @ $call-method \ Unfreeze display + " /usb@f,5" open-dev ?dup if " resume" 2 pick $call-method close-dev then ; alias s suspend
Modified: dev/usb2/hcd/ehci/probe.fth =================================================================== --- dev/usb2/hcd/ehci/probe.fth 2007-05-22 01:51:09 UTC (rev 411) +++ dev/usb2/hcd/ehci/probe.fth 2007-05-22 01:52:08 UTC (rev 412) @@ -4,6 +4,15 @@ hex headers
+: retry-set-address ( dev -- error? ) + d# 200 ms + d# 5 0 do + dup set-address 0= if drop false unloop exit then + d# 1000 + loop + drop true +; + : make-root-hub-node ( port -- ) ok-to-add-device? 0= if drop exit then \ Can't add another device
@@ -11,7 +20,11 @@ speed-high over di-speed! ( port dev )
0 set-target ( port dev ) \ Address it as device 0 - dup set-address if 2drop exit then ( port dev ) \ Assign it usb addr dev + + dup retry-set-address if 2drop exit then ( port dev ) \ Assign it usb addr dev +\ d# 4000 ms +\ dup set-address if 2drop exit then ( port dev ) \ Assign it usb addr dev + dup set-target ( port dev ) \ Address it as device dev make-device-node ( ) ; @@ -74,6 +87,13 @@ true ;
+: resume ( -- ) + init-ehci-regs + start-usb + claim-ownership + framelist-phys periodic! +; + : close ( -- ) open-count 1- to open-count end-extra