From cada8f3572a8d153723af1f7cd95b4c24167f89b Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 21 Nov 2021 00:36:36 -0300 Subject: [PATCH] Set I/O trap read/write bit on VIA 686 --- src/chipset/via_pipc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/chipset/via_pipc.c b/src/chipset/via_pipc.c index 88ed87385..1eb3b4ea7 100644 --- a/src/chipset/via_pipc.c +++ b/src/chipset/via_pipc.c @@ -164,7 +164,7 @@ static void pipc_write(int func, int addr, uint8_t val, void *priv); static void -pipc_trap_io_pact(int size, uint16_t addr, uint8_t write, uint8_t val, void *priv) +pipc_io_trap_pact(int size, uint16_t addr, uint8_t write, uint8_t val, void *priv) { pipc_io_trap_t *trap = (pipc_io_trap_t *) priv; @@ -184,6 +184,12 @@ pipc_io_trap_glb(int size, uint16_t addr, uint8_t write, uint8_t val, void *priv if (*(trap->en_reg) & trap->mask) { *(trap->sts_reg) |= trap->mask; + if (trap->dev->local >= VIA_PIPC_686A) { + if (write) + trap->dev->acpi->regs.extsmi_val |= 0x1000; + else + trap->dev->acpi->regs.extsmi_val &= ~0x1000; + } acpi_raise_smi(trap->dev->acpi, 1); } } @@ -592,7 +598,7 @@ pipc_trap_update_paden(pipc_t *dev, uint8_t trap_id, /* Set up Primary Activity Detect I/O traps dynamically. */ if (enable && !trap->trap) { trap->dev = dev; - trap->trap = io_trap_add(pipc_trap_io_pact, trap); + trap->trap = io_trap_add(pipc_io_trap_pact, trap); trap->sts_reg = &dev->acpi->regs.padsts; trap->en_reg = &dev->acpi->regs.paden; trap->mask = paden_mask;