Code:
The SSDT used in that guide has the folowing code:
Scope (\_PR.CPU0)
{
Name (C1M4, Package (0x04)
{
0x03,
Package (0x04)
{
ResourceTemplate ()
{
Register (FFixedHW,
0x01, // Bit Width
0x02, // Bit Offset
0x0000000000000000, // Address
0x01, // Access Size
)
},
0x01, 0x01, 0x03E8
},
Package (0x04)
{
ResourceTemplate ()
{
Register (SystemIO,
0x08, // Bit Width
0x00, // Bit Offset
0x0000000000001014, // Address
,)
},
0x02, 0x01, 0x01F4
},
Package (0x04)
{
ResourceTemplate ()
{
Register (SystemIO,
0x08, // Bit Width
0x00, // Bit Offset
0x0000000000001016, // Address
,)
},
0x03, 0x39, 0x64
}
})
Mine doesn't.
My plain old "SSDT" has
Code:
{
External (\_PR_.P001, DeviceObj)
Scope (\)
{
Name (SSDT, Package (0x03)
{
"CPU0IST ",
0xCBE901F0,
0x00001C0C
})
Name (CSDT, Package (0x03)
{
"CPU0CST ",
0xCBE91E00,
0x00000659
})
Name (TSDT, Package (0x03)
{
"CPU0TST ",
0x80000000,
0x80000000
})
Name (CFGD, 0x00200472)
Name (NCPU, 0x00000008)
Name (NPCP, 0x00000001)
Name (PDC0, 0x80000000)
Name (TBL0, 0x00)
Name (CTB0, 0x00)
Name (TTB0, 0x00)
Name (PSTE, 0x00)
Name (TSTE, 0x00)
OperationRegion (PMRG, SystemIO, 0x0800, 0x50)
Field (PMRG, ByteAcc, NoLock, Preserve)
{
Offset (0x41),
DEV4, 1,
DEV5, 1,
DEV6, 1,
DEV7, 1,
STS4, 1,
STS5, 1,
STS6, 1,
STS7, 1
}
}
Scope (\_PR.P001)
{
Name (HI0, 0x00)
Name (HC0, 0x00)
Name (HT0, 0x00)
Method (_PDC, 1, NotSerialized)
{
CreateDWordField (Arg0, 0x00, REVS)
CreateDWordField (Arg0, 0x04, SIZE)
Store (SizeOf (Arg0), Local0)
Store (Subtract (Local0, 0x08), Local1)
CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP)
Name (STS0, Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
})
Concatenate (STS0, TEMP, Local2)
_OSC (Buffer (0x10)
{
/* 0000 */ 0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47,
/* 0008 */ 0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
}, REVS, SIZE, Local2)
}
Method (_OSC, 4, NotSerialized)
{
CreateDWordField (Arg3, 0x00, STS0)
CreateDWordField (Arg3, 0x04, CAP0)
CreateDWordField (Arg0, 0x00, IID0)
CreateDWordField (Arg0, 0x04, IID1)
CreateDWordField (Arg0, 0x08, IID2)
CreateDWordField (Arg0, 0x0C, IID3)
Name (UID0, Buffer (0x10)
{
/* 0000 */ 0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47,
/* 0008 */ 0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
})
CreateDWordField (UID0, 0x00, EID0)
CreateDWordField (UID0, 0x04, EID1)
CreateDWordField (UID0, 0x08, EID2)
CreateDWordField (UID0, 0x0C, EID3)
If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)),
LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3)))))
{
Store (0x06, Index (STS0, 0x00))
Return (Arg3)
}
If (LNotEqual (Arg1, 0x01))
{
Store (0x0A, Index (STS0, 0x00))
Return (Arg3)
}
Or (And (PDC0, 0x7FFFFFFF), CAP0, PDC0)
If (LAnd (LAnd (LEqual (And (PDC0, 0x09), 0x09), LEqual (
TBL0, Zero)), LEqual (And (CFGD, 0x02), 0x02)))
{
Or (TBL0, 0x01, TBL0)
OperationRegion (GV00, SystemMemory, DerefOf (Index (SSDT, 0x01)), DerefOf (Index (SSDT, 0x02
)))
Load (GV00, HI0)
}
If (LAnd (LAnd (LEqual (And (PDC0, 0x18), 0x18), LEqual (
CTB0, Zero)), LEqual (And (CFGD, 0x20), 0x20)))
{
Or (CTB0, 0x01, CTB0)
OperationRegion (CT00, SystemMemory, DerefOf (Index (CSDT, 0x01)), DerefOf (Index (CSDT, 0x02
)))
Load (CT00, HC0)
}
If (LAnd (LAnd (LEqual (And (PDC0, 0x04), 0x04), LEqual (
TTB0, Zero)), LEqual (And (CFGD, 0x00400000), 0x00400000)))
{
Or (TTB0, 0x01, TTB0)
OperationRegion (TT00, SystemMemory, DerefOf (Index (TSDT, 0x01)), DerefOf (Index (TSDT, 0x02
)))
Load (TT00, HT0)
}
Return (Arg3)
}
}
}
My "SSDT-2" has:
Code:
{
External (\_PR_.CPU1, DeviceObj)
External (\_PR_.CPU0, DeviceObj)
Scope (\)
{
Name (SSDT, Package (0x0C)
{
"CPU0IST ",
0x5FEBAC90,
0x0000022A,
"CPU1IST ",
0x5FEBAF10,
0x00000087,
"CPU0CST ",
0x5FEB9E10,
0x000001BA,
"CPU1CST ",
0x5FEB8F10,
0x00000085
})
Name (CFGD, 0x011B49B1)
Name (\PDC0, 0x80000000)
Name (\PDC1, 0x80000000)
Name (\SDTL, 0x00)
}
Scope (\_PR.CPU0)
{
Name (HI0, 0x00)
Name (HC0, 0x00)
Method (_PDC, 1, NotSerialized)
{
CreateDWordField (Arg0, 0x00, REVS)
CreateDWordField (Arg0, 0x04, SIZE)
Store (SizeOf (Arg0), Local0)
Store (Subtract (Local0, 0x08), Local1)
CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP)
Name (STS0, Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
})
Concatenate (STS0, TEMP, Local2)
_OSC (Buffer (0x10)
{
/* 0000 */ 0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47,
/* 0008 */ 0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
}, REVS, SIZE, Local2)
}
Method (_OSC, 4, NotSerialized)
{
CreateDWordField (Arg3, 0x00, STS0)
CreateDWordField (Arg3, 0x04, CAP0)
CreateDWordField (Arg0, 0x00, IID0)
CreateDWordField (Arg0, 0x04, IID1)
CreateDWordField (Arg0, 0x08, IID2)
CreateDWordField (Arg0, 0x0C, IID3)
Name (UID0, Buffer (0x10)
{
/* 0000 */ 0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47,
/* 0008 */ 0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
})
CreateDWordField (UID0, 0x00, EID0)
CreateDWordField (UID0, 0x04, EID1)
CreateDWordField (UID0, 0x08, EID2)
CreateDWordField (UID0, 0x0C, EID3)
If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)),
LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3)))))
{
Store (0x06, Index (STS0, 0x00))
Return (Arg3)
}
If (LNotEqual (Arg1, 0x01))
{
Store (0x0A, Index (STS0, 0x00))
Return (Arg3)
}
Or (And (PDC0, 0x7FFFFFFF), CAP0, PDC0)
If (And (CFGD, 0x01))
{
If (LAnd (LAnd (And (CFGD, 0x01000000), LEqual (And (PDC0,
0x09), 0x09)), LNot (And (SDTL, 0x01))))
{
Or (SDTL, 0x01, SDTL)
OperationRegion (IST0, SystemMemory, DerefOf (Index (SSDT, 0x01)), 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 (Arg3)
}
}
Scope (\_PR.CPU1)
{
Name (HI1, 0x00)
Name (HC1, 0x00)
Method (_PDC, 1, NotSerialized)
{
CreateDWordField (Arg0, 0x00, REVS)
CreateDWordField (Arg0, 0x04, SIZE)
Store (SizeOf (Arg0), Local0)
Store (Subtract (Local0, 0x08), Local1)
CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP)
Name (STS1, Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
})
Concatenate (STS1, TEMP, Local2)
_OSC (Buffer (0x10)
{
/* 0000 */ 0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47,
/* 0008 */ 0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
}, REVS, SIZE, Local2)
}
Method (_OSC, 4, NotSerialized)
{
CreateDWordField (Arg3, 0x00, STS1)
CreateDWordField (Arg3, 0x04, CAP1)
CreateDWordField (Arg0, 0x00, IID0)
CreateDWordField (Arg0, 0x04, IID1)
CreateDWordField (Arg0, 0x08, IID2)
CreateDWordField (Arg0, 0x0C, IID3)
Name (UID1, Buffer (0x10)
{
/* 0000 */ 0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47,
/* 0008 */ 0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
})
CreateDWordField (UID1, 0x00, EID0)
CreateDWordField (UID1, 0x04, EID1)
CreateDWordField (UID1, 0x08, EID2)
CreateDWordField (UID1, 0x0C, EID3)
If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)),
LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3)))))
{
Store (0x06, Index (STS1, 0x00))
Return (Arg3)
}
If (LNotEqual (Arg1, 0x01))
{
Store (0x0A, Index (STS1, 0x00))
Return (Arg3)
}
Or (And (PDC1, 0x7FFFFFFF), CAP1, PDC1)
If (And (CFGD, 0x01))
{
If (LAnd (LAnd (And (CFGD, 0x01000000), LEqual (And (PDC1,
0x09), 0x09)), LNot (And (SDTL, 0x10))))
{
Or (SDTL, 0x10, SDTL)
OperationRegion (IST1, SystemMemory, DerefOf (Index (SSDT, 0x04)), DerefOf (Index (SSDT, 0x05
)))
Load (IST1, HI1)
}
}
If (And (CFGD, 0xF0))
{
If (LAnd (LAnd (And (CFGD, 0x01000000), And (PDC1, 0x18
)), LNot (And (SDTL, 0x20))))
{
Or (SDTL, 0x20, SDTL)
OperationRegion (CST1, SystemMemory, DerefOf (Index (SSDT, 0x0A)), DerefOf (Index (SSDT, 0x0B
)))
Load (CST1, HC1)
}
}
Return (Arg3)
}
}
}
I dosen't have any "Package (0x04)"s which are what I think I need.
If I'm just being blind and dumb, please do tell.
Last edited by adriangb; 03-21-2010 at 06:20 PM.
Reason: Changed [PHP] to [CODE]. I should have spotted that earlier
|