cbmk/config/coreboot/next/patches/0020-ec-dell-mec5035-Add-command-to-enable-disable-radios.patch
Leah Rowe ce9030b74f Canoeboot v0.1
This commit realises an intellectual dream: what if
I made a Canoeboot release, but using upstream
revisions from GNU Boot 0.1 RC3? Canoeboot uses much
newer revisions, but I've recently been sending patches
to the GNU Boot project, making their 0.1 series build
on modern distros, and I also added support for U-Boot
building (gru_bob and gru_kevin boards added), and Dell
Latitude E6400.

This commit *reverts* Canoeboot back to the older
upstream revisions used in GNU Boot, based on the
Libreboot 20220710 revisions, but with their changes
and with my fixes. I've also included my improvements to
the grub.cfg file, such as EFI System Partition support, which
was also sent upstream to GNU Boot for review. This commit
*removes* argon2 support from GRUB, because GNU Boot 0.1
doesn't have it! A few other things from Canoeboot have
been retained, such as the ability to build serprog firmware.
The memtest86plus revision was even downgraded back to
the 5.x one used by GNU Boot (Canoeboot uses 6.2). This means
that memtest86plus is 32-bit again, not 64-bit, and re-enabled
on X60/T60, but it is only provided in configurations, on
each board, where text mode startup is used (on Canoeboot,
only 64-bit builds are provided, so unavailable for X60/T60,
but memtest 6.2 works on corebootfb and txtmode startup).

TL;DR this commit/branch/release of Canoeboot, dubbed
Canoeboot v0.1, is more or less precisely in sync with GNU
Boot 0.1 RC3, but with my build fixes, and the additional
boards (gru_bob, gru_kevin, dell e6400). I did this so that
I could have a more reliable benchmark, comparing the build
system performance of GNU Boot 0.1 RC and Canoeboot. The idea
is that if exact revisions are used across both projects, that
are the same, then the test is more likely to be reliable, in
showing how fast or slow each build system design is.

Certain design changes from Canoeboot have been retained here,
such as use of pre-generated ICH9M IFDs (GNU Boot re-creates
them using my ich9gen, but Canoeboot now includes pre-made ones
generated from ich9gen), and declaring PIKE2008 fake roms in
coreboot menuconfig instead, defining them as paths to /dev/null,
so as to still insert empty ROMs (while not calling cbfstool
from cbmk, instead relying on the coreboot build system).

Also merged these GRUB fixes from Libreboot:

d44c9551c5e7456c2caa4a2815d33ff978dc55ef
build/roms: regression fix: uninitialised variable

df007d22ec801679b5e8f43ee861b78515518ce2
build/roms: err if -k layout doesn't exist

37817e6bcb7c7272d7c70c3afe89a5b3b2604824
GRUB: insert only 1 keymap per board, in cbfs
(instead of memdisk, and use compressed .gkb files)

This essentially syncs with lbmk up to commit:
3e7e0c7d4881a187f82404beb34a2cd014a409f8

Signed-off-by: Leah Rowe <info@minifree.org>
2024-01-21 14:39:51 +00:00

61 lines
1.8 KiB
Diff

From f0db13a15c76c2947eec8919fd121450048914ce Mon Sep 17 00:00:00 2001
From: Nicholas Chin <nic.c3.14@gmail.com>
Date: Sun, 27 Aug 2023 17:36:36 -0600
Subject: [PATCH 20/22] ec/dell/mec5035: Add command to enable/disable radios
These were determined by sniffing the LPC bus while toggling the
hardware wireless switch on the Latitude E6400. To differentiate devices
options in the vendor BIOS to change which radios the switch controlled
were used.
Change-Id: I173dc197d63cda232dd7ede0cb798ab0a364482b
Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
---
src/ec/dell/mec5035/mec5035.c | 9 +++++++++
src/ec/dell/mec5035/mec5035.h | 8 ++++++++
2 files changed, 17 insertions(+)
diff --git a/src/ec/dell/mec5035/mec5035.c b/src/ec/dell/mec5035/mec5035.c
index 8da11e5b1c..e0335a4635 100644
--- a/src/ec/dell/mec5035/mec5035.c
+++ b/src/ec/dell/mec5035/mec5035.c
@@ -84,6 +84,15 @@ u8 mec5035_mouse_touchpad(u8 setting)
return buf[0];
}
+void mec5035_radio_enable(enum mec5035_radio_dev dev, u8 on)
+{
+ /* From LPC traces and userspace testing with other values,
+ the second byte has to be 2 for an unknown reason. */
+ u8 buf[3] = {dev, 2, on};
+ write_mailbox_regs(buf, 2, 3);
+ ec_command(CMD_RADIO_EN);
+}
+
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 e7a05b64d4..16512e2cc2 100644
--- a/src/ec/dell/mec5035/mec5035.h
+++ b/src/ec/dell/mec5035/mec5035.h
@@ -16,8 +16,16 @@
#define CMD_CPU_OK 0xc2
+#define CMD_RADIO_EN 0x2b
+enum mec5035_radio_dev {
+ RADIO_WLAN = 0,
+ RADIO_WWAN = 1,
+ RADIO_WPAN = 2,
+};
+
u8 mec5035_mouse_touchpad(u8 setting);
void mec5035_cpu_ok(void);
void mec5035_early_init(void);
+void mec5035_radio_enable(enum mec5035_radio_dev device, u8 on);
#endif /* _EC_DELL_MEC5035_H_ */
--
2.39.2