blob: 9b4cffebfaf18ea96a79d316686781962bfe30c9 [file] [log] [blame]
Angel Pons58c0d322020-04-05 13:20:46 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Marc Jones07cf24c2015-06-09 14:42:55 -06002
Arthur Heymansf7d1c8d2018-11-28 12:22:59 +01003/* Generated by acpigen */
4External (\PPKG, MethodObj)
5
Matt DeVillier45e11aa2016-12-18 11:59:58 -06006#include <variant/thermal.h>
Marc Jonesd8621212015-06-09 21:18:38 -06007
Marc Jones07cf24c2015-06-09 14:42:55 -06008// Thermal Zone
9
Martin Rotha50b1f92018-05-06 18:13:19 -050010#define HAVE_THERMALZONE
Marc Jones07cf24c2015-06-09 14:42:55 -060011Scope (\_TZ)
12{
13 ThermalZone (THRM)
14 {
15 Name (_TC1, 0x02)
16 Name (_TC2, 0x05)
17
18 // Thermal zone polling frequency: 10 seconds
19 Name (_TZP, 100)
20
21 // Thermal sampling period for passive cooling: 2 seconds
22 Name (_TSP, 20)
23
24 // Convert from Degrees C to 1/10 Kelvin for ACPI
25 Method (CTOK, 1) {
26 // 10th of Degrees C
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020027 Local0 = Arg0 * 10
Marc Jones07cf24c2015-06-09 14:42:55 -060028
29 // Convert to Kelvin
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020030 Local0 += 2732
Marc Jones07cf24c2015-06-09 14:42:55 -060031
32 Return (Local0)
33 }
34
35 // Threshold for OS to shutdown
36 Method (_CRT, 0, Serialized)
37 {
38 Return (CTOK (\TCRT))
39 }
40
41 // Threshold for passive cooling
42 Method (_PSV, 0, Serialized)
43 {
44 Return (CTOK (\TPSV))
45 }
46
47 // Processors used for passive cooling
48 Method (_PSL, 0, Serialized)
49 {
50 Return (\PPKG ())
51 }
52
Marc Jonesd8621212015-06-09 21:18:38 -060053 Method (TCHK, 0, Serialized)
Marc Jones07cf24c2015-06-09 14:42:55 -060054 {
55 // Get Temperature from TIN# set in NVS
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020056 Local0 = \_SB.PCI0.LPCB.EC0.TINS (TMPS)
Marc Jones07cf24c2015-06-09 14:42:55 -060057
58 // Check for sensor not calibrated
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020059 If (Local0 == \_SB.PCI0.LPCB.EC0.TNCA) {
Marc Jones07cf24c2015-06-09 14:42:55 -060060 Return (CTOK(0))
61 }
62
63 // Check for sensor not present
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020064 If (Local0 == \_SB.PCI0.LPCB.EC0.TNPR) {
Marc Jones07cf24c2015-06-09 14:42:55 -060065 Return (CTOK(0))
66 }
67
68 // Check for sensor not powered
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020069 If (Local0 == \_SB.PCI0.LPCB.EC0.TNOP) {
Marc Jones07cf24c2015-06-09 14:42:55 -060070 Return (CTOK(0))
71 }
72
73 // Check for sensor bad reading
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020074 If (Local0 == \_SB.PCI0.LPCB.EC0.TBAD) {
Marc Jones07cf24c2015-06-09 14:42:55 -060075 Return (CTOK(0))
76 }
77
78 // Adjust by offset to get Kelvin
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020079 Local0 += \_SB.PCI0.LPCB.EC0.TOFS
Marc Jones07cf24c2015-06-09 14:42:55 -060080
81 // Convert to 1/10 Kelvin
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020082 Local0 *= 10
Marc Jones07cf24c2015-06-09 14:42:55 -060083 Return (Local0)
84 }
85
Marc Jonesd8621212015-06-09 21:18:38 -060086 Method (_TMP, 0, Serialized)
87 {
88 // Get temperature from EC in deci-kelvin
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020089 Local0 = TCHK ()
Marc Jonesd8621212015-06-09 21:18:38 -060090
91 // Critical temperature in deci-kelvin
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020092 Local1 = CTOK (\TCRT)
Marc Jonesd8621212015-06-09 21:18:38 -060093
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +020094 If (Local0 >= Local1) {
Felix Singer3884a412021-12-28 17:01:28 +010095 Printf ("CRITICAL TEMPERATURE: %o", Local0)
Marc Jonesd8621212015-06-09 21:18:38 -060096
97 // Wait 1 second for EC to re-poll
98 Sleep (1000)
99
100 // Re-read temperature from EC
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +0200101 Local0 = TCHK ()
Marc Jonesd8621212015-06-09 21:18:38 -0600102
Felix Singer3884a412021-12-28 17:01:28 +0100103 Printf ("RE-READ TEMPERATURE: %o", Local0)
Marc Jonesd8621212015-06-09 21:18:38 -0600104 }
105
106 Return (Local0)
107 }
108
Marc Jones07cf24c2015-06-09 14:42:55 -0600109 /* CTDP Down */
110 Method (_AC0) {
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +0200111 If (\FLVL <= 0) {
Marc Jonesd8621212015-06-09 21:18:38 -0600112 Return (CTOK (CTL_TDP_THRESHOLD_OFF))
Marc Jones07cf24c2015-06-09 14:42:55 -0600113 } Else {
Marc Jonesd8621212015-06-09 21:18:38 -0600114 Return (CTOK (CTL_TDP_THRESHOLD_ON))
Marc Jones07cf24c2015-06-09 14:42:55 -0600115 }
116 }
117
118 /* CTDP Nominal */
119 Method (_AC1) {
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +0200120 If (\FLVL <= 1) {
Marc Jonesd8621212015-06-09 21:18:38 -0600121 Return (CTOK (CTL_TDP_THRESHILD_NORMAL))
Marc Jones07cf24c2015-06-09 14:42:55 -0600122 } Else {
Marc Jonesd8621212015-06-09 21:18:38 -0600123 Return (CTOK (CTL_TDP_THRESHILD_NORMAL))
Marc Jones07cf24c2015-06-09 14:42:55 -0600124 }
125 }
126
127 Name (_AL0, Package () { TDP0 })
128 Name (_AL1, Package () { TDP1 })
129
130 PowerResource (TNP0, 0, 0)
131 {
132 Method (_STA) {
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +0200133 If (\FLVL <= 0) {
Felix Singerdfbb6342022-12-26 08:39:35 +0100134 Return (1)
Marc Jones07cf24c2015-06-09 14:42:55 -0600135 } Else {
136 Return (Zero)
137 }
138 }
139 Method (_ON) {
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +0200140 \FLVL = 0
Marc Jones07cf24c2015-06-09 14:42:55 -0600141
142 /* Enable Power Limit */
Marc Jonesd8621212015-06-09 21:18:38 -0600143 \_SB.PCI0.MCHC.CTLE (CTL_TDP_POWER_LIMIT)
Marc Jones07cf24c2015-06-09 14:42:55 -0600144
145 Notify (\_TZ.THRM, 0x81)
146 }
147 Method (_OFF) {
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +0200148 \FLVL = 1
Marc Jones07cf24c2015-06-09 14:42:55 -0600149
150 /* Disable Power Limit */
151 \_SB.PCI0.MCHC.CTLD ()
152
153 Notify (\_TZ.THRM, 0x81)
154 }
155 }
156
157 PowerResource (TNP1, 0, 0)
158 {
159 Method (_STA) {
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +0200160 If (\FLVL <= 1) {
Felix Singerdfbb6342022-12-26 08:39:35 +0100161 Return (1)
Marc Jones07cf24c2015-06-09 14:42:55 -0600162 } Else {
163 Return (Zero)
164 }
165 }
166 Method (_ON) {
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +0200167 \FLVL = 1
Marc Jones07cf24c2015-06-09 14:42:55 -0600168 Notify (\_TZ.THRM, 0x81)
169 }
170 Method (_OFF) {
Elyes HAOUAS9c19a4f2020-10-08 09:30:03 +0200171 \FLVL = 1
Marc Jones07cf24c2015-06-09 14:42:55 -0600172 Notify (\_TZ.THRM, 0x81)
173 }
174 }
175
176 Device (TDP0)
177 {
178 Name (_HID, EISAID ("PNP0C0B"))
179 Name (_UID, 0)
180 Name (_PR0, Package () { TNP0 })
181 }
182
183 Device (TDP1)
184 {
185 Name (_HID, EISAID ("PNP0C0B"))
186 Name (_UID, 1)
187 Name (_PR0, Package () { TNP1 })
188 }
189 }
190}