[OpenBIOS] r668 - cpu/x86/pc/olpc

svn at openbios.org svn at openbios.org
Wed Oct 10 02:07:12 CEST 2007


Author: wmb
Date: 2007-10-10 02:07:12 +0200 (Wed, 10 Oct 2007)
New Revision: 668

Modified:
   cpu/x86/pc/olpc/resume.bth
Log:
OLPC resume - Fixed that "reset-smbus-bitbang" code that unwedges the SMBUS,
but left it commented out, because the kernel does it too.


Modified: cpu/x86/pc/olpc/resume.bth
===================================================================
--- cpu/x86/pc/olpc/resume.bth	2007-10-05 18:36:19 UTC (rev 667)
+++ cpu/x86/pc/olpc/resume.bth	2007-10-10 00:07:12 UTC (rev 668)
@@ -340,33 +340,32 @@
 [ifdef] reset-smbus-bitbang
    \ GPIO15 is SMB_DATA
    \ GPIO14 is SMB_CLOCK
+   h#     c000 # ax mov         \ Mask to set SMB_DATA and SMB_CLOCK
+   h# 1000 # dx mov  ax dx out  \ Set output values to high
+   h# 1004 # dx mov  ax dx out  \ Set pins to output
    h# c0000000 # ax mov         \ Mask to clear SMB_DATA and SMB_CLOCK
    h# 1010 # dx mov  ax dx out  \ Deselect OUT AUX1
    h# 1014 # dx mov  ax dx out  \ Deselect OUT AUX2
    h# 1034 # dx mov  ax dx out  \ Deselect IN AUX1
-   h#     c000 # ax mov         \ Mask to set SMB_DATA and SMB_CLOCK
-   h# 1000 # dx mov  ax dx out  \ Set output values to high
-   h# 1004 # dx mov  ax dx out  \ Set pins to output
 
-   h# 1000 # dx mov             \ Output value register
-
-   8 # cx mov  \ Generate 8 low pulses on SMB_CLOCK
+   d# 16 # cx mov  \ Generate 8 low pulses on SMB_CLOCK
    begin
       \ 5 uS delay (slightly longer for GX)
       rdtsc  ax bx mov  d# 5 d# 500 * #  bx  add
       begin  rdtsc  bx ax sub  0>= until
 
+      h# 1000 # dx mov             \ Output value register
       h# 40000000 # ax mov  ax dx out    \ Clear SMB_CLOCK
 
       \ 5 uS delay (slightly longer for GX)
       rdtsc  ax bx mov  d# 5 d# 500 * #  bx  add
       begin  rdtsc  bx ax sub  0>= until
 
+      h# 1000 # dx mov             \ Output value register
       h#     4000 # ax mov  ax dx out    \ Set SMB_CLOCK
-
    loopa
 
-   \ 50 uS delay (slightly longer for GX)
+   \ 5 uS delay (slightly longer for GX)
    rdtsc  ax bx mov  d# 5 d# 500 * #  bx  add
    begin  rdtsc  bx ax sub  0>= until
 [then]




More information about the OpenBIOS mailing list