From owner-freebsd-current Wed Dec 4 11:44:11 2002 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8D39B37B401 for ; Wed, 4 Dec 2002 11:44:02 -0800 (PST) Received: from ion.gank.org (ion.gank.org [198.78.66.164]) by mx1.FreeBSD.org (Postfix) with ESMTP id D887643E88 for ; Wed, 4 Dec 2002 11:44:01 -0800 (PST) (envelope-from craig@xfoil.gank.org) Received: from owen1492.it.oot (nat72962.owentools.com [206.50.138.221]) by ion.gank.org (GankMail) with ESMTP id E22A42C8BB for ; Wed, 4 Dec 2002 13:40:48 -0600 (CST) Subject: Re: ACPI + Compaq Armada m700 From: Craig Boston To: current@freebsd.org Content-Type: multipart/mixed; boundary="=-E2EZWpS/CbJiwuY65h4V" Organization: Message-Id: <1039031030.43252.0.camel@owen1492.it.oot> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.0 Date: 04 Dec 2002 13:43:51 -0600 Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG --=-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 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