Apparently the listserver ate my message for breakfast, resending.

Maybe too big?  I'm only attaching the patch this time; the other files
are available on request.

-----Forwarded Message-----

From: Craig Boston <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Subject: Re: ACPI + Compaq Armada m700
Date: 04 Dec 2002 08:55:34 -0600

I've been conversing with Paul off-list about this and it is working on
his m700 now with a fixed AML file.  I'm posing my modified AML since
there appear to be a few more people using current on the m700 now than
the last time I checked (when it was 0 :).

Impatient user version:

1. Put the attached acpi_dsdt.aml file in /boot/
2. Add these two lines to /boot/loader.conf:

acpi_dsdt_load="YES"
acpi_dsdt_name="/boot/acpi_dsdt.aml"

Developer version:

It appears that the AML code in the Compaq BIOS has a few problems with
it that Windows ignores, but a stricter implementation doesn't like. 
The problem is that on bootup, no devices are detected.  As a result,
the root filesystem can't be mounted and the system panics.

Attached is the ASL output from acpidump (gzipped) and a patch that
corrects some of the bigger problems.

Mostly the changes are along the lines of:

-        Name(_HID, "*PNP0C0D")
+        Name(_HID, "PNP0C0D")

For some unknown reason Compaq seems to like the * character in all the
device names.  Removing them makes iasl much happier and now the devices
are detected on bootup.

There are also a couple of changes like this:

@@ -625,8 +627,10 @@
             Store(Arg0, C082)
             Store(Arg1, C081)
             Store(Arg2, C082)
+            Store(C082, Local0)
             ^C097()
             Release(^C08A)
+            Return(Local0)
         }

iasl was complaining about a method or two that were called expecting a
return value, but didn't actually return anything.  There are many
similar methods that do return a value, and they all seem to just return
whatever was in Arg0.  Admittedly, I know next to nothing about ASL/AML,
so maybe one of the ACPI wizards can figure out if this is the right
thing to do or not.

Anyway, it works for Paul and me.  Suspend doesn't seem to work
correctly for me, but I don't know if that's an AML issue or something
else.  Everything else ACPI works fine on the m700 I'm using.

