Angel Pons | 210a008 | 2020-04-02 23:48:24 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
Martin Roth | edb937a | 2016-01-12 16:17:44 -0700 | [diff] [blame] | 2 | |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 3 | #include <arch/x86/acpi/statdef.asl> |
| 4 | |
Sven Schnelle | b641e98 | 2011-03-07 09:00:50 +0000 | [diff] [blame] | 5 | Scope(\_TZ) |
| 6 | { |
Elyes HAOUAS | 2526fd4 | 2018-05-22 12:29:05 +0200 | [diff] [blame] | 7 | #if defined(EC_LENOVO_H8_ME_WORKAROUND) |
Vladimir Serbinenko | e0ceac3 | 2014-07-29 00:51:31 +0200 | [diff] [blame] | 8 | Name (MEB1, 0) |
| 9 | Name (MEB2, 0) |
Vladimir Serbinenko | 2641928 | 2013-06-07 01:34:06 +0200 | [diff] [blame] | 10 | #endif |
| 11 | |
Sven Schnelle | b641e98 | 2011-03-07 09:00:50 +0000 | [diff] [blame] | 12 | Method(C2K, 1, NotSerialized) |
| 13 | { |
Felix Singer | 32283a8 | 2022-01-01 23:34:26 +0100 | [diff] [blame] | 14 | Local0 = Arg0 * 10 |
Felix Singer | a2ad07d | 2021-12-30 01:46:55 +0100 | [diff] [blame] | 15 | Local0 += 2732 |
Felix Singer | 5c8a94a | 2022-12-12 00:18:26 +0100 | [diff] [blame] | 16 | if (Local0 <= 2732) { |
Elyes HAOUAS | b933109 | 2016-09-05 19:55:34 +0200 | [diff] [blame] | 17 | Return (3000) |
Sven Schnelle | b641e98 | 2011-03-07 09:00:50 +0000 | [diff] [blame] | 18 | } |
| 19 | |
Felix Singer | c253368 | 2022-01-02 01:56:53 +0100 | [diff] [blame] | 20 | if (Local0 > 4012) { |
Elyes HAOUAS | b933109 | 2016-09-05 19:55:34 +0200 | [diff] [blame] | 21 | Return (3000) |
Sven Schnelle | b641e98 | 2011-03-07 09:00:50 +0000 | [diff] [blame] | 22 | } |
| 23 | Return (Local0) |
| 24 | } |
| 25 | |
| 26 | ThermalZone(THM0) |
| 27 | { |
Patrick Rudolph | 9c7ce28 | 2017-06-11 18:19:45 +0200 | [diff] [blame] | 28 | /* 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 Rudolph | 3ab13a8 | 2017-08-27 16:11:55 +0200 | [diff] [blame] | 34 | /* Coefficients for passive cooling */ |
| 35 | Name (_TC1, 0x02) |
| 36 | Name (_TC2, 0x05) |
| 37 | |
Arthur Heymans | 04008a9 | 2018-11-28 12:13:54 +0100 | [diff] [blame] | 38 | /* Generated by acpigen */ |
Patrick Rudolph | 3ab13a8 | 2017-08-27 16:11:55 +0200 | [diff] [blame] | 39 | External (\PPKG, MethodObj) |
Arthur Heymans | 04008a9 | 2018-11-28 12:13:54 +0100 | [diff] [blame] | 40 | |
Patrick Rudolph | 3ab13a8 | 2017-08-27 16:11:55 +0200 | [diff] [blame] | 41 | /* Processors used for passive cooling */ |
| 42 | Method (_PSL, 0, Serialized) |
| 43 | { |
| 44 | Return (\PPKG ()) |
Sven Schnelle | b641e98 | 2011-03-07 09:00:50 +0000 | [diff] [blame] | 45 | } |
Patrick Rudolph | 9c7ce28 | 2017-06-11 18:19:45 +0200 | [diff] [blame] | 46 | |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 47 | /* Get critical temperature in degree celsius */ |
| 48 | Method (GCRT, 0, NotSerialized) { |
Felix Singer | f45a6c2 | 2022-12-12 04:54:01 +0100 | [diff] [blame] | 49 | Local0 = \TCRT |
Felix Singer | c253368 | 2022-01-02 01:56:53 +0100 | [diff] [blame] | 50 | if (Local0 > 0) { |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 51 | Return (Local0) |
Patrick Rudolph | 3ab13a8 | 2017-08-27 16:11:55 +0200 | [diff] [blame] | 52 | } |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 53 | Return (127) |
| 54 | } |
| 55 | |
| 56 | /* Get passive temperature in degree celsius */ |
| 57 | Method (GPSV, 0, NotSerialized) { |
Felix Singer | f45a6c2 | 2022-12-12 04:54:01 +0100 | [diff] [blame] | 58 | Local0 = \TPSV |
Felix Singer | c253368 | 2022-01-02 01:56:53 +0100 | [diff] [blame] | 59 | if (Local0 > 0) { |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 60 | Return (Local0) |
| 61 | } |
| 62 | Return (95) |
| 63 | } |
| 64 | |
| 65 | Method (_CRT, 0, NotSerialized) { |
| 66 | Return (C2K (GCRT ())) |
Patrick Rudolph | 3ab13a8 | 2017-08-27 16:11:55 +0200 | [diff] [blame] | 67 | } |
| 68 | |
| 69 | Method (_PSV, 0, NotSerialized) { |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 70 | Return (C2K (GPSV ())) |
Patrick Rudolph | 9c7ce28 | 2017-06-11 18:19:45 +0200 | [diff] [blame] | 71 | } |
| 72 | |
Sven Schnelle | b641e98 | 2011-03-07 09:00:50 +0000 | [diff] [blame] | 73 | Method(_TMP) { |
Elyes HAOUAS | 2526fd4 | 2018-05-22 12:29:05 +0200 | [diff] [blame] | 74 | #if defined(EC_LENOVO_H8_ME_WORKAROUND) |
Elyes HAOUAS | b933109 | 2016-09-05 19:55:34 +0200 | [diff] [blame] | 75 | /* Avoid tripping alarm if ME isn't booted at all yet */ |
Felix Singer | 95bfa03 | 2022-01-02 00:48:19 +0100 | [diff] [blame] | 76 | If (!MEB1 && \_SB.PCI0.LPCB.EC.TMP0 == 128) { |
Elyes HAOUAS | b933109 | 2016-09-05 19:55:34 +0200 | [diff] [blame] | 77 | Return (C2K(40)) |
| 78 | } |
Felix Singer | f45a6c2 | 2022-12-12 04:54:01 +0100 | [diff] [blame] | 79 | MEB1 = 1 |
Vladimir Serbinenko | 2641928 | 2013-06-07 01:34:06 +0200 | [diff] [blame] | 80 | #endif |
Sven Schnelle | b641e98 | 2011-03-07 09:00:50 +0000 | [diff] [blame] | 81 | Return (C2K(\_SB.PCI0.LPCB.EC.TMP0)) |
| 82 | } |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 83 | |
| 84 | Method (_AC0) { |
Felix Singer | f45a6c2 | 2022-12-12 04:54:01 +0100 | [diff] [blame] | 85 | Local0 = GPSV () |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 86 | |
| 87 | /* Active fan 10 degree below passive threshold */ |
Felix Singer | 2e4cc9b | 2021-12-30 01:01:38 +0100 | [diff] [blame] | 88 | Local0 -= 10 |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 89 | |
Patrick Rudolph | 9b8ef11 | 2017-11-13 19:00:11 +0100 | [diff] [blame] | 90 | If (\FLVL) { |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 91 | /* Turn of 5 degree below trip point */ |
Felix Singer | 2e4cc9b | 2021-12-30 01:01:38 +0100 | [diff] [blame] | 92 | Local0 -= 5 |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 93 | } |
| 94 | |
| 95 | Return (C2K (Local0)) |
| 96 | } |
| 97 | |
| 98 | Name (_AL0, Package () { FAN }) |
| 99 | |
| 100 | PowerResource (FPwR, 0, 0) |
| 101 | { |
Patrick Rudolph | 9b8ef11 | 2017-11-13 19:00:11 +0100 | [diff] [blame] | 102 | /* |
| 103 | * WINDOWS BUG: Don't read from EmbeddedControl |
| 104 | * in PowerResources. Use system-memory instead! |
| 105 | */ |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 106 | Method (_STA) { |
Patrick Rudolph | 9b8ef11 | 2017-11-13 19:00:11 +0100 | [diff] [blame] | 107 | Return (\FLVL) |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 108 | } |
| 109 | |
Patrick Rudolph | 9b8ef11 | 2017-11-13 19:00:11 +0100 | [diff] [blame] | 110 | /* |
| 111 | * WINDOWS BUG: Don't write to FIELD elements located |
| 112 | * in another ACPI scope. Call a method that does it! |
| 113 | */ |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 114 | Method (_ON) { |
Felix Singer | ca4b587 | 2022-12-26 08:17:06 +0100 | [diff] [blame^] | 115 | \_SB.PCI0.LPCB.EC.FANE(1) |
| 116 | \FLVL = 1 |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 117 | Notify (\_TZ.THM0, NOTIFY_TZ_TRIPPTCHG) |
| 118 | } |
| 119 | |
| 120 | Method (_OFF) { |
Patrick Rudolph | 9b8ef11 | 2017-11-13 19:00:11 +0100 | [diff] [blame] | 121 | \_SB.PCI0.LPCB.EC.FANE(Zero) |
Felix Singer | f45a6c2 | 2022-12-12 04:54:01 +0100 | [diff] [blame] | 122 | \FLVL = Zero |
Patrick Rudolph | 0709dc0 | 2017-08-27 17:46:52 +0200 | [diff] [blame] | 123 | 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 Schnelle | b641e98 | 2011-03-07 09:00:50 +0000 | [diff] [blame] | 132 | } |
Sven Schnelle | 85e666d | 2011-03-07 09:09:51 +0000 | [diff] [blame] | 133 | |
| 134 | ThermalZone(THM1) |
| 135 | { |
Patrick Rudolph | 9c7ce28 | 2017-06-11 18:19:45 +0200 | [diff] [blame] | 136 | /* 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 Rudolph | 3ab13a8 | 2017-08-27 16:11:55 +0200 | [diff] [blame] | 142 | /* 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 Schnelle | 85e666d | 2011-03-07 09:09:51 +0000 | [diff] [blame] | 150 | } |
| 151 | |
Patrick Rudolph | 3ab13a8 | 2017-08-27 16:11:55 +0200 | [diff] [blame] | 152 | Method (_CRT, 0, NotSerialized) { |
| 153 | Return (C2K (99)) |
| 154 | } |
| 155 | |
| 156 | Method (_PSV, 0, NotSerialized) { |
| 157 | Return (C2K (94)) |
Sven Schnelle | 85e666d | 2011-03-07 09:09:51 +0000 | [diff] [blame] | 158 | } |
| 159 | |
| 160 | Method(_TMP) { |
Elyes HAOUAS | 2526fd4 | 2018-05-22 12:29:05 +0200 | [diff] [blame] | 161 | #if defined(EC_LENOVO_H8_ME_WORKAROUND) |
Elyes HAOUAS | b933109 | 2016-09-05 19:55:34 +0200 | [diff] [blame] | 162 | /* Avoid tripping alarm if ME isn't booted at all yet */ |
Felix Singer | 95bfa03 | 2022-01-02 00:48:19 +0100 | [diff] [blame] | 163 | If (!MEB2 && \_SB.PCI0.LPCB.EC.TMP1 == 128) { |
Elyes HAOUAS | b933109 | 2016-09-05 19:55:34 +0200 | [diff] [blame] | 164 | Return (C2K(40)) |
| 165 | } |
Felix Singer | f45a6c2 | 2022-12-12 04:54:01 +0100 | [diff] [blame] | 166 | MEB2 = 1 |
Vladimir Serbinenko | e0ceac3 | 2014-07-29 00:51:31 +0200 | [diff] [blame] | 167 | #endif |
Sven Schnelle | 85e666d | 2011-03-07 09:09:51 +0000 | [diff] [blame] | 168 | Return (C2K(\_SB.PCI0.LPCB.EC.TMP1)) |
| 169 | } |
| 170 | } |
Sven Schnelle | b641e98 | 2011-03-07 09:00:50 +0000 | [diff] [blame] | 171 | } |