[SeaBIOS] [PATCH 3/3] acpi: revert d9f5cdbdf (DSDT: Fix HPET _CRS Method)

Gabriel L. Somlo gsomlo at gmail.com
Thu Dec 6 20:14:45 CET 2012


On Thu, Dec 06, 2012 at 06:07:20PM +0100, Gerd Hoffmann wrote:
> > If I could figure out how to write a reliable _STA method for the SMC,
> > that would detect whether or not it was supplied as "-device applesmc"
> > on the qemu command line, I think we might be on to something...
> 
> I've tried something simliar, but simply using the _STA method of the
> hpet.  That somehow hints our hpet _STA method isn't working reliable on
> windows xp.  I'll go to digg, but that has to wait until tomorrow.

Meanwhile, here's more iteration/datapoint: In the patch below,
I'm checking for the *existence* of the SMC rather than attempting
to evaluate its _STA. If it exists, we're on a "mac" and therefore
should have IRQNoFlags.  Otherwise, leave it out and make everyone
else happy.

Although having a permanent SMC node and using its _STA method would
be much nicer, if I ever figure out fw_cfg per Alex's sugestion :)

Thanks,
--Gabriel

diff --git a/src/acpi-dsdt-hpet.dsl b/src/acpi-dsdt-hpet.dsl
index d5aa3f1..9022027 100644
--- a/src/acpi-dsdt-hpet.dsl
+++ b/src/acpi-dsdt-hpet.dsl
@@ -23,12 +23,23 @@ Scope(\_SB) {
             }
             Return (0x0F)
         }
-        Name(_CRS, ResourceTemplate() {
-            IRQNoFlags() {2, 8}
+        Name(RESP, ResourceTemplate() {
             Memory32Fixed(ReadOnly,
                 0xFED00000,         // Address Base
                 0x00000400,         // Address Length
                 )
         })
+        Name(RESI, ResourceTemplate() {
+            IRQNoFlags() {0, 8}
+        })
+        Method(_CRS, 0) {
+            If (CondRefOf(\_SB.PCI0.ISA.SMC, Local0)) {
+                /* AppleSMC present, add IRQ resource */
+                ConcatenateResTemplate(RESP, RESI, Local1)
+                Return (Local1)
+            } else {
+                Return (RESP)
+            }
+        }
     }
 }
diff --git a/src/acpi-dsdt-isa.dsl b/src/acpi-dsdt-isa.dsl
index 23761db..581edde 100644
--- a/src/acpi-dsdt-isa.dsl
+++ b/src/acpi-dsdt-isa.dsl
@@ -1,6 +1,17 @@
 /* Common legacy ISA style devices. */
 Scope(\_SB.PCI0.ISA) {
 
+//    Device (SMC) {
+//        Name(_HID, EisaId("APP0001"))
+//        Method(_STA, 0) {
+//            Return (0x0B)
+//        }
+//        Name (_CRS, ResourceTemplate () {
+//            IO (Decode16, 0x0300, 0x0300, 0x01, 0x20)
+//            IRQNoFlags() { 6 }
+//        })
+//    }
+
     Device(RTC) {
         Name(_HID, EisaId("PNP0B00"))
         Name(_CRS, ResourceTemplate() {



More information about the SeaBIOS mailing list