[openfirmware] [commit] r2578 - in cpu/arm: mmp2 olpc/1.75

repository service svn at openfirmware.info
Wed Oct 5 00:21:03 CEST 2011


Author: wmb
Date: Wed Oct  5 00:21:03 2011
New Revision: 2578
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2578

Log:
OLPC XO-1.75 - trac #11298 - reinit USB hardware as necessary after suspend/resume.

Modified:
   cpu/arm/mmp2/dramrecal.fth
   cpu/arm/olpc/1.75/devices.fth
   cpu/arm/olpc/1.75/usb.fth

Modified: cpu/arm/mmp2/dramrecal.fth
==============================================================================
--- cpu/arm/mmp2/dramrecal.fth	Wed Oct  5 00:14:31 2011	(r2577)
+++ cpu/arm/mmp2/dramrecal.fth	Wed Oct  5 00:21:03 2011	(r2578)
@@ -725,6 +725,7 @@
 
 : str  ( -- )
    disable-interrupts
+   suspend-usb
    timers-off
 
    screen-off
@@ -770,8 +771,8 @@
 
    screen-on
    timers-on
+   resume-usb
    enable-interrupts
-   hdd-led-off
 ;
 : strp  ( -- )  ec-rst-pwr  str  ec-max-pwr .d ." mW " soc .%  space  ;
 

Modified: cpu/arm/olpc/1.75/devices.fth
==============================================================================
--- cpu/arm/olpc/1.75/devices.fth	Wed Oct  5 00:14:31 2011	(r2577)
+++ cpu/arm/olpc/1.75/devices.fth	Wed Oct  5 00:21:03 2011	(r2578)
@@ -334,20 +334,9 @@
    then
 ;
 
-fload ${BP}/cpu/arm/olpc/1.75/usb.fth
-
 fload ${BP}/cpu/arm/marvell/utmiphy.fth
 
-: init-usb  ( -- )
-   h# 9 h# 28285c io!  \ Enable clock to USB block
-   reset-usb-hub
-   init-usb-phy
-;
-
-stand-init: Init USB Phy
-\  usb-power-on   \ The EC now controls the USB power
-   init-usb
-;
+fload ${BP}/cpu/arm/olpc/1.75/usb.fth
 
 fload ${BP}/dev/olpc/mmp2camera/loadpkg.fth
 

Modified: cpu/arm/olpc/1.75/usb.fth
==============================================================================
--- cpu/arm/olpc/1.75/usb.fth	Wed Oct  5 00:14:31 2011	(r2577)
+++ cpu/arm/olpc/1.75/usb.fth	Wed Oct  5 00:21:03 2011	(r2578)
@@ -22,9 +22,25 @@
    \ Port 3 is left
    \ Port 4 is right lower
    " 3,4,2" " usb-hub-test-list" string-property
-
+   : suspend  ( -- )  true to first-open?  ;
+   : resume  ( -- )  ;
 end-package
 
+\ Turn on USB power after a delay, to ensure that USB devices are reset correctly on boot
+: usb-power-on  ( -- )  ;  \ The EC controls the USB power
+: reset-usb-hub  ( -- )  d# 146 gpio-set  d# 10 ms  d# 146 gpio-set  ;
+
+: init-usb  ( -- )
+   h# 9 h# 5c pmua!  \ Enable clock to USB block
+   reset-usb-hub
+   init-usb-phy
+;
+
+stand-init: Init USB Phy
+\  usb-power-on   \ The EC now controls the USB power
+   init-usb
+;
+
 d# 300 config-int usb-delay  \ Milliseconds to wait before probing hub ports
 
 devalias u    /usb/disk
@@ -108,6 +124,24 @@
    then
 ;
 
+: suspend-usb  ( -- )
+   detach-usb-keyboard
+   " /usb" " suspend" execute-device-method drop
+;
+: has-children?   ( devspec$ -- flag )
+   locate-device  if  false  else  child 0<>  then
+;
+: any-usb-devices?  ( -- flag )  " /usb/hub" has-children?  ;
+: resume-usb  ( -- )
+   init-usb
+   " /usb" " resume" execute-device-method drop
+   any-usb-devices?  if
+      d# 2000 ms  \ USB misses devices if you probe too soon
+   then
+   silent-probe-usb
+   attach-usb-keyboard
+;
+
 \ Unlink every node whose phys.hi component matches port
 : port-match?  ( port -- flag )
    get-unit  if  drop false exit  then
@@ -128,10 +162,6 @@
    previous definitions
 ;
 
-\ Turn on USB power after a delay, to ensure that USB devices are reset correctly on boot
-: usb-power-on  ( -- )  ;  \ The EC controls the USB power
-: reset-usb-hub  ( -- )  d# 146 gpio-set  d# 10 ms  d# 146 gpio-set  ;
-
 \ LICENSE_BEGIN
 \ Copyright (c) 2010 FirmWorks
 \ 



More information about the openfirmware mailing list