/** @file Copyright (c) 2021, Baruch Binyamin Doron SPDX-License-Identifier: BSD-2-Clause-Patent **/ Scope (_TZ) { Name (CRT0, 0) Name (PSV0, 0) ThermalZone (TZ01) { Method (_TMP, 0, Serialized) // _TMP: Temperature { #ifdef LGMR_ENABLED Local0 = \_SB.PCI0.LPCB.EC0.MS0T // Local1 = \_SB.PCI0.LPCB.EC0.MCSS Local2 = \_SB.PCI0.LPCB.EC0.MOSD #else Local0 = \_SB.PCI0.LPCB.EC0.ES0T // Local1 = \_SB.PCI0.LPCB.EC0.ESSF // "MCSS": Considering neighbouring bits, likely // "ESSF" in thermals, not "ECSS" in notify Local2 = \_SB.PCI0.LPCB.EC0.EOSD #endif If (Local2) // Thermal trip { If (Local0 <= CRT0) { Local0 = (CRT0 + 2) } } Return (C2K (Local0)) } Method (_CRT, 0, Serialized) // _CRT: Critical Temperature { #ifdef LGMR_ENABLED Local0 = \_SB.PCI0.LPCB.EC0.MSC0 #else Local0 = \_SB.PCI0.LPCB.EC0.ESC0 #endif If ((Local0 >= 128) || (Local0 < 30)) { Local0 = 120 } CRT0 = Local0 Return (C2K (Local0)) } Method (_SCP, 1, Serialized) // _SCP: Set Cooling Policy { If (ECOK) { \_SB.PCI0.LPCB.EC0.SCPM = Arg0 } Else { /* MBEC: Called SMI function 0x12 */ // \_SB.PCI0.LPCB.EC0.MBEC (0x90, 0xFE, Arg0) // SCPM = Arg0 } } Method (_PSV, 0, Serialized) // _PSV: Passive Temperature { #ifdef LGMR_ENABLED Local0 = \_SB.PCI0.LPCB.EC0.MSP0 #else Local0 = \_SB.PCI0.LPCB.EC0.ESP0 #endif If ((Local0 >= 128) || (Local0 < 30)) { Local0 = 30 } PSV0 = Local0 Return (C2K (Local0)) } } ThermalZone (TZ00) { Method (_TMP, 0, Serialized) // _TMP: Temperature { #ifdef LGMR_ENABLED Local0 = \_SB.PCI0.LPCB.EC0.MS1T #else Local0 = \_SB.PCI0.LPCB.EC0.ES1T #endif Return (C2K (Local0)) } Method (_CRT, 0, Serialized) // _CRT: Critical Temperature { #ifdef LGMR_ENABLED Local0 = \_SB.PCI0.LPCB.EC0.MSC1 #else Local0 = \_SB.PCI0.LPCB.EC0.ESC1 #endif If ((Local0 >= 128) || (Local0 < 30)) { Local0 = 120 } Return (C2K (Local0)) } } Method (C2K, 1, NotSerialized) { Local0 = Arg0 If ((Local0 >= 127) || (Local0 <= 16)) { Local0 = 30 } Local0 = ((Local0 * 10) + 2732) // Celsius to Kelvin Return (Local0) } }