mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-19 09:32:27 +02:00
Merge pull request 'config/coreboot/default: Disable Latitude early thermal shutdown' (#376) from nic3-14159/lbmk:mec5035-updates into master
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/376
This commit is contained in:
+92
@@ -0,0 +1,92 @@
|
|||||||
|
From 4968635d22dcd4f1eed0083565c423f7a42fc74c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nicholas Chin <nic.c3.14@gmail.com>
|
||||||
|
Date: Sun, 11 May 2025 15:41:22 -0600
|
||||||
|
Subject: [PATCH 42/43] ec/dell/mec5035: Add command to disable EC-initiated
|
||||||
|
thermal shutdown
|
||||||
|
|
||||||
|
If command 0xBF isn't sent, the EC shuts down the system without warning
|
||||||
|
as soon as the CPU temperature reaches about 87 degrees, without letting
|
||||||
|
the CPU thermal throttle to try and reduce the temperature. With vendor
|
||||||
|
firmware, the CPU is able to reach around 100 degrees before thermal
|
||||||
|
throttling.
|
||||||
|
|
||||||
|
This command was found by collecting EC commands by logging the LPC bus
|
||||||
|
while running with vendor firmware and then replaying observed commands
|
||||||
|
from coreboot. By systematically replaying subsets of commands in a
|
||||||
|
binary search pattern and then stress testing the system, the command to
|
||||||
|
disable the shutdown was isolated.
|
||||||
|
|
||||||
|
The exact meaning of the parameters for this command are unknown at this
|
||||||
|
time, but do seem to differ between different generations of these
|
||||||
|
laptops. Due to this, the commmand should be called by mainboard
|
||||||
|
specific code which passes the specific parameter value used.
|
||||||
|
|
||||||
|
The Google Wilco EC code, which runs on Latitude Chromebooks and shares
|
||||||
|
many commands with the standard Latitude ECs, suggests that command 0xBF
|
||||||
|
tells the EC about the processors CPUID. However, the values observed in
|
||||||
|
LPC bus logs do not seem to correspond with any CPUID values on the
|
||||||
|
non-Chromebook systems I tested.
|
||||||
|
|
||||||
|
Observed command parameter values (sent on mailbox registers 2-4):
|
||||||
|
- E6430 (Ivy Bridge): 0x07, 0x00, 0x00
|
||||||
|
- M6800 (Haswell): 0x14, 0x00, 0x00
|
||||||
|
|
||||||
|
Change-Id: I42f09a3ef681007f64d9c5b1a29248b594737a86
|
||||||
|
Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
|
||||||
|
---
|
||||||
|
src/ec/dell/mec5035/mec5035.c | 19 +++++++++++++++++++
|
||||||
|
src/ec/dell/mec5035/mec5035.h | 2 ++
|
||||||
|
2 files changed, 21 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/ec/dell/mec5035/mec5035.c b/src/ec/dell/mec5035/mec5035.c
|
||||||
|
index dffbb7960c..6c19d1f509 100644
|
||||||
|
--- a/src/ec/dell/mec5035/mec5035.c
|
||||||
|
+++ b/src/ec/dell/mec5035/mec5035.c
|
||||||
|
@@ -94,6 +94,25 @@ void mec5035_control_radio(enum ec_radio_dev dev, enum ec_radio_state state)
|
||||||
|
ec_command(CMD_RADIO_CTRL);
|
||||||
|
}
|
||||||
|
|
||||||
|
+void mec5035_cmd_bf(u8 i)
|
||||||
|
+{
|
||||||
|
+ /*
|
||||||
|
+ * If this command isn't sent, the EC shuts down the system as soon as
|
||||||
|
+ * the CPU temperature reaches about 87 degrees. It is unknown exactly
|
||||||
|
+ * what the parameters represent. The Google Wilco EC code, which runs
|
||||||
|
+ * on Latitude Chromebooks and shares some commands with the standard
|
||||||
|
+ * Latitude EC code, suggests command 0xBF tells the EC the CPUID, but
|
||||||
|
+ * the values observed in LPC bus logs don't seem to match any CPUID
|
||||||
|
+ * values of the normal Latitudes this was tested with.
|
||||||
|
+ * Observed i values:
|
||||||
|
+ * - E6430 (Ivy Bridge): 0x7
|
||||||
|
+ * - M6800 (Haswell): 0x14
|
||||||
|
+ */
|
||||||
|
+ u8 buf[3] = {i, 0, 0};
|
||||||
|
+ write_mailbox_regs(buf, 2, 3);
|
||||||
|
+ ec_command(CMD_BF);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void mec5035_early_init(void)
|
||||||
|
{
|
||||||
|
/* If this isn't sent the EC shuts down the system after about 15
|
||||||
|
diff --git a/src/ec/dell/mec5035/mec5035.h b/src/ec/dell/mec5035/mec5035.h
|
||||||
|
index 32f791cb01..e2000c455b 100644
|
||||||
|
--- a/src/ec/dell/mec5035/mec5035.h
|
||||||
|
+++ b/src/ec/dell/mec5035/mec5035.h
|
||||||
|
@@ -10,6 +10,7 @@
|
||||||
|
enum mec5035_cmd {
|
||||||
|
CMD_MOUSE_TP = 0x1a,
|
||||||
|
CMD_RADIO_CTRL = 0x2b,
|
||||||
|
+ CMD_BF = 0xbf,
|
||||||
|
CMD_CPU_OK = 0xc2,
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -37,5 +38,6 @@ u8 mec5035_mouse_touchpad(enum ec_mouse_setting setting);
|
||||||
|
void mec5035_cpu_ok(void);
|
||||||
|
void mec5035_early_init(void);
|
||||||
|
void mec5035_control_radio(enum ec_radio_dev device, enum ec_radio_state state);
|
||||||
|
+void mec5035_cmd_bf(u8 i);
|
||||||
|
|
||||||
|
#endif /* _EC_DELL_MEC5035_H_ */
|
||||||
|
--
|
||||||
|
2.51.2
|
||||||
|
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
From 6e52d15cd47c849567bfc2cb75ccf3c6513dc688 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nicholas Chin <nic.c3.14@gmail.com>
|
||||||
|
Date: Sun, 11 May 2025 16:28:23 -0600
|
||||||
|
Subject: [PATCH 43/43] mb/dell/snb_ivb_latitude: Disable EC initiated shutdown
|
||||||
|
at 87 degrees
|
||||||
|
|
||||||
|
If command 0xBF isn't sent, the EC will shut down the system without
|
||||||
|
warning once the CPU reaches approximately 87 degrees, without the
|
||||||
|
system thermal throttling first. Call the newly added function from the
|
||||||
|
MEC5035 code to send this command and disable this behavior.
|
||||||
|
|
||||||
|
Tested on the Latitude E6430.
|
||||||
|
|
||||||
|
Change-Id: I2b2dc1e3ab115e05d05eaac06892343394d37fdf
|
||||||
|
Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
|
||||||
|
---
|
||||||
|
src/mainboard/dell/snb_ivb_latitude/early_init.c | 5 +++++
|
||||||
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/mainboard/dell/snb_ivb_latitude/early_init.c b/src/mainboard/dell/snb_ivb_latitude/early_init.c
|
||||||
|
index ff83db095b..ef385a0a70 100644
|
||||||
|
--- a/src/mainboard/dell/snb_ivb_latitude/early_init.c
|
||||||
|
+++ b/src/mainboard/dell/snb_ivb_latitude/early_init.c
|
||||||
|
@@ -11,4 +11,9 @@ void bootblock_mainboard_early_init(void)
|
||||||
|
| KBC_LPC_EN | FDD_LPC_EN | LPT_LPC_EN
|
||||||
|
| COMB_LPC_EN | COMA_LPC_EN);
|
||||||
|
mec5035_early_init();
|
||||||
|
+
|
||||||
|
+ /* Observed from LPC logs with vendor firmware. Seems to disable
|
||||||
|
+ * EC-initiated shutdown when the CPU reaches approximately 87 degrees.
|
||||||
|
+ * The exact meaning of the parameter is currently unknown. */
|
||||||
|
+ mec5035_cmd_bf(0x07);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.51.2
|
||||||
|
|
||||||
Reference in New Issue
Block a user