Skip site navigation (1)Skip section navigation (2)
Date:      04 Dec 2002 13:43:51 -0600
From:      Craig Boston <craig@xfoil.gank.org>
To:        current@freebsd.org
Subject:   Re: ACPI + Compaq Armada m700
Message-ID:  <1039031030.43252.0.camel@owen1492.it.oot>

next in thread | raw e-mail | index | archive | help

--=-E2EZWpS/CbJiwuY65h4V
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

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 <craig@xfoil.gank.org>
To: current@FreeBSD.ORG
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

--=-E2EZWpS/CbJiwuY65h4V
Content-Description: 
Content-Disposition: inline; filename=compaq-asl.patch
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

--- 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)

--=-E2EZWpS/CbJiwuY65h4V--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1039031030.43252.0.camel>