[openfirmware] [commit] r1874 - cpu/x86/pc/olpc/via

repository service svn at openfirmware.info
Thu Jul 15 19:53:03 CEST 2010


Author: wmb
Date: Thu Jul 15 19:53:02 2010
New Revision: 1874
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/1874

Log:
OLPC XO-1.5 - When resuming from S3, restore the SDHCI state differently for Linux and Windows.

Modified:
   cpu/x86/pc/olpc/via/acpi.fth
   cpu/x86/pc/olpc/via/addrs.fth
   cpu/x86/pc/olpc/via/romreset.bth

Modified: cpu/x86/pc/olpc/via/acpi.fth
==============================================================================
--- cpu/x86/pc/olpc/via/acpi.fth	Thu Jul 15 19:41:34 2010	(r1873)
+++ cpu/x86/pc/olpc/via/acpi.fth	Thu Jul 15 19:53:02 2010	(r1874)
@@ -290,6 +290,8 @@
 
    do-acpi-wake wake-adr  /do-acpi-wake  move
 
+   false windows-mode-adr !
+
 [ifdef] notdef
    \ Copy in the SSDT
    \ I suppose we could point to it in FLASH - if so don't compress it,
@@ -315,16 +317,10 @@
 
 defer more-platform-fixup  ' noop to more-platform-fixup
 : rm-platform-fixup  ( -- )
-[ifdef] Later
-Geode   xp-smbus-base h# f001   h# 5140.000b  3dup msr!  find-msr-entry  2!
-Geode   xp-smbus-base 1+  h# 10 isa-hdr  >hdr-value  l!
-
-   begin  sci-queue@  0=  until   \ Clean out the SCI queue
-   h# 20 acpi-w@  h# 20 acpi-w!   \ Ack outstanding events
-Geode   h# 4e sci-mask!                \ Include in the mask only events we care about
+   \ Disable the internal SD to prevent Windows from making it C:
+   h# f9 h# 6099 config-b!
+   true windows-mode-adr !  \ Tell the resume code to do it too
 
-Geode   0 h# 40 pm!                    \ Restore long delay for power-off button
-[then]
    more-platform-fixup
 ;
 

Modified: cpu/x86/pc/olpc/via/addrs.fth
==============================================================================
--- cpu/x86/pc/olpc/via/addrs.fth	Thu Jul 15 19:41:34 2010	(r1873)
+++ cpu/x86/pc/olpc/via/addrs.fth	Thu Jul 15 19:53:02 2010	(r1874)
@@ -87,8 +87,9 @@
 h# ffc00 constant smbios-adr
 h# fff00 constant wake-adr   \ Needs to be at least h# 32 bytes - used in acpi.fth
 h# fff40 constant rm-buf     \ 8-byte buffer used by BIOS INT 15 AH=C0 for returning config info
-h# fff48 constant video-mode-adr  \ Saves display mode for resume code
-\ h# fff4c constant next-adr
+h# fff48 constant video-mode-adr    \ Saves display mode for resume code
+h# fff4c constant windows-mode-adr  \ Flag to control Windows-specific resume fixups
+\ h# fff50 Next address available for resume variables
 
 h# fff80 constant 'int10-dispatch
 

Modified: cpu/x86/pc/olpc/via/romreset.bth
==============================================================================
--- cpu/x86/pc/olpc/via/romreset.bth	Thu Jul 15 19:41:34 2010	(r1873)
+++ cpu/x86/pc/olpc/via/romreset.bth	Thu Jul 15 19:53:02 2010	(r1874)
@@ -248,9 +248,10 @@
          ax jmp         \ Jump in 32-bit protected mode
       then
 
-      \ This only works if prep-rm has already been executed;
-      \ otherwise it will hang trying to re-enable SMM
-      fload ${BP}/cpu/x86/pc/olpc/via/startpcirestore.fth  \ SD host controller PCI BARs
+      \ These fixups are only needed by Windows, and some of them are bad for Linux
+      windows-mode-adr #)  ax  mov  ax ax or  0<>  if
+         fload ${BP}/cpu/x86/pc/olpc/via/startpcirestore.fth  \ SD host controller PCI BARs
+      then
 
       facs-adr h# c + #) ax mov  ax ax or  0<>  if
          \ Resume in real mode for ACPI operating systems



More information about the openfirmware mailing list