From cb2d820f4db40512b05d10a8fb7d3f4cb7a5daf1 Mon Sep 17 00:00:00 2001 From: Tim Crawford Date: Tue, 21 Jan 2025 09:24:26 -0700 Subject: [PATCH] mb/system76/meer9: Add power_on_after_fail Configure SuperIO for BIOS control of power loss behavior and add CMOS option to allow user control. Enum 1 is used instead of 7 as the `Keep` option does not seem to work on meer9. The same setting via SIO control (CRE4) does work, though. Change-Id: I9a215f5b0ab131a93afc1d8e41f608a263284ad0 Signed-off-by: Tim Crawford --- src/mainboard/system76/meer9/bootblock.c | 6 ++++++ src/mainboard/system76/meer9/cmos.default | 1 + src/mainboard/system76/meer9/cmos.layout | 9 +++++++++ 3 files changed, 16 insertions(+) diff --git a/src/mainboard/system76/meer9/bootblock.c b/src/mainboard/system76/meer9/bootblock.c index 91cc0b10b2..daf91cbfe8 100644 --- a/src/mainboard/system76/meer9/bootblock.c +++ b/src/mainboard/system76/meer9/bootblock.c @@ -69,6 +69,12 @@ static void superio_init(void) // GPIO 87 set high pnp_write_config(dev, 0xF1, 0x80); // Default is 0xFF + printk(BIOS_DEBUG, "configure ACPI (logical device A)\n"); + dev = PNP_DEV(0x2E, 0x0A); + pnp_set_logical_device(dev); + // User-defined resume state after power loss + pnp_write_config(dev, 0xE4, 0x60); // Default is 0x00 + printk(BIOS_DEBUG, "configure hardware monitor (logical device B)\n"); dev = PNP_DEV(0x2E, 0x0B); pnp_set_logical_device(dev); diff --git a/src/mainboard/system76/meer9/cmos.default b/src/mainboard/system76/meer9/cmos.default index d61046df6b..d2ca53be53 100644 --- a/src/mainboard/system76/meer9/cmos.default +++ b/src/mainboard/system76/meer9/cmos.default @@ -3,3 +3,4 @@ boot_option=Fallback debug_level=Debug me_state=Enable +power_on_after_fail=Disable diff --git a/src/mainboard/system76/meer9/cmos.layout b/src/mainboard/system76/meer9/cmos.layout index b3df3808cc..6dd482b143 100644 --- a/src/mainboard/system76/meer9/cmos.layout +++ b/src/mainboard/system76/meer9/cmos.layout @@ -11,6 +11,8 @@ entries # RTC_CLK_ALTCENTURY 400 8 r 0 century +# TODO: Use enum 7 to allow `Keep` +409 2 e 1 power_on_after_fail 412 4 e 6 debug_level 416 1 e 2 me_state 417 3 h 0 me_state_counter @@ -22,6 +24,9 @@ entries enumerations +1 0 Disable +1 1 Enable + 2 0 Enable 2 1 Disable @@ -38,6 +43,10 @@ enumerations 6 7 Debug 6 8 Spew +7 0 Disable +7 1 Enable +7 2 Keep + checksums checksum 408 799 984