summaryrefslogtreecommitdiff
path: root/config/coreboot/default/patches/0037-ec-dell-mec5035-Replace-defines-with-enums.patch
diff options
context:
space:
mode:
authorNicholas Chin <nic.c3.14@gmail.com>2024-10-26 20:55:18 -0600
committerNicholas Chin <nic.c3.14@gmail.com>2024-10-26 20:55:18 -0600
commitb257662e55c7904b0d6f50ad688a5b8423503604 (patch)
tree14c72c874792d53a62e4ef373c10e509d6b7f44b /config/coreboot/default/patches/0037-ec-dell-mec5035-Replace-defines-with-enums.patch
parent99a88ebfa20421909675e9de6ed9376049f433d4 (diff)
config/coreboot/default: Update MEC5035 patches
- Update the MEC5035 S3 patches to the versions that were sent upstream to prevent conflicts with subsequent patches for that EC. - Update the patch that enables the S3 SMI handler in mainboard code so that all Latitudes use the handler. - Add a new patch that tells the EC to route power button events to the host so that the OS can decide what to do. Without it, the EC powers off the system without letting the OS cleanly shut down. Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
Diffstat (limited to 'config/coreboot/default/patches/0037-ec-dell-mec5035-Replace-defines-with-enums.patch')
-rw-r--r--config/coreboot/default/patches/0037-ec-dell-mec5035-Replace-defines-with-enums.patch91
1 files changed, 91 insertions, 0 deletions
diff --git a/config/coreboot/default/patches/0037-ec-dell-mec5035-Replace-defines-with-enums.patch b/config/coreboot/default/patches/0037-ec-dell-mec5035-Replace-defines-with-enums.patch
new file mode 100644
index 00000000..77011bce
--- /dev/null
+++ b/config/coreboot/default/patches/0037-ec-dell-mec5035-Replace-defines-with-enums.patch
@@ -0,0 +1,91 @@
+From 7420608acfca1790756fd80d718b737352379dbe Mon Sep 17 00:00:00 2001
+From: Nicholas Chin <nic.c3.14@gmail.com>
+Date: Tue, 28 May 2024 17:23:21 -0600
+Subject: [PATCH 37/38] ec/dell/mec5035: Replace defines with enums
+
+Instead of using defines for command IDs and argument values, use enums
+to provide more type safety. This also has the effect of moving the
+command IDs to a more central location instead of defines spread out
+throughout the header.
+
+Change-Id: I788531e8b70e79541213853f177326d217235ef2
+Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
+Reviewed-on: https://review.coreboot.org/c/coreboot/+/82998
+Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
+Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
+---
+ src/ec/dell/mec5035/mec5035.c | 10 +++++-----
+ src/ec/dell/mec5035/mec5035.h | 20 ++++++++++++--------
+ 2 files changed, 17 insertions(+), 13 deletions(-)
+
+diff --git a/src/ec/dell/mec5035/mec5035.c b/src/ec/dell/mec5035/mec5035.c
+index 68b6b2f7fb..dffbb7960c 100644
+--- a/src/ec/dell/mec5035/mec5035.c
++++ b/src/ec/dell/mec5035/mec5035.c
+@@ -66,17 +66,17 @@ static enum cb_err write_mailbox_regs(const u8 *data, u8 start, u8 count)
+ return CB_SUCCESS;
+ }
+
+-static void ec_command(u8 cmd)
++static void ec_command(enum mec5035_cmd cmd)
+ {
+ outb(0, MAILBOX_INDEX);
+- outb(cmd, MAILBOX_DATA);
++ outb((u8)cmd, MAILBOX_DATA);
+ wait_ec();
+ }
+
+-u8 mec5035_mouse_touchpad(u8 setting)
++u8 mec5035_mouse_touchpad(enum ec_mouse_setting setting)
+ {
+- u8 buf[15] = {0};
+- write_mailbox_regs(&setting, 2, 1);
++ u8 buf[15] = {(u8)setting};
++ write_mailbox_regs(buf, 2, 1);
+ ec_command(CMD_MOUSE_TP);
+ /* The vendor firmware reads 15 bytes starting at index 1, presumably
+ to get some sort of return code. Though I don't know for sure if
+diff --git a/src/ec/dell/mec5035/mec5035.h b/src/ec/dell/mec5035/mec5035.h
+index fa15a9d621..32f791cb01 100644
+--- a/src/ec/dell/mec5035/mec5035.h
++++ b/src/ec/dell/mec5035/mec5035.h
+@@ -7,16 +7,20 @@
+
+ #define NUM_REGISTERS 32
+
++enum mec5035_cmd {
++ CMD_MOUSE_TP = 0x1a,
++ CMD_RADIO_CTRL = 0x2b,
++ CMD_CPU_OK = 0xc2,
++};
++
+ /* Touchpad (TP) and mouse related. The EC seems to
+ default to 0 which results in the TP not working. */
+-#define CMD_MOUSE_TP 0x1a
+-#define SERIAL_MOUSE 0 /* Disable TP, force use of a serial mouse */
+-#define PS2_MOUSE 1 /* Disable TP when using a PS/2 mouse */
+-#define TP_PS2_MOUSE 2 /* Leave TP enabled when using a PS/2 mouse */
+-
+-#define CMD_CPU_OK 0xc2
++enum ec_mouse_setting {
++ SERIAL_MOUSE = 0, /* Disable TP, force use of a serial mouse */
++ PS2_MOUSE, /* Disable TP when using a PS/2 mouse */
++ TP_PS2_MOUSE /* Leave TP enabled when using a PS/2 mouse */
++};
+
+-#define CMD_RADIO_CTRL 0x2b
+ #define RADIO_CTRL_NUM_ARGS 3
+ enum ec_radio_dev {
+ RADIO_WLAN = 0,
+@@ -29,7 +33,7 @@ enum ec_radio_state {
+ RADIO_ON
+ };
+
+-u8 mec5035_mouse_touchpad(u8 setting);
++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);
+--
+2.47.0
+