[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