summaryrefslogtreecommitdiff
path: root/config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch
diff options
context:
space:
mode:
Diffstat (limited to 'config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch')
-rw-r--r--config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch153
1 files changed, 153 insertions, 0 deletions
diff --git a/config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch b/config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch
new file mode 100644
index 00000000..87cde056
--- /dev/null
+++ b/config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch
@@ -0,0 +1,153 @@
+From 49204919e885dca2be45ffbaf2f5af62109ec3a7 Mon Sep 17 00:00:00 2001
+From: gaspar-ilom <gasparilom@riseup.net>
+Date: Thu, 6 Mar 2025 23:00:00 +0000
+Subject: [PATCH 1/1] do not break building other thinkpads with the hacks for
+ the t480/s made Mate Kukri
+
+still not fixing things properly but at least it should now be possible to build older thinkpads without regressions.
+prior, some code was just commented or unreachable. now we make this explicit with preprocessor directives.
+heads should build all boards on this coreboot version from the same coreboot tree.
+
+Signed-off-by: gaspar-ilom <gasparilom@riseup.net>
+---
+ src/device/pci_rom.c | 9 ++++++---
+ src/ec/lenovo/h8/acpi/ec.asl | 4 +++-
+ src/ec/lenovo/h8/bluetooth.c | 14 ++++++++++----
+ src/ec/lenovo/h8/wwan.c | 14 ++++++++++----
+ 4 files changed, 29 insertions(+), 12 deletions(-)
+
+diff --git a/src/device/pci_rom.c b/src/device/pci_rom.c
+index bba98d9dea..db3dbbe2ce 100644
+--- a/src/device/pci_rom.c
++++ b/src/device/pci_rom.c
+@@ -396,16 +396,19 @@ void pci_rom_ssdt(const struct device *device)
+ rom = cbrom;
+ }
+
+-#if 0
++
++ #if CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON)
++ const char *scope = "\\_SB.PCI0.RP01.PEGP";
++ #else
+ const char *scope = acpi_device_path(device);
++ #endif
+ if (!scope) {
+ printk(BIOS_ERR, "%s: Missing ACPI scope\n", dev_path(device));
+ return;
+ }
+-#endif
+
+ /* write _ROM method */
+- acpigen_write_scope("\\_SB.PCI0.RP01.PEGP");
++ acpigen_write_scope(scope);
+ acpigen_write_rom((void *)rom, rom->size * 512);
+ acpigen_pop_len(); /* pop scope */
+ }
+diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl
+index 8f4a8e1986..f80c15106c 100644
+--- a/src/ec/lenovo/h8/acpi/ec.asl
++++ b/src/ec/lenovo/h8/acpi/ec.asl
+@@ -331,7 +331,9 @@ Device(EC)
+ #include "sleepbutton.asl"
+ #include "lid.asl"
+ #include "beep.asl"
+-//#include "thermal.asl"
++#if !CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON)
++#include "thermal.asl"
++#endif
+ #include "systemstatus.asl"
+ #include "thinkpad.asl"
+ }
+diff --git a/src/ec/lenovo/h8/bluetooth.c b/src/ec/lenovo/h8/bluetooth.c
+index be71a24ced..e60b6c088c 100644
+--- a/src/ec/lenovo/h8/bluetooth.c
++++ b/src/ec/lenovo/h8/bluetooth.c
+@@ -1,6 +1,8 @@
+ /* SPDX-License-Identifier: GPL-2.0-only */
+
+-// #include <southbridge/intel/common/gpio.h>
++#if !CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON)
++#include <southbridge/intel/common/gpio.h>
++#endif
+ #include <console/console.h>
+ #include <device/device.h>
+ #include <ec/acpi/ec.h>
+@@ -26,23 +28,27 @@ void h8_bluetooth_enable(int on)
+ */
+ bool h8_has_bdc(const struct device *dev)
+ {
++ #if CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON)
++ printk(BIOS_INFO, "H8: BDC detection not implemented. "
++ "Assuming BDC installed\n");
++ return true;
++ #else
+ struct ec_lenovo_h8_config *conf = dev->chip_info;
+
+- if (1 || !conf->has_bdc_detection) {
++ if (!conf->has_bdc_detection) {
+ printk(BIOS_INFO, "H8: BDC detection not implemented. "
+ "Assuming BDC installed\n");
+ return true;
+ }
+
+-#if 0
+ if (get_gpio(conf->bdc_gpio_num) == conf->bdc_gpio_lvl) {
+ printk(BIOS_INFO, "H8: BDC installed\n");
+ return true;
+ }
+-#endif
+
+ printk(BIOS_INFO, "H8: BDC not installed\n");
+ return false;
++ #endif
+ }
+
+ /*
+diff --git a/src/ec/lenovo/h8/wwan.c b/src/ec/lenovo/h8/wwan.c
+index 5cdcf77406..b4f5787e01 100644
+--- a/src/ec/lenovo/h8/wwan.c
++++ b/src/ec/lenovo/h8/wwan.c
+@@ -1,6 +1,8 @@
+ /* SPDX-License-Identifier: GPL-2.0-only */
+
+-// #include <southbridge/intel/common/gpio.h>
++#if !CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON)
++#include <southbridge/intel/common/gpio.h>
++#endif
+ #include <console/console.h>
+ #include <device/device.h>
+ #include <ec/acpi/ec.h>
+@@ -24,23 +26,27 @@ void h8_wwan_enable(int on)
+ */
+ bool h8_has_wwan(const struct device *dev)
+ {
++ #if CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON)
++ printk(BIOS_INFO, "H8: WWAN detection not implemented. "
++ "Assuming WWAN installed\n");
++ return true;
++ #else
+ struct ec_lenovo_h8_config *conf = dev->chip_info;
+
+- if (1 || !conf->has_wwan_detection) {
++ if (!conf->has_wwan_detection) {
+ printk(BIOS_INFO, "H8: WWAN detection not implemented. "
+ "Assuming WWAN installed\n");
+ return true;
+ }
+
+-#if 0
+ if (get_gpio(conf->wwan_gpio_num) == conf->wwan_gpio_lvl) {
+ printk(BIOS_INFO, "H8: WWAN installed\n");
+ return true;
+ }
+-#endif
+
+ printk(BIOS_INFO, "H8: WWAN not installed\n");
+ return false;
++ #endif
+ }
+
+ /*
+--
+2.39.5
+