Craig
--- compaq.asl  Tue Oct 29 10:24:52 2002
+++ compaq-fixed.asl    Wed Dec  4 08:26:58 2002
@@ -63,7 +63,7 @@
     Name(C003, 0xfffffffd)
     Mutex(C004, 0)
     Device(C005) {
-        Name(_HID, "*PNP0A03")
+        Name(_HID, "PNP0A03")
         Name(_ADR, 0x0)
         OperationRegion(C006, PCI_Config, 0x5a, 0x6)
         Field(C006, AnyAcc, NoLock, Preserve) {
@@ -467,7 +467,7 @@
 }
 Scope(\_SB_) {
     Device(C057) {
-        Name(_HID, "*PNP0C0E")
+        Name(_HID, "PNP0C0E")
         Name(_PRW, Package(0x2) {
             0xb,
             0x4,
@@ -487,7 +487,7 @@
 }
 Scope(\_SB_.C005.C013) {
     Device(C059) {
-        Name(_HID, "*PNP0A06")
+        Name(_HID, "PNP0A06")
         OperationRegion(C05A, SystemIO, 0xe0, 0x2)
         Field(C05A, ByteAcc, NoLock, Preserve) {
             C05B,      8,
@@ -597,9 +597,11 @@
             Store(Arg0, C05C)
             Store(Arg1, C05B)
             Store(Arg2, C05C)
+            Store(C05C, Local0)
             ^C093()
             Release(\_GL_)
             Release(^C089)
+            Return(Local0)
         }
         Method(C096) {
             Store(0x2, C086)
@@ -625,8 +627,10 @@
             Store(Arg0, C082)
             Store(Arg1, C081)
             Store(Arg2, C082)
+            Store(C082, Local0)
             ^C097()
             Release(^C08A)
+            Return(Local0)
         }
         Method(C09A, 2) {
             If(LEqual(Arg0, 0x0)) {
@@ -994,7 +998,7 @@
 }
 Scope(\_SB_) {
     Device(C0BF) {
-        Name(_HID, "*PNP0C02")
+        Name(_HID, "PNP0C02")
         Name(_UID, 0x0)
         Name(C0C0, Package(0x10) {
         })
@@ -1207,7 +1211,7 @@
         }
     }
     Device(C0D8) {
-        Name(_HID, "*PNP0C01")
+        Name(_HID, "PNP0C01")
         Method(_CRS) {
             Name(C0D7, Buffer(0x26) {0x86, 0x9, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0, 0xa, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0, 0x1, 0x0, 0x86, 0x9, 
0x0, 0x1, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0xf0, 0x0, 0x79, 0x0 })
             CreateDWordField(C0D7, 0x20, C00E)
@@ -1218,14 +1222,14 @@
 }
 Scope(\_SB_.C005) {
     Device(C0DA) {
-        Name(_HID, "*PNP0C02")
+        Name(_HID, "PNP0C02")
         Name(_UID, 0x1)
         Name(_CRS, Buffer(0x32) {0x47, 0x1, 0xd0, 0x4, 0xd0, 0x4, 0x1, 0x2, 0x47, 
0x1, 0x0, 0x8, 0x0, 0x8, 0x1, 0x80, 0x47, 0x1, 0x0, 0x40, 0x0, 0x40, 0x1, 0x10, 0x47, 
0x1, 0x0, 0x50, 0x0, 0x50, 0x1, 0x64, 0x47, 0x1, 0x4, 0x60, 0x4, 0x60, 0x1, 0x2, 0x47, 
0x1, 0x0, 0xf0, 0x0, 0xf0, 0x1, 0xd0, 0x79, 0x0 })
     }
 }
 Scope(\_SB_.C005.C013) {
     Device(C0DB) {
-        Name(_HID, "*PNP0C02")
+        Name(_HID, "PNP0C02")
         Name(_UID, 0x2)
         Method(_CRS) {
             Name(C0D7, Buffer(0x62) {0x47, 0x1, 0x10, 0x0, 0x10, 0x0, 0x1, 0x10, 
0x47, 0x1, 0x24, 0x0, 0x24, 0x0, 0x1, 0x1a, 0x47, 0x1, 0x50, 0x0, 0x50, 0x0, 0x1, 0x4, 
0x47, 0x1, 0x63, 0x0, 0x63, 0x0, 0x1, 0x1, 0x47, 0x1, 0x65, 0x0, 0x65, 0x0, 0x1, 0x1, 
0x47, 0x1, 0x67, 0x0, 0x67, 0x0, 0x1, 0x1, 0x47, 0x1, 0x74, 0x0, 0x74, 0x0, 0x1, 0x4, 
0x47, 0x1, 0x90, 0x0, 0x90, 0x0, 0x1, 0x2, 0x47, 0x1, 0x92, 0x0, 0x92, 0x0, 0x1, 0x1, 
0x47, 0x1, 0x93, 0x0, 0x93, 0x0, 0x1, 0xd, 0x47, 0x1, 0xa4, 0x0, 0xa4, 0x0, 0x1, 0x1a, 
0x47, 0x1, 0xe0, 0x0, 0xe0, 0x0, 0x1, 0x4, 0x79, 0x0 })
@@ -1233,35 +1237,35 @@
         }
     }
     Device(C0DC) {
-        Name(_HID, "*PNP0C04")
+        Name(_HID, "PNP0C04")
         Name(_CRS, Buffer(0xd) {0x47, 0x1, 0xf0, 0x0, 0xf0, 0x0, 0x1, 0x10, 0x22, 
0x0, 0x20, 0x79, 0x0 })
     }
     Device(C0DD) {
-        Name(_HID, "*PNP0000")
+        Name(_HID, "PNP0000")
         Name(_CRS, Buffer(0x15) {0x47, 0x1, 0x20, 0x0, 0x20, 0x0, 0x1, 0x2, 0x47, 
0x1, 0xa0, 0x0, 0xa0, 0x0, 0x1, 0x2, 0x22, 0x4, 0x0, 0x79, 0x0 })
     }
     Device(C0DE) {
-        Name(_HID, "*PNP0100")
+        Name(_HID, "PNP0100")
         Name(_CRS, Buffer(0xd) {0x47, 0x1, 0x40, 0x0, 0x40, 0x0, 0x1, 0x4, 0x22, 0x1, 
0x0, 0x79, 0x0 })
     }
     Device(C0DF) {
-        Name(_HID, "*PNP0200")
+        Name(_HID, "PNP0200")
         Name(_CRS, Buffer(0x1d) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x10, 0x47, 0x1, 
0x80, 0x0, 0x80, 0x0, 0x1, 0x10, 0x47, 0x1, 0xc0, 0x0, 0xc0, 0x0, 0x1, 0x20, 0x2a, 
0x10, 0x2, 0x79, 0x0 })
     }
     Device(C0E0) {
-        Name(_HID, "*PNP0800")
+        Name(_HID, "PNP0800")
         Name(_CRS, Buffer(0xa) {0x47, 0x1, 0x61, 0x0, 0x61, 0x0, 0x1, 0x1, 0x79, 0x0 
})
     }
     Device(C0E1) {
-        Name(_HID, "*PNP0B00")
+        Name(_HID, "PNP0B00")
         Name(_CRS, Buffer(0x15) {0x47, 0x1, 0x70, 0x0, 0x70, 0x0, 0x1, 0x2, 0x47, 
0x1, 0x72, 0x0, 0x72, 0x0, 0x1, 0x2, 0x22, 0x0, 0x1, 0x79, 0x0 })
     }
     Device(C0E2) {
-        Name(_HID, "*PNP0303")
+        Name(_HID, "PNP0303")
         Name(_CRS, Buffer(0x15) {0x47, 0x1, 0x60, 0x0, 0x60, 0x0, 0x1, 0x1, 0x47, 
0x1, 0x64, 0x0, 0x64, 0x0, 0x1, 0x1, 0x22, 0x2, 0x0, 0x79, 0x0 })
     }
     Device(C0E3) {
-        Name(_HID, "*PNP0F13")
+        Name(_HID, "PNP0F13")
         Name(_CID, 0x0e0fd041)
         Name(C0E4, 0x1)
         PowerResource(C0E5, 0, 0) {
@@ -1721,7 +1725,7 @@
         }
     }
     Device(C10D) {
-        Name(_HID, "*PNP0C0A")
+        Name(_HID, "PNP0C0A")
         Name(_UID, 0x1)
         Method(_STA) {
             Return(C10C(0x1))
@@ -1746,7 +1750,7 @@
         }
     }
     Device(C10E) {
-        Name(_HID, "*PNP0C0A")
+        Name(_HID, "PNP0C0A")
         Name(_UID, 0x2)
         Method(_STA) {
             Return(C10C(0x2))
@@ -1771,7 +1775,7 @@
         }
     }
     Device(C10F) {
-        Name(_HID, "*PNP0C0A")
+        Name(_HID, "PNP0C0A")
         Name(_UID, 0x3)
         Name(_EJD, "_SB.C005.C0FD")
         Method(_INI) {
@@ -1797,7 +1801,7 @@
         }
     }
     Device(C110) {
-        Name(_HID, "*PNP0C0A")
+        Name(_HID, "PNP0C0A")
         Name(_UID, 0x4)
         Name(_EJD, "_SB.C005.C0FD")
         Method(_INI) {
@@ -1823,7 +1827,7 @@
         }
     }
     Device(C111) {
-        Name(_HID, "*PNP0C0A")
+        Name(_HID, "PNP0C0A")
         Name(_UID, 0x5)
         Name(_EJD, "_SB.C005.C0BA")
         Method(_INI) {
@@ -1849,7 +1853,7 @@
         }
     }
     Device(C112) {
-        Name(_HID, "*PNP0C0A")
+        Name(_HID, "PNP0C0A")
         Name(_UID, 0x6)
         Name(_EJD, "_SB.C005.C0FC")
         Method(_INI) {
@@ -1875,7 +1879,7 @@
         }
     }
     Device(C113) {
-        Name(_HID, "*PNP0C0A")
+        Name(_HID, "PNP0C0A")
         Name(_UID, 0x7)
         Name(_EJD, "_SB.C005.C0FC")
         Method(_INI) {
@@ -1925,7 +1929,7 @@
 }
 Scope(\_SB_.C005.C013.C059) {
     Device(C119) {
-        Name(_HID, "*PNP0501")
+        Name(_HID, "PNP0501")
         Name(_CID, 0x0005d041)
         Name(_DDN, "COM1")
         Name(_EJD, "_SB.C005.C0FD")
@@ -2019,7 +2023,7 @@
 }
 Scope(\_SB_.C005.C013.C059) {
     Device(C128) {
-        Name(_HID, "*PNP0700")
+        Name(_HID, "PNP0700")
         Device(C129) {
             Name(_ADR, 0x0)
             Name(_RMV, 0x1)
@@ -2341,7 +2345,7 @@
 }
 Scope(\_SB_.C005.C013.C059) {
     Device(C13A) {
-        Name(_HID, "*SMCF010")
+        Name(_HID, "SMCF010")
         Name(_CID, 0x1105d041)
         Name(_EJD, "_SB.C005.C0FD")
         Method(_INI) {
@@ -2454,7 +2458,7 @@
 }
 Scope(\_SB_.C005.C013.C059) {
     Device(C13E) {
-        Name(_HID, "*PNP0401")
+        Name(_HID, "PNP0401")
         Name(_EJD, "_SB.C005.C0FD")
         Method(_INI) {
             Store(\_SB_.C0F9(), _EJD)
@@ -3183,7 +3187,7 @@
     }
 }
 Device(\_SB_.C187) {
-    Name(_HID, "*PNP0C0F")
+    Name(_HID, "PNP0C0F")
     Name(_UID, 0x60)
     Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x8, 0x18, 0x79, 0x0 })
     Method(_STA) {
@@ -3243,7 +3247,7 @@
     }
 }
 Device(\_SB_.C18D) {
-    Name(_HID, "*PNP0C0F")
+    Name(_HID, "PNP0C0F")
     Name(_UID, 0x61)
     Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x8, 0x18, 0x79, 0x0 })
     Method(_STA) {
@@ -3290,7 +3294,7 @@
     }
 }
 Device(\_SB_.C18E) {
-    Name(_HID, "*PNP0C0F")
+    Name(_HID, "PNP0C0F")
     Name(_UID, 0x62)
     Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x8, 0x18, 0x79, 0x0 })
     Method(_STA) {
@@ -3350,7 +3354,7 @@
     }
 }
 Device(\_SB_.C18F) {
-    Name(_HID, "*PNP0C0F")
+    Name(_HID, "PNP0C0F")
     Name(_UID, 0x63)
     Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x8, 0x18, 0x79, 0x0 })
     Method(_STA) {
@@ -3854,7 +3858,7 @@
                 \_SB_.C005.C013.C059.C0AB(0x20, Local0, 0x0, 0x0)
             }
         }
-        Name(_HID, "*PNP0C0B")
+        Name(_HID, "PNP0C0B")
         Name(_UID, 0x0)
         Name(_PR0, Package(0x1) {
             C1A4,
@@ -3896,7 +3900,7 @@
                 \_SB_.C005.C013.C059.C0AB(0x20, Local0, 0x0, 0x0)
             }
         }
-        Name(_HID, "*PNP0C0B")
+        Name(_HID, "PNP0C0B")
         Name(_UID, 0x1)
         Name(_PR0, Package(0x1) {
             C1A6,
@@ -3934,7 +3938,7 @@
                 \_SB_.C005.C013.C059.C0AB(0x20, 0x0, 0x0, 0x0)
             }
         }
-        Name(_HID, "*PNP0C0B")
+        Name(_HID, "PNP0C0B")
         Name(_UID, 0x2)
         Name(_PR0, Package(0x1) {
             C1A8,
@@ -4525,7 +4529,7 @@
 }
 Scope(\_SB_) {
     Device(C1AE) {
-        Name(_HID, "*PNP0C0D")
+        Name(_HID, "PNP0C0D")
         Method(_LID) {
             Acquire(\_GL_, 0xffff)
             Store(\_SB_.C005.C013.C059.C06A, Local0)

Reply via email to