acpi_cpu: _PDC vs _OSC

Andriy Gapon avg at icyb.net.ua
Thu Feb 4 22:33:22 UTC 2010


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


More information about the freebsd-acpi mailing list