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