blob: fa5a282f545d61594c7442e5c181d26126c4b43b [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
#include <arch/x86/acpi/statdef.asl>
Scope(\_TZ)
{
#if defined(EC_LENOVO_H8_ME_WORKAROUND)
Name (MEB1, 0)
Name (MEB2, 0)
#endif
Method(C2K, 1, NotSerialized)
{
Local0 = Arg0 * 10
Local0 += 2732
if (Local0 <= 2732) {
Return (3000)
}
if (Local0 > 4012) {
Return (3000)
}
Return (Local0)
}
ThermalZone(THM0)
{
/* Thermal zone polling frequency: 10 seconds */
Name (_TZP, 100)
/* Thermal sampling period for passive cooling: 10 seconds */
Name (_TSP, 100)
/* Coefficients for passive cooling */
Name (_TC1, 0x02)
Name (_TC2, 0x05)
/* Generated by acpigen */
External (\PPKG, MethodObj)
/* Processors used for passive cooling */
Method (_PSL, 0, Serialized)
{
Return (\PPKG ())
}
/* Get critical temperature in degree celsius */
Method (GCRT, 0, NotSerialized) {
Local0 = \TCRT
if (Local0 > 0) {
Return (Local0)
}
Return (127)
}
/* Get passive temperature in degree celsius */
Method (GPSV, 0, NotSerialized) {
Local0 = \TPSV
if (Local0 > 0) {
Return (Local0)
}
Return (95)
}
Method (_CRT, 0, NotSerialized) {
Return (C2K (GCRT ()))
}
Method (_PSV, 0, NotSerialized) {
Return (C2K (GPSV ()))
}
Method(_TMP) {
#if defined(EC_LENOVO_H8_ME_WORKAROUND)
/* Avoid tripping alarm if ME isn't booted at all yet */
If (!MEB1 && \_SB.PCI0.LPCB.EC.TMP0 == 128) {
Return (C2K(40))
}
MEB1 = 1
#endif
Return (C2K(\_SB.PCI0.LPCB.EC.TMP0))
}
Method (_AC0) {
Local0 = GPSV ()
/* Active fan 10 degree below passive threshold */
Local0 -= 10
If (\FLVL) {
/* Turn of 5 degree below trip point */
Local0 -= 5
}
Return (C2K (Local0))
}
Name (_AL0, Package () { FAN })
PowerResource (FPWR, 0, 0)
{
/*
* WINDOWS BUG: Don't read from EmbeddedControl
* in PowerResources. Use system-memory instead!
*/
Method (_STA) {
Return (\FLVL)
}
/*
* WINDOWS BUG: Don't write to FIELD elements located
* in another ACPI scope. Call a method that does it!
*/
Method (_ON) {
\_SB.PCI0.LPCB.EC.FANE(1)
\FLVL = 1
Notify (\_TZ.THM0, NOTIFY_TZ_TRIPPTCHG)
}
Method (_OFF) {
\_SB.PCI0.LPCB.EC.FANE(0)
\FLVL = 0
Notify (\_TZ.THM0, NOTIFY_TZ_TRIPPTCHG)
}
}
Device (FAN)
{
Name (_HID, EISAID ("PNP0C0B"))
Name (_PR0, Package () { FPWR })
}
}
ThermalZone(THM1)
{
/* Thermal zone polling frequency: 10 seconds */
Name (_TZP, 100)
/* Thermal sampling period for passive cooling: 10 seconds */
Name (_TSP, 100)
/* Coefficients for passive cooling */
Name (_TC1, 0x02)
Name (_TC2, 0x05)
/* Processors used for passive cooling */
Method (_PSL, 0, Serialized)
{
Return (\PPKG ())
}
Method (_CRT, 0, NotSerialized) {
Return (C2K (99))
}
Method (_PSV, 0, NotSerialized) {
Return (C2K (94))
}
Method(_TMP) {
#if defined(EC_LENOVO_H8_ME_WORKAROUND)
/* Avoid tripping alarm if ME isn't booted at all yet */
If (!MEB2 && \_SB.PCI0.LPCB.EC.TMP1 == 128) {
Return (C2K(40))
}
MEB2 = 1
#endif
Return (C2K(\_SB.PCI0.LPCB.EC.TMP1))
}
}
}