From 9ba5ef8341ff2d4c82d26096c2df7ede91ec5317 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 28 Jan 2020 16:22:51 -0700 Subject: [PATCH] Implement SCI in all necessary conditions --- src/board/system76/galp3-c/pmc.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/board/system76/galp3-c/pmc.c b/src/board/system76/galp3-c/pmc.c index f4b446e..1af0a33 100644 --- a/src/board/system76/galp3-c/pmc.c +++ b/src/board/system76/galp3-c/pmc.c @@ -67,9 +67,13 @@ void pmc_event(struct Pmc * pmc) { switch (data) { case 0x80: state = PMC_STATE_ACPI_READ; + // Send SCI for IBF=0 + pmc_sci_interrupt(); break; case 0x81: state = PMC_STATE_ACPI_WRITE; + // Send SCI for IBF=0 + pmc_sci_interrupt(); break; case 0x82: DEBUG(" burst enable\n"); @@ -79,6 +83,8 @@ void pmc_event(struct Pmc * pmc) { pmc_set_status(pmc, sts | (1 << 4)); // Send acknowledgement byte pmc_write(pmc, 0x90, PMC_TIMEOUT); + // Send SCI for OBF=1 + pmc_sci_interrupt(); break; case 0x83: DEBUG(" burst disable\n"); @@ -86,6 +92,8 @@ void pmc_event(struct Pmc * pmc) { burst_timeout = 0; // Clear burst bit pmc_set_status(pmc, sts & ~(1 << 4)); + // Send SCI for IBF=0 + pmc_sci_interrupt(); break; case 0x84: DEBUG(" SCI queue\n"); @@ -95,6 +103,8 @@ void pmc_event(struct Pmc * pmc) { pmc_write(pmc, pmc_sci_queue, PMC_TIMEOUT); // Clear SCI queue pmc_sci_queue = 0; + // Send SCI for OBF=1 + pmc_sci_interrupt(); break; case 0xEC: @@ -111,14 +121,20 @@ void pmc_event(struct Pmc * pmc) { state = PMC_STATE_DEFAULT; state_data = acpi_read(data); pmc_write(pmc, state_data, PMC_TIMEOUT); + // Send SCI for OBF=1 + pmc_sci_interrupt(); break; case PMC_STATE_ACPI_WRITE: state = PMC_STATE_ACPI_WRITE_ADDR; state_data = data; + // Send SCI for IBF=0 + pmc_sci_interrupt(); break; case PMC_STATE_ACPI_WRITE_ADDR: state = PMC_STATE_DEFAULT; acpi_write(state_data, data); + // Send SCI for IBF=0 + pmc_sci_interrupt(); break; default: state = PMC_STATE_DEFAULT;