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>