Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Jan 2006 16:19:38 +0100
From:      Bruno Ducrot <ducrot@poupinou.org>
To:        Nate Lawson <nate@root.org>
Cc:        freebsd-acpi@FreeBSD.org, Gnu_Raiz <gnu.raiz@gmail.com>
Subject:   Re: Z00Q Problem Tyan MB!
Message-ID:  <20060103151938.GD13887@poupinou.org>
In-Reply-To: <43AC2E52.8000304@root.org>
References:  <c740cf110512211223s4b7d7c59n387b1dfedd62567b@mail.gmail.com> <20051222020349.GA16607@poupinou.org> <43AC2E52.8000304@root.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Dec 23, 2005 at 09:05:22AM -0800, Nate Lawson wrote:
> You can work around this problem with info from PR kern/89879
> 
> http://people.freebsd.org/~ariff/acer_ferrari/
> 
> A future acpica import may address this problem.  The aml is accessing a 
> field before it's defined.  The newest acpica adds support for lazy 
> evaluation (even though this is out of spec).

No, it won't.  There are the following devices:


	Device (SIO)
	{
		...
		...

		Method (STA, 1, NotSerialized)
		{
		...
		...
		}

		Device (COM1)
		{
			...
			Method (_STA, 0, NotSerialized)
			{
				Store (Z00Q, Local0)
				And (Local0, 0x01, Local0)
				If (LEqual (Local0, 0x01))
				{
					Return (0x00)
				}
				Else
				{
					Return (STA(0x02))
			}
		}

		Device (COM2)
		{
			...
			Method (_STA, 0, NotSerialized)
			{
				/* same _STA, but
				 * And (Local0, 0x02, Local0)
				 */
			...
		}


		Device (LPT)
		{
		
			...
			Method (_STA, ...)
			{
				/* same _STA, but different bits checked
				 */
			
			}
		}

Since all of those _STA methods call SIO.STA() (and since this method
is used to touch a part of a SuperIO chip (io port 0x2E, etc) in order
to initialize some devices), it's very likely that the 3 devices will not
function even if acpica does lazy evaluations for
non-existing object.  If I were the acpi maintainer of the intel acpica,
package, I would add a flag turned off per default.

For the OP.  I would suggest trying to add a Z00Q manually.

--- rcall-TyanMP2460.asl	2006/01/03 14:47:05	1.1
+++ rcall-TyanMP2460.asl	2006/01/03 15:10:58
@@ -1256,6 +1256,7 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1, 
                 Device (SIO)
                 {
                     Name (_HID, EisaId ("PNP0A05"))
+                    Name (Z00Q, 1)    // bit 1: COM1, bit 2: COM2, bit 3: LPT
                     OperationRegion (Z00M, SystemIO, 0x80, 0x01)
                     Field (Z00M, ByteAcc, NoLock, Preserve)
                     {
@@ -2394,6 +2395,8 @@ DefinitionBlock ("DSDT.aml", "DSDT", 1, 
         }
 
         Notify (\_SB.PWRB, 0x02)
+
+        Return(Package(2){0,0})
     }
 }
 




and to change the value for Z00Q according to your needs (if you need
both serial ports, then it should be 3, etc).

Cheers,

-- 
Bruno Ducrot

--  Which is worse:  ignorance or apathy?
--  Don't know.  Don't care.



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