Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 05 Feb 2010 00:33:19 +0200
From:      Andriy Gapon <avg@icyb.net.ua>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-acpi@freebsd.org
Subject:   Re: acpi_cpu: _PDC vs _OSC
Message-ID:  <4B6B4B2F.2010109@icyb.net.ua>
In-Reply-To: <201002041729.18714.jhb@freebsd.org>
References:  <4B698DD8.4010404@icyb.net.ua> <201002041657.52232.jhb@freebsd.org> <4B6B4689.4020708@icyb.net.ua> <201002041729.18714.jhb@freebsd.org>

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

on 05/02/2010 00:29 John Baldwin said the following:
> But is GCAP loading an additional SSDT?  That is what the "loading something" 
> refers to and I think we've only observed that occurring with _OSC.  I'd 
> rather we only document unexpected quirks that someone has actually reported 
> and not assume that just because an _OSC method on some box did it, there's 
> bound to be a _PDC method on some other box that does it.  In truth, the 
> comment is probably not needed now anyway since this will always do _OSC 
> first.

I agree with you.  Probably the comment is too obvious or too useless now, when
such things are a common place.
To answer your first question - yes it does:

Method (GCAP, 1, NotSerialized)
{
    CreateDWordField (Arg0, Zero, STS0)
    CreateDWordField (Arg0, 0x04, CAP0)
    If (LOr (LEqual (STS0, 0x06), LEqual (STS0, 0x0A)))
    {
        Return (Zero)
    }

    If (And (STS0, One))
    {
        And (CAP0, 0x0BFF, CAP0)
        Return (Zero)
    }

    Or (And (PDC0, 0x7FFFFFFF), CAP0, PDC0)
    If (And (CFGD, One))
    {
        If (LAnd (LAnd (And (CFGD, 0x01000000), LEqual (And (PDC0,
            0x09), 0x09)), LNot (And (SDTL, One))))
        {
            Or (SDTL, One, SDTL)
            OperationRegion (IST0, SystemMemory, DerefOf (Index (SSDT, One)),
DerefOf (Index (SSDT, 0x02
                )))
            Load (IST0, HI0)
        }
    }

    If (And (CFGD, 0xF0))
    {
        If (LAnd (LAnd (And (CFGD, 0x01000000), And (PDC0, 0x18
            )), LNot (And (SDTL, 0x02))))
        {
            Or (SDTL, 0x02, SDTL)
            OperationRegion (CST0, SystemMemory, DerefOf (Index (SSDT, 0x07)),
DerefOf (Index (SSDT, 0x08
                )))
            Load (CST0, HC0)
        }
    }

    Return (Zero)
}



-- 
Andriy Gapon



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