From ee404071fb00b3460a28fee1bf30c964f36b9168 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 28 Aug 2020 09:48:44 -0600 Subject: [PATCH] Add acpi_reset function, to reset registers set by the OS --- src/board/system76/common/acpi.c | 20 +++++++++++++++---- .../system76/common/include/board/acpi.h | 3 +++ src/board/system76/common/power.c | 3 +++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/board/system76/common/acpi.c b/src/board/system76/common/acpi.c index c8fe68e..81d0789 100644 --- a/src/board/system76/common/acpi.c +++ b/src/board/system76/common/acpi.c @@ -12,7 +12,7 @@ extern uint8_t sci_extra; -uint8_t ecos = 0; +uint8_t acpi_ecos = 0; static uint8_t fcmd = 0; static uint8_t fdat = 0; @@ -48,6 +48,19 @@ void fcommand(void) { } } +void acpi_reset(void) { + // Disable lid wake + lid_wake = false; + + // ECOS: No ACPI + acpi_ecos = 0; + +#if HAVE_LED_AIRPLANE_N + // Clear airplane mode LED + gpio_set(&LED_AIRPLANE_N, true); +#endif +} + uint8_t acpi_read(uint8_t addr) { uint8_t data = 0; @@ -105,7 +118,7 @@ uint8_t acpi_read(uint8_t addr) { ACPI_16(0x2E, battery_remaining_capacity); ACPI_16(0x32, battery_voltage); - ACPI_8(0x68, ecos); + ACPI_8(0x68, acpi_ecos); ACPI_8(0xCC, sci_extra); @@ -133,7 +146,6 @@ uint8_t acpi_read(uint8_t addr) { return data; } - void acpi_write(uint8_t addr, uint8_t data) { DEBUG("acpi_write %02X = %02X\n", addr, data); @@ -144,7 +156,7 @@ void acpi_write(uint8_t addr, uint8_t data) { break; case 0x68: - ecos = data; + acpi_ecos = data; break; #if HAVE_LED_AIRPLANE_N diff --git a/src/board/system76/common/include/board/acpi.h b/src/board/system76/common/include/board/acpi.h index 4a6df82..d9ea9df 100644 --- a/src/board/system76/common/include/board/acpi.h +++ b/src/board/system76/common/include/board/acpi.h @@ -3,6 +3,9 @@ #include +extern uint8_t acpi_ecos; + +void acpi_reset(void); uint8_t acpi_read(uint8_t addr); void acpi_write(uint8_t addr, uint8_t data); diff --git a/src/board/system76/common/power.c b/src/board/system76/common/power.c index 50894af..c0a9a23 100644 --- a/src/board/system76/common/power.c +++ b/src/board/system76/common/power.c @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -331,6 +332,8 @@ void power_off_s5(void) { static void power_cpu_reset(void) { // LPC was just reset, enable PNP devices pnp_enable(); + // Reset ACPI registers + acpi_reset(); //TODO: reset KBC and touchpad states kbled_reset(); }