blob: 1edaafd84e5ea2f5400b40b78d7c8dd88d7c1567 [file] [log] [blame]
Angel Ponsd32b6de2020-04-03 01:23:13 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Stefan Reinauere1ae4b22012-04-27 23:20:58 +02002
3// Thermal Zone
4
Arthur Heymans04008a92018-11-28 12:13:54 +01005External (\PPKG, MethodObj)
6
Stefan Reinauere1ae4b22012-04-27 23:20:58 +02007Scope (\_TZ)
8{
9 ThermalZone (THRM)
10 {
11 Name (_TC1, 0x02)
12 Name (_TC2, 0x05)
13
14 // Thermal zone polling frequency: 10 seconds
15 Name (_TZP, 100)
16
17 // Thermal sampling period for passive cooling: 2 seconds
18 Name (_TSP, 20)
19
20 // Convert from Degrees C to 1/10 Kelvin for ACPI
21 Method (CTOK, 1) {
22 // 10th of Degrees C
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +020023 Local0 = Arg0 * 10
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020024
25 // Convert to Kelvin
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +020026 Local0 += 2732
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020027
28 Return (Local0)
29 }
30
31 // Threshold for OS to shutdown
32 Method (_CRT, 0, Serialized)
33 {
34 Return (CTOK (\TCRT))
35 }
36
37 // Threshold for passive cooling
38 Method (_PSV, 0, Serialized)
39 {
40 Return (CTOK (\TPSV))
41 }
42
43 // Processors used for passive cooling
44 Method (_PSL, 0, Serialized)
45 {
46 Return (\PPKG ())
47 }
48
49 Method (_TMP, 0, Serialized)
50 {
51 // Get CPU Temperature from PECI via SuperIO TMPIN3
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +020052 Local0 = \_SB.PCI0.LPCB.SIO.ENVC.TIN3
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020053
54 // Check for invalid readings
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +020055 If ((Local0 == 255) || (Local0 == 0)) {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020056 Return (CTOK (\F2ON))
57 }
58
59 // PECI raw value is an offset from Tj_max
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +020060 Local1 = 255 - Local0
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020061
62 // Handle values greater than Tj_max
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +020063 If (Local1 >= \TMAX) {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020064 Return (CTOK (\TMAX))
65 }
66
67 // Subtract from Tj_max to get temperature
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +020068 Local0 = \TMAX - Local1
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020069 Return (CTOK (Local0))
70 }
71
72 Method (_AC0) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +020073 If (\FLVL <= 0) {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020074 Return (CTOK (\F0OF))
75 } Else {
76 Return (CTOK (\F0ON))
77 }
78 }
79
80 Method (_AC1) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +020081 If (\FLVL <= 1) {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020082 Return (CTOK (\F1OF))
83 } Else {
84 Return (CTOK (\F1ON))
85 }
86 }
87
88 Method (_AC2) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +020089 If (\FLVL <= 2) {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020090 Return (CTOK (\F2OF))
91 } Else {
92 Return (CTOK (\F2ON))
93 }
94 }
95
96 Method (_AC3) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +020097 If (\FLVL <= 3) {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020098 Return (CTOK (\F3OF))
99 } Else {
100 Return (CTOK (\F3ON))
101 }
102 }
103
104 Method (_AC4) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200105 If (\FLVL <= 4) {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200106 Return (CTOK (\F4OF))
107 } Else {
108 Return (CTOK (\F4ON))
109 }
110 }
111
112 Name (_AL0, Package () { FAN0 })
113 Name (_AL1, Package () { FAN1 })
114 Name (_AL2, Package () { FAN2 })
115 Name (_AL3, Package () { FAN3 })
116 Name (_AL4, Package () { FAN4 })
117
118 PowerResource (FNP0, 0, 0)
119 {
120 Method (_STA) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200121 If (\FLVL <= 0) {
Felix Singerdfbb6342022-12-26 08:39:35 +0100122 Return (1)
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200123 } Else {
Felix Singerfa06bcb2022-12-26 09:32:47 +0100124 Return (0)
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200125 }
126 }
127 Method (_ON) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200128 \FLVL = 0
129 \_SB.PCI0.LPCB.SIO.ENVC.F3PS = \F0PW
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200130 Notify (\_TZ.THRM, 0x81)
131 }
132 Method (_OFF) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200133 \FLVL = 1
134 \_SB.PCI0.LPCB.SIO.ENVC.F3PS = \F1PW
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200135 Notify (\_TZ.THRM, 0x81)
136 }
137 }
138
139 PowerResource (FNP1, 0, 0)
140 {
141 Method (_STA) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200142 If (\FLVL <= 1) {
Felix Singerdfbb6342022-12-26 08:39:35 +0100143 Return (1)
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200144 } Else {
Felix Singerfa06bcb2022-12-26 09:32:47 +0100145 Return (0)
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200146 }
147 }
148 Method (_ON) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200149 \FLVL = 1
150 \_SB.PCI0.LPCB.SIO.ENVC.F3PS = \F1PW
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200151 Notify (\_TZ.THRM, 0x81)
152 }
153 Method (_OFF) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200154 \FLVL = 2
155 \_SB.PCI0.LPCB.SIO.ENVC.F3PS = \F2PW
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200156 Notify (\_TZ.THRM, 0x81)
157 }
158 }
159
160 PowerResource (FNP2, 0, 0)
161 {
162 Method (_STA) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200163 If (\FLVL <= 2) {
Felix Singerdfbb6342022-12-26 08:39:35 +0100164 Return (1)
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200165 } Else {
Felix Singerfa06bcb2022-12-26 09:32:47 +0100166 Return (0)
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200167 }
168 }
169 Method (_ON) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200170 \FLVL = 2
171 \_SB.PCI0.LPCB.SIO.ENVC.F3PS = \F2PW
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200172 Notify (\_TZ.THRM, 0x81)
173 }
174 Method (_OFF) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200175 \FLVL = 3
176 \_SB.PCI0.LPCB.SIO.ENVC.F3PS = \F3PW
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200177 Notify (\_TZ.THRM, 0x81)
178 }
179 }
180
181 PowerResource (FNP3, 0, 0)
182 {
183 Method (_STA) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200184 If (\FLVL <= 3) {
Felix Singerdfbb6342022-12-26 08:39:35 +0100185 Return (1)
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200186 } Else {
Felix Singerfa06bcb2022-12-26 09:32:47 +0100187 Return (0)
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200188 }
189 }
190 Method (_ON) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200191 \FLVL = 3
192 \_SB.PCI0.LPCB.SIO.ENVC.F3PS = \F3PW
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200193 Notify (\_TZ.THRM, 0x81)
194 }
195 Method (_OFF) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200196 \FLVL = 4
197 \_SB.PCI0.LPCB.SIO.ENVC.F3PS = \F4PW
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200198 Notify (\_TZ.THRM, 0x81)
199 }
200 }
201
202 PowerResource (FNP4, 0, 0)
203 {
204 Method (_STA) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200205 If (\FLVL <= 4) {
Felix Singerdfbb6342022-12-26 08:39:35 +0100206 Return (1)
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200207 } Else {
Felix Singerfa06bcb2022-12-26 09:32:47 +0100208 Return (0)
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200209 }
210 }
211 Method (_ON) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200212 \FLVL = 4
213 \_SB.PCI0.LPCB.SIO.ENVC.F3PS = \F4PW
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200214 Notify (\_TZ.THRM, 0x81)
215 }
216 Method (_OFF) {
Elyes HAOUAS38eaf3e2020-10-08 10:10:38 +0200217 \FLVL = 4
218 \_SB.PCI0.LPCB.SIO.ENVC.F3PS = \F4PW
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200219 Notify (\_TZ.THRM, 0x81)
220 }
221 }
222
223 Device (FAN0)
224 {
225 Name (_HID, EISAID ("PNP0C0B"))
226 Name (_UID, 0)
227 Name (_PR0, Package () { FNP0 })
228 }
229
230 Device (FAN1)
231 {
232 Name (_HID, EISAID ("PNP0C0B"))
233 Name (_UID, 1)
234 Name (_PR0, Package () { FNP1 })
235 }
236
237 Device (FAN2)
238 {
239 Name (_HID, EISAID ("PNP0C0B"))
240 Name (_UID, 2)
241 Name (_PR0, Package () { FNP2 })
242 }
243
244 Device (FAN3)
245 {
246 Name (_HID, EISAID ("PNP0C0B"))
247 Name (_UID, 3)
248 Name (_PR0, Package () { FNP3 })
249 }
250
251 Device (FAN4)
252 {
253 Name (_HID, EISAID ("PNP0C0B"))
254 Name (_UID, 4)
255 Name (_PR0, Package () { FNP4 })
256 }
257 }
258}