blob: 6115eb687b9b0315075b09b8005ad007c8283c46 [file] [log] [blame]
Angel Pons210a0082020-04-02 23:48:24 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Martin Rothedb937a2016-01-12 16:17:44 -07002
Patrick Rudolph0709dc02017-08-27 17:46:52 +02003#include <arch/x86/acpi/statdef.asl>
4
Sven Schnelleb641e982011-03-07 09:00:50 +00005Scope(\_TZ)
6{
Elyes HAOUAS2526fd42018-05-22 12:29:05 +02007#if defined(EC_LENOVO_H8_ME_WORKAROUND)
Vladimir Serbinenkoe0ceac32014-07-29 00:51:31 +02008 Name (MEB1, 0)
9 Name (MEB2, 0)
Vladimir Serbinenko26419282013-06-07 01:34:06 +020010#endif
11
Sven Schnelleb641e982011-03-07 09:00:50 +000012 Method(C2K, 1, NotSerialized)
13 {
Felix Singer32283a82022-01-01 23:34:26 +010014 Local0 = Arg0 * 10
Felix Singera2ad07d2021-12-30 01:46:55 +010015 Local0 += 2732
Felix Singer5c8a94a2022-12-12 00:18:26 +010016 if (Local0 <= 2732) {
Elyes HAOUASb9331092016-09-05 19:55:34 +020017 Return (3000)
Sven Schnelleb641e982011-03-07 09:00:50 +000018 }
19
Felix Singerc2533682022-01-02 01:56:53 +010020 if (Local0 > 4012) {
Elyes HAOUASb9331092016-09-05 19:55:34 +020021 Return (3000)
Sven Schnelleb641e982011-03-07 09:00:50 +000022 }
23 Return (Local0)
24 }
25
26 ThermalZone(THM0)
27 {
Patrick Rudolph9c7ce282017-06-11 18:19:45 +020028 /* Thermal zone polling frequency: 10 seconds */
29 Name (_TZP, 100)
30
31 /* Thermal sampling period for passive cooling: 10 seconds */
32 Name (_TSP, 100)
33
Patrick Rudolph3ab13a82017-08-27 16:11:55 +020034 /* Coefficients for passive cooling */
35 Name (_TC1, 0x02)
36 Name (_TC2, 0x05)
37
Arthur Heymans04008a92018-11-28 12:13:54 +010038/* Generated by acpigen */
Patrick Rudolph3ab13a82017-08-27 16:11:55 +020039External (\PPKG, MethodObj)
Arthur Heymans04008a92018-11-28 12:13:54 +010040
Patrick Rudolph3ab13a82017-08-27 16:11:55 +020041 /* Processors used for passive cooling */
42 Method (_PSL, 0, Serialized)
43 {
44 Return (\PPKG ())
Sven Schnelleb641e982011-03-07 09:00:50 +000045 }
Patrick Rudolph9c7ce282017-06-11 18:19:45 +020046
Patrick Rudolph0709dc02017-08-27 17:46:52 +020047 /* Get critical temperature in degree celsius */
48 Method (GCRT, 0, NotSerialized) {
Felix Singerf45a6c22022-12-12 04:54:01 +010049 Local0 = \TCRT
Felix Singerc2533682022-01-02 01:56:53 +010050 if (Local0 > 0) {
Patrick Rudolph0709dc02017-08-27 17:46:52 +020051 Return (Local0)
Patrick Rudolph3ab13a82017-08-27 16:11:55 +020052 }
Patrick Rudolph0709dc02017-08-27 17:46:52 +020053 Return (127)
54 }
55
56 /* Get passive temperature in degree celsius */
57 Method (GPSV, 0, NotSerialized) {
Felix Singerf45a6c22022-12-12 04:54:01 +010058 Local0 = \TPSV
Felix Singerc2533682022-01-02 01:56:53 +010059 if (Local0 > 0) {
Patrick Rudolph0709dc02017-08-27 17:46:52 +020060 Return (Local0)
61 }
62 Return (95)
63 }
64
65 Method (_CRT, 0, NotSerialized) {
66 Return (C2K (GCRT ()))
Patrick Rudolph3ab13a82017-08-27 16:11:55 +020067 }
68
69 Method (_PSV, 0, NotSerialized) {
Patrick Rudolph0709dc02017-08-27 17:46:52 +020070 Return (C2K (GPSV ()))
Patrick Rudolph9c7ce282017-06-11 18:19:45 +020071 }
72
Sven Schnelleb641e982011-03-07 09:00:50 +000073 Method(_TMP) {
Elyes HAOUAS2526fd42018-05-22 12:29:05 +020074#if defined(EC_LENOVO_H8_ME_WORKAROUND)
Elyes HAOUASb9331092016-09-05 19:55:34 +020075 /* Avoid tripping alarm if ME isn't booted at all yet */
Felix Singer95bfa032022-01-02 00:48:19 +010076 If (!MEB1 && \_SB.PCI0.LPCB.EC.TMP0 == 128) {
Elyes HAOUASb9331092016-09-05 19:55:34 +020077 Return (C2K(40))
78 }
Felix Singerf45a6c22022-12-12 04:54:01 +010079 MEB1 = 1
Vladimir Serbinenko26419282013-06-07 01:34:06 +020080#endif
Sven Schnelleb641e982011-03-07 09:00:50 +000081 Return (C2K(\_SB.PCI0.LPCB.EC.TMP0))
82 }
Patrick Rudolph0709dc02017-08-27 17:46:52 +020083
84 Method (_AC0) {
Felix Singerf45a6c22022-12-12 04:54:01 +010085 Local0 = GPSV ()
Patrick Rudolph0709dc02017-08-27 17:46:52 +020086
87 /* Active fan 10 degree below passive threshold */
Felix Singer2e4cc9b2021-12-30 01:01:38 +010088 Local0 -= 10
Patrick Rudolph0709dc02017-08-27 17:46:52 +020089
Patrick Rudolph9b8ef112017-11-13 19:00:11 +010090 If (\FLVL) {
Patrick Rudolph0709dc02017-08-27 17:46:52 +020091 /* Turn of 5 degree below trip point */
Felix Singer2e4cc9b2021-12-30 01:01:38 +010092 Local0 -= 5
Patrick Rudolph0709dc02017-08-27 17:46:52 +020093 }
94
95 Return (C2K (Local0))
96 }
97
98 Name (_AL0, Package () { FAN })
99
100 PowerResource (FPwR, 0, 0)
101 {
Patrick Rudolph9b8ef112017-11-13 19:00:11 +0100102 /*
103 * WINDOWS BUG: Don't read from EmbeddedControl
104 * in PowerResources. Use system-memory instead!
105 */
Patrick Rudolph0709dc02017-08-27 17:46:52 +0200106 Method (_STA) {
Patrick Rudolph9b8ef112017-11-13 19:00:11 +0100107 Return (\FLVL)
Patrick Rudolph0709dc02017-08-27 17:46:52 +0200108 }
109
Patrick Rudolph9b8ef112017-11-13 19:00:11 +0100110 /*
111 * WINDOWS BUG: Don't write to FIELD elements located
112 * in another ACPI scope. Call a method that does it!
113 */
Patrick Rudolph0709dc02017-08-27 17:46:52 +0200114 Method (_ON) {
Felix Singerca4b5872022-12-26 08:17:06 +0100115 \_SB.PCI0.LPCB.EC.FANE(1)
116 \FLVL = 1
Patrick Rudolph0709dc02017-08-27 17:46:52 +0200117 Notify (\_TZ.THM0, NOTIFY_TZ_TRIPPTCHG)
118 }
119
120 Method (_OFF) {
Patrick Rudolph9b8ef112017-11-13 19:00:11 +0100121 \_SB.PCI0.LPCB.EC.FANE(Zero)
Felix Singerf45a6c22022-12-12 04:54:01 +0100122 \FLVL = Zero
Patrick Rudolph0709dc02017-08-27 17:46:52 +0200123 Notify (\_TZ.THM0, NOTIFY_TZ_TRIPPTCHG)
124 }
125 }
126
127 Device (FAN)
128 {
129 Name (_HID, EISAID ("PNP0C0B"))
130 Name (_PR0, Package () { FPwR })
131 }
Sven Schnelleb641e982011-03-07 09:00:50 +0000132 }
Sven Schnelle85e666d2011-03-07 09:09:51 +0000133
134 ThermalZone(THM1)
135 {
Patrick Rudolph9c7ce282017-06-11 18:19:45 +0200136 /* Thermal zone polling frequency: 10 seconds */
137 Name (_TZP, 100)
138
139 /* Thermal sampling period for passive cooling: 10 seconds */
140 Name (_TSP, 100)
141
Patrick Rudolph3ab13a82017-08-27 16:11:55 +0200142 /* Coefficients for passive cooling */
143 Name (_TC1, 0x02)
144 Name (_TC2, 0x05)
145
146 /* Processors used for passive cooling */
147 Method (_PSL, 0, Serialized)
148 {
149 Return (\PPKG ())
Sven Schnelle85e666d2011-03-07 09:09:51 +0000150 }
151
Patrick Rudolph3ab13a82017-08-27 16:11:55 +0200152 Method (_CRT, 0, NotSerialized) {
153 Return (C2K (99))
154 }
155
156 Method (_PSV, 0, NotSerialized) {
157 Return (C2K (94))
Sven Schnelle85e666d2011-03-07 09:09:51 +0000158 }
159
160 Method(_TMP) {
Elyes HAOUAS2526fd42018-05-22 12:29:05 +0200161#if defined(EC_LENOVO_H8_ME_WORKAROUND)
Elyes HAOUASb9331092016-09-05 19:55:34 +0200162 /* Avoid tripping alarm if ME isn't booted at all yet */
Felix Singer95bfa032022-01-02 00:48:19 +0100163 If (!MEB2 && \_SB.PCI0.LPCB.EC.TMP1 == 128) {
Elyes HAOUASb9331092016-09-05 19:55:34 +0200164 Return (C2K(40))
165 }
Felix Singerf45a6c22022-12-12 04:54:01 +0100166 MEB2 = 1
Vladimir Serbinenkoe0ceac32014-07-29 00:51:31 +0200167#endif
Sven Schnelle85e666d2011-03-07 09:09:51 +0000168 Return (C2K(\_SB.PCI0.LPCB.EC.TMP1))
169 }
170 }
Sven Schnelleb641e982011-03-07 09:00:50 +0000171}