hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/** @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)
  }
}