/* SPDX-License-Identifier: GPL-2.0-only */ #include 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 (LLessEqual(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) { Store (\TCRT, Local0) if (Local0 > 0) { Return (Local0) } Return (127) } /* Get passive temperature in degree celsius */ Method (GPSV, 0, NotSerialized) { Store (\TPSV, Local0) 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)) } Store (1, MEB1) #endif Return (C2K(\_SB.PCI0.LPCB.EC.TMP0)) } Method (_AC0) { Store (GPSV (), Local0) /* 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(One) Store (One, \FLVL) Notify (\_TZ.THM0, NOTIFY_TZ_TRIPPTCHG) } Method (_OFF) { \_SB.PCI0.LPCB.EC.FANE(Zero) Store (Zero, \FLVL) 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)) } Store (1, MEB2) #endif Return (C2K(\_SB.PCI0.LPCB.EC.TMP1)) } } }