//ACPIspec30a.pdf, page 368
// create EC's region and field for thermal support
OperationRegion(EC0, EmbeddedControl, 0, 0xFF)
Field(EC0, ByteAcc, Lock, Preserve) {
MODE, 1, // thermal policy (quiet/perform)
FAN0, 1, // fan strength high/off
FAN1, 1, // fan strength low/off
, 5, // reserved
TMP, 16, // current temp
AC0, 16, // active cooling temp (high)
AC1, 16, // active cooling temp (low)
PSV, 16, // passive cooling temp
HOT 18, // critical S4 temp
CRT, 16 // critical temp
}
// following is a method that OSPM will schedule after it
// receives an SCI and queries the EC to receive value 7
Method(_Q07) {
Notify (\_SB.PCI0.ISA0.EC0.TZ0, 0x80)
} end of Notify method
// fan cooling mode high/off - engaged at AC0 temp
PowerResource(FN10, 0, 0) {
Method(_STA) { Return (\_SB.PCI0.ISA0.EC0.FAN0) } // check power state
Method(_ON) { Store (One, \_SB.PCI0.ISA0.EC0.FAN0) } // turn on fan at high
Method(_OFF) { Store (Zero, \_SB.PCI0.ISA0.EC0.FAN0) }// turn off fan
}
// fan cooling mode low/off - engaged at AC1 temp
PowerResource(FN11, 0, 0) {
Method(_STA) { Return (\_SB.PCI0.ISA0.EC0.FAN1) } // check power state
Method(_ON) { Store (One, \_SB.PCI0.ISA0.EC0.FAN1) } // turn on fan at low
Method(_OFF) { Store (Zero, \_SB.PCI0.ISA0.EC0.FAN1) }// turn off fan
}
// Following is a single fan with two speeds. This is represented
// by creating two logical fan devices. When FN2 is turned on then
// the fan is at a low speed. When FN1 and FN2 are both on then
// the fan is at high speed.
//
// Create FAN device object FN1
Device (FN1) {
// Device ID for the FAN
Name(_HID, EISAID("PNP0C0B"))
Name(_UID, 0)
Name(_PR0, Package(){FN10, FN11})
}
// Create FAN device object FN2
Device (FN2) {
// Device ID for the FAN
Name(_HID, EISAID("PNP0C0B"))
Name(_UID, 1)
Name(_PR0, Package(){FN10})
}
//DSDT
OperationRegion(RAM, EmbeddedControl, 0x00, 0xFF)
Field(RAM, ByteAcc, Lock, Preserve)
{
CMD0, 8,
, 8,
NBID, 8,
Offset(0x8), //Offset(8),
DAT0, 8,
DAT1, 8,
, 2,
WLED, 2,
BLED, 2,
Offset(0x51), //Offset(81),
BLST, 1,
, 7,
WDEV, 1,
BDEV, 1,
WEPM, 1,
Offset(0x70), //Offset(112),
CRTS, 1,
KLID, 1,
, 3,
KACS, 1,
, 2,
WSTS, 1,
BSTS, 1,
Offset(0x77), //Offset(119),
, 3,
LSTS, 1,
Offset(0x82), //Offset(130),
MSTP, 4,
, 4,
CSTP, 4,
Offset(0x88), //Offset(136),
//supported processor power states (C States)
NB0A, 1,
, 7,
NB1A, 1,
Offset(0x95), //Offset(149), FAN-Ist-Drehzahl
FAN1, 8,
Offset(0xA8), //Offset(168), CPU-Temperature
THS0, 8,
THS1, 8,
}